bitebi360.com

go-connect-eth-contractgolang如何连接以太坊合约

go-connect-eth-合同

golang 如何连接到以太坊合约。最近在学习以太坊智能合约,在学习过程中走了很多弯路。本文是对这里相关知识的总结,希望能帮助后来者少走弯路。

Solidity 合约编写

通过继承zeppelin-solidity提供的功能,编写ERC-20代币合约,核心代码甚至只需要定义代币的编号和名称即可。

在实际部署合约时以太坊合约,建议将所有继承的合约直接复制到源码中。这样做的原因是Solidity目前对import的支持还很弱,可以避免不必要的错误。示例代码中为了便于理解,我也做了上面的操作。

在这个合约SuperCoin旁边,除了定义名称和数量外,继承的合约还具有白名单管理、铸币到白名单、铸币总量限制等功能,具体如何实现上述功能,可以查看自己的源代码。我不会介绍 Solidity 的基础知识。

contract SuperCoin is CappedToken, Whitelist {
    string public name = "SuperCoin";
    string public symbol = "SC";
    uint8 public decimals = 18;
    // 初始币量1亿5千万
    uint256 public INITIAL_SUPPLY = 105000000 * (10 ** 18);
    // 总币量2亿1千万
    uint256 public CAP_SUPPLY = 210000000 * (10 ** 18);
    // 每次最多铸币1024个
    uint256 public ONCE_MAX_MINT = 1024 * (10 ** 18);
    function SuperCoin() public CappedToken(CAP_SUPPLY) {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
        emit Transfer(0x0, msg.sender, INITIAL_SUPPLY);
    }
    function mint(address to, uint256 amount) onlyOwner canMint onlyWhitelisted(to) public returns (bool) {
        if (amount > ONCE_MAX_MINT) {
            amount = ONCE_MAX_MINT;
        }
        return super.mint(to, amount);
    }
}

使用 Ganache 和 Truffle 编写和测试合约

Ganache 是一个个人以太坊客户端,可以启动私有链来开发和测试区块链环境。Truffle 框架是一个应用非常广泛的智能合约开发框架,通过它 Truffle 可以快速开发和测试合约。

Ganache 和 Truffle 安装

Ganache官方提供的下载地址,下载安装让你无需修改默认设置。

Truffle 的目录结构与 Web 项目的目录结构非常相似。Node_modules 与用于存储 Web 依赖库的目录相同。同样安装依赖库也需要使用npm命令。安装方法请参考:npmjs

Trffule 官方提供的安装方式使用的是npm:

npm install -g truffle

Zeppelin-solidity 安装

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。