truffle入坑指南

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 version,如果看见版本号,恭喜你安装成功了。

2、创建truffle项目

新建一个目录,然后调用

truffle init

新建一个truffle项目,你会发现以下目录结构
这里写图片描述
然后就可以调用打开控制台

truffle develop

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

这里写图片描述

删除之后,在调用代码就可以愉快的开始开发了,然后出现这个
这里写图片描述
最后一步,编译,调用

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

就可以看到测试的结果
这里写图片描述

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

migrate

这里写图片描述

至此,合约部署成功

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 基本合约的编写与测试,在这些基础功能都完成后,才可以开始本文的项目。
其实一般的简单交易项目的基本思路是,利用前端代码,调用合约的方法,合约拉起以太坊支付通道,开启交易,完成交易和展示。嗯。暂时就这些,后续再补充。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值