以太坊:Truffle框架实践之HelloWorld

时间:2020-04-15 20:09:33   收藏:0   阅读:94

一、初始化项目

mkdir helloworld
cd helloworld
truffle init

新建一个文件夹,使用truffle init进行初始化,有时候会连接不上,多试几次就好了。

 技术分享图片

 将文件夹使用ftp下载到本地,文件目录如下:

 技术分享图片

文件目录解释如下:

二、编写智能合约

2.1.编写智能合约

在contract下新建合约合约文件Greeter.sol

pragma solidity >=0.4.25 <0.7.0;

contract Greeter {
    address creator;
    string greeting;

    constructor(string memory _greeting) public{
        creator = msg.sender;
        greeting = _greeting;
    }

    function greet() public view returns(string memory) {
        return greeting;
    }
    
    function setGreeting(string memory _newgreeting) public{
        greeting = _newgreeting;
    }
    
}

这里有个需要注意的地方:truffle在编译的时候,会有默认的solidity编译版本,编写智能合约的时候最好使用相同的版本。我这里的是0.5.16版本

2.2.新建发布脚本

在./migrations/目录下新建一个文件:2_deploy_contracts.js,增加发布代码。

var Greeter = artifacts.require("./Greeter.sol");

module.exports = function(deployer) {
  deployer.deploy(Greeter,"Hello, World!");
};

2.3.修改配置文件truffle-config.js

module.exports = {

  networks: {
    development: {
      host: "127.0.0.1",     // Localhost (default: none)
      port: 8545,            // Standard Ethereum port (default: none)
      network_id: "*",       // Any network (default: none)
     }
  },

  // Set default mocha options here, use special reporters etc.
  mocha: {
    // timeout: 100000
  },

  // Configure your compilers
  compilers: {
    solc: {
      // version: "0.5.1",    // Fetch exact version from solc-bin (default: truffle‘s version)
      // docker: true,        // Use "0.5.1" you‘ve installed locally with docker (default: false)
      // settings: {          // See the solidity docs for advice about optimization and evmVersion
      //  optimizer: {
      //    enabled: false,
      //    runs: 200
      //  },
      //  evmVersion: "byzantium"
      // }
    }
  }
}

三、部署合约

3.1.启动ganache-cli

ganache-cli

技术分享图片

3.2.编译合约

truffle compile

 技术分享图片

3.3.部署合约

truffle migrate

 技术分享图片

 技术分享图片

四、测试合约

truffle提供了一种更加简单的方式,通过交互式控制台来与你的那些准备好的合约进行交互。

truffle console

一个基本的交互控制台,可以连接任何EVM客户端。如果你已经有了自己的ganache或者geth等EVM的本地环境,那么就可以使用truffle console来交互,所以如果你已经有一个现成的小组共享的开发用EVM,那么使用这个没错。

truffle develop

一个交互控制台,启动时会自动生成一个开发用区块链环境(其实我认为它与ganache就是一个底层实现机制,都是默认生成10个账户)。如果你没有自己的EVM环境的话,直接使用truffle develop非常方便。

 

进入基本的交互控制台

truffle console

输入Greeter智能合约命令,显示打印出一个json结构,展示了它的各种属性内容。

技术分享图片

 在truffle5版本之后,使用原文的调用方式会出现异常,新版本调用合约方式如下:

Greeter.deployed().then((instance) => { greeter = instance } )

greeter.greet()

技术分享图片

 

参考:https://www.jianshu.com/p/2e2b3b12eb0e

原文:https://www.cnblogs.com/fdzang/p/12707027.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!