比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads

Gavin Wood: XCM 第二部分- 版本控制和兼容性

Author:

Time:1900/1/1 0:00:00

在關于XCM的第一篇文章中,介紹了它的基本架構、目標以及如何將其用于一些簡單的用例。在這里,我們將繼續深入檢查XCM的一個有趣方面:

有一個共同的語言可以解決很多交互的問題。它可以讓我們一起工作,解決沖突,記錄信息以備后用。但是,語言的有用性取決于它所能表達的概念,在一個不斷變化的世界中,一種語言必須改變和適應其概念庫,否則就有被廢棄的危險。

不幸的是,太突然地改變一種,會損害它的主要目的——促進人與人之間的溝通。既然語言必須改變,就必須有辦法管理這些改變,而不讓新的形式令外行人難以理解。在這方面,一個非常有用的發明是字典,它幫助記錄和歸檔一種語言的概念調色板,以便后代能夠更好地理解歷史文本。詞典的版本可以被看作是語言的形式化“版本”。

時過境遷,但問題依然似曾相識。正如我在上一篇文章中所解釋的,XCM只不過是一種語言,盡管是非常專業的語言。這是共識系統相互對話的一種手段,而作為這一需求的XCM在密碼產業,特別是Polkadot生態系統飛速發展的情況下,必須有一些方法來確保這些變化不會損害XCM的互操作性。我們現在需要解決的不僅僅是共識空間中的互操作性,還包括共識時間。

版本控制

既然我們希望XCM要在大量使用的同時隨時間變化,需要采取的一個非常簡單的預防措施是確保我們確定哪個版本的XCM我們在實際消息內容之前進行通信。我們通過使用許多版本包裝器類型來做到這一點,之所以這樣命名是因為它們包裝了XCM消息或其組件的版本。在Rust代碼中,這看起來非常簡單:

波卡創始人Gavin Wood:Web 3是“后斯諾登時代網絡”,一個非常有趣的社會實驗:金色財經報道,波卡Polkadot創始人Gavin Wood在BlockDown: DeData Conference大會上對互聯網演變發表看法,他表示,因為愛德華·斯諾登事件,讓互聯網感到創建一個全新平臺的緊迫性,他將這種在全球范圍內進行人際互動的方式稱為“后斯諾登時代網絡”(Post-Snowden Web)。展望未來10年或20年,Gavin Wood未來大規模多用戶應用程序框架可以為用戶提供“實際”保證。當被要求預測十年后的Web 3,Gavin Wood回答說:“這將是一個非常有趣的社會實驗,我們將看到世界對隱私、自我主權和透明度的關注,知道系統或服務規則如何運作,非常真實。”[2021/12/4 12:50:10]

pubenumVersionedXcm{??V0(v0::Xcm),??V1(v1::Xcm),??V2(v2::Xcm),}當“overthewire”,XCM總是放在這個版本化的容器中。這確保了那些太舊而無法解釋消息的系統能夠安全地接收它們,并識別出消息的格式不受它們的支持。它還允許新的系統識別并相應地解釋舊的消息。

不只是XCM消息是版本化的;在XCM代碼庫我們也存在多版本以及它的相關類型。這是因為當鏈的XCM邏輯升級了。如果不進行版本控制,我們可能會試圖將舊的MultiLocation解釋為新的,并發現它是不可理解的。

Gavin Wood:即將發布跨共識消息格式XCM:9月7日消息,Polkadot聯合創始人Gavin Wood發文稱,即將發布跨共識消息格式(XCM)。XCM是一種消息傳遞格式,而不是一種消息傳遞協議,可以用來表達消息接收方應該做什么而不能在不同系統之間實際發送消息。在Polkadot中,XCM可以表達中繼鏈到平行鏈,平行鏈到中繼鏈以及平行鏈之間三種通信通道上消息的含義。XCM未來可以用于跨鏈代幣轉移、支付費用的選擇以及使用XCM語言進行一些平臺特定的操作。[2021/9/7 23:06:33]

兼容性與翻譯

版本控制是第一步,它確保我們能夠識別正在使用的語言版本。它不能保證我們能解釋它,當然也不能保證它是我們優先使用的版本。這就是兼容性的作用所在。我們所說的“兼容性”是指能夠繼續用一個版本來解釋和表達自己。

