加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > DAI > Info

觀點:以 “狀態” 視角理解以太坊及其未來_以太坊:BankRoll

Author:

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

編者按:本文來自以太坊愛好者,Odaily星球日報經授權轉載。一.引言

自2015年創世以來,以太坊區塊鏈已歷經五個寒暑。五年的時間不僅把作為一種理念的以太坊協議1變成現實、使這套協議變得更加成熟、更加具體,也使這樣一套設計的特性和權衡關系暴露出來。這些權衡關系,作為設計上的挑戰,自然也吸引了并持續吸引著無數聰明才智,嘗試提升以太坊的可用性;其中匯聚了最多努力和想象力的,當屬為提高“可擴展性”而提出的一系列方案。本文想指出的是,就像以太坊范式面臨著設計上的取舍,所有這些可擴展性方案也面臨著取舍;而評價這些取舍的值得與不值得,需要我們回到以太坊本身,回到以太坊節點和以太坊用戶的真實問題和真實需要。而“狀態”視角,作為理解以太坊本身的視角,正好能幫助我們廓清這些方案的設計,并揭示我們的所得和所失。本文將從解釋“狀態”的含義開始,揭示以太坊的終極之矛和阿喀琉斯之踵,然后探討各種改進方向。“富狀態性”是以太坊智能合約“可組合性”的來源,但也是以太坊網絡最大的弱點。由此,我們可以見出現在常被人提起的哪些方案會影響“可組合性”,哪些“可擴展性”的意義更明顯。二.以太坊作為一種范式

富狀態性與可組合性

什么是“狀態”?狀態就是一個系統在某一個時刻的具體情形。以實現密碼學貨幣的區塊鏈為例,一個區塊鏈在某一個時刻的狀態就是該時刻,該區塊鏈上所有地址的資產分布。在此視角下,每一套區塊鏈協議都可以粗略地分成兩個部分,一部分是共識機制,另一部分是狀態轉換規則;前者定義了出塊規則,它指明了所有參與該區塊鏈的節點在什么時候需要在本地更新區塊鏈數據庫的狀態;而狀態轉換規則,則定義了什么交易是有效的,也定義了節點在處理交易時,應當如何更新狀態。對比特幣來說,其共識機制是“PoW+中本聰共識”,而其狀態轉換規則基于UTXO。對以太坊來說,其出塊機制是“PoW+Ghost規則”,其狀態轉換規則基于賬戶。那么,到底是什么東西讓以太坊變成一個有突破性的創新呢?我們時常聽說,以太坊之所以特別,在于其“引入了圖靈完備的編程語言,支持可編程性”等等。實際上這種說法并不準確2。因為允許使用更復雜的編程語言并不意味著什么,其實比特幣也可以編程;允許比特幣使用solidity編程語言并不能得到一個以太坊。以太坊真正特殊的地方在于“富狀態性”3:它允許一個合約調用另一個合約,并且,除了區塊容量本身,不對這種調用的層級數量施加任何的限制。B合約可以根據A合約公開的代碼來調用A合約、改變A合約的狀態;調用B合約的C合約也可以間接地調用A合約、改變A合約的狀態……由此,一個狀態,雖然保存在A合約里,但其控制邏輯,可以如此重重疊疊不斷累加;如果把狀態理解為資產,這等于是讓資產的使用權可以不斷得到更嚴格、更復雜的控制;這意味著,從理論上來說,一個狀態的更新邏輯能夠無限接近于現實生活中的金融合約。這種允許累加任意多層的控制的屬性,才是最關鍵的,而怎么編程這種控制,反而是次要的。此外,以太坊還允許用戶給區塊鏈寫入狀態,使這些狀態成為全局狀態的一部分,并要求節點按照合約自定義的邏輯來更新狀態。由此,一個合約能夠把自身的狀態向以太坊上的所有其它賬戶公開,前述的富狀態性真正有了用武之地。沒錯,現在我們已經像收集龍珠那樣集齊了三種屬性:鏈上計算范式:合約可以要求節點按自己定義的邏輯來執行計算;全局狀態:合約的狀態可以成為全局狀態的一部分,向所有其他賬戶公開;富狀態性:合約之間可以相互調用,且棧層數量沒有限制,因此控制邏輯可以層層累加;現在我們可以召喚出以太坊的最強之矛了:“可組合性”!鏈上計算方式使我們可以擁有各式各樣的合約;全局狀態讓這些合約可以相互訪問彼此的狀態;富狀態性讓合約的組合方式可以無限多樣。所以我們不僅可以擁有穩定幣DAI,還可以擁有借貸市場,還可以擁有彩票應用,還可以擁有把彩票的收益自動捐獻的應用,還可以擁有在不同的借貸市場間自動再平衡儲蓄比例的應用……狀態數據爆炸問題

