如何使用ethclient.Client( https://github.com/ethereum/go-ethereum )呼叫 RPC 端點?
有些方法沒有包裝器,據我所知,直接呼叫它是不可能的,例如
client, err := ethclient.Dial(url)
// ok
client.BalanceAt(...)
// incorrect code, trying to access private field `c *rpc.Client`
client.c.Call("debug_traceTransaction", ...)
我能想到的唯一方法是啟動完全獨立的 rpc 客戶端并始終保持兩者運行。這是唯一的方法嗎?
uj5u.com熱心網友回復:
該ethclient.Dial函式(您提到的)使用下面的rpc.DialContext函式,并且該包還提供了一個ethclient.NewClient函式來ethclient.Client使用現有的 rpc 連接創建新的連接。
一種可能的解決方案是創建一個新的 rpc 連接,然后將其傳遞給ethclient.Client,因此您使用的是一個連接,但也可以使用 RPC 連接本身和 eth 客戶端。
像這樣的東西:
rpcClient, err := rpc.DialContext(ctx, url)
ethClient := ethclient.NewClient(rpcClient)
// use the ethClient
ethClient.BalanceAt(...)
// access to rpc client
rpcClient.Call(...)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/347807.html
