一个基于以太坊的投票小应用

计划要写四篇关于以太坊开发的文章,这是第二篇。

关于投票的这个智能合约的代码,来源于网络,代码仅仅25行,也很容易理解,candidateList的定义主要是为了校验候选人是否存在而设计的数据结构,对于投票并没有特别实际的作用,合约并不是这篇文章要讲的重点,重点我们来看看怎么通过两种方式来执行这个合约。

参照上一篇文章的图表,我们这次采用Ganache模拟以太坊节点,启动Gnanache之后,默认开启8545这个端口,默认会生成10个Account,而且每一个都默认带有ether。

合约的编译,这次我们采用solc,一个npm的实现,使用web3部署合约,ejs主要是为了测试如何通过网页上的操作来执行智能合约,

solc编译后,就可以通过web3进行deploy了,我们可以看到deploy的形式和我们通过Remix在线执行的方式差不多,其中gas是可以通过web3进行计算的,

针对gas,多说一句,以太坊设计了很好的刺激机制,应用中,你在进行部署、或者执行合约接口的时候,都需要花费gas,互联网都是免费的,以太坊却为什么要设计成这种方式?这可能互联网未来的发展趋势,后面我会写一篇文章,分析一下为什么互联网不应该是「免费」的。

接下来的代码,用两种方式测试,第一种方式通过node用cli的方式进行交互,我们初始化了一组候选人,后面就可以根据提示完成投票,也就是调用合约中的两个接口,代码略,输出的结果如下,

第二种方式,我们把与合约的交互交给网页来操作,代码如下,

将一些变量渲染到前端页面,然后启动http server,把上面在cli中与合约交互的类似代码在前端通过web3来执行,结合jQuery和bootstrap完成页面工作,

我们可以看到,Dapp的开发,前端部分,和传统的App开发方式没有任何差别,只是多了web3的rpc通讯机制。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180320G0L54T00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券