如果我們希望能夠升級我們的網絡和XCM時間表,那么這種兼容性變得相當重要。這可以分為向后兼容和向前兼容。從根本上說,向后兼容性是升級后的系統在遺留世界中繼續運行的能力,向前兼容性則是遺留系統在升級后世界中持續運轉的能力。

在我們的例子中,我們希望兩者都有,但是有實際的限制:XCM提供了以前版本中不存在的功能,因此期望舊系統能夠解釋這些消息是不現實的。這有點像試圖把“社交媒體”這個詞翻譯成拉丁文,然后指望凱撒大帝能從表面上理解它。有些概念根本無法在上下文中表示。

Gavin Wood:或將在治理機制管控下給Kusama授予1000萬DOT:波卡創始人Gavin Wood最近在談話節目中被問到“誰在負責和治理Kusama?是Polkadot嗎?”Gavin Wood表示,不是Polkadot。Kusama理事會現在有19個人,他們沒有任何實權,但有一定程度的行政權力。這和英國的體制有點相似,有些人可能對它很熟悉。基本上,任何立法都必須通過全體議院或公投,就像我們在Kusama網絡上那樣。Kusama的理事會有點類似于政府這樣的執行機構,一個在大多數情況下,推動事情的投票表決的機構。一件有趣的事情是,我們最初提到過,我們將以某種方式給Kusama網絡1000萬個DOT代幣。我們一年半前宣布的時候還沒有決定。現在的可能性是,我們將在Kusama治理機制的管控下,給Kusama網絡授予1000萬DOT代幣。這是完全去中心化的。在現實中,Kusama或Kusama治理機制將對Polkadot如何運行具有發言權。(PolkaWorld)[2021/2/17 17:24:50]

同樣,發生重大的變化,XCM可能會從其概念模型中移除相關功能。這種情況較少發生,但類似于將某些古代術語翻譯成現代術語的問題。有趣的是,“點”的古意可能就是一個例子。

因此,新版本的XCM的設計大多兼容舊版本和新版本,但通常XCM的這些信息在另一種語境中根本沒有意義,也不能翻譯。

實際通訊

現場 | 波卡創始人Gavin Wood:有些時候社會因素比技術因素更重要:金色財經現場報道,10月27日,第六屆區塊鏈全球峰會于上海開幕,峰會的圓桌討論環節,波卡Polkadot創始人Gavin Wood分享表示,我們看到2014年開始,智能合約在不同平臺上的發展,但他們的主權是專制的,我們希望主權有所稀釋,波卡希望交付一個區塊鏈解決方案,但不是大而全的方案。

針對鏈的應用和治理,應用層面需要考慮一些社會方面的因素,例如GDPR,這個太難了。例如金融機構把資金流轉到以太坊上,如何托管,如何監管,目前還沒有解決,有些時候社會因素比技術因素更重要。治理層面則需要考慮讓底層具備穩定性,而不讓高層的應用加入底層,例如一層的平臺不適合做代幣和轉賬等。[2020/10/27]

如前所述,我們確保所有獨立存在的消息都包含版本標識符。這意味著在系統之間發送的消息或保存在存儲中的消息。它不包括所有的消息、位置和資產,雖然存在一部分數據,但其他數據不需要某一特定版本,因為其版本可以從它的上下文推斷。

而版本識別和compatibility/translation對于從舊的網絡接收消息或向新的網絡發送消息很有幫助,但是,如果采用另一種方式,單獨使用會沒有效果。這是因為從升級網絡接收消息的遺留網絡本身不具備能夠將新的XCM它可以解釋為某種形式——確切地說,這種邏輯只存在于發送方,它的翻譯代碼能夠以遺留術語重新表示新消息。

分析 | 中本聰當年突然離開團隊或與Gavin Andresen在中情局談論比特幣有關:有分析稱,中本聰當年突然離開比特幣團隊或與比特幣軟件開發者Gavin Andresen和中央情報局(CIA)進行談話有關。Andresen曾發布聲明:“我只是有那么一點點擔心,與中情局談論比特幣會增加他們試圖做一些事情的可能性,而這是我們不愿意看到的。我認為,接受他們(中情局)的邀請,并對比特幣的確切含義開誠布公,將降低他們將比特幣視為威脅的可能性。”并且還事先發郵件告知了中本聰,隨后不久中本聰就離開了團隊。后來Andresen在一次博客節目中也對此事表達了自己的猜測,中情局談話或與中本聰離開有關。(TNW)[2019/7/20]