觀點:穩定幣行業正進行一場透明度競賽:8月17日消息,在Moneyness 博客中加拿大金融作家JP Koning認為穩定幣行業正進行一場透明度競賽,任何額外的披露對穩定幣消費者都有好處。但對于穩定幣發行人而言,透明度之戰讓本已困難重重的商業模式變得更加難以執行。在透明度方面,行業標準已經發展,發行人定期發布鑒證報告。在這些證明報告中,穩定幣發行人向其審計師證明其擁有多少儲備,審計師會檢查此聲明的有效性。(Coindesk)[2021/8/17 22:18:07]

“可組合性”太美好了,以至于不像是真的,對嗎?沒錯,上述三種屬性的三位一體,實際上是一把雙刃劍。以太坊的狀態轉換過程可以抽象為:狀態轉換函數以舊的狀態和事務列表為輸入,輸出新的狀態。這意味著,以太坊的全驗證節點必須在本地維護著以太坊區塊鏈的最新狀態,以便能執行狀態函數并以結果來驗證一個區塊的有效性。矛盾之處在于:對于合約及開發者來說,合約的狀態作為以太坊全局狀態的一部分,保存在以太坊的節點上,合約的狀態更新由以太坊節點來計算,這種“無服務器”的架構非常舒服;但是,這些狀態只要一次付費就會永久保存在以太坊的全驗證節點中,雖然每次更新都需要付費,但無法避免節點本地保存的狀態數據會不斷累積、膨脹。狀態數據的膨脹之所以是一個問題,在于它會為全驗證節點帶來越來越高的硬盤讀寫負擔。狀態數據不像區塊數據,區塊數據是靜態的,持久化保存后并不需要頻繁讀寫;但狀態數據每多一個區塊就要讀寫許多次;而隨著狀態數據量的增大,讀寫的負擔也會越來越重。在過去幾年中,我們時常聽到有人說以太坊的全節點難以部署,一大原因即在于此。前一段時間Infura的免費以太坊節點服務崩潰4,導致許多依賴Infura的服務崩潰,算是給大家鳴響了一個警鐘——原來以太坊的節點維護如此不易,讓大家寧愿選擇信任他人。這個問題也并不容易解決。在過去幾年中,以太坊的多次硬分叉升級都提高了訪問狀態的操作碼的Gas消耗量,正是為了以經濟代價遏制合約創建新的狀態。但這顯然只是治標的辦法,因為根本上邏輯并沒有變,狀態數據要持續存留在以太坊節點處,但創造狀態數據的用戶只需付一次費。也有人提出,為改變這一點,需要引入某種“狀態租金”機制,要求保存了狀態的合約不斷支付租金,否則就終止該合約的可用性。但是,這種機制存在難以想象的復雜度,一方面,難以確定合理的收取租金的方法,另一方面,也難以確定合理的支付對象。所以狀態租金機制的研究在2019年也停滯了5。還有項目嘗試以持幣量的多少來界定可用的狀態空間大小,因此狀態數據的大小將總是有上限的,這就避免了狀態膨脹問題,但這也改變了原生資產的經濟屬性。到目前為止,除了“無狀態性”,我沒有看到令人滿意的、從根本上解決這個問題的方法,而“無狀態性”,我們現實地說,也面臨許多挑戰。這個我們后文再說。總而言之,全局狀態、鏈上計算和富狀態性,既使以太坊上的合約獲得了可組合性,也使以太坊的網絡有陷于中心化的危險;就像小說《指環王》中的魔戒,既能召喚強大的力量,也可能吞噬使用者自己。我擔心以太坊還要承受這樣的重負很久。接下來,我們以“狀態”視角,來理解諸種可擴展性方案的設計和權衡。三.以太坊的發展方向

