參考
中文白皮書啊
https://blog.csdn.net/lsttoy/article/details/80041033
DPos的特點
不需要通過挖礦來爭奪記賬權,代表們輪流記賬,從而避免了算力的浪費,這是真正的告別了挖礦的共識算法
記賬權的競爭最終變成了股權的競爭,擺脫了對算力的束縛。記賬權的競爭變成了 代表角色Node的競爭,誰能上位成代表,誰就有記賬權。而代表角色的競爭,依賴于選票的結果,也就是幣齡的競爭。誰擁有更多的股權,誰就更有更多的投票權,誰就越有可能當選成代表,并最終獲得記賬權。
交易速度特別快,大約3s鐘,而且不需要后續區塊的再次確認。每個區塊最終能否添加到主鏈中,需要超過2/3個代表的驗證之后才生效,但是一旦生效就永久生效。
DPos吸收了Pos的精華,并且從Pos當中剝離開算力對記賬權競爭的影響,并且開放了更多民主投票的措施。
概念
整個流程:選舉代表和代表們工作的流程
- 利用Pos的思想,由利益相關者投票產生N個受托人負責記賬
- N個受托人不需要競爭記賬權,隨機輪流負責記賬,從而避免了挖礦的難度運算
- 每個新區塊都要超過2/3的代表的認同之后,才被認為是有效的區塊,這樣避免了受托人作弊,濫用權力
- 為了避免受托人作弊(不管是有意的還是無意的),引入了相關的保證金制度,如果產生了錯誤的區塊,或者沒有在規定的時間內產生區塊,不僅不會得到獎勵,而且會損失保證金,以及很快會被投票人從受托人名單中替換掉
受托人
- 每個受托人是完全等價的(不關心幣齡了,降低了中心化的風險)
- 受托人在完成本職工作的同時可以領取區塊獎勵和交易的手續費
受托人的選舉
- 一個區塊鏈項目的受托人個數由項目發起方決定,一般是101個受托人。(受托人的數量在比特股中是由委員會提議,并且最終得到半數股權的投票同意后,可以動態修改的,至少11個)
- 任何一個持幣用戶都可以參與到投票和競選受托人這兩個過程中。(股權越多,投票的權重越高)
- 用戶可以隨時投票、撤票,每個用戶投票的權重和自己的持幣量成正比。投票和撤票可以隨時進行,在每一輪(round)選舉結束后,得票率最高的101(一般為101,也可以是其他數字,具體由區塊鏈項目方決定)個用戶則成為該項目的受托人
- 受托人負責打包區塊、維持系統的運轉并獲得相應的獎勵
- 在每一輪循環里,系統會重新統計得票排名。在選出最高的N個受托人里,系統采用先打亂順序,然后受托人依此生產區塊。一輪區塊生產完畢后進入下一個周期。
DPos在項目中的應用
- Bitshares:最早應用DPoS機制的項目,其DPoS機制里包含見證人(Witnesses)和委員(committee), 見證人負責區塊的打包,委員會負責系統參數的修改。
- EOS:共識算法DPoS + BFT, 有21個受托人。
- Asch:共識算法為DPoS + PBFT, 有101個受托人, 目前正在開放競選。
TPS
每秒能確認的交易數:TPS = transactions / block_time
這里的block_time指的是 從交易廣播發起開始 到最終交易安全確認 所需要的時間,不是出塊時間,近似等于 出塊時間* 需要確認的區塊數量。
- Transactions 是由區塊大小 block_size 和平均每筆交易大小決定的: Blocksize = transactions* aveTranSize
- TransactionSize由這筆交易的input[]的個數和output[]的個數決定,以及其它的一些參數,比特幣區塊大小平均:700kb(很多人呼吁要提高一些,這樣交易的速度會提高
- Blocksize受全網網絡狀態 network_bandwidth 限制,也是由記賬節點之間物理帶寬witness_performance 決定的。每個單位區塊體積越大,在網絡帶寬不變的情況下,擴散的速度越慢,需要驗證交易的時間越長。
TPS的影響因子: (block_size network_bandwidth witness_performance) / (block_time * witness_count)
witness_count指的是見證人的數量,3個人達成網絡共識,比300個人快多了,網絡傳輸的總體積和不確定性小多了。
為了提升TPS:
- 壓縮每筆交易的內存大小,讓一個區塊可以存儲更多筆交易,同時空間越小,交易的網絡擴散越快
- 降低 (出塊時間*需要確認區塊個數)的乘積,可以通過算法上面的細節的設計,比如提升惡性硬分叉的難度