Files
proxmox/rpc-translator-138/README.md
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

231 lines
5.2 KiB
Markdown

# RPC Translator Service for ChainID 138
A JSON-RPC proxy service that provides Thirdweb-compatible RPC endpoints for ChainID 138, with support for `eth_sendTransaction` through automatic signing via Web3Signer.
## Features
- **HTTP JSON-RPC** on port 9545
- **WebSocket JSON-RPC** on port 9546 with subscription support
- **Transaction Interception**: Automatically converts `eth_sendTransaction``eth_sendRawTransaction`
- **Web3Signer Integration**: Secure transaction signing via Web3Signer
- **Vault Integration**: Configuration and policy management via HashiCorp Vault
- **Redis Nonce Management**: Distributed nonce locking to prevent collisions in HA deployments
- **High Availability**: Designed to run on multiple VMIDs (2400-2402) with load balancing
## Architecture
```
Thirdweb Client
↓ (HTTPS :8545 or WSS :8546)
Existing Edge Routing (Cloudflare/Nginx)
↓ (to :9545/:9546)
Translator Service (VMIDs 2400-2402)
├─→ Besu HTTP/WS (passthrough for most methods)
├─→ Redis (nonce locks)
├─→ Web3Signer (transaction signing)
└─→ Vault (configuration)
```
## Quick Start
### Prerequisites
- Node.js 18+ (or 20 LTS)
- Redis instance (VMID 106, IP 192.168.11.110)
- Web3Signer instance (VMID 107, IP 192.168.11.111)
- HashiCorp Vault (optional, VMID 108, IP 192.168.11.112)
- Proxmox node (r630-01) for supporting services deployment
### Deploy Supporting Services (LXC Containers)
**Quick deployment on Proxmox:**
```bash
# 1. Verify node readiness
./verify-node-ready.sh r630-01
# 2. Deploy containers
./deploy-supporting-services.sh r630-01
# 3. Start containers
pct start 106 # Redis
pct start 107 # Web3Signer
pct start 108 # Vault
# 4. Configure services (see DEPLOYMENT.md)
```
**For detailed instructions, see:**
- `LXC_DEPLOYMENT.md` - Complete LXC deployment guide
- `DEPLOYMENT.md` - Full deployment guide
- `DEPLOYMENT_CHECKLIST.md` - Step-by-step checklist
### Installation
**Using pnpm (recommended):**
```bash
cd rpc-translator-138
pnpm install
pnpm run build
```
**Or use the setup script:**
```bash
cd rpc-translator-138
./scripts/setup.sh
```
**Using npm:**
```bash
cd rpc-translator-138
npm install
npm run build
```
### Configuration
Copy `env.template` to `.env` and configure:
```bash
# Server
HTTP_PORT=9545
WS_PORT=9546
# Besu Upstream
BESU_HTTP_URLS=http://127.0.0.1:8545
BESU_WS_URLS=ws://127.0.0.1:8546
CHAIN_ID=138
# Web3Signer (VMID 107)
WEB3SIGNER_URL=http://192.168.11.111:9000
# Redis (VMID 106)
REDIS_HOST=192.168.11.110
REDIS_PORT=6379
# Vault (VMID 108, optional)
VAULT_ADDR=http://192.168.11.112:8200
VAULT_ROLE_ID=...
VAULT_SECRET_ID=...
```
### Running
**Development:**
```bash
pnpm run dev
# or: npm run dev
```
**Production:**
```bash
pnpm start
# or: npm start
```
## Deployment
See [DEPLOYMENT.md](./DEPLOYMENT.md) for detailed deployment instructions on Proxmox VMIDs 2400-2402.
## API
### HTTP Endpoint
**POST /** - JSON-RPC 2.0 endpoint
**GET /health** - Health check endpoint
Example:
```bash
curl -X POST http://localhost:9545 \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"method": "eth_chainId",
"params": [],
"id": 1
}'
```
### WebSocket Endpoint
**ws://localhost:9546** - JSON-RPC over WebSocket
Example:
```javascript
const ws = new WebSocket('ws://localhost:9546');
ws.send(JSON.stringify({
jsonrpc: '2.0',
method: 'eth_subscribe',
params: ['newHeads'],
id: 1
}));
```
### Supported Methods
The translator supports both **public network** and **private network** Besu API methods.
**Public Network Methods** (all standard Ethereum methods):
- `eth_*` - All standard Ethereum JSON-RPC methods
- `net_*` - Network methods (`net_version`, `net_listening`, etc.)
- `web3_*` - Web3 utility methods
- `eth_subscribe`, `eth_unsubscribe` (WebSocket only)
**Private Network Methods** (enabled by default):
- `clique_*` - CLIQUE consensus methods (proof of authority)
- `ibft_*` - IBFT 2.0 consensus methods
- `qbft_*` - QBFT consensus methods
- `perm_*` - Permissioning methods (accounts/nodes allowlist)
**Intercepted Methods:**
- `eth_sendTransaction` - Automatically signed and converted to `eth_sendRawTransaction`
**Denied Methods** (for security):
- `admin_*` - Admin methods
- `debug_*` - Debug methods
- `txpool_*` - Transaction pool methods
- `miner_*` - Miner control methods
**Configuration:**
- Set `ALLOW_PRIVATE_NETWORK_METHODS=false` in `.env` to disable private network methods
For complete API documentation, see:
- [Besu Public Networks API](https://besu.hyperledger.org/public-networks/reference/api)
- [Besu Private Networks API](https://besu.hyperledger.org/private-networks/reference/api)
- `API_METHODS_SUPPORT.md` - Detailed method reference
## Security
- **Wallet Allowlist**: Only specified wallet addresses can send transactions
- **Fee/Gas Caps**: Maximum gas limits and gas prices enforced
- **Method Filtering**: Dangerous RPC methods are denied
- **Chain ID Validation**: All transactions must use ChainID 138
## Development
```bash
# Install dependencies
pnpm install
# or: npm install
# Build TypeScript
pnpm run build
# or: npm run build
# Run in development mode (with auto-reload)
pnpm run dev
# or: npm run dev
# Run tests (when implemented)
pnpm test
# or: npm test
```
## License
MIT