您的位置:首頁 > 區(qū)塊鏈 >

矢量化使得程序并行執(zhí)行部分代碼 智能合約也可支持

2019-08-20 10:51:07 來源: 區(qū)塊網(wǎng)

現(xiàn)在有很多研究致力于如何通過分片來增強(qiáng)區(qū)塊鏈的可擴(kuò)展性。而據(jù)我所知,這些研究主要的想法是在不犧牲區(qū)塊鏈(包括其所有的分片)的不可篡改

現(xiàn)在有很多研究致力于如何通過分片來增強(qiáng)區(qū)塊鏈的可擴(kuò)展性。而據(jù)我所知,這些研究主要的想法是在不犧牲區(qū)塊鏈(包括其所有的分片)的不可篡改性和安全性的前提下,使在相互獨(dú)立的分片中并行執(zhí)行多個交易成為可能。我能找到的絕大部分研究都聚焦在分片的共識算法上。盡管所有這些研究看起來都很有前景,但我想通過一個不一樣的視角來看待分片。

首先,為了論證我的觀點(diǎn),讓我們一起來討論一下現(xiàn)有分片設(shè)計中的共識算法。更準(zhǔn)確地來說,是討論當(dāng)下正在開放的免信任型區(qū)塊鏈上運(yùn)行且可用的共識算法。盡管這些算法是可用的,并且已經(jīng)在運(yùn)行了,可是我們真的通過分片獲得了希望中的可擴(kuò)展性么?讓我們快速了解一下阿爾達(dá)姆定律吧 [1] ,這樣你更能體會到我的困惑:

上述定律表明,在理論上,執(zhí)行所有任務(wù)的速度會隨著系統(tǒng)資源的提升而加快,然而,無論提升的幅度有多大,理論速度總是受限于無法從改進(jìn)中受益的那部分任務(wù)的執(zhí)行速度 [2]。這帶來了一個根本性的難題 —— 一旦所有可并行化部分的吞吐量都達(dá)到最大時,串行化部分的吞吐量將成為系統(tǒng)吞吐量的天花板。

對于區(qū)塊鏈的分片來說,這就意味著吞吐量的潛在增長受限于當(dāng)前可以在隔離的分片中同時執(zhí)行的交易數(shù)量。也就是說,如果分片中的一筆交易需要來自其它分片的數(shù)據(jù),它就不得不從其它分片中同步該數(shù)據(jù)的轉(zhuǎn)移。這就是一種串行化事務(wù),根據(jù)阿爾達(dá)姆定律,一大堆分片的存在限制了吞吐量。

獨(dú)立的原生貨幣交易

如果兩個賬戶之間的交易被明確地限制為僅在這兩個賬戶之間轉(zhuǎn)移貨幣余額,比如在兩個賬戶之間發(fā)送貨幣, 那就不需要任何其它賬戶中的數(shù)據(jù)。因此,如果兩個賬戶的數(shù)據(jù)同處于一個特定的分片中是可用的,那么這筆交易和其它賬戶的交易就可以被異步地執(zhí)行。

當(dāng)分片數(shù)量以及賬戶對之間不相關(guān)的交易數(shù)量上升時,網(wǎng)絡(luò)吞吐量就擴(kuò)展了。隨著賬戶數(shù)量的增長,可以預(yù)見的是,對獨(dú)立交易進(jìn)行分片的可能性也會增加。在上述限制條件下,吞吐量的大小由執(zhí)行單筆交易所需花費(fèi)的時間決定,因為同一時間我們可以執(zhí)行非常多的交易。這正是我們在考慮提高區(qū)塊鏈吞吐量時想象到的理想情形。

為分片設(shè)計智能合約

但對于智能合約而言,情況不會有想象中那么順利。智能合約是作為一個單獨(dú)的賬本賬戶被部署在區(qū)塊鏈上的,賬戶中除了數(shù)據(jù)狀態(tài)還有它的程序代碼。代碼上運(yùn)行的每一筆交易都在改變智能合約中的數(shù)據(jù)狀態(tài)。每一個改變都被記錄在區(qū)塊鏈上,并通過一個代表狀態(tài)的哈希值進(jìn)行驗證。

為了保持區(qū)塊鏈狀態(tài)的確定性和連續(xù)性,每個智能合約每次只能在一個分片中執(zhí)行,除非智能合約賬戶本身的狀態(tài)也能被分片??傊?,這使得對于所有往智能合約發(fā)送交易的賬戶而言,智能合約賬戶的執(zhí)行成為了限制因素。由于智能合約被用于發(fā)行代幣,因此隨著特定代幣流通量的增加,無論存在多少分片,其智能合約很有可能成為吞吐量的瓶頸,正如阿爾達(dá)姆定律所預(yù)測的那樣。

就目前有關(guān)智能合約的分片實(shí)現(xiàn)來看,我只能看到兩種可能通過分片提升擴(kuò)展性的方式:

· 使用隔離在分片中的多個智能合約

· 使用確定性的多線程智能合約,(又稱 SIMD)

使用多個智能合約可以充分發(fā)揮分片的優(yōu)勢。舉例來說,如果每個智能合約(代表一個代幣)都被分配到一個單獨(dú)的分片中執(zhí)行,那么對于一個特定的代幣而言,其交易不會對其它代幣的交易造成影響。盡管每種獨(dú)立代幣的交易都受限于它所在的特定分片中智能合約的吞吐量,但分片的數(shù)量可以隨著大量且不斷增長的代幣而線性增長。這并沒有解決單個智能合約的吞吐量問題,但是對于一個所有合約都在一條鏈上、沒有分片的區(qū)塊鏈而言,它是一個改進(jìn)方案。

不過,即便使用這種方法,只要一個用戶賬戶的狀態(tài)被分散在不同分片間、又同時被需要(例如,使用原生貨幣來支付交易),問題還是會出現(xiàn)。

一種來自超級計算的叫做矢量化(vectorization)的技術(shù)使得程序能夠并行地執(zhí)行其部分代碼。這就是為人熟知的的單指令多數(shù)據(jù)流(“SIMD”)。針對 SIMD 編寫的程序都是確定性的。從本質(zhì)上來說,SIMD 機(jī)器(也就是如今的通用型 GPU(“GUGPU”))是通過一系列的處理器來對其數(shù)據(jù)進(jìn)行分片的。這對于某些類型的應(yīng)用來說非常有效,諸如圖形以及類似的矩陣運(yùn)算。

理論上來說,這項技術(shù)也能被應(yīng)用到區(qū)塊鏈的智能合約中。也就是說,智能合約可以被明確地編寫為通過某種方式來支持交易的并行執(zhí)行。至于這要如何實(shí)施,我并不太清楚。也許在這片領(lǐng)域里會涌現(xiàn)出一些創(chuàng)新的區(qū)塊鏈研究。然而,可以預(yù)見的是,即便有了一個這樣的解決方案,編寫一個適合 SIMD 運(yùn)行的智能合約也會變得相當(dāng)復(fù)雜。

無論是使用隔離在分片中的多個智能合約,還是使用 SIMD 智能合約,都很難算作一個理想的解決方案,盡管它們都有可能提高可擴(kuò)展性。

智能對象資產(chǎn)使分片成為可能

對于智能合約的分片來說,其主要的限制因素在于狀態(tài)的分片和代碼的執(zhí)行。如果存在一種方法可以避免在單個智能合約狀態(tài)和代碼執(zhí)行中的交易串行化,分片就可以通過增加吞吐量來提升擴(kuò)展性。換言之,如果存在一種多指令多數(shù)據(jù)流(“MIMD”)的執(zhí)行方法,通過區(qū)塊鏈分片來提升可擴(kuò)展性的機(jī)會將顯著提高。

正如我們在 “反思區(qū)塊鏈賬戶概念” [3] 這篇文章中所描述的那樣,如果每個用戶賬戶都有它自己的狀態(tài),而不是使用相互獨(dú)立的智能合約的話,那么每個用戶賬戶都能包含代表資產(chǎn)的對象,無論該對象是代幣還是其他類型的實(shí)體。正如文章 “可擴(kuò)展的智能對象資產(chǎn)、智能對象資產(chǎn)所有權(quán)及基于 DataGrid 區(qū)塊鏈的擴(kuò)展區(qū)塊鏈對象模型的分?jǐn)?shù)級智能對象資產(chǎn)所有權(quán)” [4] 所述,XOSA 和對 XSOA 的引用可以被用于在賬戶狀態(tài)之間通過交易直接轉(zhuǎn)移賬戶之間的所有權(quán)。

舉例來說,假設(shè)有兩組交易,其中每筆交易都介于不同的賬戶之間,也就是說:一筆交易從賬戶 A 發(fā)送到賬戶 B;另一筆交易從賬戶 C 發(fā)送到賬戶 D,那么這兩筆交易可以在不同的分片中被同時執(zhí)行。進(jìn)一步來說,因為 XSOA 的代碼獨(dú)立于任何賬戶,且對于每筆交易來說,代碼可能并不相同,因此我們可以使用一個 MIMD 模型實(shí)現(xiàn)分片。在該模型中,每個分片中的代碼和數(shù)據(jù)都各不相同。

對于這個模型而言,限制其可擴(kuò)展性的因素是不相交的賬戶組之間能同時發(fā)生的交易數(shù)量。我們可以預(yù)見的是,隨著賬戶數(shù)量的增長,不相交的賬戶組之間發(fā)生任意一組交易j的機(jī)會也會增加,這反過來將導(dǎo)致分片的機(jī)會也得到增加。

結(jié)論

作為一種已經(jīng)假定可用的分片共識算法,一個突出的問題在于如何使用這些技術(shù)。智能合約天然地會將交易串行化,除非使用復(fù)雜的 SIMD 類型的解決方案,就只能通過使用多個隔離的智能合約來提供擴(kuò)展性。即使使用這一方案,每個智能合約的吞吐量仍會受到單個分片的吞吐量限制。