觀點:比特幣期貨交易量增速快于現貨 說明該領域機構化水平上升:The Block研究總監Larry Cermak表示,數據顯示,比特幣現貨和期貨交易量之間的比率從一年前的不到2.3增加到5以上,表明期貨交易量與現貨交易量相比增長更快。這種趨勢在外匯等傳統金融市場中很常見,這說明加密貨幣市場機構化水平正在上升。[2020/6/5]

在此章節中,我們會分析四種以太坊的發展方向:Layer-2方案、分片、無狀態性和Rollup方案。這個分類是完全不合理的,因為rollup是Layer-2方案的子集;而無狀態性是分片的前置技術;甚至于,將它們并列也是不合理的,因為Layer-2方案幾乎不需要改動以太坊的底層,而分片和無狀態性則有這樣的要求。這樣做只是為了敘述和認識的方便。Layer-2方案

Layer-2方案背后的理念來源于一種簡單但非常精準的直覺:以太坊之所以會面臨吞吐量的瓶頸,是因為組成以太坊網絡的節點的帶寬、計算能力和維護狀態數據的能力都是有限的,而且很難提高;單純要求整個網絡的節點在單位時間內處理更多的交易,節點的運行要求必然上升,這就損及了去中心化;但是,從使用的角度看,并不需要讓所有的狀態都放在以太坊上,也不需要讓所有的狀態計算都在以太坊上發生;我們可以把一個合約的中間狀態都保存在別的地方,用戶的交互也不在以太坊區塊鏈上發生;僅當用戶認為有必要結算某個狀態時,再將該狀態發送到以太坊上,由以太坊來加以確認。一句話:如果我們沒法讓網絡在單位時間內對更多的事務達成共識,那就提高單筆事務的內涵。經典的Layer-2方案“狀態通道”最徹底地體現了這種思想:當參與一個通道的兩個用戶將資金鎖入合約后,此后兩人之間的交易都不會發到鏈上,他們彼此之間使用其他通訊工具來交流簽名消息,并以此達成彼此對通道內狀態的共識;直到兩人認為不再需要交互了,就把共同認可的狀態及兩人的簽名發送到以太坊上,以太坊這才更新該合約的狀態,并根據此狀態為兩人結算資金。如果你把Layer-2方案當成合約的一種設計模式,你會更清楚地看到——Layer-2方案選擇了不去利用全局狀態。另一個合約并不能實時地知道某個Layer-2合約內部到底是什么狀態,因為這些狀態并不在鏈上,也因此,一個Layer-2合約就無法與其它合約相組合了。雖然如此,Layer-2方案也換來了極有價值的東西:更快的交易速度、更低的手續費、更小的主鏈節點負擔。但Layer-2方案為什么在過去幾年中都沒有結出果實呢?因為在Rollup方案出現以前,其他方案,包括狀態通道和Plasma,都沒法證明鎖入自己合約的資金與鎖入帶狀態合約中的同樣安全。在狀態通道方案中,如果你沒有時刻監控區塊鏈,你的交易對手可以通過向主鏈提交舊的狀態,來“盜”走你的錢;在Plasma方案中,往往你需要依賴于運營者來為你提供自己狀態的證明,因此它對運營者本身是很難設防的。這跟以太坊主網帶狀態合約的使用體驗完全不同。除去合約的代碼風險,你存入合約的錢,如非有人發動51%攻擊取消你的所得交易,否則不會被盜;除非有人一直通過51%攻擊來審查你的交易,否則你必定可以將自己的資金取出。分片

觀點:若標普500跌破某一關口 投資者可考慮購買BTC:總部位于美國康涅狄格州的投資公司Albright Investment Group聯合創始人Victor Dergunov表示,對于希望避免下次股市崩盤的投資者而言,比特幣是一個有吸引力的目的地。他認為,盡管比特幣試圖突破接近10000美元關鍵阻力位的嘗試未能成功,但它仍具有足夠的上漲潛力。指出,比特幣可能已經在8,700美元附近見底,這一水平限制了比特幣在2020年5月期間的下行修正。Victor Dergunov還表示,如果標準普爾500指數跌破某一關口,投資者應該考慮購買比特幣。而在標準普爾500指數下跌的情況下,現貨黃金也是一個有吸引力的投資選擇。(Bitcoinist)[2020/5/28]

