比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads

以太坊:以太坊顛覆了自己:引入密碼學實現2.0性能突破_Proof

Author:

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

性能是阻礙公鏈發展的瓶頸,提升性能則是絕大多數希望超越以太坊的公鏈的主要設計目標,但當我們站在今天回望時,會發現這些公鏈選擇的方法大多是通過機制的設計來增強一個分布式系統的性能,但受困于分布式系統CAP定理(不可能三角),改善性能是要付出代價的,當這個分布式系統的用途是賬本時,這些代價甚至可能是難以被接受的。

以太坊也一直在嘗試各種方法以提升性能,在2.0被推出的前夜,它「試」出了密碼學。以太坊2.0將是一個以「分布式系統+密碼學」為基礎來運轉的公鏈,這個密碼學不是指被用于簽名和隱私的那部分,而是指作為一個高性能系統的核心組件的那部分。

從這個角度而言,或許我們可以說顛覆以太坊的不是別人,而是它自己。它從分布式系統設計的單一思路中跳了出來,走上分布式系統+密碼學組合設計的道路。

這篇文章將試著介紹在以太坊2.0中,分布式系統設計如何與密碼學設計結合,實現公鏈在性能上突破。

狀態分片:從單賬本到多賬本

區塊鏈是一個分布式賬本,出塊節點是記賬的礦工,它們負責把交易寫入賬本。除了競爭記賬權,出塊節點最重要的工作,或者說本職工作就是檢查自己打包的這些交易是否合法。完成這個工作并不難,因為出塊節點手中握有賬本,它去查一下交易發送方有沒有這筆錢即可。

對于未分片的公鏈,所有節點都持有一個相同的賬本;而為了防止記賬沖突,每次也只允許一個出塊節點記賬。以太坊提出狀態分片,實際上就是把一個賬本分成多個賬本,這樣一來,一些節點在1號賬本記賬,一些節點在2號賬本記賬……(相當于7-11從一個收銀臺增加為多個收銀臺),多個節點同時記賬,整個公鏈的性能就會得到質的提升。

但如果我們把出塊節點與賬本/分片的關系固定,比如確定由a、b、c、d四個節點負責1號賬本,那壞人只需收買a、b、c、d中的一部分就能破壞賬本,公鏈在提升性能的同時,安全性同比例下降。

Kriptal與以太坊優先交易網絡Eden Network達成合作:官方消息,總部位于歐盟的加密量化公司Kriptal與以太坊優先交易網絡Eden Network達成合作,Kriptal的工程團隊將支持Eden Network為以太坊客戶開發產品,以便更快、更有效地交付Eden的路線圖,包括區塊形成即服務和質押可提取價值。Kriptal還將在未來確定的其他項目上與Eden Network合作。[2021/11/12 21:46:35]

因此,出塊節點需要被隨機、動態地分配到不同賬本,以此保證分片后的公鏈與未分片的公鏈具有相同的安全性。但動態分配會帶來新的問題:節點手中該拿哪一個賬本?它可能會被分配到64個賬本(以太坊計劃啟動64個分片)中的任何一個去記賬。

以太坊給出的方案是出塊節點不拿任何一個賬本,或者說,讓出塊節點不需要賬本就能記賬。

這會帶來兩大好處,一是不管節點被分配到哪個分片,它都可以立刻開始記賬(出塊)工作,幾乎不用花費時間來獲得以及同步該分片的賬本,節點也因此可以在不同分片間輕松跳轉;二是出塊節點不需要存儲賬本,也就不需要高硬件配置,任何人抵押32ETH就能成為一個驗證者,這非常有助于以太坊PoS的去中心化以及整個公鏈的安全。

但新問題躍然紙上:如果出塊節點手中沒有賬本,它怎么知道交易發送方的錢夠不夠?密碼學就在這時候登場了。

向量承諾:從查詢到證明

