以太坊学习笔记(八)——Truffle成功运行Dapp

论坛 期权论坛 区块链     
古川不爱笑   2018-11-20 23:34   5203   0
            前面讲了那么多,其实都是为了成功运行一个Dapp做的铺垫,那么今天我们就来完整的运行一个Dapp。运行这个Dapp前面几篇文章的操作是必不可少的,Dapp的源码是我在网上找的,不过由于合约语法和
  1. Truffle
复制代码
框架的升级,原来的demo已经不能够正常运行,所以我在原来的基础上进行了修改,重新上传到了git上,有需要的可以去Conference下载源码。
运行Dapp没必要纠结什么
  1. node集成
复制代码
  1. webpack
复制代码
之类的,把项目创建在自己的服务器路径下也能够实现项目的正常运行,或是一些web开发工具例如:
  1. WS
复制代码
  1. PhpStorm
复制代码
之类的都提供有浏览器调试工具,所以不要纠结前端编译的问题。早前的
  1. Truffle
复制代码
框架是集成有构建功能的,后来官方觉得绑定得太死反而有些鸡肋,就把默认构建功能移除了,当然功能还是保留在的,可以去Truffle官方找找资料。
初始化智能合约
编译合约、部署合约、启动
  1. testrpc
复制代码
这些前提操作就不再赘述了。前面讲
  1. truffle console
复制代码
的时候就讲到了使用
  1. TruffleContract
复制代码
的方式来调试合约,其实我们也可以通过这种方式来初始化合约,当然比较合理的方式是使用
  1. web3
复制代码
来初始化合约。这里我们以
  1. TruffleContract
复制代码
的方式来初始化。
这部操作我们需要引用
  1. truffle-contract.min.js
复制代码
资源包,初始化合约的关键代码如下:
  1. var myConferenceInstance;var Conference = TruffleContract(合约编译后的json内容);// Initializefunction initializeConference() {    Conference.setProvider(new web3.providers.HttpProvider("http://localhost:8545"));    Conference.new({from: account, gas: 3141592}).then(        function (conf) {            myConferenceInstance = conf;            $("#confAddress").html(myConferenceInstance.address);            checkValues();        });}
复制代码
通过这种方式初始化合约必须要设置
  1. provider
复制代码

调用合约中的方法
初始化完成之后,就可以调用合约中的方法,完成具体的业务流程,例如调用
  1. buyTicket()
复制代码
方法:
  1. // buyTicketfunction buyTicket(buyerAddress, ticketPrice) {    myConferenceInstance.buyTicket({from: buyerAddress, value: ticketPrice}).then(        function () {            return myConferenceInstance.numRegistrants.call();        }).then(        function (num) {            $("#numRegistrants").html(num.toNumber());            return myConferenceInstance.registrantsPaid.call(buyerAddress);        }).then(        function (valuePaid) {            var msgResult;            if (valuePaid.toNumber() == ticketPrice) {                msgResult = "Purchase successful";            } else {                msgResult = "Purchase failed";            }            $("#buyTicketResult").html(msgResult);        });}
复制代码
具体的代码去git上查看。
运行Dapp
完成业务逻辑之后,就可以运行Dapp。
1.首先启动
  1. testrpc
复制代码
2.浏览器还需要安装有
  1. MetaMask
复制代码
插件。将
  1. MetaMask
复制代码
的网络设置为
  1. Localhost 8545
复制代码
,然后从
  1. testrpc
复制代码
提供的测试地址中选一个导入到
  1. MetaMask
复制代码






3.账户导入成功之后,运行Dapp

运行成功
4.测试买票和退票

退票失败

退票成功
总结
上面的例子并不是很完善,因为只是一个demo,在业务逻辑实现的过程中少了一些阈值的判断,这样做有些缺乏严谨,大伙儿尝试的过程中可以进一步完善。
另外,智能合约的初始化最好还是使用web3中提供的方法,在开发Dapp的之前最好熟练掌握
  1. web3
复制代码
的用法。
         
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:50
帖子:9
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP