分片背景
Sharding是以太坊提出的一種解決方案泰偿,用于解決區(qū)塊鏈(如Plasma和Raiden網(wǎng)絡(luò))的可擴(kuò)展性問題咽筋。雖然Plasma和Raiden網(wǎng)絡(luò)是脫鏈解決方案迄沫,但Sharding是一種鏈上解決方案,它通過改變主鏈本身的協(xié)議來改善主鏈的性能想诅。
應(yīng)用鏈?zhǔn)浇鉀Q方案需要主網(wǎng)絡(luò)的硬分叉吠卷,而脫鏈解決方案通過在主鏈外添加其他系統(tǒng)來消除對硬分叉的需求锡垄。
此外吉嫩,Sharding是基于Proof of Stake(PoS)算法設(shè)計的云挟,以支持以太坊假設(shè)從工作證明(PoW)到PoS的過渡求厕。
Sharding的發(fā)展路線圖如下:
關(guān)于Sharding
首先盆耽,Sharding是一種鏈?zhǔn)浇鉀Q方案,它將整個網(wǎng)絡(luò)劃分為按部分存儲事務(wù)勺拣。然后并行處理這些事務(wù)以解決區(qū)塊鏈可伸縮性問題孕似。簡而言之送朱,數(shù)據(jù)被分割并存儲到單獨(dú)的分片中以進(jìn)行處理搞坝。
“Sharding”這個概念源于數(shù)據(jù)庫領(lǐng)域搔谴。在數(shù)據(jù)庫的上下文中,分片是對表進(jìn)行水平分區(qū)以處理和存儲大量數(shù)據(jù)的過程桩撮。
同時敦第,以太坊Sharding將主鏈分為k個分片。每個分片并行處理網(wǎng)絡(luò)上的整個事務(wù)店量。結(jié)果芜果,通過多個分片提高了網(wǎng)絡(luò)的總吞吐量,這與當(dāng)前主鏈的事務(wù)處理機(jī)制形成對比融师。例如右钾,假設(shè)有100個交易。通過10個分片鏈诬滩,每個分片鏈可以平均同時處理10個事務(wù)霹粥。
分片鏈的特點(diǎn)
為了更好地理解分片灭将,必須注意分片鏈的組件和關(guān)鍵術(shù)語疼鸟。然而,隨著研究的進(jìn)展庙曙,Sharding相關(guān)的組件和術(shù)語將繼續(xù)發(fā)生變化空镜。但同樣,本文基于第1階段規(guī)范。
collation:collation與分片鏈主鏈中的塊具有相同的作用吴攒。排序規(guī)則由排序規(guī)則標(biāo)題和事務(wù)列表組成张抄。排序規(guī)則標(biāo)題包含構(gòu)成排序規(guī)則的信息,并通過提議者的簽名提交給主鏈洼怔。這里署惯,事務(wù)列表是排序規(guī)則中的事務(wù)列表。
proposer:提議器本質(zhì)上收集數(shù)據(jù)镣隶,建立一個建議极谊,然后提交到的整理。此外安岂,提案是未經(jīng)驗證的整理轻猖。
Collator:驗證投標(biāo)人提交的提案。對于每個時段域那,將一個分類器分配給一個分片咙边,該分片在一段時間之前被隨機(jī)選擇。
Executor:將Collation標(biāo)頭傳遞給主鏈中的Sharding Manager Contract(SMC)次员。這會更改分片鏈的實際狀態(tài)败许。(執(zhí)行者出現(xiàn)在Sharding階段3)
Period:分片鏈的整理標(biāo)題到主鏈的提交期。這里的單位是主鏈中的塊數(shù)淑蔚。例如檐束,如果PERIOD_LENGTH = 5,則生成5個塊的是1個周期束倍。
Lookahead period:在他們驗證分片鏈中的整理之前被丧,SMC偽隨機(jī)分配Collator。同樣绪妹,“Lookahead period”表示在某段時間之前每個整理器分配到哪個分片鏈甥桂。例如,如果LOOKAHEAD_PERIODS = 4邮旷,則表示在4個周期之前將collator分配給分片鏈黄选。然后,Collator可以提前花時間下載分片鏈的狀態(tài)信息婶肩。
Sharding設(shè)計框架
1) Main chain 主鏈
以太坊2.0的初始部署階段办陷,是不需要對PoW鏈進(jìn)行共識更改的。相反的是律歼,我們會向PoW鏈添加一個注冊合約民镜,以存入ETH。這個注冊合約會通過beacon鏈發(fā)出一個帶有各種參數(shù)的日志险毁。它不會進(jìn)行驗證制圈,而是把注冊邏輯發(fā)送給beacon鏈们童。
2) Beacon chain 信標(biāo)鏈
Beacon鏈?zhǔn)荘oS系統(tǒng)的“主鏈”,beacon鏈的主要職責(zé)是:
存儲并維護(hù)活躍鲸鹦、列隊等待以及退出驗證者的集合慧库;
處理交聯(lián)(交聯(lián)是beacon鏈“了解”分片鏈更新狀態(tài)的主要手段);
處理逐塊一致性馋嗜,以及finality gadget齐板;
為每個分片指定所選的區(qū)塊提議者;
組織驗證者進(jìn)入委員會葛菇,對擬議的區(qū)塊進(jìn)行投票覆积;
用共識規(guī)則對驗證者實施獎勵和處罰;
作為一個錨點(diǎn)熟呛,其中分片會注冊它們的狀態(tài)宽档,以促進(jìn)跨分片交易;
成為驗證者的唯一機(jī)制庵朝,是往以太坊PoW主鏈發(fā)送一筆包含32 ETH 的交易至一個注冊合約吗冤。
在注冊器合約內(nèi)質(zhì)押的是 PoW 以太,獲得的收據(jù)可以“創(chuàng)造”出PoS 以太九府。因為注冊器合約無法撤銷椎瘟,所以 PoS 以太不能轉(zhuǎn)回 PoW 以太,并且只有在驗證者退出系統(tǒng)之時才能被退回到一個分片地址侄旬,而且 PoS 以太(在初期階段)是不能交易的肺蔚。雙生以太并行的狀況不會持續(xù)太久,除非發(fā)生以下情況[3]:
狀態(tài)轉(zhuǎn)換即將實現(xiàn)儡羔,參與者可以選擇撤銷注冊器合約宣羊,PoS 以太可以轉(zhuǎn)換成等價值的 PoW 以太。
PoW 鏈變成一個分片或者存儲合約汰蜘,PoW 以太會被逐漸淘汰仇冯,并在匹配地址上自動轉(zhuǎn)換為 PoS 以太(向后兼容)。
3) Shard chain 分片鏈
分片鏈只有一小部分的證明必須記錄在主鏈上族操。 分片鏈上的交易處于自己獨(dú)立的空間中苛坚,分片驗證人只需要驗證他們所關(guān)注的分片。 分片鏈也通過 POS 機(jī)制依附于主鏈色难,以獲得更高層次的共識(higher level ofconsensus)泼舱。
跨分片通信。利用 UTXO 模型枷莉,并通過在主鏈上進(jìn)行交易和創(chuàng)建一個receipt娇昙,用戶可以將以太存入一個指定分片。分片鏈上的用戶可以給定 receipt ID 創(chuàng)建一個消費(fèi) receipt的交易依沮,來花費(fèi)該 receipt涯贞。
交易的執(zhí)行流程
以太坊主鏈每個時間段新生成的區(qū)塊,都會將在此時間點(diǎn)之前的五個區(qū)塊打包在內(nèi)危喉。這也被成為“LookAhead”宋渔。每個validator都會借由LookAhead來確認(rèn)在未來他們將負(fù)責(zé)驗證的是哪個分片。也就是驗證者是先得知會被劃分到哪個分片的辜限。在指定時間段內(nèi)皇拣,每個區(qū)塊的驗證者都會面臨新一輪的隨機(jī)選擇(共5個區(qū)塊,共五個validator)薄嫡。當(dāng)?shù)竭_(dá)主鏈出塊時間氧急,所有validator都會將已校驗的交易發(fā)送到交易池中。檢驗發(fā)起者需要向交驗者支付激勵毫深。交驗者下載潛在的分片提案吩坝。驗證者驗證數(shù)據(jù)的有效性,并挑選當(dāng)前分片中最新區(qū)塊哑蔫,然后將collation header提交給主鏈钉寝。由礦工負(fù)責(zé)挖礦生成新的主鏈的區(qū)塊。
可以簡單地這么認(rèn)為闸迷,分片中的交易都會被裝入“校對塊” (collation)嵌纲。 與側(cè)鏈類似,校對器(collator)只有一小部分會被記錄到主鏈
以太坊2.0將以太網(wǎng)絡(luò)分為兩層腥沽,上層為現(xiàn)有的以太坊(也叫主鏈)逮走,基本保持不變;下層為各個分片今阳,他們相互獨(dú)立师溅,擁有不同的賬戶空間。各個分片延生屬于自己的鏈盾舌,并將最新區(qū)塊頭發(fā)給主鏈险胰。主鏈?zhǔn)占鱾€分片的區(qū)塊頭,然后生成主鏈區(qū)塊矿筝。值得注意的是起便,在主鏈上只保存各個分片的區(qū)塊頭,具體交易并不在主鏈上保存窖维。
Sharding Manager Contract(SMC)
SMC是一個智能合約榆综,在分片鏈中發(fā)揮重要作用。SMC連接主鏈和分片鏈铸史,管理整理器鼻疮,提議器和整理樹。SMC的作用對于分拆鏈參與主鏈?zhǔn)侵陵P(guān)重要的琳轿。SMC的主要作用如下:
PoS系統(tǒng):SMC管理整理者的存款判沟。如果整理者在分片鏈中做錯了什么耿芹,那么SMC就會削減一個人的存款。
偽隨機(jī)抽樣:SMC偽隨機(jī)地將整理器分配給整理池中的分片鏈挪哄。通過防止collator知道將分配哪個分片吧秕,可以降低整理器攻擊特定分片的可能性。
歸類頭驗證:驗證分片鏈提交的歸類頭迹炼。SMC通過addHeader函數(shù)進(jìn)行驗證砸彬,并且必須在啟用排序規(guī)則之前進(jìn)行驗證。
交叉分片通信:對于分片到分片的事務(wù)傳輸斯入,必須在主鏈中創(chuàng)建一個收據(jù)砂碉。并且SMC管理此收據(jù)。當(dāng)分片鏈中的用戶創(chuàng)建收據(jù)時刻两,收據(jù)將通過SMC傳遞到另一個分片鏈增蹭,并用于傳輸分片事務(wù)。這將在Sharding階段4中實施磅摹。
鏈?zhǔn)街卫恚?/strong> SMC在鏈?zhǔn)街卫碇邪l(fā)揮著核心作用沪铭。Collators的投票通過SMC處理,以便這些投票可以在鏈上進(jìn)行偏瓤。
分片鏈機(jī)制過程
現(xiàn)在讓我們看看分片鏈實際上是如何工作的杀怠。我希望您能夠了解分片鏈的組件和術(shù)語,以了解分片鏈的機(jī)制過程厅克。
(1)首先赔退,想要成為提議者的網(wǎng)絡(luò)參與者通過SMC存入余額。
(2)同樣证舟,希望成為整理者的網(wǎng)絡(luò)參與者通過SMC存款硕旗。
(3)Collators定期檢查SMC狀態(tài),看它們是否被選為collator女责。
(4)SMC將偽隨機(jī)分配給每個分片鏈漆枚。他們在前瞻期間下載了分片的先前狀態(tài)。每個整理者都會從提議者那里收到提議的投標(biāo)書抵知。
(5)然后墙基,Proposer將提案提交給整理者,其中包括交易刷喜。(提案是指尚未驗證的整理残制。當(dāng)Collator選擇提案時,提議者從交易發(fā)起人處收取交易費(fèi)掖疮。
(6)整理者進(jìn)行投票以核實每個提案中的交易是否有效初茶。
(7)如果超過2/3的整理者批準(zhǔn)該提案的交易有效,則該提議是有效的整理浊闪。
Collator調(diào)用add_header函數(shù)恼布,并在投票后將新創(chuàng)建的校對頭發(fā)送給SMC螺戳。通過SMC上傳的校對標(biāo)題連接到主鏈。
Sharding將在階段過程中添加執(zhí)行程序和跨分片事務(wù)等功能折汞。首先倔幼,我們研究了最基本的分片鏈操作流程和激勵結(jié)構(gòu)。讓我們看一下分片鏈的fork-choice規(guī)則字支。
分片鏈的分叉選擇規(guī)則
與主鏈一樣凤藏,選擇在分片鏈中分支的鏈?zhǔn)且粋€問題奸忽。當(dāng)前主鏈具有fork-choice規(guī)則堕伪,當(dāng)分支出現(xiàn)時選擇最長邊。但是栗菜,分片鏈中的Fork-choice規(guī)則更復(fù)雜欠雌。
在分片的情況下,主鏈和分片鏈基本上都很長疙筹。也就是說富俄,1)選擇最長的分片鏈,2)主鏈需要較長的分片鏈而咆。讓我們仔細(xì)看看下圖霍比。
分片在階段1中,分片鏈中的分叉選擇規(guī)則取決于最長的主鏈暴备。也就是說悠瞬,當(dāng)分支發(fā)生時,分片鏈的選擇不應(yīng)該只是最長的分片鏈涯捻,而應(yīng)該是最長主鏈中最長的分片鏈浅妆。
包含塊B3的主鏈?zhǔn)亲铋L鏈。因此障癌,可以看出塊B3有效并且核對C3有效凌外。得分是塊或整理的高度。
當(dāng)添加塊B3'時涛浙,上述鏈和下面的鏈連接在一起康辑。在這種情況下,根據(jù)主鏈中的fork選擇規(guī)則轿亮,隨機(jī)確定相切時的有效塊晾捏。
此時,塊B3被選擇為有效塊哀托,并且屬于B3的核對C3是有效核對惦辛。
新的塊B4'被添加到底鏈。現(xiàn)在底鏈?zhǔn)亲铋L的主鏈仓手。在這種情況下胖齐,當(dāng)我們比較整理C3和整理C2的分?jǐn)?shù)時玻淑,整理C3分?jǐn)?shù)>整理C2分?jǐn)?shù)。這意味著具有排序規(guī)則C3的分片鏈?zhǔn)禽^長的分片鏈呀伙。但是补履,分片鏈的選擇取決于主鏈。包括在最長主鏈中的核對是核對C2剿另,而不是核對C3箫锤。因此,盡管核對C2的分?jǐn)?shù)較低雨女,但核對C2變?yōu)橛行Ш藢Σ⒈贿x擇為有效的分片鏈谚攒。這是分片鏈的Fork-choice規(guī)則。
分片狀態(tài)存儲
當(dāng)一個驗證器被要求在給定的分片上創(chuàng)建一個塊時氛堕,它只會被提前幾分鐘通知馏臭。
在Ethereum 1.0中,創(chuàng)建塊需要訪問整個狀態(tài)才能驗證事務(wù)讼稚。在這里括儒,我們的目標(biāo)是避免要求驗證器存儲整個系統(tǒng)的狀態(tài)。相反锐想,我們允許驗證器創(chuàng)建塊只需要知道狀態(tài)根的排序規(guī)則帮寻,將責(zé)任推送到事務(wù)發(fā)送者以提供“見證數(shù)據(jù)”(即Merkle分支),以證明事務(wù)影響的帳戶的預(yù)先狀態(tài)赠摇,并提供在執(zhí)行事務(wù)后計算后狀態(tài)根的足夠信息固逗。
在無狀態(tài)模型中,節(jié)點(diǎn)永遠(yuǎn)不需要存儲數(shù)據(jù)(無論該數(shù)據(jù)是歷史蝉稳,狀態(tài)還是其他)抒蚜。實際上,提供數(shù)據(jù)的責(zé)任由離線鏈(例如由交易發(fā)送方)承擔(dān)耘戚。
使用非無狀態(tài)范式(non-stateless paradigm)來實現(xiàn)分片嗡髓,理論上是可能的;然而收津,這需要: (i) 租用存儲空間來保持存儲的有界性饿这;并且 (ii) 驗證器需要使用 O(c) 的時間在一個分片中創(chuàng)建區(qū)塊。
無狀態(tài)客戶端狀態(tài)轉(zhuǎn)換函數(shù)
通常撞秋,我們可以將傳統(tǒng)的“有狀態(tài)”客戶端執(zhí)行狀態(tài)轉(zhuǎn)換的函數(shù)描述為: stf(state, tx) -> state'
(或 stf(state, block) -> state'
)长捧。在無狀態(tài)客戶端模型中,節(jié)點(diǎn)不保存狀態(tài)吻贿,所以 apply_transaction
和 apply_block
可以寫為:
apply_block(state_obj, witness, block) -> state_obj', reads, writes
這里串结,state_obj
是一個數(shù)據(jù)元組,包含了狀態(tài)根和其他 O(1) 大小的狀態(tài)數(shù)據(jù)(已使用的 gas、receipts肌割、bloom filter 等等)卧蜓;witness
就是見證人;block
就是區(qū)塊的余下部分把敞。其返回的輸出是:
- 一個新的
state_obj
包含了新的狀態(tài)根和其他變量弥奸; - 從見證人那里讀取的對象集合(用于區(qū)塊創(chuàng)建);和
- 為了組成新的狀態(tài)樹(state trie)而被創(chuàng)建的一組新的狀態(tài)對象奋早。
這使得函數(shù)是“單純性的”(pure)盛霎,僅處理小尺寸對象(small-sized objects)(相反的例子就是現(xiàn)行的以太坊狀態(tài)數(shù)據(jù),現(xiàn)在已經(jīng) 數(shù)百G字節(jié) )耽装,從而使他們可以方便地在分片中使用愤炸。
詳細(xì)說明:https://ethresear.ch/t/state-minimised-executions/748
什么是跨分片通信以及如何實現(xiàn)不同分片之間的事務(wù)傳輸?
在以太網(wǎng)上實現(xiàn)分片時剂邮,分片之間以及分片內(nèi)將存在事務(wù)請求摇幻。分片之間的事務(wù)稱為交叉分片通信横侦。交叉分片通信也稱為基于收據(jù)的通信挥萌,因為它是基于事務(wù)產(chǎn)生的收據(jù)實現(xiàn)的。這里的關(guān)鍵是收據(jù)中的merkle證明通過主鏈從一個分片移動到另一個分片枉侧。
讓我們在下圖中了解交叉分片通信的具體過程引瀑。首先,假設(shè)有兩個分片(分片M榨馁,分片N)憨栽,并且它從分片M的帳戶A向分片N的帳戶B發(fā)送交易。
1)通過將分片M的帳戶A的余額減去100個硬幣來制作收據(jù)翼虫。生成包含收據(jù)的merkle證明屑柔。
2)等待事務(wù)包含在排序規(guī)則中并包含在主鏈的塊中。
3)當(dāng)交易包含在主鏈的塊中時珍剑,SMC將收據(jù)轉(zhuǎn)移到分片N掸宛。分片N收到Receipt,確保收據(jù)未用過招拙,并且將分片N的賬戶B的余額增加100個硬幣唧瘾。 然后花費(fèi)收據(jù)。
4)分片N消耗收據(jù)并通過主鏈將其傳遞給分片M别凤。分片M刪除它持有的交易的收據(jù)饰序。這樣就完成了整個交易。
分片的當(dāng)前狀態(tài)是什么规哪?[代碼審查]
代碼審查將分為六個部分求豫。為了理解它們中的每一個,除核心部分外,其中一些被省略蝠嘉,檢查以太坊github以獲取詳細(xì)代碼猾蒂。
下面描述運(yùn)行分片鏈的過程。
已注冊(Register_notary)
Proposer / Collator在特定時間段內(nèi)分配給分片(get_member_of_committee )
Collator在由提議者生成的提案上進(jìn)行投票是晨。
當(dāng)收到一個三分之二表決歸類創(chuàng)建(submitvote)
發(fā)送到SMC歸類頭(AddHeader)
投標(biāo)/分頁器關(guān)閉(Deregister_notary)
投標(biāo)/分頁器返回到存款(Release_notary)
代碼審查將遵循上面的分片鏈操作流程肚菠。
分片鏈注冊和偽隨機(jī)抽樣過程
首先,我將在全面的代碼審查之前介紹一些概念罩缴。在這篇評論中蚊逢,公證人的概念出現(xiàn)了。公證人意味著分片的參與者箫章,并且是提議者和整理者的組合烙荷。公證人必須在池和注冊表中注冊才能履行其職責(zé)。
池和注冊表是您應(yīng)該了解的概念檬寂。池和注冊表管理公證人的數(shù)據(jù)终抽。池管理公證人的地址,并且Registry管理三個數(shù)據(jù):Deregistered桶至,pool_index和deposit昼伴。Deregistered是公證人被釋放的期間,pool_index是公證人的索引镣屹,deposit是公證人的存款圃郊。公證人只能在取消注冊期間的一段鎖定期后收回押金。
最后女蜈,委員會是一組在特定時期放置在分片上的公證人持舆。委員會注冊通過SMC的偽隨機(jī)抽樣進(jìn)行。公證人必須在委員會注冊才能參與整理驗證伪窖。
1. Register_notary
分片的公證登記從兩次檢查開始逸寓。首先,一個呼叫者的消息應(yīng)該比指定存款(msg.value)(msg.sender)發(fā)送(NOTARY_DEPOSIT)和(2)其次覆山,需要檢查Msg.sender未在注冊表中注冊的值越大竹伸。(3 )
2. Get_member_of_committee
現(xiàn)在注冊了公證人,必須配置委員會以執(zhí)行實際的整理驗證汹买。
Get_member_of_committee選擇公證人在特定時間段對分片進(jìn)行整理驗證佩伤。Get_member_of_committee開始通過檢查Shard_id的條件(6)的期間委員會的數(shù)目等于正確分片鏈的數(shù)目。
以下創(chuàng)建Sampled_index晦毙,它是SMC的偽隨機(jī)采樣生巡。ethereum的智能合約沒有隨機(jī)功能。所以我們通過這個過程制作隨機(jī)值见妒。Sampled_index由三個值組成(Entropy_block_number孤荣,shard_id,index)。Entropy_block_number是前一時段的最后一個塊盐股。這三個值根據(jù)周期钱豁,分片和公證指數(shù)連續(xù)變化,從而實現(xiàn)偽隨機(jī)抽樣疯汁。(19?30)
合并三個值后牲尺,使用sha3創(chuàng)建一個哈希值并除以sample_size。結(jié)果幌蚊,選擇與sampled_index相對應(yīng)的值作為公證人委員會的成員谤碳。(32)
3. Submit_vote
Submitvote在委員會中對公證人進(jìn)行投票,表明提案中包含的交易和數(shù)據(jù)有效溢豆。提出法定人數(shù)超過三分之二的提案作為整理蜒简,其標(biāo)題提交給SMC。
Submitvote首先檢查幾個條件漩仙。重要的是檢查Msg.sender是否是委員會成員(16)并確認(rèn)Notary尚未投票(21)搓茬。公證人必須是委員會成員,不得重復(fù)投票队他。測試結(jié)束后卷仑,更新公證人的投票數(shù)。(24)這意味著公證人的投票得到反映漱挎。
每次調(diào)用Submitvote時系枪,投票計數(shù)都會增加一雀哨。如果投票計數(shù)增加并且大于或等于法定人數(shù)(QUORUM_SIZE磕谅,委員會的三分之二或更多),則采用排序規(guī)則雾棺。(27~31)采用校對意味著準(zhǔn)備好將校對頭發(fā)送給SMC膊夹。
然后將整理期間更新為當(dāng)前期間。最后捌浩,我們將處理并完成Submitvote事件(34-41)放刨。
4. Add_header
Add_header將投票后生成的排序規(guī)則標(biāo)頭發(fā)送到主鏈中的SMC。公證人投票所采用的整理必須經(jīng)過SMC驗證才能通過驗證尸饺。Add_header首先檢查分片ID进统,句點(diǎn)和第一個提交的標(biāo)題(7-12)
每個句點(diǎn)只能在一個分片中提交一個歸類頭。(12)
排序記錄包含三個排序規(guī)則信息(chunk_root浪听,proposer螟碎,is_elected)。(14-17)Chunk_root與塊的transaction_root概念相同迹栓。Chunk_root包含有關(guān)排序規(guī)則中的事務(wù)的信息掉分。
Records_updated_period記錄當(dāng)前時段。現(xiàn)在您已經(jīng)提交了Collation標(biāo)頭,初始化current_vote(24)最后酥郭,您通過處理Addheader事件(27-30)完成
5. Deregister_notary
如果要停止排序規(guī)則驗證华坦,公證人會調(diào)用deregister_notary。Deregister_notary首先檢查msg.sender是否在注冊表中注冊為公證人(2)
然后從公證人池中刪除公證人不从。在公證池中惜姐,將索引值更改為none,并將公證池的大小減去1.(6到8)Notary注冊表通過注銷記錄取消注冊發(fā)生的時間段椿息。
取消注冊記錄已在當(dāng)前期間取消注冊(10)最后载弄,處理DeregisterNotary事件(12-13)
6. Release_notary
取消注冊公證人后,可以通過調(diào)用release_notary來檢索其實際存款撵颊。通過檢查三個條件來啟動Release_notary宇攻。最重要的是檢查Msg.sender是否已經(jīng)取消注冊(3)只有已經(jīng)取消注冊的公證人才可以發(fā)布。在取消注冊期間(4到5)的至少LOCKUP_LENGTH之后允許釋放倡勇。
發(fā)布后逞刷,msg.sender中的所有信息都將從注冊表中刪除。已取消注冊妻熊,pool_index和Msg.sender的存款均初始化為0(10-13)
記錄了Msg.sender已從注冊表中刪除夸浅,并將存款返回給msg.sender(17)最后,通過處理ReleaseNotary事件(19-21)結(jié)束
參考資料
[1]V神相關(guān)twitter
[2]Beacon chain協(xié)議規(guī)范
[3]以太坊2.0分片鏈的詳細(xì)概述
[4]區(qū)塊鏈可擴(kuò)展性解決方案4-1
[5]區(qū)塊鏈可擴(kuò)展性解決方案4-2
[6]Sharding doc
[7]其他資料