買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > 幣贏 > Info

區塊鏈:當用戶越多,歷史越長,如何應對越積越多的區塊鏈數據?_ETHEKing

Author:

Time:1900/1/1 0:00:00

區塊鏈發展至今已有近10年歷史,隨著公鏈的百花齊放以及越來越多新銳技術方案的提出,我們正在面臨一個越來越復雜混亂的行業狀況。當我們解決了scalability問題,區塊鏈真正獲得massadoption,DApp和用戶數量都爆炸式增長的時候,區塊鏈歷史和狀態數據會以什么速度累積呢?

原文標題:《區塊鏈的狀態爆炸困境》文章來源:鏈捕手作者:謝晗劍,Nervos創始人

janx,謝晗劍,Nervos創始人

1Layer1應該關注狀態

如果我們認為區塊鏈分層是未來的發展方向,我們應該從一開始就考慮到上層協議和分層網絡的需求,在分層的大框架下去設計區塊鏈協議。

換句話說,從分層的角度來看,現有的區塊鏈設計方式都是過時的。現有的區塊鏈在設計時考慮的是特定的功能,并希望在運行一段時間后讓上層協議來適應自己。然而如果我們閱讀互聯網的歷史就知道,今天互聯網的協議分層不是這樣打補丁打出來的,相反是在吸收過去經驗之后。這是為什么區塊鏈并不天然是Layer1,Layer1是需要設計的。

要弄清Layer1應該關注什么,先要弄清楚它和上層協議的區別。Layer2起源與我們發現公有鏈的性能不足,很難擴容到滿足整個加密經濟體需求的水平,同時我們又非常迷戀公有鏈提供的可用性和極大的服務范圍,因此慢慢演化出了一系列可以由區塊鏈來保證安全的Layer2協議,例如支付通道(paymentchannel)、plasma,etc.

這些協議的共同特點是犧牲共識范圍來換取性能。公有鏈最讓人驚艷的地方是通過開放網絡提供不間斷的覆蓋全球的服務,這意味著全球共識,也意味著性能底下。

解決這個問題的最好方式是將大部分交易轉移到共識范圍更小但是性能更好的上層協議中,并且保證上層協議的參與者總是可以在不滿意的時候退回到區塊鏈上來解決問題,代價僅僅是一些時間成本。

RabbitX宣布二期空投,6月底將進行快照:5月30日消息,RabbitX協議宣布二期空投計劃,本期空投將獎勵早期采用者、活躍用戶、社區建設者。

本次空投將根據交易量、凈存款、平均未平倉合約、RBX代幣持有量、清算特別獎金等數據進行空投。

本次空投將向用戶獎勵RBX代幣,快照將于2023年6月30日進行。

RabbitX是基于Starknet的去中心化衍生品交易平臺,為用戶提供無需許可的永續合約產品。[2023/5/31 11:48:59]

因此作為Layer1的區塊鏈,關注點顯然不應該是性能,因為Layer2會承擔這個職責。Layer1是保障上層協議參與者的最后防線,它的關注點應該是安全和去中心化。如果我們觀察Layer2協議與Layer1交互的模式,我們還會發現,Layer1負責的是狀態共識,Layer2負責的是狀態生成。

2狀態是什么

如果Layer1的關注點應該是狀態而不是計算,在設計Layer1區塊鏈的時候,我們就需要先理解什么是區塊鏈的狀態。理解了狀態是什么,我們才能理解狀態爆炸是什么。

區塊鏈網絡中的每一個全節點,在網絡中運行一段時間之后都會在本地存儲上留下一些數據,我們可以按照歷史和現在把它們分為兩類:

歷史:區塊數據和交易數據都是歷史,歷史是從Genesis到達當前狀態的路徑。狀態:節點在處理完從Genesis到當前高度的所有區塊和交易后形成的最終結果。狀態隨著區塊的增加一直處于變化之中,交易是造成變化的原因。

