Files
proxmox/rpc-translator-138/API_METHODS_SUPPORT.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

7.6 KiB

Supported API Methods - RPC Translator 138

Date: 2026-01-05
References:


Overview

The RPC Translator supports both public network and private network JSON-RPC API methods from Hyperledger Besu. All methods are passed through to the upstream Besu node(s), with the exception of eth_sendTransaction which is intercepted for signing.


Public Network API Methods

All standard Ethereum JSON-RPC methods are supported and passed through to Besu:

Standard Methods

  • eth_*: Standard Ethereum methods

    • eth_chainId, eth_getBalance, eth_blockNumber
    • eth_call, eth_getCode, eth_getStorageAt
    • eth_getTransactionReceipt, eth_getTransactionByHash
    • eth_getTransactionCount, eth_estimateGas
    • eth_gasPrice, eth_feeHistory, eth_maxPriorityFeePerGas
    • eth_getBlockByNumber, eth_getBlockByHash
    • eth_getLogs, eth_getBlockTransactionCountByNumber
    • eth_getBlockTransactionCountByHash
    • eth_getTransactionByBlockNumberAndIndex
    • eth_getTransactionByBlockHashAndIndex
    • And other standard eth_* methods
  • net_*: Network methods

    • net_version, net_listening, net_peerCount
  • web3_*: Web3 utility methods

    • web3_clientVersion, web3_sha3
  • eth_subscribe / eth_unsubscribe: WebSocket subscriptions

    • newHeads, logs, newPendingTransactions, syncing

Private Network API Methods

Private network methods are enabled by default for ChainID 138 (private network):

CLIQUE Methods (Proof of Authority)

  • clique_discard - Discard a proposal to add/remove signer
  • clique_getSigners - List signers for a block
  • clique_getSignerMetrics - Get validator metrics
  • clique_getSignersAtHash - List signers by block hash
  • clique_proposals - Get current proposals
  • clique_propose - Propose to add/remove signer

Reference: Besu CLIQUE API

IBFT 2.0 Methods

  • ibft_discardValidatorVote - Discard a validator vote
  • ibft_getPendingVotes - Get pending validator votes
  • ibft_getSignerMetrics - Get validator metrics
  • ibft_getValidatorsByBlockHash - Get validators by block hash
  • ibft_getValidatorsByBlockNumber - Get validators by block number
  • ibft_proposeValidatorVote - Propose to add/remove validator

Reference: Besu IBFT 2.0 API

QBFT Methods

  • qbft_discardValidatorVote - Discard a validator vote
  • qbft_getPendingVotes - Get pending validator votes
  • qbft_getSignerMetrics - Get validator metrics
  • qbft_getValidatorsByBlockHash - Get validators by block hash
  • qbft_getValidatorsByBlockNumber - Get validators by block number
  • qbft_proposeValidatorVote - Propose to add/remove validator

Reference: Besu QBFT API

PERM Methods (Permissioning)

  • perm_addAccountsToAllowlist - Add accounts to allowlist
  • perm_addNodesToAllowlist - Add nodes to allowlist
  • perm_getAccountsAllowlist - Get accounts allowlist
  • perm_getNodesAllowlist - Get nodes allowlist
  • perm_reloadPermissionsFromFile - Reload permissions from file
  • perm_removeAccountsFromAllowlist - Remove accounts from allowlist
  • perm_removeNodesFromAllowlist - Remove nodes from allowlist

Reference: Besu Permissioning API


Intercepted Methods

eth_sendTransaction

Status: Intercepted and processed by the translator

Behavior:

  1. Validates transaction (allowlist, chain ID, gas limits)
  2. Fills missing fields (nonce, gas, fees)
  3. Signs transaction via Web3Signer
  4. Submits as eth_sendRawTransaction to Besu
  5. Returns transaction hash

Note: The unsigned transaction is never sent to Besu. It is signed locally first.


Denied Methods (Security)

The following methods are denied for security reasons:

Admin Methods

  • admin_* - All admin methods (node management)

Debug Methods

  • debug_* - All debug methods (tracing, inspection)

Miner Methods

  • miner_* - Miner control methods

TxPool Methods

  • txpool_* - Transaction pool inspection methods

Configuration

Enable/Disable Private Network Methods

Private network methods are enabled by default. To disable them, set in .env:

ALLOW_PRIVATE_NETWORK_METHODS=false

This will deny all clique_*, ibft_*, qbft_*, and perm_* methods.


Method Routing

Client Request
    ↓
RPC Translator
    ↓
┌─────────────────────────────────────────┐
│ Method Check                            │
├─────────────────────────────────────────┤
│ Is denied? (admin_, debug_, etc.)      │ → Deny (Method not found)
│ Is intercepted? (eth_sendTransaction)  │ → Intercept & Sign
│ Is private network? (configurable)     │ → Pass through if enabled
│ Otherwise                               │ → Pass through to Besu
└─────────────────────────────────────────┘
    ↓
Besu Node(s)

Examples

Public Network Method

curl -X POST http://192.168.11.240:9545 \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_chainId",
    "params": [],
    "id": 1
  }'

Private Network Method (CLIQUE)

curl -X POST http://192.168.11.240:9545 \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "method": "clique_getSigners",
    "params": ["latest"],
    "id": 1
  }'

Private Network Method (Permissioning)

curl -X POST http://192.168.11.240:9545 \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "method": "perm_getAccountsAllowlist",
    "params": [],
    "id": 1
  }'

Intercepted Method

curl -X POST http://192.168.11.240:9545 \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_sendTransaction",
    "params": [{
      "from": "0x...",
      "to": "0x...",
      "value": "0x0",
      "gas": "0x5208"
    }],
    "id": 1
  }'

Enabling Private Network Methods in Besu

To use private network methods, ensure Besu is configured with:

# Enable CLIQUE API
rpc-http-api=["CLIQUE", "ETH", "NET", "WEB3"]

# Enable IBFT/QBFT API
rpc-http-api=["IBFT", "QBFT", "ETH", "NET", "WEB3"]

# Enable Permissioning API
rpc-http-api=["PERM", "ETH", "NET", "WEB3"]

See: Besu API Documentation


Testing

Test Public Network Method

./scripts/test-rpc.sh 192.168.11.240 eth_chainId

Test Private Network Method

curl -X POST http://192.168.11.240:9545 \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","method":"clique_getSigners","params":["latest"],"id":1}'

Summary

Public Network Methods: Fully supported (all standard Ethereum methods)
Private Network Methods: Enabled by default (CLIQUE, IBFT, QBFT, PERM)
Intercepted Methods: eth_sendTransaction (signed automatically)
Denied Methods: admin_*, debug_*, txpool_*, miner_*

Configuration: ALLOW_PRIVATE_NETWORK_METHODS=true (default) in .env