不需要賬本就能記賬聽上去不可思議,但其思路是簡單的:在以前,節點有賬本,一筆交易來后它翻看賬本,查詢交易是否合法;在以后,節點沒有賬本,交易發送方在提交交易的同時需要提交一個密碼學證明(為了區分,后文特指密碼學證明時都用proof表示),自己證明自己的這筆交易是合法的。

安永已開源以太坊二層方案Nightfall 3,采用ZK-Optimistic Rollup機制:7月2日消息,安永宣布推出并開源以太坊二層方案c,Nightfall 3采用ZK-Optimistic Rollup機制,將零知識證明(ZK或ZKP)與處理交易驗證的新模型相結合,以提高效率并降低交易成本。ZK-Optimistic Rollup為了確保只有正確形成的第二層區塊被納入最終的區塊鏈記錄,從經濟上激勵用戶挑戰不正確的區塊,當提出挑戰時,智能合約對挑戰的準確性進行仲裁,獎勵正確的挑戰,并刪除不正確的第二層區塊。(Prnewswire)[2021/7/2 0:22:54]

可出塊節點為什么能夠通過一個proof來判斷某筆交易是否合法?這里涉及到兩個密碼學的重要概念,第一個叫「成員證明」。它指的是通過某種方法,證明個體是群體的一部分。如果能夠證明某個賬戶狀態是整個賬本狀態的一部分,出塊節點當然就能相信這個賬戶狀態,并以此為根據進行交易合法性的判斷。

第二個叫「向量承諾」,它可以將群體,不管這個群體有多龐大,壓縮成僅僅一個數,然后給出成員證明,該成員證明表明的是某個個體是屬于這個數背后所關聯的群體的,且能證明個體在群體中的位置,以及進行證明的更新。

Merkle樹是可被用于向量承諾的方法之一,我們以它為例來看如何實現成員證明。

下圖是一棵Merkle樹,最下一層的葉子節點存儲的是應用數據,其他非葉節點存儲的是其子節點的哈希值。如果知道綠色節點和所有黃色節點的值,就可以從下至上進行三次哈希運算,得到該Merkle樹根的值,也就是6c0a。

以太坊核心開發者將在本周五討論EIP-1559:3月3日消息,以太坊全體核心開發者將于北京時間3月5日22時召開會議,討論柏林分叉和倫敦分叉相關議題。討論的提案包括EIP-1559、EIP-3238、EIP-3298、EIP-3074和EIP-2327。此前有消息稱,以太坊開發者希望在7月進行的倫敦分叉啟動EIP-1559。[2021/3/3 18:10:59]

那么,如果驗證方手中有樹根的值(6c0a),證明提供方把綠色節點的值和所有黃色節點的值作為一個proof給驗證方,驗證方是不是就能通過計算三次哈希的值是否等于6c0a來判斷綠色節點的值是否在這棵Merkle樹中?答案是可以。這就是對綠色節點屬于Merkle樹的成員證明,它是以向量承諾的方式完成的,而這也幾乎就是比特幣SPV節點(簡單支付驗證)的工作方式。

如下圖所示,SPV節點不存儲完整的區塊/賬本,但存儲了每個區塊中Merkle樹的樹根(此Merkle樹的葉子節點存儲的是該區塊所有交易),當它需要查詢一筆交易是否存在時,會找全節點要一個該交易的proof,該proof類似于上文中綠色節點和黃色節點值的一個打包(Merkle路徑),然后SPV節點會計算這些值的總的哈希值是否等于自己手中Merkle樹根的值,如果相等,則說明這筆交易是該Merkle樹的一個成員,即這筆交易是存在的。

SPV節點只存儲區塊頭(綠框),區塊頭中包含Merkle樹根(紅框)

SPV節點通過成員證明判斷交易是否存在,該證明系統包含三個部分:節點手中有一個簡短的摘要(樹根);證明提供方給出一個proof;節點計算此proof,看是否與自己手中的摘要相符合。