共識協議的作用是通過一系列的消息交換,保證每一個節點看到的當前狀態是相同的,而實現這個目標的方式是保證每一個節點看到的歷史是相同的。只要歷史相同,處理交易的方式相同,最后看到的當前狀態就是相同的。當我們說「區塊鏈具有不可篡改性」的時候,指的是區塊鏈歷史不可篡改,相反狀態是一直在變化的。

Polygon將推進其生態游戲項目采用AQUA的嵌入式市場解決方案:3月9日消息,PolygonLabs宣布與Web3市場AQUA達成合作,AQUA最近推出的的嵌入式市場解決方案是合作領域之一,該解決方案允許玩家完全在游戲客戶端或Hub內進行二級NFT銷售交易。從本月開始,來自Polygon生態的游戲還可以在AQUA.xyz市場上獲得進一步支持,目標是到年底增加15款游戲。[2023/3/10 12:52:58]

有趣的是,不同的區塊鏈保存歷史和狀態的方式不同的,其中的差異使得不同的區塊鏈形成了各自的特點。由于這篇文章討論的話題是狀態,而影響狀態的歷史數據主要是交易,接下來的討論歷史的時候會側重交易,忽略區塊頭。

3舉個例子:Bitcoin的歷史和狀態

Bitcoin的狀態,指的是Bitcoin賬本當前的樣子。Bitcoin的狀態是由一個個UTXO構成的,每個UTXO代表了一定數量的Bitcoin,每個UTXO上面寫了一個名字,記錄這個UTXO的所有者是誰。如果要做一個比喻的話,Bitcoin的當前狀態是一個裝滿了金幣的袋子,每個金幣上刻著所有者的名字。

Bitcoin的歷史由一連串的交易構成,交易內部的主要結構是輸入和輸出。交易更改狀態的方法是,把當前狀態中包含的一些UTXO標記為已花費,從UTXO集合中移出,然后把一些新的UTXO添加到UTXO集合里面去。

可以看出,Bitcoin交易的輸出正是上面說的UTXO,UTXO只不過是一種處于特殊階段的TXO。因為構成Bitcoin狀態的組件(UTXO),同時也是構成交易的組件(TXO)。

由此,Bitcoin有一個奇妙的性質:任意時刻的狀態都是歷史的一個子集,歷史和狀態包含的數據類型是同一維度的。交易的歷史即狀態的歷史,Bitcoin的歷史只包含交易。

數據:44,560枚ETH從Lido轉移到未知錢包:金色財經報道,Whale Alert監測數據顯示,44,560枚ETH(價值約5755萬美元)從Lido轉移到未知錢包。[2022/10/3 18:38:24]

在Bitcoin網絡中,每一個區塊,每一個UTXO都要持續占用節點的存儲空間。目前Bitcoin整個歷史的大小大約是200G,而狀態的大小只有大約3G(由大約5000萬個UTXO組成)。Bitcoin通過對區塊大小的限制很好的管理了歷史的增長速度,由于其歷史和狀態之間的子集關系,狀態數據大小必然遠小于歷史數據大小,因此狀態增長也間接的受到區塊大小的管理。

4再舉個例子:Ethereum的歷史和狀態

Ethereum的狀態,也叫做「世界狀態」,指的是Ethereum賬本當前的樣子。Ethereum的狀態是由賬戶構成的一棵Merkle樹,賬戶里面不僅記錄了余額,還有合約的數據。Ethereum的狀態可以看作一個大賬本,賬本的第一列是名字,第二列是余額,第三列是合約數據。

Ethereum的歷史同樣由交易構成,交易內部的主要結構是:

to:另一個賬戶,代表交易的發送對象value:交易攜帶的ether數量data:交易攜帶的任意信息交易更改狀態的方法是,EVM找到交易發送的目標賬戶,

1、根據交易的value計算目標賬戶的新余額;2、將交易攜帶的data作為參數傳遞給目標賬戶的智能合約,運行智能合約的邏輯,在運行中可能會修改任意賬戶的內部狀態生成新的狀態;3、構造新的葉子存放新的狀態,更新狀態Merkle樹。

可以看出,Ethereum的歷史和交易結構與Bitcoin相比有非常大的不同。Ethereum的狀態是由賬戶構成的,而交易是由觸發賬戶變動的信息構成,狀態和交易中記錄的是完全不同類型的數據,二者之間沒有超集和子集的關系,歷史和狀態所包含的數據類型是兩個維度的,交易歷史大小與狀態大小之間沒有必然的聯系。

加密交易所CoinDCX計劃招聘300名員工,并擴大DeFi領域的探索:金色財經報道,印度加密交易所 CoinDCX 計劃在今年年底前招聘 300 名員工,以加入目前的 700 名員工。該交易所正在尋找各個團隊來建立品牌、開發產品和加強安全性。

除了招聘外,CoinDCX 還將使用 4 月份籌集的部分資金來推出 DeFi 產品和服務,并投資于合規和風險管理。其聯合創始人 Neeraj Khandelwal 表示,股票、債券、黃金和房地產等傳統金融資產可能會在未來兩到四年內在 DeFi 平臺上交易,公司需要做好準備。

據悉,CoinDCX 是一家總部位于印度孟買的加密交易所,上周推出了一款名為 Okto 的移動錢包應用程序。此前 4 月份 CoinDCX 以 21.5 億美元估值完成 1.35億 美元 D 輪融資,Coinbase Ventures等參投。(forkast)[2022/8/30 12:57:55]

交易修改狀態后,不僅會產生新的狀態,而且會留下舊的狀態成為歷史狀態,因此Ethereum的歷史不僅僅包含交易,還包含歷史狀態。

因為歷史和狀態屬于不同的維度,Ethereum區塊頭中不僅僅包含交易的merkleroot,也需要顯式包含狀態的merkleroot。

Ethereum中每一個區塊,每一個賬戶都會持續占用節點的存儲空間。Ethereum節點在同步的時候有多種模式,在Archive模式下所有的歷史和狀態都會保存下來,其中歷史包括歷史交易和歷史狀態,所有數據加起來大小超過了2TB;在Default模式下,歷史狀態會被裁剪掉,本地只保留歷史交易和當前狀態,所有數據加起來大約是170G,其中交易歷史大小是150G,當前狀態大小是10G。

Ethereum中所有的開銷管理都被統一到gas計費模型之下,交易的大小需要消耗對應的gas,而每一條EVM指令消耗的gas,不僅考慮了計算開銷,也將存儲開銷考慮在內。通過每個區塊的gaslimit,間接限制了歷史和狀態的增長速度。

Cyolo完成6000萬美元B輪融資,National Grid Partners領投:6月28日消息,零信任網絡訪問解決方案Cyolo宣布完成6000萬美元B輪融資,National Grid Partners領投,Glilot Capital Partners、Flint Capital、Differential Ventures和Merlin Ventures等參投。截至目前該公司融資總額已達8500萬美元,包括2021年完成的A輪融資。新融資將用于在全球推廣其基于身份的訪問解決方案,促進公司數字化轉型,并滿足更智能、更快速、更可靠地訪問數字資產的日益增長的需求。

據介紹,Cyolo的下一代零信任網絡訪問解決方案(ZTNA 2.0)可以跨多個IT和OT環境連接數字資產,并提供安全、靈活的基于身份的訪問解決方案。(Golobe Newswire)[2022/6/28 1:37:05]

常見的一個誤解是,Ethereum的「區塊鏈大小」已經超過1T了。從上面的分析我們可以看到,「區塊鏈大小」是一個非常模糊的定義,如果把歷史狀態算進去,確實超過了,但對于全節點來說,把歷史狀態刪掉沒有任何問題,因為只要有Genesis和交易歷史,任意時刻的歷史狀態都可以重新被計算出來。

真正有意義的數據,是全節點必須的數據的大小,Bitcoin是200G,Ethereum是170G,兩者是基本相同的,而且在平均配置的云主機都能裝下,因此人們觀察到的Ethereum全節點減少并不是由于存儲增加導致的。

考慮到Ethereum的歷史長度不到Bitcoin的一半,可以看出Ethereum的歷史和狀態大小增長更快。

5TheTragedyof(Storage)Commons:區塊鏈版本的公地悲劇

