
本文由幣乎社區(qū)(bihu.com)內(nèi)容支持計(jì)劃獎(jiǎng)勵(lì)。
這篇文章描述領(lǐng)導(dǎo)者的選舉過(guò)程。
追隨中本聰算法
就像前面提到的那樣,Cardano SL使用追隨中本聰(FTS)算法來(lái)選擇領(lǐng)導(dǎo)者。每個(gè)槽(slot)當(dāng)前時(shí)代(epoch)的領(lǐng)導(dǎo)者在當(dāng)前時(shí)代開始的時(shí)候由FTS算法計(jì)算得出。所以創(chuàng)世紀(jì)塊包含了一組領(lǐng)導(dǎo)者的列表。領(lǐng)導(dǎo)者的數(shù)量與每個(gè)時(shí)代的槽數(shù)量是一樣的,這個(gè)數(shù)量取決于在配置文件中定義的基本安全參數(shù)K。
FTS使用一個(gè)共享種子,該共享種子就是多方計(jì)算(MPC)為上個(gè)時(shí)代計(jì)算的結(jié)果:在MPC的結(jié)果中一些節(jié)點(diǎn)揭示它們的種子,這些種子的XOR就被稱為共享種子。實(shí)際上共享種子就是一個(gè) 字節(jié)串。
股東被選舉為領(lǐng)導(dǎo)者的概率與股東持有的幣數(shù)量相關(guān)。同一個(gè)股東可以在一個(gè)時(shí)代里面被選舉為多個(gè)槽的領(lǐng)導(dǎo)者。
算法
領(lǐng)導(dǎo)者選舉過(guò)程的理論方面在白皮書的第11頁(yè)中講解了。
節(jié)點(diǎn)將所有未花費(fèi)的輸出(utxo)按照一種確定的方法(按字典)進(jìn)行排序,所以結(jié)果是一對(duì)(StakeholderId, Coin)的有序排列,StakeholderId是股東的ID(股東的公鑰哈希值),Coin是股東持有幣的數(shù)量。這里假設(shè)utxo不是空的。
然后節(jié)點(diǎn)選擇幾個(gè)在1和系統(tǒng)中Lovelaces數(shù)量之間的隨機(jī)i。為了找到第i個(gè)幣的擁有者,節(jié)點(diǎn)找到最小的x,使得這個(gè)列表中從x到i的所有幣的總數(shù)不小于i(這樣第x個(gè)地址就是第i個(gè)的擁有者)。
結(jié)果是一個(gè)非空的StakeholderId序列,也就是被選中的股東們的ID。SlotLeaders序列保存在節(jié)點(diǎn)運(yùn)行環(huán)境中。
由于是P2SH地址,所以節(jié)點(diǎn)不知道是誰(shuí)將要給它們發(fā)送基金。因此,P2SH地址可以包含目標(biāo)地址,該目標(biāo)地址指示哪些地址應(yīng)該被視為“擁有”用于FTS目的的基金。
翻譯作者: 許莉
原文地址: LEADER SELECTION IN CARDANO SL