Go-Ethereum
使用 Go-ethereum BoundContract (abigen) 估算氣體限制
我有一個智能合約,它是在 go-ethereum(如果重要的話,版本 1.9.11)abigen 中生成的本機綁定。我正在尋找一種在呼叫智能合約方法之前估計氣體限制的方法。
除了提供原始消息之外,我在文件中找不到任何方法來估計交易的氣體使用量,這似乎違背了首先進行綁定的目的。
現在我想通了:
//error handling removed for brevity //contracts.MyContractABI is from abigen file. abi, _ := abi.JSON(strings.NewReader(contracts.MyContractABI)) data, _ := abi.Pack("myFunction", myParam, myParam2) ethRPCParams := ethereum.CallMsg{ From: from, To: contractAddr, Value: big.NewInt(0), Data: data, } gas, _ := c.ethClient.EstimateGas(context.Background(), ethRPCParams)
但它似乎是一種解決方法,將 abi 與 BoundContract 中已經存在和實例化的 abi 分開實例化。
所以,我的問題是解決這個操作的正確方法是什麼。例如,在這裡我在估算 gas 價格時沒有獲得數據類型安全性,我必須重新實例化應該已經實例化的東西,程式碼可讀性較差等。
NoSend 選項已添加到 TransactOpts。也許正是你需要的。