公地悲劇所指指的是這樣一種情況,有限的共享資源在不受任何限制的使用下被人們過度消耗。區塊鏈節點為保存歷史和狀態付出的存儲,正是這樣一種共享資源。

區塊鏈節點為處理交易所花費的資源有三種,CPU,存儲和網絡帶寬。CPU和帶寬都是每個區塊會刷新的資源,我們可以認為每個區塊間隔內都用同樣多的CPU和帶寬可供使用,上個區塊消耗掉的CPU和帶寬不會讓下個區塊可用的CPU和帶寬變少。對于可刷新的資源,我們可以通過一次性支付的交易手續費來補償節點。

與CPU和帶寬不同,存儲是一種占用資源,在一個區塊中被占用了的存儲,除非使用者主動釋放,否則無法在后面的區塊中被其它使用者使用。節點需要為存儲持續的付出成本,而使用者卻不需要為存儲持續的支付手續費。

使用者只需要在往區塊鏈寫數據的時候支付一點點手續費,就可以永久使用一個可用性超過AmazonS3的存儲,其無限大的永久存儲成本需要區塊鏈網絡中的所有全節點來承擔。

Ethereum上由于各種DApp的存在,TheTragedyof(Storage)Commons相對更加嚴重。例如,在區塊5700001的時候,使用狀態最多的5個合約是:

EtherDelta,5.09%IDEX,4.17%CryptoKitties,3.05%ENS,1.92%EOSSale,1.73%比較有趣的是最后一個,EOSSale。雖然EOS的眾籌已經完成,EOS代幣已經在EOS鏈上流轉,EOS眾籌的記錄卻永遠留在了Ethereum的節點上,消耗Ethereum全節點的存儲資源。

可以看到,在缺乏管理的情況下,區塊鏈的存儲資源會被有意或者無意的濫用。在一個設計合理的經濟模型中,使用者必須承擔存儲占用的成本,這個成本不僅僅與占用存儲空間的大小成正比,還與占用時間的長度成正比。

6狀態爆炸

公地悲劇所指的無論是歷史還是狀態數據都會占用存儲資源。通過上面對Bitcoin和Ethereum的分析可以看到,雖然它們對歷史和狀態的增長進行了管理,但是對歷史和狀態的總大小卻沒有任何控制,這些數據會持續的無休止的累積下去,使得運行全節點需要的存儲資源越來越大,提高全節點的運行門檻,使網絡的去中心化程度越來越低,這是我們不愿意看到的。

你也許會說,有沒有可能硬件平均水平的提高會超過歷史和狀態的積累速度?我的回答是可能性很低:

從這張圖中我們可以看到,隨著Ethereum網絡的發展,狀態數據累積的數量呈指數式的增長。Bitcoin的狀態數據從0積累到3G,用了10年;Ethereum的狀態數據從0積累到10G,用了4年;而這是在我們還沒有解決Scalability問題,區塊鏈仍然是小眾技術的情況下的增長速度。

當我們解決了scalability問題,區塊鏈真正獲得massadoption,DApp和用戶數量都爆炸式增長的時候,區塊鏈歷史和狀態數據會以什么速度累積呢?

這就是狀態爆炸問題,我們把它歸類為post-scalabilityproblem,因為它在解決scalability問題之后會非常明顯。我們最早是在做許可鏈場景落地時注意到了這個問題,因為許可鏈的性能遠高于公有鏈,剛好處于post-scalability的階段。

歷史數據的累積相對容易處理,未來可以通過去中心化的Checkpoint或是零知識證明等技術來壓縮,在那之前全節點甚至可以把歷史直接丟掉,依然可以正常運行。狀態數據的累積則麻煩許多,因為它是全節點運行必須的數據。

不少區塊鏈項目已經看到了這個問題,并提出了一些解決方案。EOSRAM是解決狀態爆炸問題的一個有益嘗試:RAM代表了超級節點服務器可用的內存資源,無論是賬戶、合約狀態還是代碼,都需要占用一定的RAM才能運行。