突發 | 以太坊核心開發商宣布延遲即將開始的君士坦丁堡升級計劃:以太坊核心開發者宣布將推遲在測試網絡Ropsten上發布君士坦丁堡系統升級項目的計劃。以太坊基金會團隊負責人Peter Szilagyi的推文中解釋的到,延遲的主要原因是為給客戶(運行“節點”或支持Ethereum網絡的計算機服務器的個人和企業)提供更多時間,以解決在5個君士坦丁堡升級中發現的漏洞。除此之外,延遲還將為Ropsten用戶測試其他以太坊項目(例如離線擴展解決方案Raiden)提供空間,以便為實施君士坦丁堡可能發生的分叉做好準備。[2018/10/5]

到此,我們就完成了「不需要賬本就能查賬」,它是把查詢思路改為了證明思路;接下來我們要實現的是「不需要賬本就能記賬」。

對于以太坊2.0分片上的出塊節點而言,它的證明系統同樣是由摘要、證明、驗證這三部分構成,但它要做到是使用交易發送方(而不是全節點)給出的proof來判斷一筆新交易是否合法(而不是舊交易是否存在),并以此判斷為基礎記賬。

無狀態:從證明賬本到證明行為

想象有一個很小的村莊,這個村莊每天只有3筆村民間的交易,村長拿著賬本負責記賬。A現在要給B轉5塊錢,傳統的思路很簡單:村長看A的賬戶上是否有5塊錢,如果有,就記下這筆新交易。

現在換一個思路:假設A在今天早上要給B轉5塊錢,村長知道A的賬戶在昨天早上有10塊錢,那么如果A能夠證明昨天的3筆交易都和他沒有關系,是不是就意味著他的賬戶在今天早上依然有10塊錢?這樣一來,村長是不是不用查賬本就能放心記下這筆新交易?答案是肯定的。

如果A昨天有一筆交易怎么辦?很簡單,A這時不是證明自己沒交易,而是證明自己昨天只有一筆交易,且那筆交易用掉了3塊錢;村長就知道他還有7塊錢,可以記下新交易。

動態 | 以太坊錢包MetaMask將333ETH列入黑名單:據CryptoGlobe消息,以太坊錢包MetaMask近日將以太坊上受歡迎的DApp 333ETH列入了黑名單,并將其標記為“主動詐騙”。使用MetaMask并前往333ETH地址的用戶目前能收到關于該應用程序的警告消息。MetaMask聲稱他們的安全性可能存在風險,因為333ETH“在以太坊網絡釣魚探測器上測試為陽性”,包括惡意和受感染的網站。鑒于警告,用戶目前無法使用MetaMask網站。它的開發者已經明確表示,他們將增加一種繞過封鎖的能力,因為他們“無意促進審查”。[2018/9/29]

這個思路的轉變至關重要,你一定要去理解它,這是「無狀態」這件事的奧妙所在。不難發現,即使是不拿賬本的SPV節點,它在查詢交易時實際上也是要用到賬本,或者說狀態的,只不過它不是自己存儲狀態,而是去找全節點要這個狀態的證明;但在這個新思路下,狀態的作用可以徹底被「行為證明」取代,那么這條鏈就能夠以無狀態的方式去設計。(注:行為證明這個詞并無出處,是作者為了易于理解這樣描述的)

如何實現無狀態?如何借助于行為證明完成記賬?依然是成員證明的方法。能夠利用Merkle樹來完成這種成員證明嗎?理論上可以,但對于「無狀態」這個應用場景來說,用它的開銷過大。在本文中,我們將介紹通過「可聚合子向量承諾」來進行成員證明,以實現無賬本記賬。

可聚合子向量承諾(aSVC)是一個最新的研究成果,來自于論文《無狀態密碼貨幣的可聚合子向量承諾》,作者是Alin Tomescu、Ittai Abraham、Vitalik Buterin(以太坊)、Justin Drake(以太坊)、Dankrad Feist(以太坊)、 Dmitry Khovratovich(以太坊)。其工作過程是這樣的:

1. 初始化分片,即在賬本建立時確定賬戶的初始情況。假設某個分片建立時有100個賬戶,這些賬戶都有初始的余額,我們需要用v(i)代表第i個賬戶,它是(地址i,余額i)這樣的一對值;用V代表全部賬戶,它是(地址1,余額1)(地址2,余額2)……(地址100,余額100)這樣的一組值。

