每当我尝试部署我的智能合约进行测试时,我都会收到一条错误消息,指出“不支持交易类型”。下面是源代码。我正在尝试使用 abigen 的 Go 绑定部署我的简单智能合约。版本:go1.16.7 Solidity0.8.9+commit.e5eed63a.Darwin.appleclangSolidity 源代码。我已经在 Remix 中对此进行了测试,并且每次都有效:contract SendMSG { function Send(address sendTo, bytes calldata message) public { OtherContract other = OtherContract(sendTo); other.send(message); }}这是我使用忽略语法错误的合同,因为它可能是匿名时的人为错误。然后我运行这条线来开发 abi 绑定并将它们放在正确的位置。我可以确认这是有效的,因为总是创建 go 文件: abigen --sol ../../contracts/Contract.sol --pkg Contract --out Contract.go去代码。我相信不应该有任何问题。我正在使用模拟后端/区块链进行测试:package Contractimport ( "testing" "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/common" "math/big")// Test inbox contract gets deployed correctlyfunc TestMain(t *testing.T) { //Setup simulated block chain key, _ := crypto.GenerateKey() auth := bind.NewKeyedTransactor(key) alloc := make(core.GenesisAlloc) alloc[auth.From] = core.GenesisAccount{Balance: big.NewInt(133700000)} gasLimit := 300000 sim := backends.NewSimulatedBackend(alloc, gasLimit) //Deploy contract address, _, _, err := DeploySameBindings( auth, sim, ) // commit all pending transactions blockchain.Commit() if err != nil { t.Fatalf("Failed to deploy the contract: %v", err) }}总是,它给出了相同的错误,“不支持事务类型”。我知道错误来源[GitHub]所在的行。从那里,也许我没有设置付款机制?但是我看到的所有教程都不包括一个,如果有人可以提供如何做到这一点的指南。
1 回答
精慕HU
TA贡献1845条经验 获得超8个赞
这是愚蠢的。
Geth 更新了他们的代码并且没有任何教程,所以对于任何希望运行模拟背景的人来说,答案如下:
您必须手动设置汽油价格。在定义客户端并进行身份验证后进行此操作并对其进行修复。
gasPrice, err := client.SuggestGasPrice(context.Background())
auth.GasPrice=gasPrice
- 1 回答
- 0 关注
- 71 浏览
添加回答
举报
0/150
提交
取消