加入 PolkaWorld 社區(qū),共建 Web 3.0!
Runtime 升級讓波卡能夠改變鏈的邏輯,而不需要硬分叉。本文譯自波卡官方文檔 Polkadot Wiki 的「Runtime 升級」章節(jié)。
(相關(guān)資料圖)
無分叉升級你之前可能在區(qū)塊鏈領(lǐng)域遇到過 “硬分叉” 一詞。當區(qū)塊鏈的邏輯發(fā)生變化時,就會發(fā)生硬分叉,以至于不包含新改變化的節(jié)點將無法與包含新變化的節(jié)點保持一致。此類更改是向后不兼容的。硬分叉可能具有政治性,取決于升級的性質(zhì)。并且硬分叉在邏輯上很繁瑣,這主要取決于網(wǎng)絡(luò)中需要升級其軟件的節(jié)點數(shù)量(可能有數(shù)千個)。
波卡節(jié)點沒有在節(jié)點中編碼 runtime(鏈的 “業(yè)務(wù)邏輯”),而是包含了 WebAssembly 執(zhí)行主機。它們根據(jù)很底層和很完善的指令集保持共識。波卡 runtime 存儲在波卡區(qū)塊鏈本身。
因此,波卡可以通過升級存儲在鏈上的邏輯來升級其 runtime,并消除了需要數(shù)千個節(jié)點運營商提前升級給定區(qū)塊編號的協(xié)作挑戰(zhàn)。波卡利益相關(guān)者通過鏈上治理系統(tǒng)提出并批準升級,該系統(tǒng)也會自主執(zhí)行升級。
新客戶端發(fā)布遵循現(xiàn)有的 runtime 邏輯,將存儲在區(qū)塊鏈上的 Wasm runtime 更新為新版本。升級會在稍后被包含在區(qū)塊鏈本身中,這意味著網(wǎng)絡(luò)上的所有節(jié)點都會執(zhí)行它。通常,無需在 runtime 升級之前手動升級你的節(jié)點,因為它們會自動開始遵循鏈的新邏輯。僅當 runtime 需要新的 host 函數(shù)或網(wǎng)絡(luò)/共識發(fā)生變化時,才需要更新節(jié)點。
為給定 runtime 版本構(gòu)建的交易將不適用于更高版本。因此,基于某個 runtime 版本構(gòu)建的交易在以后的 runtime 版本中將無效。如果你認為你不能在升級前提交交易,最好等到升級發(fā)生后再構(gòu)建它。
雖然升級你的節(jié)點通常不需要跟隨升級進行,但我們建議跟隨波卡版本并及時升級,特別是對于高優(yōu)先級或關(guān)鍵版本。
不同用戶的 runtime 升級對于基礎(chǔ)設(shè)施提供商基礎(chǔ)設(shè)施服務(wù)包括但不限于以下內(nèi)容:
驗證者接口服務(wù)節(jié)點即服務(wù) (NaaS)一般基礎(chǔ)設(shè)施管理(例如區(qū)塊瀏覽器、保管人)錢包對于驗證者來說,與網(wǎng)絡(luò)保持同步是關(guān)鍵。有時,升級將要求驗證者在特定時間范圍內(nèi)升級其客戶端,例如一項發(fā)布包括對網(wǎng)絡(luò)的重大更改。必須檢查發(fā)行說明,從升級優(yōu)先級開始并采取相應(yīng)措施。
通用基礎(chǔ)設(shè)施提供商除了及時關(guān)注波卡的發(fā)布和升級外,還應(yīng)監(jiān)控 runtime 事件和輔助工具(例如 Substrate API Sidecar)的變化。
為第 n版 runtime 構(gòu)造的交易將不適用于任何其他 >n版 runtime 交易。如果一項 runtime 升級發(fā)生在廣播先前構(gòu)建的交易之前,你將需要使用適當?shù)?runtime 版本和相應(yīng)的元數(shù)據(jù)來重建它。
對于提名人Runtime 升級不需要提名人采取任何行動,但我們始終鼓勵大家了解最新情況,并參與最新的 runtime 升級 motion 和發(fā)布,同時密切關(guān)注網(wǎng)絡(luò)中的節(jié)點如何應(yīng)對新的升級。
監(jiān)控變化你可以對鏈進行監(jiān)控以了解即將進行的升級??蛻舳税l(fā)行說明包括與任何鏈上升級相關(guān)的任何提案的哈希值,以便于匹配。監(jiān)控鏈的:
democracy(Started)事件和日志index和blockNumber。此事件表明公投已經(jīng)開始(盡管并不意味著它是 runtime 升級)。獲取公投信息(例如通過 Sidecar 上的 pallets/democracy/storage/ReferendumInfoOf?key1=index&at=blockNumber),它的狀態(tài)應(yīng)該是 Ongoing。找到結(jié)束塊號 (end) 和執(zhí)行延遲(delay)。如果公投通過,它將在 end + delay塊號執(zhí)行。
democracy(Passed)、democracy(NotPassed)或 democracy(Cancelled)事件引用索引。如果是Passed,則需要在執(zhí)行塊的同一區(qū)塊中查看scheduler(Scheduled)事件。
democracy(PreimageNoted)事件與ReferendumInfoOf(index)項目具有相同的哈希值。這可能是執(zhí)行前的最后一個區(qū)塊,但如果缺少它,它將不起作用。
democracy(Executed)實際執(zhí)行的事件。在 runtime 升級的情況下,還會有一個 system(CodeUpdated)事件。
你還可以監(jiān)控 Polkassembly,以了解有關(guān)鏈上提案和公投的討論。
原文:https://wiki.polkadot.network/docs/learn-runtime-upgrades
翻譯:PolkaWorld
直播預(yù)告
1 月 12 日(本周四)晚 7 點,PolkaWorld 聯(lián)合發(fā)起人曉杰將會在波卡世界直播間舉辦社區(qū)問答 AMA,為大家解答關(guān)于波卡的疑問。點擊下方按鈕預(yù)約直播。
PolkaWorld Telegram 群:
t.me/polkaworld
PolkaWorld Youtube 頻道:
https://www.youtube.com/c/PolkaWorld
PolkaWorld Twitter:
@polkaworld_org
更多內(nèi)容
波卡周報|多個生態(tài)項目回顧 2022 重要里程碑!Gavin 分享 2023 波卡開發(fā)重點!
Dante:跨生態(tài)互操作談了那么久,什么時候能實現(xiàn)?
Gavin Wood:波卡 2023 年計劃
關(guān)注 PolkaWorld
發(fā)現(xiàn)Web 3.0 時代新機遇
點個 “在看” 再走吧!