欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

truffle入坑指南

程序员文章站 2024-03-20 23:19:16
...

truffle 介绍

Truffle是针对基于以太坊的Solidity语言的一套开发框架。本身基于Javascript。

Truffle到底为我们带来了什么:

  1. 首先对客户端做了深度集成。开发,测试,部署一行命令都可以搞定。不用再记那么多环境地址,繁重的配置更改,及记住诸多的命令。
  2. 它提供了一套类似maven或gradle这样的项目构建机制,能自动生成相关目录,默认是基于Web的。当前这个打包机制是自定义的,比较简陋,不与当前流行打包方案兼容。但自已称会弃用,与主流兼容,好在它也支持自定义打包流程。
  3. 提供了合约抽象接口,可以直接通过var meta = MetaCoin.deployed();拿到合约对象后,在Javascript中直接操作对应的合约函数。原理是使用了基于web3.js封装的Ether Pudding工具包。简化开发流程。
  4. 提供了控制台,使用框架构建后,可以直接在命令行调用输出结果,可极大方便开发调试。
  5. 提供了监控合约,配置变化的自动发布,部署流程。不用每个修改后都重走整个流程。

专门写给windows的truffle使用

因为看了很多都是基于mac的truffle操作,其实其中还是有一点小坑的,在这里记录一下truffle从安装到使用的全攻略

1、truffle安装

truffle官方网站

安装很简单,只需要 运行 npm install -g truffle
当然,前提是先安装一下node.js
node.js安装

truffle入坑指南

安装完成之后,运行truffle version,如果看见版本号,恭喜你安装成功了。

2、创建truffle项目

新建一个目录,然后调用

truffle init

新建一个truffle项目,你会发现以下目录结构
truffle入坑指南
然后就可以调用打开控制台

truffle develop

这里有个坑,在mac上,直接调用不会出错,但是在windows我们要将truffle.js文件删除掉,大概系统会默认调用truffle-config.js来打开命令,不然会出现下图的情况

truffle入坑指南

删除之后,在调用代码就可以愉快的开始开发了,然后出现这个
truffle入坑指南
最后一步,编译,调用

compile

即可编译完成,可以看到,目录里面多了一个build的文件夹
上述就是简单的创建并编译一个项目

3、简单运行一个项目(编写测试用例和部署合约,合约互动)

我们在contracts下创建一个MathContract.sol的文件,简单写一个加法算法

pragma solidity ^0.4.17;

contract MathContract {

  function addAToB(uint a,uint b) pure public returns(uint){
      return a + b;
  }

}

同时在mifrations下创建相应的.js文件

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

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

然后在test文件夹下开始创建测试用例TestMathContract.sol

import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/MathContract.sol";

contract TestMathContract {
  function testAMulToBisRight() {
    MathContract meta = MathContract(DeployedAddresses.MathContract());
    //第一个参数是调用测试的方法的函数,第二个参数是发生错误时的提示信息
    Assert.equal(meta.addAToB(2,4),6,"2+4 should be 6");
  }
}

然后在控制台运行

test

就可以看到测试的结果
truffle入坑指南

测试完成后,我们可以运行migrate进行部署

migrate

truffle入坑指南

至此,合约部署成功

4、获取合约实例

在控制台定义一个变量,然后获取实例

truffle(develop)> var c
undefined
truffle(develop)> c = MathContract.deployed().then(instance => c=instance)

获取实例后,就可以调用我们写的实例的方法了

truffle(develop)> c.addAToB(2,4)
{ [String: ‘6’] s: 1, e: 0, c: [ 6 ] }

5、truffle unbox react项目使用和介绍

首先,下载truffle unbox的react项目包

truffle unbox react

同样,我们要删除掉truffle.js的文件,然后打开控制台

truffle develop

对代码进行编译

compile

编译完成之后通过

npm start

即可启动网页端项目

上述都是简单的项目使用,简单记录,以便回忆

总结

总结一下,truffle是属于以太坊的一套开发框架,如果仅仅使用truffle创建项目,大概功能是就要后台的获取合约实例,调用实例之类的作用,并无前台界面。所以在框架里增加了unbox这样的东西,除了我们上述的react,box还是有很多可以使用的技术和项目,我们可以通过下载项目结构来进行合约的前台界面展示。
说到以太坊智能合约的部署,这里面其实还涉及到react使用,MyEtherWallet 账号的注册和钱包的获取以及使用之前的metamask的安装,测试网络的使用,测试代币的获取,solidity ide 基本合约的编写与测试,在这些基础功能都完成后,才可以开始本文的项目。
其实一般的简单交易项目的基本思路是,利用前端代码,调用合约的方法,合约拉起以太坊支付通道,开启交易,完成交易和展示。嗯。暂时就这些,后续再补充。