同時需要生成兩個值,第一個叫c,它是對V的承諾,代表的是此時該分片所有賬戶和賬戶里的余額。出塊節點手中都握有c,(可以對比Merkle樹根來便于理解),它是將來用于驗證的摘要。

第二個叫π(i),它是對v(i) 是V的成員的證明,代表第i個賬戶及該賬戶的余額是在總賬本V中。每個賬戶都握有且只握有自己的π(i),它是將來發送交易時提交給出塊節點的proof。

在初始化階段,承諾和證明的生成是需要初始「狀態」的。

2. 第一筆交易。賬戶 i發起整個分片的第一筆交易,此時它需要把π(i)和交易一起提交給出塊節點,出塊節點對π(i)進行計算,看結果是否與自己手中的c相符合,如果一致就可以相信發送方賬戶確實有多少余額,并以此判斷它提交的交易是否合法。

3. 接下來是關鍵之處:對c和π(i)進行更新。

c(對整個賬本的承諾)不再是根據狀態生成,它是用第一筆交易發生之前的c,以及第一筆交易引起的余額變動生成的;π(i)(賬戶對自己的證明)也不是根據狀態生成,它是用第一筆交易發生之前的π(i),以及第一筆交易對該賬戶的改變生成的。

在完成c和π(i)的更新之后,出塊節點手中便有了可以承諾所有用戶新余額的新承諾(新c),賬戶手中也有了可以證明自己新余額的新proof(新π(i))。

以此類推,每筆交易都會改變一次c,改變一次全部π(i),但這種改變不再依賴于狀態數據,它取決于舊的c和π(i),以及上一筆交易;當需要驗證一筆新交易時,出塊節點手中總有最新的c,它通過c和賬戶提供的π(i)就能判斷某筆交易是否合法,是否可被打包進區塊。

那么到這一步,就終于實現了「不需要賬本就能記賬」,不管對于出塊節點,還是對于賬戶,它們手中握著的都是某種密碼學的證明,而不是賬本的狀態。另需一提的是,無狀態與分片似乎是絕配,但無狀態并不是針對分片的一種設計,它是針對公鏈的一種設計。

aSVC的設計目標是要成為一個高效的成員證明,降低上述過程中的通信開銷和計算開銷,使得這種方案可用于無狀態區塊鏈的實現。從論文來看,使用aSVC方案,c和π(i)的大小僅為幾十個字節,π(i)的更新時間為O(1),驗證時間也為O(1),該方案還支持把多個proof聚合為一個O(1)大小的proof,這種低開銷的實現正是aSVC的意義所在。不過就像Vitalik在以太坊研究者論壇中展開的相關討論,aSVC還需要做進一步的優化。

文章的最后是對全文的簡要總結:分布式系統的狀態分片設計與密碼學的成員證明設計相結合,實現以太坊2.0在性能上突破。

1.為了安全,以太坊2.0的狀態分片需要隨機分配出塊節點。

2.如果出塊節點需要賬本,賬本同步會成為新的性能瓶頸,賬本存儲也會影響PoS的去中心化。

3.是否有不需要賬本就能驗證余額的方式?

4.第一個思路轉變:把查找賬本的方式改為證明賬本的方式。這需要借助于密碼學來完成。

5.第二個思路轉變:把證明賬本狀態的方式改為證明交易行為的方式,實現無狀態和無需賬本的記賬。這需要借助于密碼學來完成。

6.密碼學的工具有很多,當有了目標后,需要根據應用需求選擇和組合適當的工具形成方案,并對方案進行優化。

彩蛋

可聚合子向量承諾

在文章中我們用自然語言描述了aSVC的工作,如果你感興趣,可以通過aSVC 的API定義來更清晰地了解它。如下圖所示:第一個紅框是初始化時生成承諾c,第二個紅框是根據交易更新c;第一個綠框是初始化時生成證明π(i),第二個綠框是根據交易更新π(i);藍框是出塊節點用c和π(i)做驗證。

