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

2019-11-29  本文已影响0人  ag4kd
目录结构

先找源码敲一遍,跑起来,后面慢慢讲怎么用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).

上一篇下一篇

猜你喜欢

热点阅读