XCM基礎部分
指引:
ParachainDevelopment·PolkadotWiki「1」
XCM:TheCross-ConsensusMessageFormat「2」
XCM消息格式
OverviewofXCM:AFormat,NotaProtocol
xcm-format參考資料「3」
XCMisrelatedtocross-chaininthesamewaythatRESTisrelatedRESTful.
XCM是一種消息格式,而不是消息傳遞協議,因為它無法在系統之間發送任何消息,僅僅是一種應如何執行消息傳輸的格式,也就是表達接收者應該做什么。XCM還可用于通過UMP、DMP、XCMP通信通道中的任意一個來表發消息的含義。
xcm消息里帶有執行消息和位置信息
例如:鏈和鏈之間,合約與合約之間的xcm消息傳遞都可以用這套規范來實現,這些東西不能依托于鏈來實現,因為這套規范,如果依托于鏈本身,那每次鏈的升級都相當于做了一次xcm版本的升級。這很影響兼容性。
XCM不僅僅是跨鏈,而是"跨共識"消息格式!-技術圈「4」
XCM的核心—XCVM
XCMformat?的核心是XCVM,它是一種超高級非圖靈完備計算機,它的指令設計和交易大致處于同一水平。
XCM中的“消息”實際上只是XCVM上運行的程序。它是一個或多個XCM指令。程序一直執行,直到它運行到最后或遇到錯誤,此時它完成并停止。
XCVM包括許多寄存器,以及對托管它的共識系統的整體狀態的訪問。指令可能會更改寄存器,它們可能會更改共識系統的狀態或兩者兼而有之。
MultiLocations
可以理解為共識系統語義下的“位置”
需要注意的是,所有位置都是從消息解釋器的相對角度來看的。就如下面的例如...
從ParachainA的?度來看:
RelayChain:X1(Parent)
ParachainA:Self
ParachainB:X2(Parent,ParachainB)
ContractA:X1(ContractA)
ContractB:X3(Parent,ParachainB,ContractB)
Alice:X2(ContractA,AcountId32{Alice})
Bob:X1(AcountId32{Bob})
Charlie:X3(Parent,ParachainB,AcountId32{Charlie})
Dave:X4(Parent,ParachainB,ContractB,AcountId32{Dave})
消息路由
Cross-ConsensusProtocols
隨著XCMFormat的正式建立,這些messages需要協議的通用模式,Polkadot實現了兩個,用于在其組成的parachain之間處理XCMmessages。
注:下文中的“消息”意指上面提到的messages。
VMP
實際上,有兩種垂直消息傳遞傳輸協議。
UMP:允許平行鏈向他的中繼鏈發送消息
DMP:允許中繼鏈將消息向下傳遞到他們的平行鏈之一。
注意,
DMP?的消息也可能來自平行鏈,例如:平行鏈A轉給平行鏈B的情況,這個過程是這樣子的。
首先平行鏈A將使用
UMP,將消息傳遞給中繼鏈,其次中繼鏈再根據
DMP將消息向下傳遞給平行鏈B
XCMP
XCMP允許平行鏈與其中繼鏈上其他的平行鏈交換消息。
黃立成地址24小時內購入82枚MAYC,回升至該系列第四大持有者:金色財經報道,據歐科云鏈OKLink多鏈瀏覽器數據監測,被標記為“Jeffrey Huang”黃立成的地址在24小時內購入82枚MAYC,目前地址下持有124枚MAYC,重回MAYC系列持倉第四位。[2023/3/14 13:03:25]
跨鏈交易使用基于Merkle樹的簡單排隊機制來解決,以確保fidelity。中繼鏈驗證人的任務是將一個平行鏈的輸出隊列上的交易移動到目標平行鏈的輸入隊列中。但是,只有關聯的metadata作為hash存儲在中繼鏈的存儲中。
輸入和輸出隊列有時在Polkadot代碼庫和相關文檔中分別稱為ingress和egress消息。
XCMP-精簡版
水平中繼路由消息傳遞協議(HRMP)?協議是未完全完成的功能的臨時替代品。雖然XCMP本身仍在開發中,但HRMP是一個有效的替代品。
HRMP具有與XCMP相同的接口和功能,但對資源的要求更高,因為它將所有消息存儲在中繼鏈存儲中。當XCMP實施后,HRMP計劃被棄用并逐步淘汰以支持它。
XCMP
(思想:中繼鏈只保存相關元數據的hash值,只做關于xcm的相關驗證。)
由于現在XCMP還沒有被完全開發出來,現在主要使用的是HRMP,上文也提到了,HRMP需要用到許多的資源,現在吞吐量可能會是42條平行鏈上下。不過現在parity的開發者已經在把其他模塊交易移到其他平行鏈比如國庫財政部分來提高吞吐能力和承載鏈數量。
小問題:
xcm消息執行失敗了,怎么辦呢題外話:波卡網絡上平行鏈只負責出塊,所以沒有grandpa共識,最后敲定區塊上交給中繼鏈決定的。
消息分發
Polkadot'sMessagingScheme「5」
Polkadot的跨鏈消息傳遞方案「6」
平?鏈階段中,收集?打包區塊的同時,也會將跨鏈交易放到平?鏈的出隊列中。跨鏈交易通過
XCMP協議進?傳輸,根據收集?和驗證?的?絡連接情況,
具體的傳輸?法有三種:
發起鏈收集?直接發送給?標鏈收集?;
發起鏈驗證?發送給?標鏈收集?;發起鏈收集?發送給發起鏈驗證?,發起鏈驗證?傳遞給?標鏈驗證?,?標鏈驗證?再傳遞給?標鏈收集?。
跨鏈交易傳遞到?標鏈后,會把跨鏈交易放到平?鏈?隊列中。通過以上步驟,就完成了跨鏈交易在鏈間的傳遞。
如果A和B不共享全節點,則需要依靠中繼鏈上的驗證?來傳遞消息。
隊列
中繼鏈驗證者應負責將某?平?鏈上輸出隊列中的交易移??標平?鏈上的輸?隊列中。
收集?節點負責把平?鏈之間的信息傳遞。
收集?產?"出?"列表信息并會在"??"接收到其它平?鏈信息。
當收集?產?了區塊并提交給驗證?,它會收集最新??隊列信息并且處理它。
驗證?將會對收集?提交的平?鏈區塊進?驗證,包括處理到該平?鏈預期??的信息。
cumulus的pallets中兩種隊列:
MQC
消息隊列鏈是由驗證人創建的一個通用哈希鏈,用于跟蹤從發送方發送到單個接收方的每條消息以及順序。
MQC本身不保存在任何地方,而是只提供所有接受到的消息的最終證明。當驗證器接收到候選消息時,它從放置在upward_messages中的消息中按升序生成MQC
FeatureXCMP
Cross-ConsensusMessageFormat(XCM)·PolkadotWiki「7」
平行鏈之間直接通信,在中繼鏈上只更新proofs和讀取confirmations,只包含驗證消息處理的必要信息。
假設平行鏈A上部署的一個合約要發一條跨鏈調用的消息給平行鏈B,從而調用位于鏈B上的合約完成資產轉移,其整體流程如下:
A股收盤:深證區塊鏈50指數下跌2.94%:金色財經消息,A股收盤,上證指數報3126.4點,收盤下跌2.3%,深證成指報11261.5點,收盤下跌2.3%,深證區塊鏈50指數報2697.32點,收盤下跌2.94%。區塊鏈板塊收盤下跌1.79%,數字貨幣板塊收盤下跌0.42%。[2022/9/16 7:01:13]
調用者在鏈A上調用部署在鏈A上的智能合約,從而初始化一條以鏈B為目的地的跨鏈消息M;
鏈A的收集人節點會將這條消息M連同其目的地、時間戳放到A的出口隊列中;
鏈B的收集人在正常情況下會輪詢其他所有的平行鏈的收集者節點以查看是否有自己的消息。如果在新一輪詢問中發現有以自己為目的地的消息,那么其會將這條消息放到自己的入口隊列中,以待在產生下一個區塊的時候處理該消息;
另外,鏈A的驗證人也會通過讀取鏈A的出口隊列從而知道這條消息;鏈B的驗證人也是。驗證人也需要知道這些消息,因為之后它們都會對這條消息進行驗證;
當鏈B的收集人節點開始構建一個新區塊的時候,它會處理當前入口隊列中所有的消息;在處理過程中,消息M會執行鏈B中相應的智能合約以此完成預期的資產轉移;
然后收集人將這個區塊提交給驗證人,驗證人會驗證消息M是否真的被處理了;如果這條消息被驗證確實處理了,并且這個區塊沒有其他不合法的地方,驗證者就會把該塊確認進中繼鏈中。
跨鏈資產轉賬詳解:從基礎到實踐
上方都是關于XCM的基礎部分,有了上面的知識,我們就進一步擴展講講其中的一些應用實現,例如跨鏈資產轉賬。
關于平行鏈之間進行資產轉賬會有一些細節。
跨鏈資產轉賬方式
XCM其實定義了兩種轉賬的方式,一種是AssetTeleportation一種是ReserveAssetTransfer。
參考:HowcanItransferassetsusingXCM?「8」
AssetTeleportation
這個轉賬模型只有兩個參與者,源和目的地。
例子:
Rust?//?鏈A的Alice向鏈B的Bob轉賬100個鏈A的native?token_aTransfer_teleport_asset(source_alice,?dest_bob,?token_a,?100);
過程:
首先先會在鏈Aburn掉Alice的100個token_a,并記下burn掉的資產總量,
然后鏈A會創建一個名為"ReceiveTeleportedAssets"的XCM指令,并將burn掉的資產數量和鏈B的相對位置作為這條XCM指令的參數,然后它會將這條指令發送到目的地,在那里它被處理并根據參數里的信息mint新的資產。
最后鏈B會將新鍛造的資產存入Bob賬戶中。
缺點:
它要求來源和目的地都具有高度的相互信任。目的地必須相信來源已經燒毀了發送過來的資產,并且來源還必須相信目的地鑄造在來源處被燒毀的資產。
不支持這兩個條件中的任何一個都將導致資產的總發行量發生變化或NFT的完全丟失/重復。
ReserveAssetTransfer
過程:chainA上的account1想轉移某個資產到chainB上的account2賬??,那?先將account1的資產轉移?chainA上的chainB代表賬?,再發送?條通知消息給chainB,chainB將對應的資產分配給account2。
ps:其實業界里更推崇后者(reserve),相較于前者會更有保障。像orml-xtokens其實就是基于reserve方式實現的平行鏈多資產轉賬模塊。
為平行鏈添加跨鏈資產轉移的功能
我們接下來的目的就是創建兩條平行鏈,讓這兩條平行鏈支持多資產并且實現跨鏈資產轉賬。
實驗環境
我們會準備4個中繼鏈的驗證人節點以支持兩條平行鏈。因為我們要模擬鏈A到鏈B的跨鏈資產轉移以及平行鏈到中繼鏈的跨鏈資產轉移。
安全團隊:Audius漏洞利用者已將700枚ETH轉入Tornado Cash:7月24日消息,據安全團隊CertiK監測,去中心化音樂平臺Audius的漏洞利用者只有ETH的錢包已將700枚ETH轉入Tornado Cash。
此前消息,Audius社區金庫被利用,損失1850萬枚Audio代幣,黑客將資金在Uniswap兌換為約705枚ETH。[2022/7/24 2:34:44]
-4個驗證人的中繼鏈
-平行鏈A
-平行鏈B
平行鏈的跨鏈轉賬一共有兩種場景:
平行鏈轉中繼鏈平行鏈轉中繼鏈都是轉的中繼鏈代幣,如果想讓自己的平行鏈能支持向中繼鏈跨鏈轉賬的功能其實只需要配置XcmConfig就行。
平行鏈A轉平行鏈B平行鏈之間的轉賬會稍微復雜些,因為會涉及多資產轉賬的問題,這里只需要配置XcmConfig以及添加orml模塊就行。
接下來我們直接分析整個完整的runtime配置來介紹一下配置跨鏈資產轉賬時需要注意的配置項以及其含義。
平行鏈轉中繼鏈
為兩條平行鏈添加支持向中繼鏈進行跨鏈轉賬的功能。
進行runtime配置
其實是關于XcmExecutor的配置,其中一項XcmConfig就是指定XcmSender.這是你需要包含實現XCMP協議的pallet的地方。根據您要將XCM發送給誰,如果是要發送到中繼鏈,則需要包含parachain-system-pallet「9」,或者如果你要發送到同級平行鏈,則需要包含xcmp-queue-pallet「10」。
Rust///?queues
平行鏈A轉平行鏈B
為平行鏈A和平行鏈B配置ORML相關庫以實現平行鏈之間的跨鏈資產轉移將會用到
ORML的一些依賴庫:
orml-xtokens為平行鏈提供跨鏈資產轉移的方式。
orml-tokens用于查詢多資產額度的模塊
orml-currencies可以使用currencies模塊實現鏈內的多資產轉賬,可以理解為currencyplus?。
orml-traits共享一些trait,包括BasicCurrency、MultiCurrency、Auction等trait。
orml-xcm-support?提供types、traits和implementations以支持XCM集成
最后實現的效果:
鏈A的Alice通過xtokens模塊進行跨鏈資產轉移將token_a轉移給鏈B的Bob,轉賬成功后,鏈B上的Bob通過tokens模塊查看token_a的余額,然后通過currencies模塊將一部分的token_a轉賬給鏈B上的Alice。
進行runtime配置
為了平行鏈能夠支持多資產轉移,我們除了需要添加上面的ORML依賴庫,還需要做一些定制化的配置。
鏈A和鏈B上需要實現CurrencyId和CurrencyIdConvert,一個是代幣的tokenSymbol的list一個是將tokenSymbol轉換成multilocation的轉換器。
引入orml標準庫
還需要進一步配置XcmExcuter,其中包括跨鏈轉賬時手續費的收費規則、XCM過濾器以及如何存取資產的配置
兩條鏈都需要配置這些內容,下面我主要以鏈A為例。鏈B同理。
1.配置CurrencyId和CurrencyIdConvert
假設條件:
平行鏈A->TokenSymbol:AA->ParachainId:1000
平行鏈B->TokenSymbol:BB->ParachainId:2000
Rust##pub?enum?CurrencyId?{??//?/?Relay?chain?token.??ROC,??//?Native?TokenSymbol??AA,??//?===============================??//?1.?添加支持的代幣tokenSymbol??//?===============================??BB}pub?type?Amount?=?i128;//?===============================//?2.?設置?CurrencyIdConvert,//?===============================pub?struct?CurrencyIdConvert;impl?Convert>?for?CurrencyIdConvert?{??fn?convert(id:?CurrencyId)?->?Option?{????match?id?{??????CurrencyId::ROC?=>?Some(Parent
Symbiosis Finance創建鏈間通信協議,支持renBTC跨鏈兌換:7月15日消息,多鏈流動性協議Symbiosis Finance宣布已創建鏈間通信協議,允許用戶訪問renBTC并直接與比特幣交互。Symbiosis使用BNB Chain上的Ren Protocol為BTC執行兌換過程。Ren Protocol在BNB Chain上銷毀renBTC,并將BTC發送到用戶在比特幣區塊鏈上的地址。[2022/7/15 2:14:51]
impl?orml_currencies::Config?for?Runtime?{??type?Event?=?Event;??type?MultiCurrency?=?Tokens;??type?NativeCurrency?=?BasicCurrencyAdapter;??type?GetNativeCurrencyId?=?GetNativeCurrencyId;??type?WeightInfo?=?();}pub?struct?AccountIdToMultiLocation;impl?Convert?for?AccountIdToMultiLocation?{??fn?convert(account:?AccountId)?->?MultiLocation?{????X1(AccountId32?{?network:?NetworkId::Any,?id:?account
parameter_type_with_key!?{??pub?ParachainMinFee:?|location:?MultiLocation|?->?u128?{????#?//?false?positive????match?(location
impl?orml_xtokens::Config?for?Runtime?{??type?Event?=?Event;??type?Balance?=?Balance;??type?CurrencyId?=?CurrencyId;??type?CurrencyIdConvert?=?CurrencyIdConvert;??type?AccountIdToMultiLocation?=?AccountIdToMultiLocation;??type?SelfLocation?=?SelfLocation;??type?MinXcmFee?=?ParachainMinFee;??type?XcmExecutor?=?XcmExecutor;??type?Weigher?=?FixedWeightBounds;??type?BaseXcmWeight?=?BaseXcmWeight;??type?LocationInverter?=?LocationInverter;??type?MaxAssetsForTransfer?=?MaxAssetsForTransfer;}parameter_type_with_key!?{??pub?ExistentialDeposits:?|currency_id:?CurrencyId|?->?Balance?{????//?every?currency?has?a?zero?existential?deposit????match?currency_id?{??????_?=>?0,????}??};}parameter_types!?{??pub?ORMLMaxLocks:?u32?=?2;??pub?NativeTreasuryAccount:?AccountId?=?TreasuryPalletId::get()
impl?orml_tokens::Config?for?Runtime?{??type?Event?=?Event;??type?Balance?=?Balance;??type?Amount?=?Amount;??type?CurrencyId?=?CurrencyId;??type?WeightInfo?=?();??type?ExistentialDeposits?=?ExistentialDeposits;??//?type?OnDust?=?orml_tokens::TransferDust;??type?OnDust?=?();??type?MaxLocks?=?ORMLMaxLocks;??type?DustRemovalWhitelist?=?Nothing;}//?orml?unknown?tokensimpl?orml_unknown_tokens::Config?for?Runtime?{??type?Event?=?Event;}impl?orml_xcm::Config?for?Runtime?{??type?Event?=?Event;??type?SovereignOrigin?=?EnsureRoot;}//?=====================================//?=====================================//?=====================================//?runtime/src/lib
印度央行行長:我們反對加密貨幣:7月12日消息,印度央行行長沙克蒂坎塔·達斯表示:我們反對加密貨幣,加密將破壞央行對抗通脹的努力,將宣布的數字借貸新規,不會允許科技巨頭成為代理貸款人。(金十)[2022/7/12 2:08:30]
pub?type?Barrier?=?(??TakeWeightCredit,??AllowTopLevelPaidExecutionFrom,??AllowUnpaidExecutionFrom,??//?^^^?Parent?and?its?exec?plurality?get?free?execution??AllowUnpaidExecutionFrom,);//?==================================//?AssetTransactor?設置支持的資產類型//?==================================pub?type?LocalAssetTransactor?=?MultiCurrencyAdapter<??Currencies,??UnknownTokens,??IsNativeConcrete,??AccountId,??LocationToAccountId,??CurrencyId,??CurrencyIdConvert,??DepositToAlternative,>;//?==================================//Trader配置跨鏈轉賬手續費的收費規則,這個手續費是其他鏈給我們鏈進行跨鏈轉賬的時候,我們平行鏈會收取一定的手續費。//?==================================use?frame_support::{ExtrinsicBaseWeight,?WEIGHT_PER_SECOND};pub?const?MICROUNIT:?Balance?=?1_000_000;pub?const?MILLICENTS:?Balance?=?1_000?*?MICROUNIT;pub?const?CENTS:?Balance?=?1_000?*?MILLICENTS;?//?assume?this?is?worth?about?a?cent
//?======================================//?XcmConfig//?======================================pub?struct?XcmConfig;impl?xcm_executor::Config?for?XcmConfig?{??type?Call?=?Call;??type?XcmSender?=?XcmRouter;??//?How?to?withdraw?and?deposit?an?asset.??type?AssetTransactor?=?LocalAssetTransactor;??type?OriginConverter?=?XcmOriginToTransactDispatchOrigin;??type?IsReserve?=?MultiNativeAsset;??type?IsTeleporter?=?();?//?Teleporting?is?disabled.??type?LocationInverter?=?LocationInverter;??type?Barrier?=?Barrier;??type?Weigher?=?FixedWeightBounds;??type?Trader?=?Trader;??type?ResponseHandler?=?PolkadotXcm;??type?AssetTrap?=?PolkadotXcm;??type?AssetClaims?=?PolkadotXcm;??type?SubscriptionService?=?PolkadotXcm;}
ps:關于Trader機制的解釋。
轉賬的手續費,一般是把轉賬的手續費充到國庫。
需要開發者自己設置weight的比例,這個weight的意思就是一秒鐘的時間消耗大概多少的手續費,這個weight其實就是時間復雜度。這里需要注意一下:如果不調整的話,大伙轉賬消耗的都是一個代幣,但是一個ksm得幾百u,一個平行鏈代幣卻是幾u,這個相差就有點大,就有可能被攻擊。
如果是非平行鏈的話,這個手續費會給驗證人,但是平行鏈沒有驗證人,只能給國庫。
如果Trader不指定任何賬戶,
類似這樣子的寫法,gas就相當于burn掉了。
如果是給國庫,那生態的人可以通過治理模塊支配國庫內的額度。
如果是直接burn掉,就類似通縮模型。轉的越多,代幣越少。
打開Hrmp
在這里之前,請確保你鏈A和鏈B都進行了上面的配置。
我們本地需要啟動4個驗證人的一條中繼鏈,然后把兩條平行鏈注冊上去
打開Hrmp通道有兩種方法,一種是在中繼鏈上直接通過sudo打開,另外一種則是在平行鏈上利用orml-xcm打開hrmp。
注意的是,hrmp是一個單向的通道,我們需要實現雙向打通,就必須打通兩次
這里以中繼鏈上通過sudo為例,后者可以根據acala的wiki為參考:OpenHRMPChannel「11」.
在Developer/Sudo下通過parasSudoWrapper.sudoEstablishHrmpChannel來打開1000->2000和2000->1000的hrmp通道。
1.打開1000->2000
2.打開2000->1000
進行跨鏈資產轉賬
到這所有的準備工作都準備好了,我們可以進行xcm消息傳遞了也就是說可以進行跨鏈資產轉移了。
1.鏈A向中繼鏈轉中繼鏈代幣
這里需要注意的是只能往中繼鏈轉中繼鏈代幣,因為我用的是rococo-local,所以中繼鏈代幣tokenSymbol為ROC。
2.鏈A向鏈B轉中繼鏈代幣
需要注意的是這里的AccountId32需要我們將ss58的地址hex一下
轉換工具:SubstrateUtilities「12」
同理也可以把CurrencyId切換成平行鏈代幣,比如鏈A的nativetoken。
執行成功之后,我們可以去鏈B通過Developer/ChainState下的tokens模塊查看余額。
總結
在實踐之前需要先吃一些基礎的知識,可以囫圇吞棗但是不能不去了解。
配置的時候確實牽扯到需要的配置項,不過細心的理解每個選項的含義,也能把問題修復好。
參考鏈接
「1」ParachainDevelopment·PolkadotWiki:
https://wiki.polkadot.network/docs/build-pdk#how-to-make-cross-chain-transfers
「2」XCM:TheCross-ConsensusMessageFormat:
https://medium.com/polkadot-network/xcm-the-cross-consensus-message-format-3b77b1373392
「3」xcm-format參考資料:
https://wiki.polkadot.network/docs/learn-crosschain#overview-of-xcm-a-format-not-a-protocol
「4」XCM不僅僅是跨鏈,而是"跨共識"消息格式!:
https://jishuin.proginn.com/p/763bfbd6d91c#:~:text=XCM是一種消息,表發消息的含義。
「5」Polkadot'sMessagingScheme:
https://medium.com/web3foundation/polkadots-messaging-scheme-b1ec560908b7
「6」Polkadot的跨鏈消息傳遞方案:
https://mp.weixin.qq.com/s?__biz=MzI3MzYxNzQ0Ng==&mid=2247485114&idx=1&sn=b85ed58daaa075c7c332c204b3749e20&chksm=eb21c1f3dc5648e588a01f860ae3cadd44c654270cc76a14b8b728e25a3b99ed03ccb97dc21f&scene=21
「7」Cross-ConsensusMessageFormat(XCM)·PolkadotWiki:
https://wiki.polkadot.network/docs/learn-crosschain
「8」HowcanItransferassetsusingXCM?:
https://substrate.stackexchange.com/questions/37/how-can-i-transfer-assets-using-xcm/38#38
「9」parachain-system-pallet:
https://github.com/paritytech/cumulus/tree/master/pallets/parachain-system
「10」xcmp-queue-pallet:
https://github.com/paritytech/cumulus/tree/master/pallets/xcmp-queue
「11」OpenHRMPChannel:
https://wiki.acala.network/build/development-guide/composable-chains/open-hrmp-channel
「12」SubstrateUtilities:
https://www.shawntabrizi.com/substrate-js-utilities/
XCMPartII:?
VersioningandCompatibilityhttps://medium.com/polkadot-network/xcm-part-ii-versioning-and-compatibility-b313fc257b83
XCMPartIII:
ExecutionandErrorManagement:
https://medium.com/polkadot-network/xcm-part-iii-execution-and-error-management-ceb8155dd166
PolkadotMessagingGuide-HackMD:
https://hackmd.io/S4TZc1uTQH-vxEWv-QFapg
Sub0Online:?
GettingStartedwithXCM-YourFirstCrossChainMessages:https://www.youtube.com/watch?v=5cgq5jOZx9g
PolkadotLaunchPhases:
https://wiki.polkadot.network/docs/learn-launch
Acala&KaruraWiki:
https://wiki.acala.network/
Collator·PolkadotWiki:
https://wiki.polkadot.network/docs/learn-collator
來源:金色財經
??據Bittrex官方了解JYT將于2022年7月7日首發Bittrex交易,這一消息引起了JYT社區的強烈反映,熱情一度高漲.
1900/1/1 0:00:00近期,全球對于美國的經濟是越來關注得越多,而在今年很多人表示,美國的經濟已經處于全面衰退狀態了。尤其是在美聯儲在6月16日發布的75點的加息后,很多國際專家紛紛表示,美國的衰退期馬上要來臨了.
1900/1/1 0:00:00數據顯示,比特幣“儲備風險”指標最近大幅下跌,目前正達到歷史低點,僅在2015年熊市和2020年3月COVID崩盤時出現過.
1900/1/1 0:00:00市場消息 據Tokenview數據顯示,第三大比特幣巨鯨過去一周累計增持856枚BTC。截止目前該地址余額為130,227.54枚BTC,價值約27.59億美元.
1900/1/1 0:00:00元宇宙無疑成為科技巨頭的新賽場:字節跳動重金買下Pico,三星與微軟合作研發HoloLens3,谷歌重啟AR眼鏡計劃,騰訊還未放棄收購黑鯊.
1900/1/1 0:00:00???新冠疫情陰霾揮之不去,全球經濟受到嚴重沖擊,但歷史的腳步卻從未停歇,技術的革新仍在持續地促進人們改寫這個世界發展的軌跡.
1900/1/1 0:00:00