0
假想一下,我們基于以太坊搞了個(gè)商城,想用比特幣支付,以太坊的智能合約需要知道我們用了比特幣支付,但每個(gè)商家可能要花費(fèi)大量的Gas,是不是不太劃算?理論上,以太坊可以做這件事,因?yàn)樗袀€(gè)圖靈完備的虛擬機(jī),但實(shí)際上它做不了,因?yàn)樘F(且慢)。而且以太坊并不想做一個(gè)為電商優(yōu)化,或者說是為跨鏈優(yōu)化的虛擬機(jī),它希望找一個(gè)通用的解決方案,但目前這個(gè)方案并不明晰。
此外,沒有鬧鐘功能(時(shí)間戳不可信),做不了分期付款等缺陷讓以太坊在涉及到具體的應(yīng)用場景的時(shí)候,顯得有點(diǎn)力不從心。
以太坊這樣想做世界計(jì)算機(jī)的公鏈解決不了電商領(lǐng)域的問題,CyberMiles看到了這一點(diǎn),開始尋求改進(jìn)。
第一代區(qū)塊鏈(比特幣)是沒有虛擬機(jī)的,到了第二代區(qū)塊鏈(以太坊),大家開始考慮,把錢從A打到B的過程為什么不能寫成一段代碼?執(zhí)行這個(gè)代碼就需要有虛擬機(jī)。虛擬機(jī)是以太坊的一個(gè)重大革命,這么一來,交易不僅是可以打錢,還可以是執(zhí)行代碼。
其實(shí)虛擬機(jī)只有一層,底層語言可能是我們熟知的C++或者是Go寫的,虛擬機(jī)自己的語言可以是以太坊的Solidity、新發(fā)布的Vyper。還可以是Lity——這是CyberMiles開發(fā)的語言,源自以太坊的Solidity。
對(duì)CyberMiles稍微有點(diǎn)了解的人會(huì)把它定義成“電商版以太坊”。CyberMiles基于以太坊做了條公鏈,現(xiàn)在又有了自己的虛擬機(jī)CVM和編程語言Lity。
為什么要做件事?技術(shù)到底能帶來哪些改變?如何能夠落地?帶著這些問題,CyberMiles首席科學(xué)家&聯(lián)合創(chuàng)始人Michael Yuan 博士接受了雷鋒網(wǎng)采訪。
袁博士在介紹測(cè)試鏈Travis
“我們推進(jìn)的事情比較多,因?yàn)槲覀兿氪钭约旱纳坛?,想做證券化,做數(shù)據(jù)市場?!睌?shù)據(jù)市場這塊,第一件事就是加密、解密,在線上交易數(shù)據(jù)的話必須得交易整個(gè)哈希,得入庫,或者交易私鑰和公鑰,而不是數(shù)據(jù)本身,這時(shí)加密是必須的。以太坊上的交易在這邊驗(yàn)證其實(shí)就是一個(gè)加密的算法,耗費(fèi)的GAS很多。我們做過這事,發(fā)現(xiàn)走不通,才要研究自己的虛擬機(jī)?!捌鋵?shí)我們做這些都是為了電商進(jìn)行優(yōu)化。”
虛擬機(jī)能做些什么呢?先是執(zhí)行代碼,并非任意代碼都能執(zhí)行,也要防攻擊,所以虛擬機(jī)里也要做Gas,得知道計(jì)算量和存儲(chǔ)量有多大,要通過交易費(fèi)用來保證虛擬機(jī)的安全。 所以區(qū)塊鏈上的虛擬機(jī)和傳統(tǒng)的Java和Python虛擬機(jī)的需求雖然不一樣,但是作用是差不多的,就是執(zhí)行代碼。
傳統(tǒng)的虛擬機(jī)會(huì)因?yàn)橛布煌?,造成輸出的結(jié)果不同,以太虛擬機(jī)的特點(diǎn)是沒有歧義,輸出結(jié)果是一致的,但它做了這種改變的一個(gè)后果就是犧牲了性能。虛擬機(jī)的優(yōu)化過程非常復(fù)雜,同時(shí)需要大量的資金。Java的虛擬機(jī)可以容忍不同的虛擬機(jī)執(zhí)行出來的結(jié)果有少量的差別,但是在區(qū)塊鏈這邊是行不通的,區(qū)塊鏈所有的容錯(cuò)必須一致。目前,區(qū)塊鏈的主流虛擬機(jī)有三個(gè)流派,一個(gè)是從以太的EVM改的;一個(gè)是從Web Assembly改的,比如EOS;還有一個(gè)是改的Lua的虛擬機(jī)。CyberMiles認(rèn)為沒有理由重新寫一個(gè)虛擬機(jī),于是選擇了對(duì)以太坊的虛擬機(jī)EVM進(jìn)行修改。
那么CyberMiles的虛擬機(jī)的CVM和以太坊的EVM有什么區(qū)別呢?主要體現(xiàn)在五個(gè)方面。一是可以動(dòng)態(tài)擴(kuò)展,可以在運(yùn)行的過程中加點(diǎn)東西;二是安全方面,虛擬機(jī)會(huì)查有沒有整數(shù)被溢出;三是定時(shí)任務(wù)方面,CVM有鬧鐘的功能,可以自己啟動(dòng)智能合約。體現(xiàn)在電商行業(yè),看貨物的送達(dá)時(shí)間,或者設(shè)個(gè)分期付款提醒就可以靠有時(shí)鐘的智能合約來完成;四是可以實(shí)現(xiàn)小數(shù)運(yùn)算,而不只是整數(shù);五是規(guī)則引擎,手寫程序的錯(cuò)誤率很高,虛擬機(jī)增加了規(guī)則引擎,參數(shù)不會(huì)被改變,可以降低錯(cuò)誤率。
而編程語言Lity的出現(xiàn),最直接的改變體現(xiàn)在性能優(yōu)化方面。現(xiàn)在的以太坊的情況有點(diǎn)像當(dāng)年的Java,速度慢,很多事做不了。后來虛擬機(jī)上開了個(gè)口,C++的東西就進(jìn)來了。“我們相當(dāng)于在Solidity上開了個(gè)口,把Lity給放了進(jìn)來。”袁博士說。以太坊的新語言Vyper比Solidity好得多,但仍然不能完全解決Solidity的問題。“所以說我們要算加密解密,就通過這個(gè)口裝到操作系統(tǒng)的層面之上” 。Lity現(xiàn)在支持Solidity,以后也可能會(huì)支持Vyper。
Lity在擴(kuò)展性方面也進(jìn)行了優(yōu)化。袁博士同雷鋒網(wǎng)表示,“編程語言的擴(kuò)展性強(qiáng)不強(qiáng),并不是由語言和性能決定的,而是由治理機(jī)制決定的”。Lity模塊化的方法可以把這個(gè)關(guān)鍵詞的功能直接加到虛擬機(jī)里來,現(xiàn)在的以太坊實(shí)行PoW機(jī)制,只能通過核心開發(fā)者去改變,目前來看是做不到這一點(diǎn)的。
虛擬機(jī)CVM和編程語言Lity是什么關(guān)系呢?簡單來說,DApp是用Lity寫的,在CVM運(yùn)行,但是改虛擬機(jī)需要一個(gè)叫LibENI函數(shù),相當(dāng)于對(duì)Lity的擴(kuò)展。如果虛擬機(jī)是用C++寫的,就等于把C++封裝成一個(gè)模塊架上去,對(duì)虛擬機(jī)本身進(jìn)行了改造。對(duì)于開發(fā)者來說,如果要往虛擬機(jī)里面加功能,也要用到Lity。
為什么說這在以太坊上實(shí)現(xiàn)不了呢?因?yàn)檫@相當(dāng)于在不更新軟件的前提下,更新軟件的核心成分,而以太坊的PoW機(jī)制需要全網(wǎng)的共識(shí),這是非常難的。
CyberMiles的DPoS共識(shí)機(jī)制提供了實(shí)現(xiàn)的可能性,通過超級(jí)節(jié)點(diǎn)達(dá)到共識(shí)。袁博士向雷鋒網(wǎng)表示,以太坊的核心開發(fā)者對(duì)下一步的計(jì)劃起著決定性作用,這其實(shí)也是一種中心化。CyberMiles的想法是,核心開發(fā)者之外的人也可以在虛擬機(jī)里增加功能,他們需要說服超級(jí)節(jié)點(diǎn)來支持,只要超級(jí)節(jié)點(diǎn)都同意,這個(gè)功能就可以在鏈上實(shí)現(xiàn)。
具體怎么操作呢?CyberMiles提供了一個(gè)方法,用封裝好的工具感知用戶的痛點(diǎn),在CVM里面進(jìn)行加工。舉個(gè)例子,虛擬機(jī)之前可以 做RSA算法的加密,現(xiàn)在做DES算法的加密的話就是另外一個(gè)功能,它可以被打包,讓超級(jí)節(jié)點(diǎn)來同意,同意了之后就去做加密。
再來談?wù)凩ibENI的內(nèi)部機(jī)制。LibENI出模塊的時(shí)候,需要出好幾個(gè)系統(tǒng),可能是Ubuntu、Linux或者是Windows。但好在超級(jí)節(jié)點(diǎn)是可控的,超級(jí)節(jié)點(diǎn)用這些操作系統(tǒng)就可以達(dá)到要求。相當(dāng)于開出了一條路,通過LibENI來實(shí)現(xiàn)。
以太坊沒有可以添加的函數(shù),CyberMiles添加了LibENI函數(shù),這是對(duì)編程語言本身的一個(gè)改變。
函數(shù)相當(dāng)于一個(gè)調(diào)用底層C++語言的接口,但不是所有功能都能用函數(shù),虛擬機(jī)里面有規(guī)則,還有其他結(jié)構(gòu),我們只解決用函數(shù)能解決的問題。什么是函數(shù)呢?很多時(shí)候函數(shù)就是輸入和輸出的東西,比如說輸入一個(gè)私鑰和一個(gè)文本,就出來一個(gè)加密的文本。
為什么函數(shù)會(huì)跟電商場景密切相關(guān)呢?這里說的電商市場是廣義的,不光是賣貨,搜索的時(shí)候也能用到函數(shù)。具體來說,主要是加密、解密。比如我們有一個(gè)數(shù)據(jù)市場,它的一個(gè)基本需求就是要把數(shù)據(jù)拿來加密,這就是一個(gè)函數(shù)。我們輸入數(shù)據(jù)和密鑰,加密后輸出密文。
據(jù)悉,CyberMiles也開發(fā)了自己的“礦機(jī)”CMT Cube,那么礦機(jī)是如何部署的呢?袁博士介紹道,虛擬機(jī)是部署在超級(jí)節(jié)點(diǎn)上面的,可以調(diào)動(dòng)超級(jí)節(jié)點(diǎn)下面的礦機(jī)。是因?yàn)镈PoS的機(jī)制能使CyberMiles的礦機(jī)反對(duì)DDoS、Sybil等網(wǎng)絡(luò)惡意攻擊。在這里,礦機(jī)既能挖礦,也能投票,但它不是節(jié)點(diǎn),是硬件錢包。
Blocktonic 是 CyberMiles 孵化的一個(gè)應(yīng)用,是一個(gè)DAO(去中心化的電商組織)。目前與合作的C2C電商5miles 是一個(gè)有 1200 萬美國用戶的電商應(yīng)用,CyberMiles最終目標(biāo)是把 5miles 也變成一個(gè) DAO。
“Blocktonic是我們自己在鏈上做的一個(gè)電商平臺(tái),平臺(tái)上賣的是我們自己的礦機(jī)和其他一些產(chǎn)品,我們也在試驗(yàn)各種各樣的區(qū)塊鏈的方法進(jìn)行改建,比如進(jìn)行ETH的返現(xiàn)。我們努力的方向就是把這個(gè)東西變成一個(gè)自治組織,也就是智能合約里面的自治,我覺得這是很大的實(shí)驗(yàn)。”
作為面向電商場景的自治組織,CyberMiles是怎么理解拓展性問題的呢?袁博士認(rèn)為,拓展性和垂直領(lǐng)域的實(shí)踐并不沖突。雖然CyberMiles的鏈?zhǔn)褂酶鶦VM里面加的功能全是跟電商有關(guān)的。但是可以用LibENI 跟CVM造另外一條行業(yè)公鏈出來。CyberMiles提供了這樣的技術(shù),也鼓勵(lì)開發(fā)者根據(jù)自己的需求去擴(kuò)展CVM,這超過了CyberMiles 的范圍,因?yàn)镃yberMiles想運(yùn)營的是一個(gè)電商的公鏈和生態(tài),但是團(tuán)隊(duì)希望開發(fā)的軟件更通用?!拔覀兎浅OM蠹襾沓覀兊拇a,我覺得這就是我們成功的標(biāo)志”。
從部署方式來看,CVM虛擬機(jī)的部署方式跟以太坊的EVM沒有什么區(qū)別。至于很多公鏈都會(huì)涉及到分片的問題,CyberMiles認(rèn)為自己也是做分片,只不過是邏輯層面的。袁博士表示,
“從邏輯層面來看,我們作為電商第一公鏈已經(jīng)分片了,因?yàn)殡娚坦湼渌?,比如說打車公鏈?zhǔn)莾蓚€(gè)量級(jí)的。從計(jì)算層面來講,以太坊是計(jì)算分片,因?yàn)樗峭ㄓ糜?jì)算機(jī)?!?/p>
袁博士承認(rèn),Lity現(xiàn)在并不完美。臺(tái)灣的開發(fā)團(tuán)隊(duì)之前做的是AI芯片,北京團(tuán)隊(duì)對(duì)區(qū)塊鏈了解得更多一些,團(tuán)隊(duì)之間需要磨合和溝通。
“我覺得這是個(gè)發(fā)展的過程,技術(shù)上還有很多問題需要解決。我們肯定會(huì)有不完美的地方,但我覺得方向是對(duì)的?!?/p>
DAO的完善需要一個(gè)過程 。作為開源運(yùn)動(dòng)的擁護(hù)者,袁博士在JBoss和紅帽軟件的工作經(jīng)歷讓他嘗到了甜頭,投身區(qū)塊鏈創(chuàng)業(yè)也有這方面的考慮。CyberMiles的開發(fā)者社區(qū)主要做兩件事,一個(gè)是DApp,這個(gè)其他公鏈都在做。二是對(duì)CVM進(jìn)行貢獻(xiàn),這里不需要核心開發(fā)者來決定有什么功能,開發(fā)者如果非常需要一個(gè)功能,可以自己去開發(fā),讓超級(jí)節(jié)點(diǎn)投票,這其實(shí)是一個(gè)不斷更新、修改的過程?!拔覀儾灰欢苓_(dá)到完全的去中心化,但至少可以讓這個(gè)過程變得更民主,讓大家參與進(jìn)來?!?/p>
建好生態(tài)也并非一件容易的事。
“首先是先把鏈搞好,然后是智能合約,要先搞清楚什么東西智能合約能管。我們自己開發(fā)了blocktonic,各種電商成分都有,這里面哪些模塊可以拿出來給其他人用?這就需要去決定,然后需要產(chǎn)品化。”
DApp的大規(guī)模落地仍需要時(shí)間的驗(yàn)證,CyberMiles承諾的 “商品便宜40%”這個(gè)甜頭能不能讓消費(fèi)者盡快嘗到,希望這個(gè)問題回答起來不會(huì)太困難。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。