時間:2023-07-02|瀏覽:216
譯者注:目前新的分片方案Danksharding融合了PBS(提議者/構(gòu)建者分離方案)和crList的設(shè)計。其中,PBS方案的構(gòu)造設(shè)計采用的是兩個slot的PBS,這也是crList的設(shè)計基礎(chǔ)。關(guān)于這種“混合式PBS”的抗審查分析,可以參見《Vitalik:如何提高PBS方案的交易抗審查性》。本文是兩個slot的PBS方案的具體設(shè)計。
在一個slot對里的事件順序: - 0秒之前發(fā)布執(zhí)行頭部發(fā)布:任何人都可以發(fā)布一個執(zhí)行頭部,它包含一個執(zhí)行哈希,一個出價和一個構(gòu)建者的簽名。 - 0秒:信標(biāo)區(qū)塊期限:信標(biāo)區(qū)塊必須打包勝出的執(zhí)行頭部。 - 0-2.67秒:對信標(biāo)區(qū)塊做證明:只有一個委員會對信標(biāo)區(qū)塊進(jìn)行證明投票。 - 8秒:中間區(qū)塊的期限:勝出的區(qū)塊構(gòu)建者發(fā)布一個中間區(qū)塊,由執(zhí)行區(qū)塊主體和他們可以找到的對信標(biāo)區(qū)塊盡可能多的證明組成。 - 8-10.67秒:對中間區(qū)塊的證明:剩下的N-1委員會對中間區(qū)塊進(jìn)行證明投票。 - 10.67-13.33秒:聚合中間區(qū)塊的證明。 - 13.33-16秒:發(fā)布下一個執(zhí)行頭部。
如果錯失了一個信標(biāo)區(qū)塊,下一個slot會被換為信標(biāo)區(qū)塊而不是中間區(qū)塊。
圖表解釋關(guān)鍵的特性: 從分叉選擇的角度來看,該系統(tǒng)可以被描述為就像現(xiàn)在的信標(biāo)鏈,只是委員會的規(guī)模是不平均的,且會有一個(區(qū)塊,slot)分叉選擇。唯一的區(qū)別是有些區(qū)塊只是用來選擇為緊隨其后的區(qū)塊選擇提議者。這就簡化了分析。
每個步驟之間的委員會有助于確保每個步驟都是“安全的“,并且減少被單個行動者濫用帶來的影響。
構(gòu)建者的安全特性: 在發(fā)布出價那一步,構(gòu)建者看到執(zhí)行頭部,并知道它是否安全(如果有很多反對票或缺失的證明,這個執(zhí)行頭部可能是不安全的)。
如果執(zhí)行頭部是安全的,除非出現(xiàn)大于45%的攻擊、非常大量的罰沒,或非常嚴(yán)重的網(wǎng)絡(luò)延遲,執(zhí)行頭部才可能被回滾。在這種情況下,構(gòu)建者可以放心進(jìn)行安全出價。
如果執(zhí)行頭部是不安全的,在他們發(fā)布他們的主體后區(qū)塊鏈還是有重組的風(fēng)險,以“偷走”他們的MEV機(jī)會。在這種情況下,構(gòu)建者看到這個風(fēng)險后可以調(diào)低他們從這個風(fēng)險獲得風(fēng)險溢價的出價。
在發(fā)布中間區(qū)塊時,會有兩種情況: 1. 信標(biāo)區(qū)塊還未被發(fā)布。在這種情況里,證明委員會已經(jīng)對該區(qū)塊投反對票,因此中間區(qū)塊產(chǎn)生者(即構(gòu)建者)可以安全地不發(fā)布,也不會受到懲罰。 2. 信標(biāo)區(qū)塊已經(jīng)發(fā)布。在這種情況下,中間區(qū)塊會有“提議者得分激勵(proposerboost)",這個激勵會比整個證明委員會幅度的大,因此如果構(gòu)建者發(fā)布了,他們的區(qū)塊將在其余N-1證明委員會的證明里獲勝。
這確保了如果證明委員會是誠實的,且網(wǎng)絡(luò)延遲沒有非常嚴(yán)重的情況下,構(gòu)建者就能保證: - 如果他們發(fā)布了區(qū)塊就能被打包 - 如果他們因為信標(biāo)區(qū)塊頭缺失而不發(fā)布區(qū)塊是不會被懲罰的
構(gòu)建者有大約5.33-8秒的時間發(fā)布區(qū)塊。在他們看到信標(biāo)區(qū)塊時可以放心馬上發(fā)布;但是,他們可能會想等看到更多證明時再發(fā)布,因為他們打包證明會得到獎勵(被打包的證明者也會得到獎勵)。他們可以自由地在這段時間內(nèi)(即5.33秒的窗口,獲得打包證明獎勵與第8秒的窗口沒能獲得打包證明獎勵)協(xié)商權(quán)衡。
信標(biāo)鏈規(guī)范變更的概要: - 提議者索引定義 - 把get_random_proposer_index(state:State)設(shè)為現(xiàn)在get_beacon_proposer_index(state)返回的內(nèi)容。 - 添加狀態(tài)變量chosen_builder_index和chosen_exec_block_hash。如果slot是空的,設(shè)state.chosen_builder_index=NO_BUILDER(一個等于2^64-1的常量)。如果slot包含一個信標(biāo)區(qū)塊,它會包含BuilderBid,設(shè): - state.chosen_builder_index=builder_bid.message.builder_index - state.chosen_exec_block_hash=builder_bid.message.exec_block_hash - get_beacon_proposer_index(state:State)的定義如下: - 如果state.chosen_builder_index==NO_BUILDER,返回get_random_proposer_index(state) - 否則,返回state.chosen_builder_index - 攜帶出價區(qū)塊的條件: 如果state.chosen_builder_index==NO_BUILDER,這個區(qū)塊需要包含一個BuilderBid,且可能不包含一個ExecBody。builder_bid需要通過以下檢查,其中val=state.validators[builder_bid.message.builder_index]: - bls.Verify(val.pubkey,compute_sign
熱點:ETH