以太坊入门(3):Ubuntu下Solidity的Truffle框架实战

本文主要讲述使用Truffle framework部署的第一个Solidity合约
一.前置工作:
1.安装Solidity的开发框架Truffle

npm install -g truffle

环境要求:NodeJS 5.0+
2.安装开发客户端(geth)

sudo add-apt-repository -y ppa:ethereum/ethereum 
sudo apt-get update 
sudo apt-get install ethereum

当新版本的geth发布后,可以直接通过APT完成geth版本升级。

sudo apt-get update
Sudo apt-get upgrade

二.部署合约
1. 创建工程目录
在你想放工程的任何位置,创建一个文件夹(/1110/demo1),来做为你的工程根目录。

mkdir 1110
cd 1110
mkdir demo1
cd demo1

注:mkdir (选项)(参数)命令用来创建一个目录或一个级联目录。
选项:
-m<目标属性>或–mode<目标属性>建立目录的同时设置目录的权限;
-p或–parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
2. 初始化框架
进入到工程根目录下(现在应该是个空目录),并执行truffle init命令。

正确执行后,我们通过atom编辑器将得到下面这样的目录结构(命令 atom ./):
这里写图片描述
目录结构简单说明如下:

  • app/ - 你的应用文件运行的默认目录。这里面包括推荐的
  • javascript文件和css样式文件目录,但你可以完全决定如何使用这些目录。
  • contract/ - Truffle默认的合约文件存放地址。
  • migrations/ - 存放发布脚本文件。
  • test/ - 用来测试应用和合约的测试文件。
  • truffle.js - Truffle的配置文件。

3.放入自己的合约
删除./contract目录下的自带demo合约,切记不要删除./contract/Migrations.sol合约,它是Truffle用来帮助部署的。

pragma solidity ^0.4.0;

contract Greeter         
{
    address creator;     
    string greeting;     

    function Greeter(string _greeting) public   
    {
        creator = msg.sender;
        greeting = _greeting;
    }

    function greet() constant returns (string)          
    {
        return greeting;
    }

    function setGreeting(string _newgreeting) 
    {
        greeting = _newgreeting;
    }

     /**********
     Standard kill() function to recover funds 
     **********/

    function kill()
    { 
        if (msg.sender == creator)
            suicide(creator);  // kills this contract and sends remaining funds back to creator
    }

}

4. 修改发布脚本
将./migrations/1_initial_migration.js下的内容由

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

module.exports = function(deployer) {
  deployer.deploy(Migrations);
};

修改为:

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

module.exports = function(deployer) {
  deployer.deploy(HellowWorld);
};

目的是去掉原有自带的Demo部署流程,修改为要部署的合约。修改完后,记得保存,不然发布时会报错,找不到相关合约。
5. 部署sol合约,并编译
部署命令:truffle develop(4.0版本)
这里写图片描述
编译命令:compile(4.0版本,3.0版本命令truffle compile)
这里写图片描述
注:警告错误原因为当用户从外部调用一个view函数,是不需要支付一分 gas 的。
这是因为 view 函数不会真正改变区块链上的任何数据 - 它们只是读取。因此用 view 标记一个函数,意味着告诉 web3.js,运行这个函数只需要查询你的本地以太坊节点,而不需要在区块链上创建一个事务(事务需要运行在每个节点上,因此花费 gas)。解决办法加contract.test1.call()。
6. 部署/迁移
命令行命令:migrate
这里写图片描述
注:遇到错误,解决办法,就是将程序根目录下的build文件夹删除,然后重新truffle compile、truffle migrate即可。(或migrate reset)。
这里写图片描述

到这里我们就应该自己能够编写合约的部署代码了。
这里写图片描述
调用test()方法:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43011810/article/details/82353143