为了账号安全,请及时绑定邮箱和手机立即绑定

“不支持交易类型”尝试使用 Go-Ethereum、Solidity、Go 部署简单合约时。

“不支持交易类型”尝试使用 Go-Ethereum、Solidity、Go 部署简单合约时。

Go
猛跑小猪 2022-10-10 20:00:54
每当我尝试部署我的智能合约进行测试时,我都会收到一条错误消息,指出“不支持交易类型”。下面是源代码。我正在尝试使用 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


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信