3 回答

TA貢獻1777條經驗 獲得超3個贊
您可以使用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貢獻1831條經驗 獲得超4個贊
如果您查看客戶端庫代碼,您會看到 JSON RPC 響應對象已經被反匯編,失敗時返回錯誤,或者解析的實際結果
然而,解析器已經解包了包含的“結果”字段。你的類型仍然想做額外的解包:
type?response?struct?{ ????Result?string}
刪除外部結構,只需將字符串指針傳遞給 的client.Call
第一個參數。

TA貢獻1827條經驗 獲得超9個贊
您的響應結構不顯示響應的 json 具有的數據
嘗試這個
type response struct {
Jsonrpc string `json:"jsonrpc"`
ID int `json:"id"`
Result string `json:"result"`
}
- 3 回答
- 0 關注
- 214 瀏覽
添加回答
舉報