作者另有投影片在這邊
https://media.consensys.net/casper-smart-contract-consensus-7be6cfa6f7ec
從目前有公佈的消息來看,以太坊的POS打算透過智能合約來完成
它比較像是一個賭盤,賭那一個區塊會獲得最多礦工的睛睞,也就是共識落誰家?
猜對了贏得利息,猜錯會被扣錢,嚴重甚至沒收保證金。
參與賭局之前,要先透過智能合約,押注保證金,申請成為驗證者(Validator)。
之後就仿照拜占庭容錯機制(PBFT)分三個階段來達成共識,
這三個階段分別是:
pre-prepare, prepare, commit
pre-prepare階段由提案機制推舉出Next Block候選人
不確定推舉方式,有一說是沿用POW由礦工兢爭,也有一說是由亂數指定。
總之,至少有一個候選人會出線。
prepare階段是讓各個驗證者向外廣播,內容有點像是:
"我, XXX-validator 認為 YYY-block 會成為 Next Block"
commit階段就是押注的時候了
在聽取完其它驗證者的意見之後,每個驗證者都必需公告它的決定,
它的內容有點像是:
"我, XXX-validator 在聽取完眾人的意見之後,
認為全網共識 會押注在 YYY-block 做為 Next Block,
若開盤結果不如預期,願賠上ZZZ押金做為擔保"
然後,智能合約就依照開盤的結果執行獎勵與處罰。
比較困惑的是智能合約的執行方式
由於網路傳播有延時的問題,每個節點在同一時間看到的訊息不見得一致。
如果不把 prepare/commit 的訊息寫到Block-Chain裏,
那麼,散佈在世界各地的EVM,如何得到一致的執行結果?
但是Casper本身就是推舉Block的機制,沒達成共識前如何寫入?