3 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用go-ethereum/?ethclient最好地解決問題:
package main
import (
? ? "context"
? ? "log"
? ? "github.com/ethereum/go-ethereum"
? ? "github.com/ethereum/go-ethereum/common"
? ? "github.com/ethereum/go-ethereum/ethclient"
)
func main() {
? ? client, _ := ethclient.Dial("https://mainnet.infura.io")
? ? defer client.Close()
? ? contractAddr := common.HexToAddress("0xCc13Fc627EFfd6E35D2D2706Ea3C4D7396c610ea")
? ? callMsg := ethereum.CallMsg{
? ? ? ? To:? ?&contractAddr,
? ? ? ? Data: common.FromHex("0x8da5cb5b"),
? ? }
? ? res, err := client.CallContract(context.Background(), callMsg, nil)
? ? if err != nil {
? ? ? ? log.Fatalf("Error calling contract: %v", err)
? ? }
? ? log.Printf("Owner: %s", common.BytesToAddress(res).Hex())
}

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您查看客戶端庫代碼,您會(huì)看到 JSON RPC 響應(yīng)對象已經(jīng)被反匯編,失敗時(shí)返回錯(cuò)誤,或者解析的實(shí)際結(jié)果
然而,解析器已經(jīng)解包了包含的“結(jié)果”字段。你的類型仍然想做額外的解包:
type?response?struct?{ ????Result?string}
刪除外部結(jié)構(gòu),只需將字符串指針傳遞給 的client.Call
第一個(gè)參數(shù)。

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
您的響應(yīng)結(jié)構(gòu)不顯示響應(yīng)的 json 具有的數(shù)據(jù)
嘗試這個(gè)
type response struct {
Jsonrpc string `json:"jsonrpc"`
ID int `json:"id"`
Result string `json:"result"`
}
- 3 回答
- 0 關(guān)注
- 211 瀏覽
添加回答
舉報(bào)