安装环境

  1. Node.js安装

  2. 安装 solidity 编译器

    npm install -g solc
    

    查看版本:solcjs -V

  3. 安装 truffle 框架

    npm install -g truffle
    

    验证安装:truffle.cmd version

  4. 安装节点仿真器 ganache-cli (也可以安装图形版的 ganache)

    npm install -g ganache-cli
    

    验证安装:ganache-cli

智能合约

  1. 新建一个文件夹Hello并进入该文件夹下进行操作

    mkdir Hello
    cd Hello
    
  2. 创建一个truffle项目: truffle init

    在这里插入图片描述

  3. 目录结构:

    在这里插入图片描述

    • build 存放合约编译后生成的.json文件
    • contracts 存放合约文件
    • migrations 存放部署合约的脚本
    • test 存放测试文件
    • truffle-config.js 配置文件
  4. contracts文件夹中创建新合约 hello.sol , 合约内容如下

    pragma solidity ^0.5.16;
    
    contract hello{
        function say() public pure returns(string memory){
            return "hello world";
        }
    }
    
    • pragma solidity ^0.5.16; 版本标识 ,对应solidity编译器版本
  5. migrations文件夹中添加部署脚本2_deploy_hello.js,内容如下

    var hello = artifacts.require("hello");
    
    module.exports = function(deployer) {
      deployer.deploy(hello);
    };
    

    或者在1_initial_migration.js中添加如下代码

     var Migrations = artifacts.require("./Migrations.sol");
     var hello = artifacts.require("hello.sol");
     module.exports = function (deployer) {
         deployer.deploy(Migrations);
     	 deployer.deploy(hello);
     };
    
  6. 回到命令行操作,对文件进行编译

    $ truffle compile
    
    Compiling your contracts...
    ===========================
    > Compiling .\contracts\Migrations.sol
    > Compiling .\contracts\hello.sol
    > Artifacts written to E:\Hello\build\contracts
    > Compiled successfully using:
       - solc: 0.5.16+commit.9c3226ce.Emscripten.clang
    
    
  7. 配置ganache

    1. 运行ganache

      在这里插入图片描述

    2. 打开truffle-config.js配置文件,在module-exports模块中输入如下内容

      development: {
          host: "127.0.0.1",
          port: 7545,  
          network_id: "5777",
      }
      

      host、port、network_id参数都是根据ganache中对应的参数填写

  8. 部署合约。回到命令行操作,指令输入:truffle migrate 结果如下:

    在这里插入图片描述

  9. 部署成功后,可以发现ganache的以太币发生变化了

    在这里插入图片描述

  10. 调用合约。

    1. 回到命令行,输入指令:truffle console 进入操作台

    2. 进行合约函数的调用:

      hello.deployed().then(instance=>contract=instance)

      上述指令含义是获取hello合约,存为instance,并将其存储到contract变量中以便后期使用。

      在这里插入图片描述

    3. 调用hello合约中定义好的say()函数。输入命令contract.say()

      在这里插入图片描述

参考资料

win7下以太坊基于truffle+ganache开发环境搭建以及智能合约的部署调用

以上内容,仅为学习记录!

更多推荐