Go-Ethereum

使用 Go 客戶端跟踪事務

  • September 23, 2018

我需要呼叫 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連接並將其作為正常呼叫呼叫。

這裡給出了原因。

引用自:https://ethereum.stackexchange.com/questions/58044