猿问

Golang ethclient.Client - 如何进行 RPC 调用?

如何使用ethclient.Clienthttps://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 客户端并始终保持两者运行。这是唯一的方法吗?


慕码人2483693
浏览 133回答 1
1回答

猛跑小猪

该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 ethClientethClient.BalanceAt(...)// access to rpc clientrpcClient.Call(...)
随时随地看视频慕课网APP

相关分类

Go
我要回答