三天速成智能合约–DAY3:truffle从放手到放弃

发布于 2021-05-24  458 次阅读


智能合约Hello World-GETH踩坑纪实

这里不妨假设大家都已经对truffle的基本使用比较熟悉,不熟悉的话可以返回第一页看看

前几个步骤其实都没啥事,最麻烦的是GETH的部署,各种BUG

0x00 初始化工程

mkdir hello
cd hello
truffle init

0x01 编写合约

创建合约:在contract目录下创建Greeter.sol,内容如下:

pragma solidity >=0.4.25 <0.9.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;
    }
    
}

创建发布脚本:在migrations目录下创建2_deploy_contracts.js,内容如下:

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

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

修改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)
      // gas: 40000000
     }
  },

  // 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"
      // }
    }
  }
}

主要是网络设置,包括端口、id、gas等信息,这里就用8545端口,方便启动ganache调试。

gas是部署合约是支付的费用,我们后面会讲到。

0x03 部署合约

启动ganache:

ganache-cli

编译部署合约:

(另起一个终端)

truffle compile
truffle migrate
部署成功

0x04 测试合约

进入truffle控制台:

truffle console

在控制台中输入Greeter可以查看对象的属性: