如何通過分片實(shí)現(xiàn)區(qū)塊鏈的擴(kuò)展
阿姆達(dá)爾定律與分片有什么關(guān)系?
Amdahl加速定律的基本出發(fā)點(diǎn)是:1.對(duì)于很多科學(xué)計(jì)算,實(shí)時(shí)性要求很高,即在此類應(yīng)用中時(shí)間是個(gè)關(guān)鍵因素,而計(jì)算負(fù)載是固定不變的。為此在一定的計(jì)算負(fù)載下,為達(dá)到實(shí)時(shí)性可利用增加處理器數(shù)來提高計(jì)算速度;2.因?yàn)楣潭ǖ挠?jì)算負(fù)載是可分布在多個(gè)處理器上的,這樣增加了處理器就加快了執(zhí)行速度,從而達(dá)到了加速的目的。在此意義下,1967年Amdahl推導(dǎo)出了固定負(fù)載的加速公式。
對(duì)于如何通過分片實(shí)現(xiàn)區(qū)塊鏈擴(kuò)展進(jìn)行了大量的研究。
據(jù)我所知,目前主要概念是在不同的分片上啟用多個(gè)事務(wù)并行執(zhí)行,而不會(huì)影響區(qū)塊鏈的不可變性和安全性,包括所有分片。我能夠找到的大部分研究都集中在用于分片共識(shí)的算法上。 雖然所有這些研究看起來都很有希望,但我想從不同的角度來看待分片。
為了論證,我們假設(shè)存在一個(gè)用于分片的一致性算法。 此外,假設(shè)該算法在開放的無權(quán)限的區(qū)塊鏈上運(yùn)行,并且正常可以使用。我的問題是,即使有阿姆達(dá)爾定律,我們是否可以通過分片獲得希望的擴(kuò)展性。 如果想要了解阿姆達(dá)爾定律,可以百度一下。
這表明整個(gè)任務(wù)的執(zhí)行的理論加速隨著系統(tǒng)資源的改進(jìn)而增加,并且無論如何改進(jìn)的程度,理論加速總是受到限制而無法從改進(jìn)中受益的任務(wù)。這基本上表明,一旦所有可并行化部分最大化,系統(tǒng)的吞吐量限于序列化部分的分配。
對(duì)于區(qū)塊鏈分片,我將此解釋為意味著吞吐量的潛在增加目前僅限于可以在單獨(dú)的分片上同時(shí)執(zhí)行的事務(wù)數(shù)量。 也就是說如果分片上的事務(wù)需要來自另一個(gè)分片的數(shù)據(jù),則它必須同步來自另一個(gè)分片的數(shù)據(jù)傳輸。 根據(jù)阿姆達(dá)爾定律控制吞吐量,這是序列化的一個(gè)點(diǎn)并給出了大量的分片。
個(gè)人原生代幣交易
兩個(gè)帳戶之間的交易明確限制為僅在帳戶之間轉(zhuǎn)移硬幣余額,例如在兩個(gè)帳戶之間發(fā)送硬幣,不需要來自任何其他帳戶的數(shù)據(jù)。因此,如果兩個(gè)帳戶的數(shù)據(jù)在特定分片上可用,則事務(wù)可以與其他帳戶上的其他事務(wù)異步執(zhí)行。這會(huì)隨著分片數(shù)量和帳戶對(duì)之間不相交的交易數(shù)量而變化。隨著賬戶數(shù)量的增長,人們可以預(yù)期分割此類獨(dú)立交易的機(jī)會(huì)也會(huì)增加。在該限制中,吞吐量由執(zhí)行單個(gè)事務(wù)所花費(fèi)的時(shí)間決定,無論在任何給定時(shí)間點(diǎn)執(zhí)行多少事務(wù)。這正是我們想要提高區(qū)塊鏈吞吐量的情況。
智能合約分片
對(duì)于智能合約來說,情況并不那么好。智能合約在區(qū)塊鏈上實(shí)施為單個(gè)分類賬賬戶,其數(shù)據(jù)狀態(tài)與程序代碼相關(guān)聯(lián)。每個(gè)事務(wù)都通過代碼更改數(shù)據(jù)狀態(tài)。每個(gè)更改都記錄在區(qū)塊鏈中,并使用表示狀態(tài)的哈希進(jìn)行驗(yàn)證。為了保持區(qū)塊鏈的確定性,一致狀態(tài),每個(gè)智能合約一次只能在一個(gè)分片上執(zhí)行,除非智能合約賬戶本身的狀態(tài)可以分片。通常這會(huì)使智能合約帳戶執(zhí)行成為向智能合約發(fā)送交易的所有帳戶的限制因素。由于智能合約用于標(biāo)記化,很可能隨著給定令牌的流通量增加,其智能合約成為吞吐量的瓶頸,無論存在多少分片,如阿姆達(dá)爾定律所預(yù)測(cè)的那樣。
對(duì)于智能合約的當(dāng)前實(shí)現(xiàn)模型,我只看到兩種使用分片進(jìn)行擴(kuò)展的可能方法:
· 使用在分片上隔離的多個(gè)智能合約
· 使用確定性多線程智能合約(也稱為SIMD)
多個(gè)智能合約可以利用分片優(yōu)勢(shì)。例如如果表示每一個(gè)代幣的智能合約都分配給一條單獨(dú)的分片,那么給定代幣的事務(wù)不會(huì)影響其他代幣上的事務(wù)。盡管每個(gè)單獨(dú)代幣的事務(wù)僅限于其特定分片上智能合約的吞吐量,但是隨著代幣數(shù)量的增加而增加,分片的數(shù)量會(huì)隨著它們線性增長。但這并沒有解決單個(gè)智能合約的吞吐量問題,這是對(duì)單個(gè)區(qū)塊鏈上所有智能合約的改進(jìn)而不是分片。即使采用這種方法,如果在分片之間共享的用戶帳戶需要任何狀態(tài)(例如用于支付交易的本地代幣),則會(huì)出現(xiàn)問題。
來自超級(jí)計(jì)算的一種稱為矢量化的技術(shù)使程序能夠并行地執(zhí)行其代碼部分。這稱為單指令多數(shù)據(jù)(“SIMD”)。為SIMD編寫的程序被編寫為確定性的。本質(zhì)上,SIMD機(jī)器(通常是通用圖形處理器單元(“GPGPU”))在一系列處理器上對(duì)它們的數(shù)據(jù)進(jìn)行分片。這對(duì)于某些類別的應(yīng)用程序非常有效,例如圖形和類似的矩陣運(yùn)算。
這種技術(shù)理論上可以應(yīng)用于區(qū)塊鏈智能合約。也就是說,可以顯式地編寫智能合約以支持以某種方式并行執(zhí)行事務(wù)。我不確切知道如何實(shí)施。也許區(qū)塊鏈研究會(huì)在這方面提出一些創(chuàng)新的東西。然而,即使有這樣的解決方案,編寫具有SIMD能力的智能合約也會(huì)變得非常復(fù)雜。
多個(gè)智能合約和SIMD智能合約都不是理想的解決方案,盡管兩者都可能提供一些擴(kuò)展的機(jī)會(huì)。
智能對(duì)象資產(chǎn)開啟分片的使用
使用智能合約進(jìn)行分片的限制點(diǎn)是狀態(tài)和代碼執(zhí)行的分片。如果有一種方法可以避免在單個(gè)智能合約狀態(tài)和代碼執(zhí)行時(shí)序列化事務(wù),則分片可能會(huì)增加吞吐量擴(kuò)展。換言之,如果存在多指令多數(shù)據(jù)(“MIMD”)執(zhí)行的手段,則區(qū)塊鏈分片的機(jī)會(huì)將得到顯著改善。
正如“重新思考區(qū)塊鏈帳戶概念”中所述,如果每個(gè)用戶帳戶都有自己的狀態(tài),而不是使用單獨(dú)的智能合約,那么每個(gè)用戶帳戶可以包含代表資產(chǎn)的對(duì)象,無論是代幣還是其他類型的實(shí)體。如“可擴(kuò)展智能對(duì)象資產(chǎn)、智能對(duì)象資產(chǎn)所有權(quán)和部分智能對(duì)象資產(chǎn)所有權(quán)與數(shù)據(jù)報(bào)區(qū)塊鏈可擴(kuò)展區(qū)塊鏈對(duì)象模型”中所述,XSOA和對(duì)XSOA的引用可用于在賬戶之間直接交易之間轉(zhuǎn)移所有權(quán)的帳戶狀態(tài)。
例如給定兩組交易,其中每筆交易在不同的賬戶之間,即:一筆交易是從賬戶A到賬戶B;另一個(gè)交易是在賬戶C到賬戶D之間,然后交易可以同時(shí)在不同的分片上執(zhí)行。此外,因?yàn)閄SOA的代碼獨(dú)立于任何帳戶,并且對(duì)于每個(gè)事務(wù)可能是不同的代碼,我們可以實(shí)現(xiàn)MIMD模型的分片。這是每個(gè)分片上的不同代碼和每個(gè)分片上的不同數(shù)據(jù)。
此處的規(guī)模限制點(diǎn)是可以在不相交的帳戶集之間同時(shí)進(jìn)行的交易數(shù)量。我們預(yù)計(jì)隨著賬戶數(shù)量的增加,任何一組交易中不相交賬戶集的機(jī)會(huì)也會(huì)增加,這反過來會(huì)導(dǎo)致分組的機(jī)會(huì)增加。
結(jié)論
作為一種給定的分片共識(shí)算法,,一個(gè)突出的問題是如何利用這種技術(shù)。智能合約固有地序列化交易而不是復(fù)雜的SIMD類型解決方案,僅通過使用多個(gè)單獨(dú)的隔離智能合約來提供擴(kuò)展。即便如此,每個(gè)智能合約的吞吐量僅限于單個(gè)分片的吞吐量。通過重新思考用戶帳戶以包含狀態(tài)信息,并使用XBOM模型,DataGrid區(qū)塊鏈提供了一種分片可擴(kuò)展性的解決方案,可根據(jù)帳戶數(shù)量和帳戶之間的不相交交易進(jìn)行擴(kuò)展。除了啟用繼承和實(shí)時(shí)代碼重用之外,我們認(rèn)為這是區(qū)塊鏈擴(kuò)展問題的重要解決方案。