Truffle实战指南

in #starnotelast year

从智能合约的编译、测试、布署到上线的完整流程。本地以ganache, geth进行开发测试,再由infura发布到ropsten测试网,实现一个Dapp开发的完整设计。
-> 前往星空笔记

Sort:  
Loading...
truffle init  初始化,生成以下文件
    contract migrations test turffle-config.js truffle.js
truffle develop  启动编译环境
    web3.eth.coinbase;   //第0个帐户
    web3.eth.account[1]; //第1个帐户
    web3.eth.getBalance("addr")   //查询余额
    //eth = 100*10**18 wei, 后面18个零
    //acount = web3.toWei(30, "ether");
    web3.eth.sendTransaction({from:"0x3a...c35c", to:"0x6f...04", value:20000}); //转帐
truffle console --network ganachenet  //交互
truffle compile  //编译
truffle migrate --network ganachenet  //布署到指定网络
   migrations -> 2_initial_helloworld.js

ganache本质是一个使用javascript实现的以太坊客户端。
缺点:只存在于内存,一重启数据全没!

cnpm install ganache-cli -g
ganache-cli

配置truffle:
module.exports = {
  networks: {
    ganachenet: {
      host:"127.0.0.1",
      port:8545,
      network_id:"*"
    }
  }
};

truffle compile
truffle migrate --network ganachenet  //布署到指定网络
Loading...
Loading...

在geth私有节点的基础上,另起一个节点,使用同样的创世区块设置。

  1. 新建目录:private2
  2. init.json //创世区块要一致
  3. geth init init.json --datadir .
  4. geth --datadir . --port 30302 --nodiscover --ipcdisable console
  5. net.peerCount //查看相连的节点
    admin.nodeInfo.enode //查看节点信息
    "enode://[email protected]:30302?discport=0"
Loading...
Loading...

cnpm install -g truffle
truffle version
truffle --help

npm uninstall -g truffle //卸载

在voting中引用了safemath

deployer.deploy(safemath);
deployer.link(safemath, voting); //关联两个合约
deployer.deploy(voting, ["Rama", "Nick", "Jose"]); //构造函数传参

  1. 将truffle编译布署好的合约文件(SimpleString.json)拷入vue项目的public文件夹中
  2. 读取并和合约交互
let res = await that.axios.get('SimpleString.json')
console.log(667, res.data)
let contract = that.TruffleContract(res.data)
Loading...
Loading...
Loading...
Loading...
Loading...