美文网首页
solidity 智能合约(3):使用truffle编译部署及测

solidity 智能合约(3):使用truffle编译部署及测

作者: ag4kd | 来源:发表于2019-11-29 16:53 被阅读0次
    目录结构

    先找源码敲一遍,跑起来,后面慢慢讲怎么用solidity编写以太坊智能合约。

    一 编写源码

    1.1 合约源码SimpleStorage.sol

    这个文件编写在contracts目录下

    pragma solidity ^0.5.0;
    
    contract SimpleStorage {
        constructor () public {
    
        }
        uint256 storedData;
    
        function set(uint256 x) public {
            require(x>10,'数字不能小于10');
            storedData = x;
        }
    
        function get() public view returns (uint256) {
            return storedData;
        }
    }
    

    1.2 编写合约迁移脚本3_simple_storage.js

    这个文件在migrations目录下

    const SimpleStorage = artifacts.require("SimpleStorage");
    
    module.exports = function(deployer) {
        deployer.deploy(SimpleStorage);
    };
    

    1.3 测试脚本simple_storage.js

    这个文件可以创建一个test目录,然后放进去,我这里直接放在了根目录,不太规范。

    const BN = require("bn.js");
    module.exports = async function (callback) {
        try {
            let frac = new BN(100);
            // frac = frac.pow(new BN(18));
            let SimpleStorage = artifacts.require("SimpleStorage");
            let tokenInstance = await SimpleStorage.deployed();
            // console.log("tokenInstance = "+JSON.stringify(tokenInstance));
            await tokenInstance.set(frac);
            let data = await  tokenInstance.get();
    
            console.log('data =' + JSON.stringify(data));
    
            callback()
        } catch (e) {
            callback(e);
        }
    };
    

    二 几个命令

    编译命令

    要编译Truffle项目里的合约,请切换到项目工程所在根目录,然后在终端中键入以下内容:

    sudo truffle compile
    

    首次运行时,将编译所有合约。 在后续运行中,Truffle将仅编译自上次编译以来有更改的合约。如果我们想覆盖此行为,可以使用 --all 选项运行上面的命令。

    编译的目标文件 Artifacts 将放在 build/contracts/ 目录中,相对于项目根目录(如果该目录不存在,将创建该目录。)

    这些 Artifacts 是Truffle内部工作的组成部分,它们在成功部署应用程序中起着重要作用。 不要去编辑这些文件,因为这些文件将被合约编译和部署覆盖。

    编译成功后


    image.png

    合约部署

    迁移脚本(JavaScript文件)可帮助我们将合约部署到以太坊网络。 这些文件负责暂存我们的部署任务,并且假设我们的部署需求会随着时间的推移而发生变化。 随着项目的发展,我们将创建新的迁移脚本,以进一步推动区块链的发展。 先前运行的部署记录通过特殊的 Migrations 迁移合约记录在链上,详细信息如下。

    部署命令

    要运行部署,请运行以下命令:

    sudo truffle migrate
    

    这将部署在项目的 migrations 目录中的所有迁移文件。 最简单的迁移只是一组管理部署脚本。 如果我们的迁移先前已成功运行,则 truffle migrate 将从上次运行的迁移开始执行,仅运行新创建的迁移。 如果不存在新的迁移,truffle migrate 将不会执行任何操作。 我们可以使用 --reset 选项从头开始运行所有迁移。 对于本地测试,确保在执行 migrate 之前安装并运行了 Ganache等 测试区块链。

    image.png

    测试合约

    sudo truffle exec simple_storage.js
    
    image.png
    image.png

    测试脚本中输入数值100,取出的数值为64(这个值是16进制格式,转为十进制就是100).

    相关文章

      网友评论

          本文标题:solidity 智能合约(3):使用truffle编译部署及测

          本文链接:https://www.haomeiwen.com/subject/gqpgwctx.html