另一種改進以太坊、提高以太坊吞吐量的直覺是:以太坊的吞吐量有限,源于每個全節點都必須處理所有鏈上交易;如果我們可以讓每個節點只處理一部分交易,不同組的節點分別處理不同的交易,那么整個系統在單位時間內的吞吐量就等于這幾組節點的單組處理量的總和;即,單個節點的負擔并沒有增加,但整個系統的吞吐量提高了。這就是所謂的“分片”。關于分片化架構,一個有趣的問題是其確切定義。在經典的、非分片化的區塊鏈架構中,全節點必須重復所有計算;維護所有狀態;傳播所有區塊/交易。有人認為,只需打破一者,就算是分片化的了;但從更嚴格的視角看,必須打破所有三者,才能達到理論所推導的吞吐量提升效果6。取不同的定義,帶來的效果也很不同。此處,我所采取的定義是,一個節點至少無需維護整個系統所有的狀態。但另一個更有趣的問題是,假使分片架構所要求的前置技術都能實現,這一架構能有多大的意義。在以太坊基金會的研究團隊所構想的分片架構中,整個系統的狀態被分割成了幾個部分,各部分是并行更新的,也就是說,一個分片并不能實時地了解另一個分片的內部狀態。當位于分片A的合約A'嘗試調用分片B上的合約B'時,并不能假設處理者擁有分片B的狀態,也因此,處理的結果必須等待分片B完成狀態更新后才能返回。由此,跨分片的交易必須忍受事務處理中最難以忍受的代價:時延。關鍵在于,此種時延是不能用貨幣代價來加以抽象的。因為分片B也并不知道分片A上發生了一筆需要調用自身的交易,因此只能等待一個可信的通信層為自己播報這條交易。單位時間內能夠創造的價值越高,時延越不可忍受;而這意味著,假設有某個DeFi應用集中的分片,這些應用根本不會通過跨分片的交易來調度其它分片上的處理能力,因為這根本沒有意義,滿足不了DeFi應用對時延的要求。同樣,這也意味著,這個DeFi應用集聚的分片,其單分片處理能力就是其處理能力上限。在深山老林里造房子和修路,解決不了大都市里人們的生活空間問題。無狀態性

觀點:區塊鏈在性能和成本上已達到每筆收入都上鏈的技術要求:4月23日,中國經濟新聞網發文《后瑞幸時代,區塊鏈能否破局“做空”重建中概股信任?》,文中提到,記者采訪區塊鏈圈多位專家,他們一致認為區塊鏈技術在2020年實現了零門檻使用,這才讓非區塊鏈企業具備了使用的前提條件。區塊鏈技術在性能上和成本上也達到了可以每筆收入都上鏈的技術要求。[2020/4/23]

無狀態性是唯一直面了狀態數據膨脹問題的升級方向7。在當前的以太坊協議中,交易自身并不攜帶自身所訪問的狀態的信息,正是因此,處理交易的節點才必須維護狀態數據,作為執行狀態轉換函數的前置條件。也正因此,狀態數據的膨脹才是一個問題。而無狀態性的關鍵,正是讓交易/區塊自身附帶所訪問狀態的信息,因此,一個區塊僅憑自身就是可驗證的,無需處理交易的節點具有狀態。實際上,無狀態性是通過改變以太坊區塊的結構,改變以太坊區塊的驗證方式。無需維護狀態數據,也就免去了讀寫硬盤的需要,區塊驗證的速度也可以更快。此外,各節點既可以完全不維護狀態數據,也可以根據自己的需要,維護某些合約的狀態數據。但是,誠實地說,無狀態性目前還面臨許許多多的設計挑戰。具體來說:無狀態性要求為區塊/交易附加所訪問狀態的證明,這部分數據的規模可能非常大,以太坊當前的區塊數據大小大概是20~40KB,但witness數據的大小可能在MB級別;只有維護了所有狀態的節點才能組裝出witness,那么誰來為普通用戶提供狀態呢?;如何為交易的gas消耗量定價?尤其因為witness有時效性,并不能根據操作碼來確定組裝witness耗費了多少計算量。正是因為這些困難,以太坊的全節點可能還必須在這種維護所有狀態的模式中運行很久。但是,無狀態性絕對是當前對以太坊協議的改進中,最激動人心的方向。因為它直面了以太坊的核心問題,并嘗試釜底抽薪地解決這個問題。另外,對狀態數據在以太坊協議中的使用的研究,也滋養著其他的研究方向,如同步方法8。我有偏見地相信,以太坊的未來即使不是無狀態性,也是得到無狀態性啟發的某種方案。Rollup方案

