——背景——
當前,區塊鏈跨鏈平臺的接入方式在架構設計上存在著較大差異,如何將應用鏈快速、便捷地接入跨鏈系統是一個亟待解決的問題。趣鏈BitXHub跨鏈服務平臺采用中繼鏈+網關的跨鏈方案,其中,跨鏈網關擔任著區塊鏈間收集和傳播交易的角色。采用插件機制的設計將網關與應用鏈交互的模塊與跨鏈網關核心功能模塊進行解耦,從而實現不同種類應用鏈高效地接入跨鏈系統。在Pier運行時,通過動態加載插件的方式完成不同應用鏈的靈活適配。為了更好的提升Pier與應用鏈的交互能力,具體應用鏈插件需要根據不同區塊鏈的特性實現具體的接口,交互接口需要滿足以下幾個功能:
1)監聽應用鏈上的跨鏈事件并傳給核心模塊進行處理;
Bitpanda獲德國聯邦金融監管局頒發的許可證:金色財經報道,奧地利加密貨幣交易所Bitpanda獲得來自德國聯邦金融監管局(BaFin)頒發的許可證,允許為德國居民提供加密貨幣托管以及加密資產的自營交易。(CoinDesk)[2022/11/22 7:56:50]
2)執行來自于網關發出的跨鏈請求;
3)能夠主動查詢應用鏈上已收到和已執行的跨鏈請求狀態。
在插件實現方案的設計中,我們先后采用了兩種不同的插件機制,下面就來介紹一下我們使用原生插件時碰到的問題以及新插件方案的優勢。
——原生插件——
go語言從1.13版本開始支持編譯為插件,使用方式如下
Meta向十所大學贈送VR設備作為教學工具,獲贈大學將舉辦虛擬課程:金色財經報道,Meta向十所大學贈送了數十臺VR Quest耳機作為教學工具,獲贈的大學將在今年舉辦虛擬課程,讓部分學生在虛擬校園中學習。例如馬里蘭大學將在生物學和天文學入門課程、南達科他州將在有機化學和解剖學課程中使用這些設備。
Meta發言人表示,教育是元宇宙的一個有意義的用例,元宇宙中的沉浸式學習將幫助世界各地的創作者獲得元宇宙的技能,并為學習者創造身臨其境的體驗。(福布斯)[2022/9/4 13:08:13]
gobuild--buildmode=plugin-oappchain.so*.gogo項目在編譯時可以通過--buildmode指定為插件模式,這種方式將輸出為動態鏈接文件。該文件并非可直接運行的二進制文件,而是提供給其他二進制運行時的動態調用。
1inch聚合API集成至數字支付平臺Wirex:8月2日消息,去中心化聚合交易平臺1inch宣布與法定/加密支付平臺Wirex集成,1inch Aggregation API將被添加到Wirex的非托管錢包中,以支持代幣兌換功能。(blog.1inch.io)[2022/8/2 2:54:15]
在主二進制文件中的使用方式如下:
總結來說原生插件具有以下特點:
優點:
1)?使用體驗和原生代碼一致,類似于代碼模塊的二進制化;
2)?效率較高,插件直接在主程序進程空間中運行。
缺點:
1)原生插件中的依賴庫與主程序必須保持完全一致,否則啟動的時候會報錯,而且不論這個依賴是直接引用還是間接引用,都會出現這個問題。
Argo Blockchain第一季度凈利潤為210萬美元,同比下降90%:金色財經報道,Argo Blockchain公布第一季度凈利潤為160萬英鎊(210萬美元),同比下降90%以上。Argo提到了數字貨幣公允價值的變化等因素,第一季度比特幣的價格在4萬美元左右,而去年同期為近6萬美元。Argo開采了470個比特幣及等值比特幣,而去年同期為387個。截至第一季度末,Argo持有2700枚比特幣及和比特幣等價物。Argo近幾周從紐約數字投資集團(NYDIG)子公司借款7060萬美元,用于為其位于德克薩斯州的Helios設施購買采礦設備,該設施將以200兆瓦的功率運行,并有可能提高到800兆瓦。(coindesk)[2022/5/18 3:25:11]
——轉戰RPC插件——
原生插件中嚴厲的版本限制,使得在升級插件和或網關主程序功能時,可能因為無意升級了主程序某些依賴,插件也必須作出相同的適配升級。這種方式不利于插件的完全解耦,因此我們轉向了另外一個使用RPC方式的GO插件項目。
在GO原生支持的插件機制出現之前,hashicorp的go-plugin就已經存在,不過GO原生插件出來之后,他們也并沒有放棄對該項目的支持,因為總的來說原生插件并不是很完善,在某些場景下還是go-plugin更方便。
go-plugin插件的使用方式如下:
簡單來說,go-plugin項目實現的插件方式采用了C/S模式,主程序作為RPCClient,具體插件作為RPCServer,Server和Client通信也是基于的interface接口規范來通信。
具體使用流程如下:
1)抽象需要插件化的interface,這里直接復用原生插件中使用的接口定義即可;
2)針對Client端和Server端,都實現上述接口。Server端的實現是具體的插件處理邏輯部分的代碼;Client端的實現只需封裝一下gRPC處理的結果和異常信息,之后便可以做到主程序在使用插件時對于gRPC的弱感知化。
Server實現部分:
Client實現部分:
▲額外需要注意的是:
插件中需要調用plugin.Serve來授權主程序使用自己的RPC服務。這里需要注意的是,主程序和插件通信前需要進行握手,主要包括確認該插件的版本信息。主程序使用plugin.Client對象啟動插件,該插件是運行在另一個進程中的,所以插件崩潰并不會影響到主程序。client與server在使用中實際上是通過進程間Socket來完成通信,這雖然犧牲了一定的性能卻換來了原生插件的單進程方案所不具備的依賴解耦?多語言支持等靈活應用。——結語——
go-plugin提供兩種通信方式的選擇,一種是GRPC,一種是GO語言標準庫中自帶的net/rpc。GRPC插件的好處是可以采用不同的語言來實現,并且Googleprotobuf也是支持多語言的。網關插件本質上已成為連接應用鏈并實現對網關提供RPC服務的橋梁,開發者在跨語言編寫插件時的阻礙會大大降低,在面對不同應用鏈特性時也能做到更加可靠與簡潔的邏輯呈現。
作者簡介
王荻矣?趣鏈科技數據網格實驗室BitXHub團隊
1.富國銀行已開始為高凈值客戶提供加密貨幣敞口2.資產管理公司GoldenTree已購買比特幣3.
1900/1/1 0:00:00據LedgerInsights消息,愛沙尼亞區塊鏈公司Guardtime最近在十個國家/地區開展一項消費者對央行數字貨幣態度的調查,發現64%的消費者愿意等CBDC一推出就開始使用.
1900/1/1 0:00:00原標題:《a16z致美國政府公開信:加密網絡可以修復現有系統,不要讓政策缺陷犧牲我們的未來》美國政府正在尋求通過加密貨幣征稅來增加收入.
1900/1/1 0:00:00提要:CryptoPunk市場在上周末陷入瘋狂,幾乎所有指標都創下了歷史新高,其中包括總銷售額、獨立新買家、平均價值、總交易量.
1900/1/1 0:00:00當下無論國內還是國外的金融圈和投資圈,都非常關注兩個話題:一是大宗商品價格是不是見頂了;二是美聯儲會不會在這個位置開始緊縮,刺破全球資產價格泡沫.
1900/1/1 0:00:00社區貢獻機會:這是一種為社區、項目、團隊等籌集資金的新方式。 在我們之前的文章中,我們已經或多或少地提及到所謂的社區貢獻機會,現在是時候闡述我們對它的想法了.
1900/1/1 0:00:00