通過重新讓用戶賬戶來包含狀態(tài)信息,并使用 XBOM 模型,DataGrid 區(qū)塊鏈提供了一種提升分片可擴(kuò)展性的解決方案——根據(jù)賬戶的數(shù)量和賬戶之間的不相交交易來進(jìn)行擴(kuò)展。除了支持繼承和實(shí)時代碼重用以外,我們認(rèn)為這是一個對于區(qū)塊鏈擴(kuò)展性問題的重要的解決方案。(Michael Holdmann)

關(guān)鍵詞: 矢量化 并行執(zhí)行 智能合約

精選 導(dǎo)讀

募資55億港元萬物云啟動招股 預(yù)計9月29日登陸港交所主板

萬科9月19日早間公告,萬物云當(dāng)日啟動招股,預(yù)計發(fā)行價介乎每股47 1港元至52 7港元,預(yù)計9月29日登陸港交所主板。按發(fā)行1 167億股計算,萬

發(fā)布時間: 2022-09-20 10:39
管理   2022-09-20

公募基金二季度持股情況曝光 隱形重倉股多為高端制造業(yè)

隨著半年報披露收官,公募基金二季度持股情況曝光。截至今年二季度末,公募基金全市場基金總數(shù)為9794只,資產(chǎn)凈值為269454 75億元,同比上

發(fā)布時間: 2022-09-02 10:45
資訊   2022-09-02

又有上市公司宣布變賣房產(chǎn) 上市公司粉飾財報動作不斷

再有上市公司宣布變賣房產(chǎn)。四川長虹25日稱,擬以1 66億元的轉(zhuǎn)讓底價掛牌出售31套房產(chǎn)。今年以來,A股公司出售房產(chǎn)不斷。根據(jù)記者不完全統(tǒng)

發(fā)布時間: 2022-08-26 09:44
資訊   2022-08-26

16天12連板大港股份回復(fù)深交所關(guān)注函 股份繼續(xù)沖高

回復(fù)交易所關(guān)注函后,大港股份繼續(xù)沖高。8月11日大港股份高開,隨后震蕩走高,接近收盤時觸及漲停,報20 2元 股。值得一提的是,在7月21日

發(fā)布時間: 2022-08-12 09:56
資訊   2022-08-12

萬家基金再添第二大股東 中泰證券擬受讓11%基金股權(quán)

7月13日,中泰證券發(fā)布公告,擬受讓齊河眾鑫投資有限公司(以下簡稱齊河眾鑫)所持有的萬家基金11%的股權(quán),交易雙方共同確定本次交易的標(biāo)的資

發(fā)布時間: 2022-07-14 09:39
管理   2022-07-14

央行連續(xù)7日每天30億元逆回購 對債市影響如何?

央行12日再次開展了30億元逆回購操作,中標(biāo)利率2 10%。這已是央行連續(xù)7日每天僅進(jìn)行30億元的逆回購縮量投放,創(chuàng)下去年1月以來的最低操作規(guī)

發(fā)布時間: 2022-07-13 09:38
資訊   2022-07-13

美元指數(shù)創(chuàng)近20年新高 黃金期貨創(chuàng)出逾9個月新低

由于對美聯(lián)儲激進(jìn)加息的擔(dān)憂,美元指數(shù)11日大漲近1%創(chuàng)出近20年新高。受此影響,歐美股市、大宗商品均走弱,而黃金期貨創(chuàng)出逾9個月新低。美

發(fā)布時間: 2022-07-13 09:36
資訊   2022-07-13

美股三大股指全線下跌 納斯達(dá)克跌幅創(chuàng)下記錄以來最大跌幅

今年上半年,美股持續(xù)回落。數(shù)據(jù)顯示,道瓊斯指數(shù)上半年下跌15 3%,納斯達(dá)克綜合指數(shù)下跌29 5%,標(biāo)普500指數(shù)下跌20 6%。其中,納斯達(dá)克連續(xù)

發(fā)布時間: 2022-07-04 09:51
推薦   2022-07-04

融資客熱情回升 兩市融資余額月內(nèi)增加超344億元

近期A股走強(qiáng),滬指6月以來上漲4%,融資客熱情明顯回升。數(shù)據(jù)顯示,截至6月16日,兩市融資余額1 479萬億元,月內(nèi)增加344 67億元,最近一個半

發(fā)布時間: 2022-06-20 09:41
資訊   2022-06-20

4個交易日凈買入超百億元 北向資金持續(xù)流入A股市場

北向資金凈流入態(tài)勢延續(xù)。繼6月15日凈買入133 59億元后,北向資金6月16日凈買入44 52億元。自5月27日至今,除6月13日以外,北向資金累計凈

發(fā)布時間: 2022-06-17 09:37
推薦   2022-06-17