在上述過程中,最核心的工作是根據交易引發的變動把舊的c變成新的c,把舊的π(i)變成新的π(i)。不但要能夠完成更新,且這種更新的開銷是可以被接受的,這是aSVC要解決的關鍵問題。我們以c的更新為例來介紹aSVC是如何做的。

如前文所述,c承諾的是V,從c到新c,實際上就是從承諾V到承諾一個新的V。對V來說,它是由一系列的點構成的,(地址1,余額1)是一個點,(地址2,余額2)是另一個點……(地址100,余額100)是第100個點。

借助于拉格朗日插值法,可以把這一系列的點變成一個多項式(該多項式代表的曲線經過所有這些點),這意味著可以把對一系列點的承諾變成對一個多項式的承諾;從c到新c,也就等價于從承諾一個多項式到承諾另一個多項式。

而多項式有著各種神奇的屬性,對多項式及多項式變換的承諾可以是小的、快速的。那么通過這種從點到多項式的轉化,就可以把c的更新開銷變為可接受的。

但這只是對aSVC方案思路的一個簡單、片面的介紹,在該方案中還使用了諸多其他工具和方法,而且它依然在追求更好的設計。如果你想更多的了解它,可以去閱讀原論文,其中的3.1節和4.1節是最有助于理解整篇論文的部分。

致謝:郭宇

撰文:李畫,安比實驗室特約研究員

論文下載地址是:https://eprint.iacr.org/2020/527.pdf。

Tags:以太坊MERERKProof以太坊幣最新價格6月走勢分析CoinMerge OShunterkingtokenProof Of Pepe

以太坊最新價格
BSN:金色深核 | 如果用BSN重新定義IaaS?_TPS

聯盟鏈BSN正在高速發展。據官方消息,截止至4月25日,區塊鏈服務網絡(BSN)全球節點共部署了128個,國內120個,國際8個,分布在除南極洲外的六大洲,從官方的節點實時監測工具上可以看到,監.

1900/1/1 0:00:00
數字貨幣:活用這些指標 想不賺錢都難_STE

金色財經?直播 | 萌新學院《活用這些指標,想不賺錢都難!》 6月08日~6月12日 邀請10余位幣圈KOL 純干貨! 解析買賣秘籍 一步從小白躍升為老司機 自此賺錢不求人! 直播議程: 6月0.

1900/1/1 0:00:00
以太坊:金色觀察 | ETH2.0未到 但多項數據顯示越來越多的人押注于它_etherark

以太坊最終還是要轉向PoS,這是以太坊自創建以來一直研究和精神的核心所在,也是許多人最初被以太坊生態系統吸引的主要原因之一。距離以太坊向以太坊2.0中的PoS過渡的第一步僅幾月之遙.

1900/1/1 0:00:00
區塊鏈:科技揚善 微眾銀行用區塊鏈構建社區治理新藍圖_ISC幣

當下,區塊鏈是人們關注的熱點和焦點,作為新一代互聯網的底層系統,區塊鏈可以融合其他新一代信息技術,提高數字經濟增速,保證國民經濟高速增長和高質量發展,加快轉型升級.

1900/1/1 0:00:00
區塊鏈:金色觀察 | 疫情后的創新發展:武漢區塊鏈產業積極向前_CEO

身處疫情風口的武漢正逐步復蘇,區塊鏈帶來的生機逐步延伸到各個領域。據預測,今年區塊鏈作為新基建的14個領域之一,相關投資將達到上百億元的規模。但實際上,區塊鏈早已在疫情期間便發揮出巨大效用.

1900/1/1 0:00:00
ETH:以太坊手續費居高不下 USDT該“背鍋”嗎?_BABYUSDT

有在用 ETH 的應該都有注意到最近的手續費一直維持在 20 Gwei 以上,只有偶爾能見到 10 Gwei,對比以前只要 3 Gwei 就能夠執行、傳輸,真的差很多.

1900/1/1 0:00:00
ads