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

每当我尝试部署我的智能合约进行测试时,我都会收到一条错误消息,指出“不支持交易类型”。下面是源代码。我正在尝试使用 abigen 的 Go 绑定部署我的简单智能合约。


版本:

go1.16.7 Solidity

0.8.9+commit.e5eed63a.Darwin.appleclang


Solidity 源代码。我已经在 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 Contract

import (

    "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 correctly

func 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]所在的行。从那里,也许我没有设置付款机制?但是我看到的所有教程都不包括一个,如果有人可以提供如何做到这一点的指南。


猛跑小猪
浏览 72回答 1
1回答

精慕HU

这是愚蠢的。Geth 更新了他们的代码并且没有任何教程,所以对于任何希望运行模拟背景的人来说,答案如下:您必须手动设置汽油价格。在定义客户端并进行身份验证后进行此操作并对其进行修复。gasPrice, err := client.SuggestGasPrice(context.Background())auth.GasPrice=gasPrice
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go