因此,必須由發送網絡負責確保其發送的消息能夠被接收網絡解釋。具體而言,用于傳遞消息的版本不能超過XCM接收網絡支持的內容。

由于這個原因,Polkadot和Kusama中繼鏈、Statemint、Statemine、Shell和任何其他基于Substrate/Frame的鏈及其XCM引擎都保存一個遠程鏈支持的版本。每當一個XCM消息由這些鏈發送,它首先通過查詢其注冊表確定發送消息的版本。它將信息翻譯給之前的發送者和接收者,那么大多數情況下,這些將是相同的,最新發布的版本,會提供完整的功能集XCM。

這個注冊表通常由治理過程決定和升級,這有點麻煩和繁瑣,特別是隨著潛在目的地數量的增加。出于這個原因,引入了版本跟蹤。

版本協商

版本跟蹤是最后一塊XCM拼圖的故事。它的功能是刪除跟蹤XCM潛在目的地鏈的版本。相反,這個過程是自動發生的,而且是連鎖的。

本質上它允許一個網絡使用XCM向另一個人查詢最新版本的XCM,并在此更改時收到通知。來自此查詢的答復允許所述網絡填充和維護其版本注冊表,確保以盡可能最新可理解版本的消息。

具體來說,有三個有價值的指示,在XCM:SubscribeVersion,允許一方要求另一方通知其XCM版本現在和它更改時;取消訂閱版本以取消該請求;以及QueryResponse,將一些信息從響應者網絡返回到發起網絡的一般方法。以下是它們在Rust中的樣子:

enumInstruction{??SubscribeVersion{????query_id:QueryId,????max_response_weight:u64,??},??UnsubscribeVersion,??/*snip*/}所以SubscribeVersion需要兩個參數。第一個query_id是QueryId類型,它只是一個整數,用于識別和區分返回的響應。全部XCM導致響應被發送的指令具有類似的手段,以確保其響應能夠被識別并相應地處理。第二個參數稱為max_response_weight,它是一個Weight值,指示返回時我們應該花費的最大計算時間。與query_id類似,它將被放入該指令生成的任何響應消息中,并且需要確保任何權重不可預測,可變權重成本至少可以限制在執行前的最大值。如果不這樣做,我們將無法獲得解釋應答消息所需時間的上限,因此無法安排執行該消息。

UnsubscribeVersion作為一個指令是相當貧瘠的,主要是因為一次只允許一個版本訂閱對給定位置是活動的。這意味著取消只能通過原產地注冊的內容來識別。

回答

第三個要注意的指令是QueryResponse,它是一個非常通用的指令,允許一個鏈回復另一個,并在這樣做時報告一些信息。這是在Rust中:

enumInstruction{??QueryResponse{????query_id:QueryId,????response:Response,????max_weight:u64,??},??/*snip*/}我們已經知道三個參數中的兩個,因為它們是從SubscribeVersion中提供的值填充的。第三個稱為response,包含我們關心的實際信息。它被放置在一個新的類型Response中,它本身是幾種類型的聯合,其中一種網絡可能希望使用它們來通知另一種網絡。在Rust中是這樣的:

pubenumResponse{??Null,??Assets(MultiAssets),??ExecutionResult(Result<(),(u32,XcmError)>),??Version(XcmVersion),}就我們目前的目的而言,只需要Version項,但正如我們將在以后的文章中看到的,其他項對其他上下文也有用。

執行時間

一般來說,我們不需要QueryResponse指令來通過BuyExecution購買它們自己的執行時間,因為,是現解釋網絡要求首先發送它們。同樣,我們認為SubscribeVersion是廣義上符合發送方和接收方共同利益的東西,所以也不指望有人會付錢。在任何情況下,付款都很難計算,因為付款所產生的反應具有異步性和不可預測性。

自動化

而這些XCM指令允許網絡使用完全的鏈上邏輯來確定對話者支持的最新版本,但仍然存在何時啟動這個版本的問題。此外,一些跨協商一致的傳輸協議是不基于規定的,這將排除版本協商的可能性。

