php小編香蕉近日收到了一位讀者的問題,他在使用`go-ethereum`的`client.BlockByHash()`函數時遇到了一個錯誤提示:“未找到」。這個問題困擾了他很久,因此他希望能得到一些解決方案。在這篇文章中,我們將探討可能導致這個錯誤的原因,並提供一些可能的解決方法。
我有以下程式碼用於訂閱出現的新區塊:
package main import ( "context" "fmt" "log" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/ethclient" ) func main() { client, err := ethclient.dial("wss://mainnet.infura.io/ws/v3/apikey") if err != nil { log.fatal(err) } headers := make(chan *types.header) sub, err := client.subscribenewhead(context.background(), headers) if err != nil { log.fatal(err) } for { select { case err := <-sub.err(): log.fatal(err) case header := <-headers: fmt.println(header.hash().hex()) // 0xbc10defa8dda384c96a17640d84de5578804945d347072e091b4e5f390ddea7f block, err := client.blockbyhash(context.background(), header.hash()) if err != nil { log.fatal(err) } fmt.println(block.hash().hex()) // 0xbc10defa8dda384c96a17640d84de5578804945d347072e091b4e5f390ddea7f fmt.println(block.number().uint64()) // 3477413 fmt.println(block.time()) // 1529525947 fmt.println(block.nonce()) // 130524141876765836 fmt.println(len(block.transactions())) // 7 } } }
但在隊伍中
block, err := client.blockbyhash(context.background(), header.hash())
我收到錯誤:
2023/04/19 17:31:14 not found exit status 1
它仍然在 fmt.println(header.hash().hex())
中列印哈希值,所以我知道 infura 連接正在工作。
使用區塊號碼而不是雜湊值。
block, err := client.BlockByNumber(context.Background(), header.Number)
函數 header.hash()
不傳回區塊哈希,而是傳回 header 的哈希。
以上是`go-ethereum` client.BlockByHash() 給出錯誤'找不到”的詳細內容。更多資訊請關注PHP中文網其他相關文章!