以太坊智能合约开发框架Truffle

做~自己de王妃 提交于 2020-08-11 21:32:21

前言

  部署智能合约有多种方式,命令行的浏览器的渠道都有,但往往跟我们程序员的风格不太相符,因为我们习惯了在IDE里写了代码然后打包运行看效果。

  虽然现在IDE中已经存在了Solidity插件,可以编写智能合约,但是部署智能合约却要另走他路,没办法进行一个快捷的部署与测试。

  如果团队管理的区块节点多、合约多,那得哭晕在厕所。

  Truffle是一个世界级的智能合约开发框架,专门为智能合约而生。

 

安装

安装truffle

sudo cnpm install -g truffle

 

查看版本

truffle version

 

搭建项目

创建项目目录

mkdir dapp
cd dapp/

 

初始化空项目

truffle init

你也可以不创建空项目 而是创建一个带有模板的项目  如下

 

初始化模板项目

truffle unbox webpack

官方模板列表:https://www.trufflesuite.com/boxes

 

配置区块节点

truffle-config.js文件中networks代码段  用来配置区块链节点

示例中有这么一段

 development: {
      host: "127.0.0.1",     // Localhost (default: none)
      port: 8545,            // Standard Ethereum port (default: none)
      network_id: "*",       // Any network (default: none)
 }

 

你可以根据你的实际情况修改,或者如我一样直接注释掉这段,我直接加了下面这段

 line: {
      host: "47.97.26.107",
      network_id: 100,
      port: 8888,
      from:'0xDFeDb94Ab496d6b68795dB890AcbbBdc2557860A'
},

 

不管是development还是line都是随意取的Key,如果你有多个区块链节点,你也可以多配几段即可。

代码段中的from为部署合约的账户,如果不配,则默认为以太坊客户端的第一个账户。

 

部署合约

编译

truffle compile

 

部署前

编译后要做的事情是确保部署合约的那个地址里有ETH,因为部署是要花钱的,并且地址必须解锁, 然后才能部署。

 

部署

truffle migrate --network line

(我自己配置的网络段是line,所以我的--network值是line,如果你只是 truffle migrate 不加任何参数  那么默认会部署development网络)

 

部署后

必须要设置挖矿地址,进行挖矿,否则交易不会广播。

 

查看合约

truffle networks

 

操作合约

进入控制台

truffle console --network line

 

获取合约实例

let instance = await MetaCoin.deployed()

 

调用合约方法

这里举例获取地址余额

let balance = await instance.getBalance('0x30f8c37E265FbfC8941c38f861a8d2FC994e4772')
balance.toNumber()

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!