在諸如Polkadot中繼鏈和Statemint之類的Substrate鏈中,解決方案是當需要包裝發送消息但目標的最新版本未知時自動啟動此版本發現過程。這有一個小缺點,即第一個消息將在次優級的XCM版本停留,直到收到版本響應為止。如果這是一個實際問題,那么治理可以介入,強制初始版本XCM目的地與默認值不同。

代碼兼容性XCM

關于版本控制,最后一點是代碼創作。完全不同于Over-the-wire格式的XCM,代碼兼容性處理是使用Rust實現項目代碼庫必須發生的事情。XCM會隨著時間的推移而堆疊。

顯然,旨在使用不斷發展的語言來表達變化的代碼庫必須隨著時代的變化而適應。我們已經有了SemanticVersioning系統,它可以幫助確認在特定版本更改時可能發生的更改。這在處理API和ABI時非常有用,但在考慮整個數據格式或語言時就不那么有用了。幸運的是,XCM被設計成幾乎不需要SemVer了。

我們知道,新版本的XCM軟件能夠在新的和舊的XCM消息之間以及它們的內部數據類型(如位置和資產)之間進行轉換。它可以通過將XCM語言的多個版本同時保存在XCM代碼基中來做到這一點。如果我們回顧VersionedXcm數據類型的Rust聲明(就在本文的開頭),它只不過是底層Xcm數據類型的每個特定版本的標記聯合,每個都可以在它們自己的模塊v0、v1、v2和&c中找到。

由于事務和API使用XCM而且它的數據類型傾向于只使用版本化的變體,這些變體同樣可以構造新的和舊的格式,最終的結果是代碼庫可以更新為使用最新的XCM軟件很少或根本沒有改變他們的代碼。升級XCMCrate允許網絡更好地與其他類似升級的網絡進行互操作,但升級XCM網絡使用的語言不需要再出現。

我們希望,這會成為一個強有力的激勵,促使團隊保持他們的XCMCrate更新進度,因此保持一切迭代和快速發展。

結論

希望XCM的版本系統,以及它如何能夠被用來保持一個網絡的主權鏈通信可以對大家有所啟發。在下一期中,我們將更深入地探討XCM:它的執行模型和異常管理功能。

Tags:IONRESVERAVIjubilation的近義詞REST價格Metaverse Box GameMETAVILLAGE價格

比特幣交易
ORE:資產管理丨如何將比特派錢包中的BTM2.0遷移到Bytom鏈全節點錢包_KEYS

一、下載Bytom鏈全節點錢包到電腦?Mac:https://bycoin.oss-cn-shanghai.aliyuncs.

1900/1/1 0:00:00
比特幣:傳奇投資者瑞達·里奧:什么情況下比特幣會失去價值?_LIO

橋水基金的創始人億萬富翁RayDalio重申了他看待比特幣的立場。在很長的時間里,Dalio對于比特幣都是持懷疑的,但是由于比特幣的特點和當前宏觀經濟的通脹前景,Dalio最終對Crypto表示.

1900/1/1 0:00:00
數字貨幣:數字貨幣高速跨境轉賬或令銀行損失6000億美元_INT

據彭博社9月14日報道,數字貨幣促成的高速跨境轉賬恐令銀行損失6000億美元,因為現有的面向零售客戶的跨境支付又慢又貴.

1900/1/1 0:00:00
數字人:數字人民幣試點場景超132萬個,未來深入拓展應用場景_CNB

原標題:《數字人民幣重在場景落地》 來源:經濟日報 作者:中國社會科學院國家金融與發展實驗室楊濤?我國數字人民幣的創新探索正不斷深入.

1900/1/1 0:00:00
TIC:數據:CryptoPunks地板價突破100ETH_ATIC

巴比特訊,9月17日,據larvalabs數據顯示,CryptoPunks地板價突破100ETH,現報102ETH,相較于9月14日不足80ETH的地板價有所回升.

1900/1/1 0:00:00
OIN:對沖基金Cambrian Asset Management將推出比特幣和以太幣信托_Bitcoin and Ethereum Standard Token

據Hedgeweek9月23日消息,美國量化對沖基金CambrianAssetManagement宣布將推出一只比特幣信托和一只以太坊信托,為投資者提供可避免巨大波動性的加密敞口.

1900/1/1 0:00:00
ads