RAM的設計也有很多問題,它需要通過內置的交易市場購買,不可轉讓,無法租用,將合約執行過程中的短期內存需求和合約狀態的長期存儲需求混在了一起,而且RAM的總量的設定沒有確定的規則,更多取決于超級節點可以承受的硬件配置,而非共識空間的成本。

Ethereum社區也看到了這個問題并提出了StorageRent的方案:要求使用者為存儲資源的使用預支付一筆租金,占用存儲資源會持續消耗這筆租金,占用時間越長,使用者需要支付的租金越多。StorageRent方案存在兩個問題:

1、預支付的租金終有一天會用完,這時候如何處理占用的狀態?正是為解決這個問題,StorageRent需要諸如resurrection的機制來補充,增加了設計的復雜度,使智能合約的immutability大打折扣,也為使用體驗帶來了麻煩;2、Ethereum的狀態模型是一種共享狀態的模型,而不是First-classState。以ERC20Token為例,所有用戶的資產記錄都存放在單個ERC20合約的存儲里面,在這種情況下,應該由誰來支付租金?

解決狀態爆炸問題也是NervosCKB的設計目標之一,為此我們走了一條完全不同、更為徹底的變革之路。簡而言之,我們在NervosCKB一個token代表一個單位的存儲空間,通過經濟模型的設計,限制世界狀態的大小,利用市場手段調節狀態存儲的供需,并通過增發的設計持續向占用狀態的用戶收費,來協調生態中各方的利益,達到長期的安全和持久的穩定。

來源鏈接:謝晗劍

以太坊

以太坊

開放的分布式區塊鏈應用平臺,通過其專屬加密貨幣Ether以太幣提供去中心化的虛擬機,處理點對點合約。允許任何人建立和使用通過區塊鏈技術運行的去中心化應用,沒有任何欺詐、審查、第三方監管。以太坊的概念首次在2013至2014年由維塔利克·布特林VitalikButerin受比特幣啟發后提出,旨在共同構建一個更全球化、更自由、更可靠的互聯網。以太坊EthereumETHERCERCERC20ERC721ERC以太坊查看更多Nervos

Tags:THEETH區塊鏈ETHEETHEKingETHMOON如何使用區塊鏈技術ethereumuniswap

幣贏
ASH:支付也能閱后即焚?讀懂剛剛完成減半的隱私幣 Zcash_EXPOCash

隱私幣Zcash順利完成了減半和Canopy網絡升級,了解一下它的發展現狀與隱私機制。撰文:PaulVeradittakit,PanteraCapital合伙人翻譯:盧江飛Zcash已于北京時間.

1900/1/1 0:00:00
TOKEN:鄒傳偉:探討區塊鏈技術在數據要素市場中應用_怎么做區塊鏈

數據要素市場在整體架構上將是分布式的,但會有一些「數據中介機構」作為核心節點,區塊鏈可作為數據要素市場的組織工具.

1900/1/1 0:00:00
ARKN:概述:如何使用 MetaMask 交換令牌_MAS

將Uniswap的功能引入Metamask。Chrome擴展程序MetaMask擁有100萬活躍用戶,是以太坊上與dapp交互的最受歡迎的錢包,其新的兌換功能的添加只會鞏固這一地位.

1900/1/1 0:00:00
DAP:2020 Dapp 行業報告 新年 Promo @ DappRadar_比特幣紅包app

節日快樂,感謝大家在過去的一年中的支持。我們深入研究了行業的數據庫,總結了2020年行業的主要收獲和挑戰。我們發布了2020年Dapp行業報告。希望這份報告對你有所幫助.

1900/1/1 0:00:00
PPL:摩根大通踏入區塊鏈深水區_區塊鏈

摩根大通近日推出加密資產JPM通證,這使得摩根大通成為第一家發行加密資產JPM通證的全球主流金融機構。

1900/1/1 0:00:00
BTF:分布式云游戲系統,QBC即將登陸LOEx雷盾交易平臺_區塊鏈幣圈

當前區塊鏈技術已成為未來數字經濟產業革命,各個行業也都在積極尋找自身和區塊鏈能夠快速融合的切入點.

1900/1/1 0:00:00
ads