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