使用truffle在本地geth上部署MetaCoin合约

使用truffle在本地geth上部署MetaCoin合约

博主环境:已经安装[truffle][6]与[geth][6],[mist][6]钱包。

一:下载MetaCoin到本地

  • 1 mkdir demo //创建一个demo目录
  • 2 cd demo //进入目录
  • 3 truffle unbox webpack //在demo目录下载解压webpack模板
    avatar
    truffle提供了很多项目模板,可以快速搭建一个去中心化应用的代码骨架。Truffle 的盒子Boxs装有很多非常实用的项目样板,可以让你忽略一些环境配置问题,从而可以集中与开发你自己的DApp的业务唯一性。除此之外,Truffle Boxes能够容纳其他有用的组件、Solidity合约或者库,前后端视图等等。所有这些都是一个完整的实例Dapp程序。都可以下载下来逐一研究,寻找适合自己业务模型的组件。有兴趣可以访问http://truffleframework.com/boxes/。

二:运行在geth上

  • 1修改truffle.js //配置文件

  module.exports = {
  networks: {
    development: {
      host: '127.0.0.1',
      port: 8545,
      network_id: '*' // Match any network id
    }
  }
}

port改为自己的geth启动时的port参数,若启动时没写则默认为8545。
- 2 truffle compile //编译智能合约
- 3 运行geth
- 4 在geth中解锁主账户,因为下一步部署合约需要使用主账户

 
personal.unlockAccount('0x9fcE7F757600F054E45E99494b1793bF52686151', '123456')

- 5 truffle migrate //部署智能合约 在truffle2中使用truffle deploy
注意部署时使用miner.start()打开geth的挖矿,在geth上合约的部署都需要区块确认,否者无法部署成功
avatar

三 :检验成果

一在钱包上使用合约
- 1 truffle console //打开truffle控制台
- 2 MetaCoin.address //显示合约地址
- 3 JSON.stringify(MetaCoin.abi) //返回合约 ABI。ABI 基本上就是对合约的描述。它包含了一个函数、变量和其他因素的列表。
avatar
- 4 打开以太坊钱包
avatar
点击进入CONTRACTS
avatar
点击WATCH-CONTRACT
avatar
然后复制之前部署的合约的地址和 ABI,点击ok,打开geth挖矿
avatar
看见合约已经显示了
avatar
就可以使用合约了

二跑在游览器中
- 1 打开app.js文件


window.addEventListener('load', function() {
  // Checking if Web3 has been injected by the browser (Mist/MetaMask)
  if (typeof web3 !== 'undefined') {
    console.warn("Using web3 detected from external source. If you find that your accounts don't appear or you have 0 MetaCoin, ensure you've configured that source properly. If using MetaMask, see the following link. Feel free to delete this warning. :) http://truffleframework.com/tutorials/truffle-and-metamask")
    // Use Mist/MetaMask's provider
    window.web3 = new Web3(web3.currentProvider);
  } else {
    console.warn("No web3 detected. Falling back to http://127.0.0.1:9545. You should remove this fallback when you deploy live, as it's inherently insecure. Consider switching to Metamask for development. More info here: http://truffleframework.com/tutorials/truffle-and-metamask");
    // fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail)
    window.web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));
  }

  App.start();
});

找到这段代码,改成自己的端口地址如127.0.0.1:9545改为127.0.0.1:8545,这样前端才可以访问本地geth。
- 2 npm run dev//启动项目
avatar
启动成功就可以访问localhost:8080,使用合约了

你可能感兴趣的:(以太坊)