• 以太坊:使用goethereum进行合约交互之基于sol生成go代码


    一、工具安装

    #安装solc
    npm install -g solc
    
    #安装solcjs
    npm install -g solc-cli

    #安装abigen
    go get github.com/ethereum/go-ethereum
    cd $GOPATH/src/github.com/ethereum/go-ethereum/
    make
    make devtools

    二、生成abi文件

    #生成合约 abi 文件
    solcjs yourContract.sol -o filedir --abi

    问题一:版本不匹配

    如果遇到报错:ParserError: Source file requires different compiler version (current compiler is 0.8.15+commit.e14f2714.Emscripten.clang) - note that nightly builds are considered to be strictly less than the released version

     

     则是内置编译器版本不匹配,我们可以重新获取solc,并指定版本

    #查看编译器版本
    solcjs cmd --version
    
    #获取指定编译器版本
    npm install -g solc@0.6.12

     问题二:合约依赖

    如果该合约import了其他合约,则会报错:ParserError: Source "./PToken.sol" not found: File import callback not supported

     只需要用上--base-path这个参数就可以了

    #指定base-path
    solcjs --base-path ./  ./token/PEther.sol --abi -o build

    三、生成go文件

    #使用abigen生成文件
    abigen -abi pether.abi -type PEtherAbi -pkg abi -out pether.go

    完成,后面生成客户端调用即可。

    rpc := "https://rpc.ankr.com/eth"
    connect, err := ethclient.Dial(rpc)
    if err != nil {
        panic("failed to connect to the rpc:" + rpc)
    }
    
    address := "0x1234567890000000000000000000000000000000"
    
    _pEtherAbi, err := abi.NewPEtherAbi(common.HexToAddress(address), connect)
    if err != nil {
        panic("failed to new client with address :" + _address)
    }
  • 相关阅读:
    http://blog.csdn.net/jyw935478490/article/details/51233931
    http://www.roncoo.com/article/detail/124661
    http://blog.csdn.net/chenleixing/article/details/43740759
    http://www.xttblog.com/?p=794
    http://jingyan.baidu.com/article/2009576193ee38cb0721b416.html
    Java 生成16/32位 MD5
    AI(Adobe Illustrator)简单入门——骷髅
    AI(Adobe Illustrator)简单入门——米老鼠
    ovirt-engine安装
    service postgresql initdb [FAILED]
  • 原文地址:https://www.cnblogs.com/fdzang/p/16405016.html
Copyright © 2020-2023  润新知