想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!
故事是这样的,有5个小伙伴,他们为
黄豆芽, 黑豆芽,绿豆芽 中的哪种最好吃发生了分歧,于是它们准备发起一个投票。但是大家都希望投票的过程是完全去中心化的…最后他们决定使用区块链智能合约来解决这个问题
准备工作
启动geth(为了更快的打包,建议dev模式),新建5个账户,并把defaultAccount(如果没有设置一般为eth.accounts[0]) 解锁,保证defaultAccount账户里面有一定的资产
把合约部署(合约代码戳这里)上去,楼主这里使用的是 truffle部署合约,其它的方式也是可以的;另外,部署合约的时候,需要给构造器传一个数组参数,楼主这里给的是 var proposalNames = [‘huangDY’, ‘lvDY’, ‘heiDY’]; 即3个候选选项
root@ubuntu:~/contract/ballot# truffle migrate
Running migration: 1_initial_migration.js
Deploying Ballot…
Ballot: 0x6b2ddc515fc610690e34dfbd4915698b75add647
Saving successful migration to network…
Saving artifacts…
上述 Ballot 后面那串即合约存储地址
开始调用
此处要展示的是一个投票的全过程
合建合约实例
var ballotInstance = eth.contract(abi).at(addr);
addr 和 abi是分别赋值为合约存储地址 和 合约abi的变量。此过程不是一个交易,所以无需继续挖矿
验证合约实例是否正确
[“0x6875616e67445900000000000000000000000000000000000000000000000000”, 0]
web3.toUtf8(‘0x6875616e674459000