Rollup方案是一種Layer-2方案,其特殊之處在于,它會將每一次狀態更新所用到的交易,都在以太坊區塊鏈上發布出來。與其他Layer-2方案一樣,Rollup方案也把狀態存在鏈下,也不要求以太坊的節點來計算合約的新狀態;但是,把會更改這個合約狀態的交易,都作為數據發布出來,這意味著,任意第三方,都可以憑借這些公開的數據和公開的規則,計算出該合約的狀態。前面說到,當Lyaer-2合約選擇了把狀態計算移到以太坊鏈外,并遮蔽了自己的合約狀態,它就給用戶引入了風險:用戶并不知道,Layer-2合約的運營者會不會把一個無效的狀態發到鏈上交由區塊鏈來敲定,如果運營者能夠這樣做,那就等于是能直接盜取用戶的資金;此外,用戶也不知道Layer-2合約的運營者會不是審查自己的交易,從而凍結自己的資金。資金被盜問題有兩種解決思路,一是保證每一次狀態轉換都是有效的,也即是每一次要更新合約的狀態根時,都讓以太坊來執行一次對計算完整性的驗證程序,只有驗證通過了,才允許合約更新狀態根,這就是zk-rollup的思路;另一種思路是,要求人們在請求更新合約狀態根時,都附帶押金,如果所提交的狀態根是無效的,檢舉此狀態根的人可以獲得原提交者的押金,這就是optimistic-rollup。但后面這種思路有個前提條件:檢舉人必須有辦法獲得該次狀態轉換前的狀態,否則無以生成該次轉換的錯誤性證明。資金被鎖問題的解決思路只有一種:盡可能弱化“運營者”的概念,使得誰都能向以太坊提交交易來更新該Layer-2合約的狀態。但這又回到了那個問題:如果提交者沒有該合約的狀態,怎么證明自己的狀態訪問的有效性,讓合約放行呢?終于,Rollup方案用“在每一次狀態轉換時都發表匹配的交易數據”解決了這個問題。由此,Rollup合約雖然沒有把狀態公開在鏈上,但是任何人——也包括rollup合約的用戶——都能根據這些公開的交易包重建出一個rollup合約的內部狀態。這意味著,假使設計得當,rollup合約內的資金,與以太坊區塊鏈上保存了狀態的合約,可以是同樣安全的!以zk-rollup為例,鏈上驗證程序保證了一個rollup合約不可能更新一個錯誤的狀態根,就像如果沒有你的允許,MakerDAO也不能沒收你的DAI;同時,假設它也公開了計算完整性的構造方法,則你隨時可以在鏈上直接向合約發起狀態轉換,來取出自己的錢。這就跟普通的、帶狀態的合約完全一樣了:如果沒有51%攻擊,就無法回滾rollup合約的狀態;如果沒有持續的51%攻擊,就無法阻止你取回自己的錢。Optimistic-rollup依賴于一些密碼經濟學的假設,因此稍弱一些:除了51%攻擊回滾狀態以外,攻擊者還可以通過持續一段時間的51%審查攻擊來給合約注入錯誤狀態根;或者可以賭一把,賭所有計算出了該合約最新狀態的人都不會觀察到錯誤。但Optimistic-rollup同樣能提供很強的免托管性,你也能隨時取回自己的錢。換言之,如果用戶愿意把錢存進一個有狀態的合約,那就沒有理由不愿意存進rollup合約。有了zk-rollup,layer-2方案已經能為用戶提供以太坊區塊鏈上合約所能提供的最大程度的資金安全了。顯然,也只有做到這份上,才有可能獲得大規模采用。所有的Layer-2方案都可以視為一種趨向無狀態性的折衷:Layer-2方案本身是無狀態的,其內部狀態再復雜,都不會增加以太坊節點的負擔;同時,更新Layer-2合約時,以太坊扮演的角色更多是驗證,即驗證狀態根更新是有效的,而不是自己去計算出這個狀態根。但是,到了rollup時代,Layer-2方案才證明了自己可以和帶狀態的合約一樣安全,其承諾這才有可能化為現實。四.結語

