Ubuntu下Truffle框架的搭建

时间:2024-04-11 12:03:15

Ubuntu下Truffle框架的搭建
Truffle是一个世界级的开发环境,测试框架,以太坊的资源管理通道,致力于让以太坊上的开发变得简单,Truffle有以下:

	内置的智能合约编译,链接,部署和二进制文件的管理
	快速开发下的自动合约测试
	脚本化的,可扩展的部署与发布框架
	部署到不管多少的公网或私网的网络环境管理功能
	使用EthPM&NPM提供的包管理,使用ERC190标准
	可配的构建流程,支持紧密集成
	Truffle环境里支持执行外部的脚本

1.环境
本人使用Ubuntu16.04版本下进行Truffle环境的搭建,其依赖的编译环境如下:
g++安装,执行命令:sudo apt-get install g++
libssl-dev安装,执行命令:sudo apt-get install libssl-dev
nodejs安装,执行命令:sudo apt-get install nodejs
solc安装:sudo apt-get install solc
testrpc安装:npm install -g ethereumjs-testrpc

2.Truffle安装
Truffle的安装指令为:npm install -g truffle,执行该指令后,运行truffle version,出现如下图结果,则说明安装成功。
Ubuntu下Truffle框架的搭建

3.测试demo搭建
3.1.以太坊环境
testrpc是在本地使用内存模拟的一个以太坊环境。相对于 Geth私有链环境,testrpc它在执行交易时是实时返回,而不等待默认的出块时间,这样你可以快速验证你新写的代码,当出现错误时,也能即时反馈给你。下面先来在本端执行testrpc命令,创建一个以太坊的运行环境,其正确执行效果如下图:
Ubuntu下Truffle框架的搭建
3.2.创建测试demo
接下来另启一个窗口,创建一个demo目录,在该目录下执行truffle init命令,该目录下自动生成下述文件:
Ubuntu下Truffle框架的搭建

app/:nodejs运行环境
contracts/: 智能合约存放的目录,默认情况下已经帮你创建 Migrations.sol合约。
migrations/: 存放部署脚本
test/: 存放测试脚本
truffle.js: truffle的配置文件

3.3.合约编译
demo的合约代码存储在contracts目录下,编译该合约代码的指令 truffle compile,编译成功的结果如下图:
Ubuntu下Truffle框架的搭建
如合约改动,truffle compile仅对改动的合约进行编译,如需强制编译整体合约,可使用 truffle compile --compile-all。
3.4.合约部署
3.3中编译好的合约部署在testrpc创建的以太坊环境命令 truffle migrate,执行后结果如下:
Ubuntu下Truffle框架的搭建
在testrpc窗口显示合约部署成功,其界面如下图:
Ubuntu下Truffle框架的搭建
到此,合约编译并正确部署到以太坊上。
3.5.nodejs界面展示
在demo目录下运行 truffle serve 启动nodejs,成功如下图:
Ubuntu下Truffle框架的搭建
然后在网页打开 127.0.0.0:8080,出现如下界面:
Ubuntu下Truffle框架的搭建
用户可以通过这个界面给用户转账(具体可自行阅读contracts目录下的合约源码,了解其要实现的功能)。
到此,truffle搭建简单的以太坊开发框架已经搭建完成。

4.拓展
4.1.创建自己的合约
在./contract目录下创建一个自己的合约文件Greeter.sol,其代码如下:

contract Greeter         
{
    address creator;     
    string greeting;     

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

    function greet() public constant returns (string)           
    {
        return greeting;
    }
    
    function setGreeting(string _newgreeting) public
    {
        greeting = _newgreeting;
    }
    
     /**********
     Standard kill() function to recover funds 
     **********/
    
    function kill()public
    { 
        if (msg.sender == creator)
            suicide(creator);  // kills this contract and sends remaining funds back to creator
    }

}

4.2.新建发布脚本
在./migrations/目录下修改 2_deploy_contracts.js 文件,增加发布代码如下:

module.exports = function(deployer) {
  deployer.deploy(Greeter,"Hello, World!");//"参数在第二个变量携带"
};

之后就是 truffle compile编译合约;truffle migrate部署合约,效果如下:
Ubuntu下Truffle框架的搭建
4.3.通过控制台操作
我们可以运用 truffle console 命令进入控制台,通过控制台输入相关指令进行相关操作,效果如下:
Ubuntu下Truffle框架的搭建
通过输入指令进行相关操作:
Ubuntu下Truffle框架的搭建
我们也可以通过Truffle将合约部署到我们的以太坊私有链上,需要修改truffle.js的配置,如下:

module.exports = {
  build: {
    "index.html": "index.html",
    "app.js": [
      "javascripts/app.js"
    ],
    "app.css": [
      "stylesheets/app.css"
    ],
    "images/": "images/"
  },
  rpc: {
    host: "localhost",  //修改IP,改为不是私有链的IP,要确保在同一网段
    port: 8545            //修改端口号,如私有链端口号保持一致
  }
};