Go-Ethereum
使用 Go 客戶端跟踪事務
我需要呼叫 RPC 方法
debug_traceTransaction
,但它不存在於 Go 客戶端中。我會添加一個方法來執行對 RPC 端點的呼叫,但我想知道背後是否有原因..?轉型太多? Management API Wiki指定您可以使用debug.TraceTransaction(txHash common.Hash, logger *vm.LogConfig) (*ExecutionResurt, error)
但不在客戶端程式碼中。更新: 我在這裡放了我用來撥打電話的基本程式碼,以防有人想做同樣的事情
func DebugTransaction(hash string) (string, error) { json := `{"id": 1, "method": "debug_traceTransaction", "params": ["` + hash + `", {"disableStack": true, "disableMemory": true, "disableStorage": true}]}` log.Println("Request with:", json) jsonByte := []byte(json) req, _ := http.NewRequest("POST", ethereumNodeAddress, bytes.NewBuffer(jsonByte)) req.Header.Set("Content-Type", "application/json") resp, err := client.Do(req) if err != nil { log.Println(err) } body, err := ioutil.ReadAll(resp.Body) log.Println("Request info: " + resp.Status + " " + string(body)) return string(body), err }
事務跟踪不通過ethclient 公開。您必須通過正常rpc連接並將其作為正常呼叫呼叫。
這裡給出了原因。