8月13日,迅雷鏈正式向廣大開(kāi)發(fā)者公布WASM虛擬機(jī)模塊的源代碼和代碼庫(kù),從而幫助迅雷鏈開(kāi)放平臺(tái)上的開(kāi)發(fā)者們了解虛擬機(jī)的內(nèi)部實(shí)現(xiàn)機(jī)制、工
8月13日,迅雷鏈正式向廣大開(kāi)發(fā)者公布WASM虛擬機(jī)模塊的源代碼和代碼庫(kù),從而幫助迅雷鏈開(kāi)放平臺(tái)上的開(kāi)發(fā)者們了解虛擬機(jī)的內(nèi)部實(shí)現(xiàn)機(jī)制、工作原理和使用方法,便于開(kāi)發(fā)者進(jìn)行更多場(chǎng)景的區(qū)塊鏈應(yīng)用開(kāi)發(fā)。同時(shí),開(kāi)發(fā)者也可以和迅雷鏈技術(shù)團(tuán)隊(duì)一起完善虛擬機(jī)的功能,促進(jìn)區(qū)塊鏈生態(tài)的繁榮發(fā)展。
多項(xiàng)技術(shù)優(yōu)化,簡(jiǎn)化區(qū)塊鏈應(yīng)用構(gòu)建
隨著區(qū)塊鏈應(yīng)用對(duì)虛擬機(jī)以及智能合約的需求增多,區(qū)塊鏈虛擬機(jī)技術(shù)也在逐漸完善。目前,基于WASM的虛擬機(jī)在速度和性能方面都有了顯著提升,且支持C、C++等多種編程語(yǔ)言,開(kāi)發(fā)門(mén)檻更低。為了讓區(qū)塊鏈應(yīng)用開(kāi)發(fā)更便捷,迅雷鏈推出了雙虛擬機(jī)引擎,同時(shí)支持WASM虛擬機(jī)和EVM虛擬機(jī)。原本在以太坊等支持EVM的主鏈上運(yùn)行的區(qū)塊鏈應(yīng)用,如果由于性能等原因需要使用迅雷鏈,可以輕松實(shí)現(xiàn)無(wú)縫遷移。
如上圖所示,使用Solidity/C/C++等語(yǔ)言編寫(xiě)的智能合約,經(jīng)過(guò)編譯器編譯成字節(jié)碼,會(huì)包含對(duì)應(yīng)的特征,迅雷鏈雙虛擬機(jī)引擎通過(guò)特征識(shí)別,判斷具體需要執(zhí)行哪種虛擬機(jī)。
其中,WASM字節(jié)碼具有跨平臺(tái)的能力,同時(shí)支持多種編程語(yǔ)言。通過(guò)clang 前端編譯器,將C/C++代碼變成 LLVM 中間代碼IR。再經(jīng)過(guò)LLVM后端編譯器,將IR指令轉(zhuǎn)換為WASM字節(jié)碼。這樣就可以輕松的支持更多語(yǔ)言的合約代碼,在不同平臺(tái)上面運(yùn)行。
不僅如此,迅雷鏈針對(duì)WASM虛擬機(jī)還做了諸多改進(jìn),使得智能合約模塊具備更高的兼容性與性能,同時(shí)擁有更強(qiáng)的安全性與靈活性。
第一,支持合約原地升級(jí),解決了開(kāi)發(fā)者在以太坊上升級(jí)合約代碼時(shí)合約地址會(huì)改變的困擾,避免了繁瑣的開(kāi)發(fā)工作量。此外,為兼顧合約升級(jí)的靈活性與安全性,迅雷鏈引入多重簽名信任機(jī)制。開(kāi)發(fā)者必須設(shè)置受信任的多重簽名賬戶,只有收集到超過(guò)2/3的受信任賬戶的簽名,才能執(zhí)行合約升級(jí)。
第二,合約調(diào)用更便捷。不同于EOS在合約調(diào)時(shí)無(wú)法直接獲得被調(diào)用合約的執(zhí)行狀態(tài),迅雷鏈的WASM虛擬機(jī)增加了合約嵌套調(diào)用功能,可以立即獲取到調(diào)用另外一個(gè)合約方法的結(jié)果,使得合約之間的調(diào)用像函數(shù)調(diào)用一樣方便。
第三,合約執(zhí)行更安全。與EOS租用資源的方式不同,迅雷鏈為WASM虛擬機(jī)增加了Gas機(jī)制。每執(zhí)行一條合約指令,都會(huì)扣除相應(yīng)的Gas,確保合約指令在執(zhí)行有限次運(yùn)算后,一定可以終止執(zhí)行,有效防止代碼無(wú)限循環(huán)攻擊。
第四,迅雷鏈對(duì)WASM虛擬機(jī)內(nèi)部進(jìn)行諸多技術(shù)優(yōu)化,包括支持自動(dòng)擴(kuò)展線性內(nèi)存,緩存wasm module,優(yōu)化合約的加載性能,優(yōu)化合約對(duì)宿主環(huán)境golang函數(shù)的調(diào)用等,從而極大提升了虛擬機(jī)運(yùn)行性能。
第五,迅雷鏈在WASM虛擬機(jī)上層進(jìn)行了豐富的庫(kù)封裝,比如TC_CallContract、TC_Require、TC_Transfer、TC_LogX、TC_Notify等EVM虛擬機(jī)中常用的API,同時(shí)擴(kuò)展了TC_StorageX(基礎(chǔ)存儲(chǔ)API)、TC_BigIntX(大數(shù)運(yùn)算API)、TC_JsonX(JSON支持API)等豐富的基礎(chǔ)API,讓虛擬機(jī)的功能更強(qiáng)大、開(kāi)發(fā)體驗(yàn)更便捷。另外,為方便開(kāi)發(fā)者快速構(gòu)建自己的TOKEN合約,迅雷鏈不僅提供常用的標(biāo)準(zhǔn)TOKEN合約基礎(chǔ)類(lèi)庫(kù),還支持C/C++等編寫(xiě)智能合約所需語(yǔ)言的類(lèi)庫(kù)。開(kāi)發(fā)者也可以使用第三方維護(hù)的開(kāi)源庫(kù),彌補(bǔ)了EVM缺少公共庫(kù)的不足。
多種工具性解決方案 迅雷鏈全面賦能開(kāi)發(fā)者
將WASM虛擬機(jī)這一核心模塊開(kāi)源,凸顯了迅雷鏈賦能開(kāi)發(fā)者、促進(jìn)區(qū)塊鏈應(yīng)用落地的決心。事實(shí)上,迅雷鏈一直致力于推動(dòng)區(qū)塊鏈技術(shù)發(fā)展和行業(yè)進(jìn)步,在發(fā)布開(kāi)放平臺(tái)將百萬(wàn)TPS等領(lǐng)先技術(shù)性能賦能于廣大開(kāi)發(fā)者之后,還持續(xù)推出了多種工具性的解決方案,包括可以在瀏覽器直接運(yùn)行的合約開(kāi)發(fā)調(diào)試工具與合約SDK自動(dòng)生成工具等等,從而降低開(kāi)發(fā)門(mén)檻和難度,讓開(kāi)發(fā)者將主要精力集中在業(yè)務(wù)拓展和創(chuàng)新上。
例如,迅雷鏈提供的合約開(kāi)發(fā)調(diào)試工具catalyst集成了EVM與WASM雙虛擬機(jī)合約的開(kāi)發(fā)、編譯、部署、合約接口測(cè)試等功能,方便開(kāi)發(fā)者開(kāi)發(fā)與測(cè)試合約。Catalyst可以直接運(yùn)行在瀏覽器中,用戶開(kāi)發(fā)測(cè)試合約過(guò)程中不必自己搭建區(qū)塊鏈節(jié)點(diǎn),也不需要安裝復(fù)雜的合約代碼編譯環(huán)境。
此外,合約SDK自動(dòng)生成工具能自動(dòng)生成后端系統(tǒng)調(diào)用合約接口的代碼,同時(shí)可屏蔽調(diào)用合約時(shí)的參數(shù)編解碼細(xì)節(jié)等,幫助開(kāi)發(fā)者快速集成合約業(yè)務(wù)到系統(tǒng)中,從而可以有更多精力投入到智能合約業(yè)務(wù)邏輯的開(kāi)發(fā)。目前,該工具還支持自動(dòng)生成Python庫(kù)和go語(yǔ)言庫(kù),極大地提升了開(kāi)發(fā)者的效率。
目前,迅雷區(qū)塊鏈技術(shù)已經(jīng)和中國(guó)版權(quán)保護(hù)中心、來(lái)電科技、南方新媒體、壹基金等多個(gè)政企機(jī)構(gòu)合作,落地版權(quán)保護(hù)、商品溯源、公益、醫(yī)療、保險(xiǎn)、交通、基因、供應(yīng)鏈、新零售等十余個(gè)行業(yè)領(lǐng)域。隨著此次WASM虛擬機(jī)模塊的開(kāi)源,相信區(qū)塊鏈技術(shù)將在更豐富的應(yīng)用場(chǎng)景中,真正發(fā)揮其應(yīng)有的價(jià)值。(迅雷鏈)