iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
自我挑戰組

區塊鏈 Blockchain系列 第 26

D26 DApp實作(List Candidates)

  • 分享至 

  • xImage
  •  

讓我們繼續建構我們的智能合約吧! 列出我們想要在選舉中投票的所有候選人

在我們做的 smoke test 當中,創建了一種將單個候選人存儲到我們的智能合約的方法


讓我們先重新打開 Election.sol 進行編輯

需要一個存放候選人的地方。
可以用Solidity mapping來做到這一點。Solidity mapping 就像 array 或 hash,關聯 key-value pairs。提供了以 id 進行每個候選人的查找。

addCandidate
在 function內,我們遞增候選計數器以表示已添加新候選人。
然後我們使用新的候選人結構更新mapping,使用當前候選人計數作為key。
這個 Candidate struct使用來自當前候選人計數的候選人id、名稱和初始投票計數初始化為 0。

https://ithelp.ithome.com.tw/upload/images/20221014/20152174zJ8QvHbZNR.png


將合約部署到區塊鏈並用兩名候選人填充我們的選舉時,執行此遷移。
通過表示合約已經部署

truffle migrate --reset

https://ithelp.ithome.com.tw/upload/images/20221014/201521740rcDvhS8MX.png

然後重新打開控制台

truffle console

Eleection.deployed().then(function(i){ app=i; })

https://ithelp.ithome.com.tw/upload/images/20221014/2015217441nN5kuuWf.png

查看列表中第一個候選人,可以在這裡看到該候選人的值
括號中也能改為二,代表查看第二個,但不能查看沒有的數字

app.candidates(1)

https://ithelp.ithome.com.tw/upload/images/20221014/201521746teqnaugLy.png

app.candidates(1).then(function(c){ candidate = c; })

c

https://ithelp.ithome.com.tw/upload/images/20221014/20152174h0GCeR5x0q.png

candidate

https://ithelp.ithome.com.tw/upload/images/20221014/20152174rnEhYibVJa.png


今天先到這,明天再繼續!


上一篇
Day25 DApp實作(smoke test) 3
下一篇
D27 DApp實作(List Candidates)2
系列文
區塊鏈 Blockchain30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言