混合共識(shí)機(jī)制的算法模型與經(jīng)濟(jì)模型的優(yōu)缺點(diǎn)詳解
背景
共識(shí)機(jī)制是分布式系統(tǒng)為達(dá)成狀態(tài)一致性所采用的協(xié)議,是所有分布式系統(tǒng)的基礎(chǔ)。區(qū)塊鏈領(lǐng)域,聯(lián)盟鏈常采用 BFT(拜占庭容錯(cuò)),pBFT(實(shí)用拜占庭容錯(cuò))等傳統(tǒng)分布式系統(tǒng)中常用的共識(shí)機(jī)制;而公鏈項(xiàng)目多采用 PoW, PoS 等中本聰共識(shí)(Nakamoto Consenus)。
BFT,pBFT 等共識(shí)機(jī)制 的共識(shí)過(guò)程快,且一旦共識(shí)達(dá)成就不可再進(jìn)行更改,因此不會(huì)分叉。但這類共識(shí)節(jié)點(diǎn)間需要復(fù)雜的通信,適用于節(jié)點(diǎn)較少且組成穩(wěn)定的 Permissioned 系統(tǒng)。
中本聰共識(shí)是從比特幣的共識(shí)機(jī)制中抽象出的一套共識(shí)體系,基本原理是節(jié)點(diǎn)通過(guò)提供某種證明來(lái)獲取創(chuàng)建新區(qū)塊的權(quán)利,同時(shí)任何節(jié)點(diǎn)都很容易對(duì)該證明的真實(shí)性進(jìn)行驗(yàn)證,從而對(duì)新區(qū)塊達(dá)成共識(shí)。這里的證明可以針對(duì)工作量、權(quán)益、服務(wù)等,對(duì)應(yīng)的共識(shí)機(jī)制為 PoW(工作量證明),PoS(權(quán)益證明),PoSe(服務(wù)證明)等等。具體原理可參考文獻(xiàn)[1]。
中本聰共識(shí)引入了最長(zhǎng)鏈法則和經(jīng)濟(jì)激勵(lì)機(jī)制,使節(jié)點(diǎn)之間可以通過(guò)簡(jiǎn)單通信,達(dá)成共識(shí)[2]。中本聰共識(shí)具有較強(qiáng)的穩(wěn)定性,不需要對(duì)加入的節(jié)點(diǎn)進(jìn)行篩選,適用于非許可(Permissionless)分布式系統(tǒng)。但中本聰共識(shí)分叉的可能性較高,且共識(shí)過(guò)程相對(duì)較慢。
?
混合共識(shí)機(jī)制
為了結(jié)合上述兩類共識(shí)機(jī)制的優(yōu)點(diǎn),一些項(xiàng)目提出了對(duì)兩者進(jìn)行結(jié)合的混合共識(shí)機(jī)制。如 Cosmos[3], Polkadot[4],Algorand[5] 等項(xiàng)目將 PoS(或DPoS) 與 BFT 進(jìn)行結(jié)合,在盡量保持網(wǎng)絡(luò)開(kāi)放性的同時(shí),降低分叉的可能性,提升共識(shí)效率。
同時(shí),不同種類的中本聰共識(shí)也存在各自的不足。如 PoW 的礦工權(quán)力過(guò)大,占有大量算力的礦工有可能發(fā)起 51% 攻擊,礦工進(jìn)行“硬分叉”有可能導(dǎo)致社區(qū)的分裂。而 PoS 共識(shí)則面臨 nothing-at-stake 等問(wèn)題,同時(shí)因?yàn)闆](méi)有運(yùn)營(yíng)成本,導(dǎo)致大量新產(chǎn)生的幣被長(zhǎng)期持有,流通量不足。另外,僅采用一種共識(shí)時(shí)系統(tǒng)往往無(wú)法提供除轉(zhuǎn)賬外更加復(fù)雜的服務(wù)。因此,一些項(xiàng)目提出了結(jié)合不同中本聰共識(shí)的混合共識(shí)機(jī)制,旨在結(jié)合不同共識(shí)的優(yōu)點(diǎn)。如 Decred[6] 的 PoW+PoS 共識(shí)機(jī)制,Dash[7] 的 PoW + PoSe 共識(shí)機(jī)制等。
本文將介紹幾種典型混合共識(shí)機(jī)制的算法模型與經(jīng)濟(jì)模型,并分析其優(yōu)缺點(diǎn)。
典型混合共識(shí)項(xiàng)目剖析
1. Decred: PoW + PoS
共識(shí)算法
Decred 項(xiàng)目采用了 PoW + PoS 混合共識(shí)機(jī)制。系統(tǒng)的參與者包括:
礦工節(jié)點(diǎn):區(qū)塊的生產(chǎn)者,打包交易,進(jìn)行 PoW 挖礦
驗(yàn)證節(jié)點(diǎn):即 PoS Validator,通過(guò)投票驗(yàn)證 PoW 礦工提交的區(qū)塊,同時(shí)參與治理過(guò)程
開(kāi)發(fā)者:對(duì) Decred 開(kāi)源代碼進(jìn)行維護(hù),獲得項(xiàng)目預(yù)留基金的獎(jiǎng)勵(lì)
普通用戶:使用 Decred 網(wǎng)絡(luò),收發(fā)交易
PoW 挖礦
Decred 的 PoW 挖礦過(guò)程和比特幣基本一致,僅對(duì)挖礦算法進(jìn)行修改(Decred 的挖礦算法采用了和比特幣不同的哈希函數(shù) -- BLAKE-256),具體原理參考[8]。與比特幣不同之處在于:
· 礦工創(chuàng)建的區(qū)塊需要提交給驗(yàn)證節(jié)點(diǎn)進(jìn)行投票驗(yàn)證才能最終被確認(rèn)
· 即使區(qū)塊確認(rèn),礦工也只獲得部分獎(jiǎng)勵(lì),其余獎(jiǎng)勵(lì)由驗(yàn)證節(jié)點(diǎn)和項(xiàng)目基金獲得
PoS 投票
Decred 網(wǎng)絡(luò)中的 PoS 驗(yàn)證節(jié)點(diǎn)可以進(jìn)行以下投票:
· 投票決定是否接受礦工提交的區(qū)塊
· 投票決定是否通過(guò)某些共識(shí)相關(guān)的升級(jí)
· 投票決定項(xiàng)目預(yù)留基金的去向
成為 PoS 驗(yàn)證節(jié)點(diǎn)的條件是通過(guò)質(zhì)押(鎖定)DCR(Decred 原生幣)獲取 Ticket,再通過(guò) TIcket 進(jìn)行投票。TIcket 的價(jià)格會(huì)動(dòng)態(tài)調(diào)整,確??偟?TIcket 數(shù)量大致保持恒定。節(jié)點(diǎn)通過(guò)質(zhì)押獲取 TIcket 時(shí)還需要支付一定的 Ticket 手續(xù)費(fèi),作為礦工將對(duì)應(yīng)的 Ticket 打包進(jìn)區(qū)塊的獎(jiǎng)勵(lì),只有被打包進(jìn)區(qū)塊的 Ticket 才能進(jìn)入 Ticket 池,之后才有可能被選為驗(yàn)證節(jié)點(diǎn)。Decred 中 Ticket 的獲取和銷(xiāo)毀的過(guò)程在[9]中有詳細(xì)闡述。
對(duì)新區(qū)塊進(jìn)行投票
當(dāng)?shù)V工節(jié)點(diǎn)挖到一個(gè)符合難度要求的區(qū)塊,Decred 網(wǎng)絡(luò)會(huì)從當(dāng)前 Ticket 池中隨機(jī)選擇 5 張 Ticket 對(duì)該區(qū)塊進(jìn)行投票驗(yàn)證,Ticket 被隨機(jī)選中的概率符合泊松分布。當(dāng)超過(guò) 3 張 Ticket 驗(yàn)證通過(guò)時(shí),區(qū)塊才會(huì)被接受。
對(duì)新共識(shí)提案進(jìn)行投票
驗(yàn)證節(jié)點(diǎn)還可對(duì)共識(shí)升級(jí)提案進(jìn)行投票,只有超過(guò) 75% 的 Ticket 投票通過(guò)時(shí),升級(jí)才會(huì)被觸發(fā)?;具^(guò)程為:
1. 開(kāi)發(fā)者提出升級(jí)提案
2. 開(kāi)發(fā)者發(fā)布包含該升級(jí)的軟件版本(但還無(wú)法觸發(fā))
3. 絕大部分礦工節(jié)點(diǎn)(95%)和驗(yàn)證節(jié)點(diǎn)(75%)需要升級(jí)到指定的軟件版本,才可開(kāi)始投票
4. 經(jīng)過(guò)8064個(gè)區(qū)塊的投票(每個(gè)區(qū)塊5票,這樣理論上可以覆蓋整個(gè) Ticket 池),當(dāng)獲得超過(guò) 75% 的同意票時(shí),升級(jí)才會(huì)被觸發(fā)
5. 若提案通過(guò),則觸發(fā)升級(jí);若不通過(guò),保持原狀
投票決定項(xiàng)目預(yù)留基金的歸屬
Decred 的區(qū)塊獎(jiǎng)勵(lì)中的 10% 將作為項(xiàng)目預(yù)留基金。用戶可以支付少量的 DCR 在 Politeia 平臺(tái)上發(fā)起對(duì)應(yīng)提案,將預(yù)留基金的部分用于特殊的用戶,如支持生態(tài)中某個(gè)開(kāi)源項(xiàng)目等。Ticket 的持有者(驗(yàn)證節(jié)點(diǎn))可以對(duì)提案進(jìn)行投票,決定提案是否通過(guò)。其步驟和上述提案投票過(guò)程基本相同。
經(jīng)濟(jì)模型
Decred 的原生代幣為 DCR,所有 DCR 都通過(guò)新區(qū)塊獎(jiǎng)勵(lì)產(chǎn)生。DCR 采用通縮模型,創(chuàng)世塊獎(jiǎng)勵(lì)為 1,680,000 DCR(預(yù)挖),初始區(qū)塊獎(jiǎng)勵(lì)為 22 DCR,且每隔 6144 個(gè)區(qū)塊(區(qū)塊間隔約5分鐘)減少為上一區(qū)塊獎(jiǎng)勵(lì)的 100/101,總量固定,約為 2100 萬(wàn) DCR,預(yù)計(jì)在2120年全部挖出。
DCR 和 BTC 類似,在 Decred 系統(tǒng)中可以用于發(fā)送交易和支付手續(xù)費(fèi)。同時(shí) DCR 可以在二級(jí)市場(chǎng)上流通。
除創(chuàng)世區(qū)塊外,所有區(qū)塊獎(jiǎng)勵(lì)均按如下方式分配:
· PoW 礦工(區(qū)塊生產(chǎn)者)獲得 60%
· 被選中的 PoS Validator 獲得 30%(每個(gè)區(qū)塊有5個(gè)驗(yàn)證節(jié)點(diǎn),每個(gè)獲得 6%)
· 10% 獎(jiǎng)勵(lì)作為項(xiàng)目獎(jiǎng)勵(lì)基金
除 DCR 外,Decred 系統(tǒng)中還有一種名為 Ticket 的 Token,Ticket 僅可通過(guò)質(zhì)押(鎖定)DCR 來(lái)獲得。質(zhì)押本身沒(méi)有成本,但需要支付一定買(mǎi) Ticket 的手續(xù)費(fèi)(用 DCR 支付,作為區(qū)塊獎(jiǎng)勵(lì))。每張 Ticket 的價(jià)格每隔 144 個(gè)區(qū)塊會(huì)進(jìn)行動(dòng)態(tài)調(diào)整,使 Ticket 池中可用的 Ticket 數(shù)保持在 40,960 張。Ticket 在 Decred 系統(tǒng)中僅用于投票,且一旦投票完成、或錯(cuò)過(guò)投票、或者過(guò)期(如果 40,960 區(qū)塊內(nèi)都沒(méi)被選中,則自動(dòng)過(guò)期),Ticket 都將消失,被質(zhì)押的 DCR 和獎(jiǎng)勵(lì)的 DCR 將返還給質(zhì)押者。
Ticket 的獲取成本很低(質(zhì)押,而不是購(gòu)買(mǎi)),本身無(wú)法流通,且無(wú)法永久持有,理論上沒(méi)有什么價(jià)值。但其作為參與 PoS 共識(shí)及區(qū)塊治理和項(xiàng)目預(yù)留基金分配的憑證,有可能有一定的市場(chǎng)價(jià)值,不排除在系統(tǒng)外進(jìn)行賄選、買(mǎi)票的可能[10]。
激勵(lì)機(jī)制
礦工(生產(chǎn)者)
· 通過(guò)購(gòu)買(mǎi)礦機(jī)或租用算力進(jìn)行 PoW 挖礦,期望獲得區(qū)塊獎(jiǎng)勵(lì)
· 為保證收益,礦工會(huì)繼續(xù)升級(jí)礦機(jī)或租用更多算力,同時(shí)確保了網(wǎng)絡(luò)安全
· 網(wǎng)絡(luò)中每筆交易(包括生成 Ticket 的交易)都包含手續(xù)費(fèi),礦工會(huì)打包盡量多的交易以獲得更多區(qū)塊獎(jiǎng)勵(lì)
· 礦工提交的區(qū)塊需要通過(guò) PoS 驗(yàn)證才能被確認(rèn),因此除非 PoW 礦工同時(shí)掌握大部分的 PoS Validator,即使具有大量算力的礦工也很難發(fā)動(dòng) 51% 攻擊,攻擊動(dòng)機(jī)較一般 PoW 網(wǎng)絡(luò)更弱
· 進(jìn)行攻擊行為會(huì)被驗(yàn)證節(jié)點(diǎn)列入黑名單,作惡動(dòng)機(jī)弱
· 為支付運(yùn)營(yíng)成本,礦工傾向于賣(mài)出挖礦所得,為 DCR 提供流動(dòng)性
PoS 驗(yàn)證節(jié)點(diǎn)(生產(chǎn)者&消費(fèi)者)
· 通過(guò)質(zhì)押 DCR 獲得 Ticket 進(jìn)行投票,成功投票可獲得 30% 的區(qū)塊獎(jiǎng)勵(lì)
· 區(qū)塊被拒絕將沒(méi)有激勵(lì),但可以保證網(wǎng)絡(luò)安全,與自身利益一致
· 參與治理本身沒(méi)有激勵(lì),但參與投票與自身利益一致
· 為獲得更多投票機(jī)會(huì),驗(yàn)證節(jié)點(diǎn)傾向于鎖定更多 DCR 換取 Ticket
開(kāi)發(fā)者(消費(fèi)者)
· 初始預(yù)挖了 1,680,000 DCR,有升值預(yù)期
· 每個(gè)區(qū)塊的 10% 的作為預(yù)留基金,對(duì)社區(qū)有貢獻(xiàn)的開(kāi)發(fā)者有機(jī)會(huì)獲得
普通用戶(消費(fèi)者)
· 在 Decred 網(wǎng)絡(luò)中使用 DCR 進(jìn)行交易
· 普通用戶質(zhì)押 DCR 獲得 Ticket,也可成為驗(yàn)證節(jié)點(diǎn)獲取收益
· 在二級(jí)市場(chǎng)買(mǎi)賣(mài) DCR 獲取收益
挖礦為整個(gè)系統(tǒng)提供了經(jīng)濟(jì)基礎(chǔ),保證網(wǎng)絡(luò)安全性,保證了 DCR 的流通性。質(zhì)押 DCR 實(shí)現(xiàn)了鎖倉(cāng),有助于二級(jí)市場(chǎng)價(jià)格的穩(wěn)定。投票和預(yù)留基金使項(xiàng)目更接近于 DAO(分布式匿名組織)的形式運(yùn)營(yíng),開(kāi)發(fā)者通過(guò)激勵(lì)參與到項(xiàng)目維護(hù)之中。
小結(jié)
Decred 采用了 PoW+PoS 混合共識(shí)機(jī)制,類似機(jī)制在 Sero,HyperPay 等項(xiàng)目中也被使用。與普通 PoW 共識(shí)相比,PoS 驗(yàn)證節(jié)點(diǎn)制約了 PoW 礦工的權(quán)利,使其無(wú)法發(fā)起“雙花”攻擊。同時(shí),和純粹的 PoS 共識(shí)相比,由于大部分區(qū)塊獎(jiǎng)勵(lì)仍由礦工獲得,處于現(xiàn)金流考慮,礦工傾向于賣(mài)出挖礦收益,因此保證了系統(tǒng)中幣的流通性。純 PoS 共識(shí)的另一個(gè)問(wèn)題是 noting-at-stake[15],很大原因在于 Staker 獲得所有獎(jiǎng)勵(lì),且成本太低。而在這個(gè)混合共識(shí)中,PoS 驗(yàn)證者獲得的收益變少,在一定程度上緩解了 nothing-at-stake 問(wèn)題。
然而,該共識(shí)也存在一定弊端,實(shí)際上 PoS 驗(yàn)證節(jié)點(diǎn)控制了整個(gè)網(wǎng)絡(luò),他們可以拒絕正常的區(qū)塊,且不需要太高的成本。雖然 Ticket 數(shù)量很多,但實(shí)際上極有可能被少數(shù)大戶持有,使網(wǎng)絡(luò)實(shí)際被大戶所控制。另外,受限于 PoW,其 TPS 往往不高,因此不適用于需要高性能的系統(tǒng)。
2. Dash: PoW + PoSe
共識(shí)算法
Dash 采用了 PoW + PoSe 混合共識(shí)機(jī)制。系統(tǒng)的參與者包括:
· 礦工節(jié)點(diǎn):區(qū)塊的生產(chǎn)者,打包交易,進(jìn)行 PoW 挖礦
· Masternode:全節(jié)點(diǎn),可提供即時(shí)交易、隱私交易等附加服務(wù)
· 開(kāi)發(fā)者:對(duì) Dash 開(kāi)源代碼進(jìn)行維護(hù)
· 普通節(jié)點(diǎn):非全節(jié)點(diǎn),可使用 Dash 網(wǎng)絡(luò),收發(fā)交易
PoW 挖礦
Dash 的 PoW 挖礦過(guò)程和比特幣基本一致,僅對(duì)挖礦算法進(jìn)行修改(Dash采用了名為 x11 的挖礦算法,實(shí)際是 11 種哈希函數(shù)的組合),具體可以參考[7]。與比特幣不同之處在于:
· 礦工只能獲得部分區(qū)塊獎(jiǎng)勵(lì),其余將作為 Masternode 獎(jiǎng)勵(lì)和項(xiàng)目預(yù)留
· Masternode 有權(quán)拒絕礦工產(chǎn)生的區(qū)塊
Masternode
Masternode 是 Dash 網(wǎng)絡(luò)中最重要的參與者。成為 Masternode 的條件:
· 證明 1000 DASH 幣的所有權(quán)(相當(dāng)于鎖定,但幣仍可以使用,一旦幣被使用,將從 Masternode 列表中移除)
· 運(yùn)行 Dash 全節(jié)點(diǎn)
· 一臺(tái)運(yùn)行 Linux 的服務(wù)器,上面運(yùn)行 Masternode 相關(guān)的軟件:
(1)服務(wù)器要求有較高的硬件配置:推薦 1核2GHz,4G RAM,60G 硬盤(pán)
(2)服務(wù)器必須有公網(wǎng) IP
只要滿足上述條件,節(jié)點(diǎn)即可發(fā)送一筆特殊的交易 ProRegTx,在鏈上注冊(cè)成為 Masternode。所有 Masternodes 都被添加到 Masternode list 中,列表順序由鏈上注冊(cè)順序(區(qū)塊高度)以及 ProRegTx 交易的哈希唯一確定,在所有 Masternode 中達(dá)成共識(shí)。
與普通節(jié)點(diǎn)相比,Masternode 可以提供一些附加服務(wù):
1、即時(shí)交易 InstantSend:
· 對(duì)于符合特定要求的交易可以立刻確認(rèn),不需要等待多個(gè)確認(rèn),即時(shí)交易不能被雙花
· 即時(shí)交易需要滿足的條件:
(1)交易的所有輸入都被 InstantSend 腳本鎖定
(2)所花費(fèi)的 UTXO 包含在有 ChainLock 的區(qū)塊中
(3)所有輸入本身至少包含 6 個(gè)以上區(qū)塊確認(rèn)
2、區(qū)塊鎖定 ChainLocks
· 由 300-400 個(gè) Masternodes 組成的委員會(huì)達(dá)成一致意見(jiàn),鎖定某一區(qū)塊
· 區(qū)塊被鎖定后,在同一高度不允許再被分叉,即不可能再進(jìn)行 51% 攻擊
· 如果開(kāi)啟了 InstantSend 功能,則區(qū)塊中所有交易都必須被 InstantSend 鎖定后,才能進(jìn)行區(qū)塊鎖定
3、隱私交易 PrivateSend
· 隱私交易的原理是混幣(Coin-mixing)[12]
· PrivateSend 本身不收費(fèi),但每一筆交易都要支付一定的抵押款(Collateral,以 DASH 計(jì)),抵押款有十分之一的幾率被收做手續(xù)費(fèi)
· 在混幣過(guò)程中若發(fā)起方?jīng)]有及時(shí)響應(yīng)混幣相關(guān)的信息交互,也有 ? 的可能被沒(méi)收抵押款(作為手續(xù)費(fèi))
4、治理
· Masternode 對(duì)提案進(jìn)行投票,完成治理過(guò)程
服務(wù)證明 Proof of Service(PoSe)
Dash 中的 PoSe 機(jī)制通過(guò)一套評(píng)分系統(tǒng)證明 Masternode 是否提供了服務(wù):
· PoSe 評(píng)分系統(tǒng)基于分布式簽名生成(Distributed Key Generation,DKG)過(guò)程,該過(guò)程需要在 Masternode 之間進(jìn)行通信
· 通過(guò)執(zhí)行 DKG 可以產(chǎn)生對(duì)系統(tǒng)長(zhǎng)期提供服務(wù)的 Masternode Quorum,稱為 LLMQ (Long-Living Masternode Quorums),其主要任務(wù)是對(duì)共識(shí)相關(guān)的信息進(jìn)行多重簽名(如InstantSend 交易,區(qū)塊鎖定等)
· Masternode 的初始分?jǐn)?shù)為 0,分?jǐn)?shù)一旦超過(guò) Masernode 列表中 Masternode 的總數(shù),則masternode 將被視為沒(méi)有提供服務(wù),從列表中移除(需要重新申請(qǐng)成為 Masternode):
(1)在 LLMQ DKG 過(guò)程中如果沒(méi)有參與,將增加 66% 的分?jǐn)?shù)(說(shuō)明在短時(shí)間內(nèi)連續(xù)兩次不參加 DKG 則會(huì)被視為無(wú)法提供服務(wù))
(2)Dash 主鏈每增加一個(gè)區(qū)塊,每個(gè) Masternode 的分?jǐn)?shù)都會(huì)減少 1
通過(guò) PoSe 證明提供了相應(yīng)服務(wù)的 Masternode 將得到獎(jiǎng)勵(lì),而無(wú)法提供服務(wù)的 Masternode 將會(huì)被移除。
經(jīng)濟(jì)模型
Dash 的原生代幣為 DASH:
· 全部通過(guò)挖礦產(chǎn)生(團(tuán)隊(duì)有預(yù)挖,主網(wǎng)上線前 2 天,總計(jì)約 190 萬(wàn) DASH 被挖出,約占總供應(yīng)量的 10% 以上,備受爭(zhēng)議[17])
· Dash 的區(qū)塊獎(jiǎng)勵(lì)算法經(jīng)幾次更改,截止到 2019 年 6 月,區(qū)塊獎(jiǎng)勵(lì)為 3.11 DASH(另有 10% 作為團(tuán)隊(duì)預(yù)留),獎(jiǎng)勵(lì)每隔 210240 個(gè)區(qū)塊(約382天)減少 7.14%
· 區(qū)塊間隔約為 2.5 分鐘
· 最大供應(yīng)量約為 18,921,005 DASH
· 每個(gè)區(qū)塊獎(jiǎng)勵(lì)的分配如下:
· 成功創(chuàng)建區(qū)塊的礦工獲得 45%
· 參與 PoSe 的 Masternode 獲得 45%(每個(gè)區(qū)塊只有一個(gè) Masternode 參與)
· 10% 獎(jiǎng)勵(lì)作為預(yù)留基金(按月發(fā)放)
經(jīng)濟(jì)激勵(lì)
礦工(生產(chǎn)者)
· 和普通 PoW 礦工一致,購(gòu)買(mǎi)礦機(jī)、算力,打包區(qū)塊,獲取區(qū)塊獎(jiǎng)勵(lì)
· 礦工創(chuàng)建的區(qū)塊要經(jīng)過(guò) Masternode 的認(rèn)證,故較難發(fā)起攻擊
· Masternode 可以鎖定區(qū)塊,無(wú)法分叉,故礦工一般無(wú)法發(fā)動(dòng) 51% 攻擊
· 為支付運(yùn)營(yíng)成本,礦工傾向于賣(mài)出挖礦所得,提供流動(dòng)性
Masternode(生產(chǎn)者&消費(fèi)者):
· 鎖定 1000 DASH 并參與 PoSe,保持在線,獲取區(qū)塊獎(jiǎng)勵(lì)
· 有一定運(yùn)營(yíng)服務(wù)費(fèi)的成本,有可能賣(mài)出獎(jiǎng)勵(lì),但質(zhì)押的 1000 DASH 一般不會(huì)輕易使用,相當(dāng)于鎖倉(cāng)
· 參與 InstantSend,PrivateSend 等服務(wù),獲取對(duì)應(yīng)獎(jiǎng)勵(lì)
· 參與治理,本身沒(méi)有獎(jiǎng)勵(lì),但不參與會(huì)被懲罰(從 Masternode 列表中移除)
開(kāi)發(fā)者(消費(fèi)者)
· 預(yù)挖了部分 DASH,維護(hù)項(xiàng)目,有上漲預(yù)期
· 預(yù)留的 10% 挖礦獎(jiǎng)勵(lì)大概率由開(kāi)發(fā)團(tuán)隊(duì)獲得
普通用戶(消費(fèi)者)
· 收發(fā)普通交易,二級(jí)市場(chǎng)買(mǎi)賣(mài)
· 收發(fā)即時(shí)交易,隱私交易等,滿足特殊需求
· 可通過(guò)質(zhì)押 1000 DASH 成為 Masternode
PoW 礦工和 Masternode 共同保證了網(wǎng)絡(luò)的安全性。同時(shí),由于 Masternode 有較強(qiáng)的激勵(lì),可以促使更多的節(jié)點(diǎn)提供 Masernode 的服務(wù)。通過(guò)進(jìn)一步優(yōu)化激勵(lì)模型,未來(lái) Dash 的 Masternode 可能支持更多更復(fù)雜的服務(wù)。團(tuán)隊(duì)預(yù)留的 DASH 也為未來(lái)項(xiàng)目的長(zhǎng)期發(fā)展提供了保障。
小結(jié)
Dash 是最早引入 Masternode 概念的項(xiàng)目之一。時(shí)至今日類似的含 Masternode 項(xiàng)目已經(jīng)越來(lái)越多,詳見(jiàn)[11]。與純粹的 PoW 共識(shí)機(jī)制相比,Masternode 的引入在一定程度上制約了礦工濫用權(quán)力,提高了區(qū)塊鏈的最終確定性,降低了分叉和 51%攻擊 的可能性。另一方面,通過(guò)引入 PoSe, 可以激勵(lì) Masternode 提供除常規(guī)交易之外的服務(wù),增加系統(tǒng)的多樣性。
這類混合共識(shí)的最大問(wèn)題在于 Masternode 的權(quán)利往往過(guò)大,比如 DASH 大戶可以同時(shí)擁有多個(gè) Masternode。當(dāng)大部分 Masternode 被小部分人掌握,網(wǎng)絡(luò)會(huì)趨向中心化。另外,受制于 PoW,其 TPS 仍然是較大瓶頸。
3. Komodo: PoW + dPoW
共識(shí)算法
Komodo 在普通 PoW 的基礎(chǔ)上,增加了一種名為延遲 PoW (delayed Proof of Work,dPoW) 的安全機(jī)制,試圖利用比特幣等較安全的 PoW 項(xiàng)目的算力來(lái)保證 Komodo 以及相關(guān)資產(chǎn)的安全性。dPoW 可以作為任何基于 UTXO 的鏈的二層共識(shí)。
Komodo 系統(tǒng)的參與者包括:
· 礦工:進(jìn)行普通的 PoW 挖礦
· 公證人(Notary)節(jié)點(diǎn):運(yùn)行多個(gè)鏈的全節(jié)點(diǎn)(包括比特幣全節(jié)點(diǎn),Komodo全節(jié)點(diǎn)等),在比特幣網(wǎng)絡(luò)上對(duì)區(qū)塊進(jìn)行公證,同時(shí)也參與 Komodo 挖礦
· 普通用戶:KMD 幣的持有者,可參與 Staking(注意,這里并不是 PoS,而是類似鎖倉(cāng)激勵(lì))
Komodo 中的礦工和普通 PoW 項(xiàng)目中礦工行為基本一致(挖礦算法為 EquiHash),不同之處在于 Komodo 的普通礦工僅有 25% 的幾率挖到區(qū)塊,其他區(qū)塊大部分由公證人節(jié)點(diǎn)創(chuàng)建。
dPoW 安全機(jī)制
Komodo 系統(tǒng)中存在 64 個(gè)公證人節(jié)點(diǎn),他們是 dPoW 安全機(jī)制的實(shí)際運(yùn)行者。其中:
· 4 個(gè)公證人節(jié)點(diǎn)為開(kāi)發(fā)者預(yù)留,永久有效
· 其余 60 個(gè) 由 KMD 幣的持有者投票產(chǎn)生:
(1)在每年提供公證服務(wù)排名前 30 的節(jié)點(diǎn)將自動(dòng)當(dāng)選為下一期公證人節(jié)點(diǎn)(即完成最多 Komodo 到 Bitcoin 映射的
(2)其余 30 節(jié)點(diǎn)將重新投票產(chǎn)生
· 所有公證人節(jié)點(diǎn)需要同時(shí)運(yùn)行比特幣全節(jié)點(diǎn)、Komodo 全節(jié)點(diǎn),以及所有要保護(hù)的鏈的全節(jié)點(diǎn)(目前有40多個(gè)),因此對(duì)硬件配置要求較高
公證人節(jié)點(diǎn)的主要工作是完成 Komodo 鏈到 Bitcoin 鏈的公證(相當(dāng)于在 Bitcoin 上寫(xiě)入 Komodo 的檢查點(diǎn)),確保 Komomo 主鏈的安全性。也可以將其他資產(chǎn)的檢查點(diǎn)寫(xiě)到 Komodo 鏈上,過(guò)程和 Komodo 到 Bitcoin 的公證一致。
公證人節(jié)點(diǎn)的工作流程簡(jiǎn)要描述如下:
· 首先運(yùn)行所有全節(jié)點(diǎn)(包括比特幣,Komodo 等),并同步到最新區(qū)塊
· 用同一個(gè)私鑰在所有鏈上生成一組地址
· 和其他 63 個(gè)公證人節(jié)點(diǎn)保持連接和通信
· 開(kāi)始 dPoW 公證流程:
(1)根據(jù)預(yù)先設(shè)定的規(guī)則,所有公證人節(jié)點(diǎn)可以提議需要公證的 Komodo 鏈上的某個(gè)區(qū)塊
(2)從 64 個(gè)公證人節(jié)點(diǎn)中選擇 13 個(gè),所有公證人的地址將會(huì)按順序存在一個(gè)列表中,公證人程序按順序選取前 13 個(gè)可連接的公證人節(jié)點(diǎn),若不可連接將被跳過(guò),被選中后節(jié)點(diǎn)地址將會(huì)被移到列表末尾
(3)被選出的 13 個(gè)公證人各自簽名一筆有 13 個(gè)輸入的比特幣交易(如[13]),該交易的其中一個(gè)輸出為上述要公證的區(qū)塊的哈希值(通過(guò) OP_RETURN 實(shí)現(xiàn))
(4)待比特幣網(wǎng)絡(luò)上交易確認(rèn)后,公證人節(jié)點(diǎn)會(huì)構(gòu)造一筆類似的 Komodo 交易,其中一個(gè)輸出為上述包含了公證區(qū)塊哈希的比特幣交易哈希(也通過(guò) OP_RETURN 實(shí)現(xiàn))
(5)該交易被確認(rèn)后,Komodo 網(wǎng)絡(luò)上所有節(jié)點(diǎn)都可以確定比特幣網(wǎng)絡(luò)上 Komodo 鏈的檢查點(diǎn)
(6)上述過(guò)程不斷重復(fù)(每10分鐘一次),同時(shí)也可以適用于其他用 dPoW 確保安全的鏈
通過(guò)上述 dPoW 和公證人節(jié)點(diǎn)機(jī)制,相當(dāng)于 Komodo 網(wǎng)絡(luò)在比特幣網(wǎng)絡(luò)上設(shè)置了多個(gè)檢查點(diǎn),在比特幣網(wǎng)絡(luò)上被公證的區(qū)塊將不可撤銷(xiāo),因此幾乎不存在 51% 攻擊的可能。
Komodo 中的 Staking
Komodo 網(wǎng)絡(luò)中的 Staking 和共識(shí)無(wú)關(guān),其更類似于鎖倉(cāng)激勵(lì)。KMD 的持有者通過(guò)鎖定代幣,將獲得一定的 KMD 獎(jiǎng)勵(lì)[14]。
經(jīng)濟(jì)模型
Komodo 的原生代幣為 KMD,總量為 2 億,按如下方式分配:
· 初始的 ICO 分配了 2000 萬(wàn) KMD
· 早期的 BTCD 幣持有者通過(guò)兌換獲得了 7000 萬(wàn) KMD
· 團(tuán)隊(duì)預(yù)留 1000 萬(wàn)作為運(yùn)營(yíng)成本
· 剩余 1億 KMD 中
(1)22% 左右用于獎(jiǎng)勵(lì)礦工,作為挖礦獎(jiǎng)勵(lì),區(qū)塊間隔為 1 分鐘,每個(gè)區(qū)塊獎(jiǎng)勵(lì)為 3 KMD
(2)78% 左右用于獎(jiǎng)勵(lì) Staking,Staking 的年化收益約為 5%
· 挖礦和 Staking 的獎(jiǎng)勵(lì)都是線性釋放,將在 2031 年左右達(dá)到總供應(yīng)量上限,之后不再有獎(jiǎng)勵(lì)。
特別地,對(duì)于 KMD PoW 挖礦,普通礦工只有 25% 的概率挖到區(qū)塊。而公證人節(jié)點(diǎn)由于提供了 dPoW 安全服務(wù),將會(huì)以更低的難度挖到區(qū)塊。據(jù)統(tǒng)計(jì),大約 75% 的區(qū)塊被公證人節(jié)點(diǎn)挖到。挖礦獎(jiǎng)勵(lì)完全由挖到區(qū)塊的礦工或公正人節(jié)點(diǎn)獲得。
經(jīng)濟(jì)激勵(lì)
普通礦工(生產(chǎn)者)
· 和普通 PoW 項(xiàng)目礦工一致,購(gòu)買(mǎi)礦機(jī)、算力,打包區(qū)塊,獲取區(qū)塊獎(jiǎng)勵(lì)
· 由于公證人節(jié)點(diǎn)的存在,普通礦工一般無(wú)法發(fā)動(dòng) 51% 攻擊
· 為支付運(yùn)營(yíng)成本,普通礦工傾向于賣(mài)出挖礦所得
公證人節(jié)點(diǎn)(生產(chǎn)者)
· 為 Komodo 鏈提供區(qū)塊公證服務(wù),從而可以以較低的難度挖到區(qū)塊,獲得區(qū)塊獎(jiǎng)勵(lì)
· 提供好的服務(wù)才能連任公證人,激勵(lì)其按照 dPoW 規(guī)則完成區(qū)塊公證
· 公證人本身不需要質(zhì)押任何 KMD,且服務(wù)器配置要求高,為支付運(yùn)營(yíng)成本,公證人節(jié)點(diǎn)也傾向于賣(mài)出挖礦所得
KMD 持有者(消費(fèi)者)
· 通過(guò)鎖定 KMD 可以獲取 Staking 獎(jiǎng)勵(lì),相當(dāng)于鎖倉(cāng)
· 收發(fā)普通交易,二級(jí)市場(chǎng)買(mǎi)賣(mài)等
· 還可以對(duì)公證人節(jié)點(diǎn)進(jìn)行選舉
小結(jié)
Komodo 利用 dPoW 安全機(jī)制在比特幣區(qū)塊鏈上設(shè)置多個(gè) Komodo 的檢查點(diǎn),從而提高了 Komodo 網(wǎng)絡(luò)的安全性。該機(jī)制也可以應(yīng)用到其他鏈上。Komodo 本質(zhì)上還是 PoW + Masternode(PoSe) 的模式,雖然團(tuán)隊(duì)否認(rèn)公證人節(jié)點(diǎn)是 Masternode,但實(shí)際上公證人節(jié)點(diǎn)確實(shí)通過(guò)提供額外的服務(wù)獲得收益,且具有較大概率成為區(qū)塊的創(chuàng)建者,在一定程度上控制了整個(gè)網(wǎng)絡(luò)。Komodo 的 Staking 機(jī)制實(shí)際上是一種鎖倉(cāng)獎(jiǎng)勵(lì)機(jī)制,和共識(shí)無(wú)關(guān)。
4. Algorand: PoS + 改進(jìn)的 BFT
共識(shí)算法
Algorand 的共識(shí)算法通過(guò) PoS 和 可驗(yàn)證隨機(jī)函數(shù)(VRF)選擇區(qū)塊的生產(chǎn)者和驗(yàn)證者,再通過(guò)一種改進(jìn)的拜占庭協(xié)議 BA* 對(duì)區(qū)塊達(dá)成共識(shí)。
Algorand 中實(shí)際只有一種參與者,即 ALGO (ALgorand 原生代幣)的持有者,但在不同階段,持有者會(huì)扮演不同的角色:
· 持有者有可能在某一輪共識(shí)中被選為區(qū)塊生產(chǎn)者(leader)
· 持有者有可能在某一輪共識(shí)中被選為區(qū)塊驗(yàn)證者
· 未被選中的持有者
Algorand 的共識(shí)算法可簡(jiǎn)要描述如下:
· 每一輪共識(shí)開(kāi)始時(shí),所有用戶可以通過(guò) VRF 確定自己是否是潛在的區(qū)塊生產(chǎn)者(leaders),具體方法是檢查本輪自己某種簽名的哈希值是否小于某個(gè)閾值。持幣較多的節(jié)點(diǎn)被選中的概率較高(PoS)
· 潛在的生產(chǎn)者(可能有多個(gè))各自創(chuàng)建新區(qū)塊,并進(jìn)行廣播,同時(shí)公布簽名,任何節(jié)點(diǎn)都可以驗(yàn)證其合法性(這是 VRF 的特性)
· 用同樣的方式從系統(tǒng)中隨機(jī)選取驗(yàn)證組,對(duì)新產(chǎn)生的區(qū)塊達(dá)成共識(shí),每一輪共識(shí)分為兩個(gè)階段:
(1)驗(yàn)證組通過(guò)分級(jí)共識(shí)協(xié)議(GC),每個(gè)驗(yàn)證節(jié)點(diǎn)從多個(gè)候選區(qū)塊中選擇一個(gè)被大多數(shù)節(jié)點(diǎn)認(rèn)可的區(qū)塊(若不存在,驗(yàn)證節(jié)點(diǎn)會(huì)提議生成空區(qū)塊)
(2)驗(yàn)證節(jié)點(diǎn)根據(jù)自己選擇的區(qū)塊和 GC 共識(shí)的結(jié)果設(shè)定自己的初始狀態(tài),繼續(xù)進(jìn)行改進(jìn)的二元拜占庭共識(shí)(BBA*),直到達(dá)成共識(shí)(有可能需要多次循環(huán)才能達(dá)成共識(shí)),共識(shí)結(jié)果有兩種:
a.接受 leader 創(chuàng)建的新區(qū)塊,進(jìn)入下一輪
b.不接受 leader 創(chuàng)建的新區(qū)塊,將新區(qū)塊設(shè)置為空區(qū)塊,進(jìn)入下一輪
最終,每一輪都將通過(guò)共識(shí)產(chǎn)生一個(gè)新區(qū)塊。關(guān)于協(xié)議的更多細(xì)節(jié)可以參考[5][16],以及《Qtum研究院:深度解析Algorand共識(shí)協(xié)議》。
經(jīng)濟(jì)模型
Algorand 的原生代幣為 ALGO,總量為 100 億。所有 ALGO 在創(chuàng)始?jí)K中直接生成,由 Algorand 基金會(huì)負(fù)責(zé)后續(xù)的分配。和大多數(shù)其他公鏈項(xiàng)目不同的是,在 Algorand 中,創(chuàng)建區(qū)塊或驗(yàn)證區(qū)塊都不會(huì)獲得任何獎(jiǎng)勵(lì)。
100 億 ALGO 將在五年內(nèi)通過(guò)如下方式分配[18]:
· Algorand 基金會(huì)預(yù)留 25 億 ALGO,用作支持項(xiàng)目長(zhǎng)期運(yùn)作(這一部分由基金會(huì)在創(chuàng)始?jí)K直接獲得,而且沒(méi)有鎖定。Algorand 基金會(huì)承諾不隨意動(dòng)用這筆資金[19])
· 通過(guò)拍賣(mài)的方式逐步分發(fā) 30 億 ALGO
· 17.5 億 ALGO 作為 Staking 的獎(jiǎng)勵(lì),逐步發(fā)放
· 25 億作為中繼結(jié)點(diǎn)的獎(jiǎng)勵(lì)逐步發(fā)放
· 2.5 億作為社區(qū)獎(jiǎng)勵(lì)逐步發(fā)放(用于舉辦各種活動(dòng),黑客松等)
經(jīng)濟(jì)激勵(lì)
Algorand 基金會(huì)通過(guò)分配 ALGO 對(duì)系統(tǒng)中各參與者進(jìn)行激勵(lì),其中:
· 用于拍賣(mài)的 ALGO 相當(dāng)于 ICO,對(duì) ALGO 進(jìn)行公開(kāi)售賣(mài)。拍賣(mài)采用較為新穎的”荷蘭式拍賣(mài)“[20],在業(yè)內(nèi)引起了極大的關(guān)注。并且基金會(huì)承諾在 1 年后可以以成交價(jià)的 90% 對(duì) ALGO 進(jìn)行回購(gòu),在一定程度上保障了投資者的權(quán)益
· 任何持有超過(guò) 1 ALGO 的賬戶都將獲得 Staking 獎(jiǎng)勵(lì),獎(jiǎng)勵(lì)會(huì)在每個(gè)區(qū)塊進(jìn)行發(fā)放,目前的年化收益約為 10%。Algorand 每筆交易都會(huì)有少量手續(xù)費(fèi),這些手續(xù)費(fèi)不會(huì)直接發(fā)放給用戶,而是被 Algorand 基金會(huì)回收,當(dāng)所有 Staking 獎(jiǎng)勵(lì)發(fā)完時(shí),這些手續(xù)費(fèi)也將被統(tǒng)一作為 Staking 獎(jiǎng)勵(lì)
· 在 Algorand 系統(tǒng)中,能夠?yàn)槠渌?jié)點(diǎn)提供鏈接服務(wù)的節(jié)點(diǎn)被稱為中繼節(jié)點(diǎn)[21],中繼節(jié)點(diǎn)將在提供服務(wù)期間獲得獎(jiǎng)勵(lì),5 年累計(jì)獎(jiǎng)勵(lì)總計(jì) 25 億 ALGO。這一激勵(lì)將促使更多穩(wěn)定的中繼節(jié)點(diǎn)為 Algorand 網(wǎng)絡(luò)提供連接、轉(zhuǎn)發(fā)交易等服務(wù)
· 社區(qū)獎(jiǎng)勵(lì)將激勵(lì)對(duì)項(xiàng)目有長(zhǎng)遠(yuǎn)價(jià)值的活動(dòng)
從上述經(jīng)濟(jì)模型可以看出,Algorand 基金會(huì)在整個(gè)經(jīng)濟(jì)模型中占據(jù)絕對(duì)的主導(dǎo)地位,所有 ALGO 都由基金會(huì)進(jìn)行分配,從經(jīng)濟(jì)模型的角度看非常中心化。無(wú)論是回購(gòu)、Staking 獎(jiǎng)勵(lì)的總額、中繼節(jié)點(diǎn)獎(jiǎng)勵(lì),還是社區(qū)獎(jiǎng)勵(lì),都由 Algorand 基金會(huì)決定,存在一定的風(fēng)險(xiǎn)。
小結(jié)
Algorand 采用了共識(shí)和激勵(lì)分離的系統(tǒng)設(shè)計(jì)。共識(shí)方面,Algorand 提出了一種新穎的 PoS + BA* 共識(shí)機(jī)制,在可擴(kuò)展性、安全性和去中心化這三個(gè)方面取得了較好的均衡。但經(jīng)濟(jì)模型設(shè)計(jì)偏中心化,Algorand 基金會(huì)權(quán)利過(guò)大,整個(gè)經(jīng)濟(jì)模型能否長(zhǎng)期正常運(yùn)行還有待驗(yàn)證。
總結(jié)
混合共識(shí)機(jī)制的主要目的是通過(guò)融合其他共識(shí)機(jī)制,克服已有共識(shí)的某些缺點(diǎn)。BFT,pBFT 等經(jīng)典的共識(shí)機(jī)制速度快,且?guī)缀醪粫?huì)分叉,Algorand等項(xiàng)目將其與 PoS結(jié)合,通過(guò)一定的設(shè)計(jì)使其在 Permissionless 環(huán)境下部署,實(shí)現(xiàn)了兩者的結(jié)合。另一方面,PoW,PoS 等中本聰共識(shí)機(jī)制的融合,使更多參與者加入博弈,進(jìn)一步提升共識(shí)的安全性,同時(shí)可以提供更多多元化的服務(wù)(Masternode),在設(shè)計(jì)業(yè)務(wù)復(fù)雜的系統(tǒng)時(shí)可以考慮采用。本文僅對(duì)一些代表性項(xiàng)目進(jìn)行簡(jiǎn)要分析,更多混合共識(shí)算法及其實(shí)現(xiàn)細(xì)節(jié)可以查閱相關(guān)文獻(xiàn)。