跳至主要内容

自定義 RPC

自定義 RPC 資源允許您直接向以太坊節點發送原始 RPC 請求,使您能夠訪問任何 RPC 方法,包括標準方法、擴展方法或其他資源未涵蓋的自定義方法。

操作

Request(請求)

使用任何方法和參數發送自定義 RPC 請求。

必需憑證:Ethereum RPC

參數

  • RPC Method(RPC 方法)(必填):RPC 方法名稱(例如 eth_getBalancedebug_traceTransaction
  • RPC Parameters(RPC 參數)(選填):RPC 方法的參數,格式為 JSON 陣列

範例 - 獲取餘額

{
"rpcMethod": "eth_getBalance",
"rpcParams": ["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "latest"]
}

輸出

{
"method": "eth_getBalance",
"params": ["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "latest"],
"result": "0x1bc16d674ec80000"
}

範例 - 獲取儲存槽

{
"rpcMethod": "eth_getStorageAt",
"rpcParams": ["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "0x0", "latest"]
}

輸出

{
"method": "eth_getStorageAt",
"params": ["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "0x0", "latest"],
"result": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

常見用例

調試交易

使用調試 RPC 方法追蹤交易執行:

{
"rpcMethod": "debug_traceTransaction",
"rpcParams": ["0x123...", {"tracer": "callTracer"}]
}

訪問歷史數據

從歸檔節點查詢歷史狀態數據:

{
"rpcMethod": "eth_getBalance",
"rpcParams": ["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "0x1"]
}

使用自定義方法

訪問節點特定或自定義 RPC 方法:

{
"rpcMethod": "eth_feeHistory",
"rpcParams": [4, "latest", [25, 50, 75]]
}

獲取儲存槽

從合約中讀取特定的儲存槽:

{
"rpcMethod": "eth_getStorageAt",
"rpcParams": ["0xContractAddress", "0x0", "latest"]
}

支援的 RPC 方法

標準以太坊方法

  • eth_getBalance:獲取帳戶餘額
  • eth_getStorageAt:獲取指定位置的儲存值
  • eth_getTransactionCount:獲取交易計數(nonce)
  • eth_getCode:獲取合約程式碼
  • eth_call:執行合約調用
  • eth_estimateGas:估算 gas 使用量
  • eth_getBlockByNumber:透過區塊號獲取區塊
  • eth_getBlockByHash:透過區塊雜湊獲取區塊
  • eth_getTransactionByHash:透過雜湊獲取交易
  • eth_getTransactionReceipt:獲取交易收據
  • eth_getLogs:獲取事件日誌
  • eth_gasPrice:獲取當前 gas 價格
  • eth_feeHistory:獲取歷史手續費數據
  • eth_getProof:獲取 Merkle 證明

調試方法(Geth)

  • debug_traceTransaction:追蹤交易執行
  • debug_traceCall:追蹤調用執行
  • debug_traceBlockByNumber:追蹤區塊中的所有交易
  • debug_traceBlockByHash:透過雜湊追蹤區塊

追蹤方法(Parity/OpenEthereum)

  • trace_transaction:追蹤交易
  • trace_block:追蹤區塊
  • trace_replayTransaction:重放交易
  • trace_call:追蹤調用

自定義方法

  • 您的以太坊節點公開的任何自定義 RPC 方法
  • 網路特定方法(例如 Arbitrum、Optimism 擴展)
  • 自定義索引器或中間件方法

範例

範例 1:獲取區塊交易數量

{
"rpcMethod": "eth_getBlockTransactionCountByNumber",
"rpcParams": ["latest"]
}

範例 2:使用調用追蹤器追蹤交易

{
"rpcMethod": "debug_traceTransaction",
"rpcParams": [
"0x1234567890abcdef...",
{
"tracer": "callTracer",
"tracerConfig": {
"onlyTopCall": false
}
}
]
}

範例 3:獲取證明

{
"rpcMethod": "eth_getProof",
"rpcParams": [
"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
["0x0"],
"latest"
]
}

範例 4:批次處理多個調用

您可以使用 n8n 的批次處理功能按順序發送多個 RPC 請求:

輸入項目 → 自定義 RPC(多個方法)→ 處理結果

提示

  • 方法名稱:使用以太坊 JSON-RPC 規範中指定的確切 RPC 方法名稱
  • 參數:始終以 JSON 陣列格式提供參數,即使只有單個參數
  • 節點支援:並非所有節點都支援所有方法(例如調試方法需要完整節點)
  • 歸檔節點:歷史狀態查詢需要歸檔節點
  • 自定義標頭:使用 RPC 憑證設定自定義標頭以進行身份驗證
  • 錯誤處理:啟用「失敗時繼續」以優雅地處理不支援的方法
  • 速率限制:發送多個請求時請注意 RPC 提供商的速率限制

何時使用自定義 RPC

當您需要以下功能時使用自定義 RPC:

  • 訪問其他資源中不可用的方法
  • 使用調試或追蹤方法進行交易分析
  • 使用特定區塊參數查詢歷史狀態數據
  • 訪問節點特定或網路特定的 RPC 方法
  • 在專用資源支援之前原型化新功能
  • 使用自定義或擴展的 RPC API

對於標準操作,建議使用專用資源(Account、Block、Transaction 等),因為它們提供更好的類型安全性和參數驗證。