觀點:比特幣網絡活動再次增強,顯示出從持有比特幣向使用比特幣的轉變:Glassnode發布了一個關于比特幣網絡活動的圖表,該圖表顯示了整個網絡中移動的比特幣數量從去年8月開始迅速加速,直到上個月才穩定下來。自3月的急劇下跌之后,現在整個網絡活動也再次增加。從這些信息中得出的主要結論是,比特幣再次處于發展中。網絡上活動的變化可能相對較小,但仍顯示出從持有比特幣轉向使用比特幣的轉變。[2020/4/12]

綜上,在本文中,我解釋了以太坊的“可組合性”的來源,以及各種受到熱議的可擴展性方案是否犧牲了這種可組合性,又換來了什么。讀者可能會注意到,我在推理和評價的時候,相當重視“我們已經實現了什么/得到了什么”“人們的行為表明他們需要什么”。不錯,我正是從這個角度出發,來解釋rollup方案的魅力的。在我看來,這樣一種思維傾向,能使我們的思考的起點更加可靠,免于臆測用戶的需要,亦免于投入建設空中樓閣。在歷史的流轉中,我看到人們在可選的東西中選了某些東西,這就使我不得不認為,這些東西是重要的;而如果某些技術,既沒有增加人們可選的東西,又犧牲了人們實際上選擇了的東西,那就沒有理由對這些技術懷有信心。

Tags:以太坊區塊鏈LAYERROL以太坊最新價格行情分析美元區塊鏈存證平臺Layer3BankRoll

DAI
Ripple前CTO忘記硬件錢包密碼,里面存著7002枚比特幣_SEC:PPL

編者按:本文來自巴比特資訊,作者:Kyle,星球日報經授權發布。盡管Ripple正在承受美國面臨監管方面的巨大壓力,但Ripple前首席技術官史蒂芬·托馬斯恐怕還有一個更加苦惱的問題:弄清楚自己.

1900/1/1 0:00:00
超話社區|OEC,如何打造全球第一的高性能公鏈?_OEC:IDEX價格

整理|秦曉峰編輯|郝方舟出品|Odaily星球日報 OKEx要做公鏈,并不是一時興起。早在2018年12月18日,OKEx就曾發布公鏈概念宣傳片.

1900/1/1 0:00:00
深扒杠桿代幣的「收割術」_MXC:BTC

編者按:本文來自鏈捕手,作者:龔荃宇、Echo,Odaily星球日報經授權轉載。2020年,杠桿代幣陸續成為幣安、火幣、MXC等交易所的戰略級產品,但與此同時越來越多關于杠桿代幣的抱怨頻頻出現,

1900/1/1 0:00:00
星球日報 | BTC今晨一度突破40000美元大關;Diem協會計劃年內啟動穩定幣項目_BIT:Bitkeep官方下載

頭條 BTC凌晨突破40000USDT后短時回調,現重回39000USDT上方星球日報訊OKEx行情顯示,BTC于今日凌晨2時許突破40000USDT大關,最高至40341.4USDT.

1900/1/1 0:00:00
拍斷大腿2020,啪啪打臉2021_比特幣:singularity幣價

編輯|Mandy出品|Odaily星球日報 過往種種,皆為序章。迷幻動蕩的2020結束了,充滿未知的2021即將展開。新舊交替之際,各類平臺都在輸出各類嚴肅的行業梳理盤點內容.

1900/1/1 0:00:00
自去年3月以來最大的比特幣暴跌動搖了加密貨幣市場信心_比特幣:DRI

編者按:本文來自彩云區塊鏈,Odaily星球日報經授權轉載。比特幣最近的急劇拋售加劇了人們對加密貨幣泡沫可能即將破裂的擔憂.

1900/1/1 0:00:00
ads