灑脫喜一週評

寫在前面:

“天下武功,唯快不破”,這句話經常會出現在武俠作品當中。

其衍生出來的意思是,只要一方搶佔了先機,就可以立身於不敗之地。在現實世界的華爾街,這種搶先交易(Front Running)的現象就普遍存在著,這就好比兩個人比武,其中一方先朝對方臉上打上一拳,然後耍賴迅速溜掉……

在審視金融系統時,對公平交易順序的需求,是顯而易見的。因為交易的執行順序,可以確定給定交易的有效性或盈利能力。比方說Bob有0美元,並且有兩筆交易發生了:其中tx0是Alice將5美元發送給Bob,而tx1則是Bob將5美元發送給Carol。

如果tx0的順序是在tx1之前,那麼這兩筆交易都會是有效的,而相反的順序,則會導致tx1失效。

而最近的研究表明,在基於共識算法的無許可區塊鏈中,這種現象也是很常見的。Daian等人的論文提到,機器人對以太坊網絡中的交易進行了猖獗的對抗性操作,然後從單純的用戶那裡獲取了超過600萬美元的收入。

那這種搶先交易“無賴功夫”有破解之道嗎?本週的學術話題,我們就來分享來自康奈爾大學教授Ari Juels等人的最新研究《拜占庭共識的順序公平性》。

而在硬核技術文章精選部分,我們還會看到關於區塊鏈活性、tBTC、稀疏默克爾樹等內容。

另外,在過去的一週當中,比特幣還迎來了Bitcoin Core 0.19.1版本客戶端、schnorr簽名及Taproot方案等更新內容,而以太坊聯合創始人Vitalik則發佈了新的Gasper共識協議論文。

洒脱喜一周评

(圖片來自:tuchong.com)

一、Aequitas協議:區塊鏈共識不僅僅需要一致性和活性,還需要順序公平性

在過去的三十年中,研究者們在密碼學和分佈式系統文獻中對狀態機複製的抽象概念進行了大量研究。

在高層次上,狀態機複製協議的目標,是讓一組節點同意不斷增長的、線性排列的消息(事務)日誌。

這樣的協議需要滿足兩個屬性:(1)一致性(Consistency):所有誠實的節點必須對約定的日誌有相同的view,也就是說,它們必須以相同的順序輸出消息;(2)活性(Liveness):客戶端提交的消息,要在合理的時間內添加到日誌當中,不幸的是,一致性(Consistency)和活性(Liveness)都沒有在最終日誌中說明事務的實際順序。而一種確保所有節點同意相同順序的協議,無論其如何去生成順序,都會被認為是一致的。

1、1 區塊鏈交易的順序公平性

而這就給定義留下了空間,即對手方可能會控制順序,然後讓所有節點對該結果達成一致。而在所有依賴於指定“leader”節點的現有協議(包括PBFT、FastBFT、HotStuf)中,惡意的leader就可選擇以任何順序提交交易。

為了糾正這個問題,來自康奈爾大學和IC3的Ari Juels教授等人提出了第三種共識屬性:交易順序公平性。

論文鏈接:https://eprint.iacr.org/2020/269.pdf

直觀地講,順序公平表示這樣一種概念:如果大量節點在另一筆交易tx2之前接受交易tx1,那麼這應該以某種方式反映在最終的順序中。

而這篇論文的主要貢獻有三個方面:

(1)研究了公平交易順序的自然概念,並說明了它為什麼不可能實現;

(2)研究了稍微弱一點的公平排序概念,這些概念是直觀的,但卻可以實現;

(3)引入了一類新的共識協議,並稱之為Aequitas,其實現了公平的區塊交易排序,同時也提供了一致性和活性,研究者還討論了同步和異步的Aequitas協議設置;

1、2 如何避開孔多塞悖論

順序公平的性質是對共識問題有效性的自然模擬,即將拜占庭協議擴展到多輪。

如果所有誠實的節點都認為交易tx1先於另一筆交易tx2,那麼通過與有效性的自然類比,最終輸出日誌應該在tx2之前對tx1進行排序。因此,研究者認為,交易順序公平性是共識文獻中具有獨立理論利益的自然屬性。

定義順序公平性和不可能結果:為了對共識協議進行建模,研究者使用了一種方法,其中協議節點從客戶端接收交易,並需要以滿足一致性和活性的方式輸出或交付它們。

定義1.1 (接收順序的公平性,正式定義在原論文第4.1節),如果足夠多的節點(至少γ百分比)在另一筆交易tx0之前接收到交易tx,那麼所有誠實的節點必須在tx0之前輸出tx。

雖然這個定義是直觀的,但事實證明,除非我們假設具有非常強的同步性,或者不存在惡意對手方,否則就不可能實現這點。

這一結果來自社會選擇理論中與選民偏好的令人驚訝的聯繫。為了用一個簡單的例子來強調這一點,我們可以考慮三個節點A,B和C,然後每個節點會接收3筆交易x, y和z。

其中A按[x,y,z]的順序接收它們,而B按[y,z,x]的順序接收它們,C按[z,y,x]的順序接收它們。

請注意,大多數節點收到的是(x後於y),(z後於y)以及(x後於z)!這種情況通常被稱為孔多塞悖論(也稱投票悖論),即使所有的局部順序都是可傳遞的,也可能導致非傳遞性的全局順序。

而這對於接收順序公平概念而言是有問題的。

定理1.2 給出了關於不可能結果的非正式描述。

定理1.2(接收順序公平的不可能性,正式定理描述在原論文4.4節)。考慮一個有n個節點的系統,其中外部網絡(用戶和協議節點之間)是異步的,或者最大延遲δ至少為n 輪。這樣,任何協議都無法同時實現一致性、活性及接收順序的公平性。

鑑於這種不可能的結果,研究者考慮了接收順序公平性的一種自然放鬆狀態,並稱之為區塊順序公平性。要理解這兩個定義之間的主要區別,我們來看一下兩筆交易tx和tx',其中有足夠多的節點在tx'之前已接收tx。接收順序公平性要求tx必須在tx'之前輸出,而區塊順序公平性則將條件放寬為“之前或同時”。

這裡指的便是在同一“區塊”中同時進行交付的交易。

定義1.3 (區塊順序公平性,正式定義在原論文4.7節):如果有足夠多的節點(至少γ百分比)在另一筆交易tx'之前接收到交易tx,則誠實節點無法在tx'之後的區塊中交付tx。

正是這種微小的放鬆調整,使得我們可以通過一個簡單的技巧來回避康多塞悖論:將矛盾的順序放在同一區塊中。這裡強調了區塊順序公平性,並不意味著交易是部分有序的。一致性仍然要求所有節點以相同順序(在或不在同一區塊內)輸出交易。唯一的區別是,在研究者的定義中,只要這些交易出現在同一區塊中,就被認為是公平的。

也就是說,研究者注意到,雖然不可能去實現接收順序的公平性,但區塊順序的公平性卻是可以實現的,對此,他們提出了可保證這一點的協議,並稱之為Aequitas。

1、3 Aequitas協議的4種實現

Aequitas協議以黑盒方式使用了兩個基本原語:(1)FIFO廣播(FIFO-BC),它是標準可靠廣播的基本擴展;(2)Set拜占庭共識協議(Set-BA),其定義在原論文第3節,這可以通過拜占庭共識協議來實現。

注意,這些都是弱原語,任何(實現一致性和活性的)標準共識協議,也可以用於構建FIFO-BC和Set-BA原語。這產生了一個有趣的觀察結果:Aequitas技術提供了一種通用編譯器,其可以將任何標準共識協議轉換為提供順序公平性的協議。

簡單來看,Aequitas協議被分為三個主要階段。而每筆交易tx在交付之前,都要經過這些階段。

階段1 Gossip:節點gossip交易按其接收順序進行。也就是說,每個節點都在流傳其本地交易的順序。

為此,研究者使用了FIFO廣播原語(FIFO-BC),FIFO-BC保證誠實節點的廣播由其他誠實節點,以和廣播相同的順序傳遞。即使發送方不誠實,FIFO-BC也能保證所有誠實節點均以相同順序傳遞消息。而這樣做的結果是,節點對其他節點的交易順序會具有一致的看法。

階段2 協定(Agreement):節點在同意決定特定交易的全局順序時應考慮其本地順序的節點集。

階段3 終結(Finalization):節點使用在協定階段確定的一組本地排序,來最終確定交易處理的全局排序。

需要指出的是,前兩個階段(gossip和協定)是易理解且易於實現的,而第三個階段則很複雜,因為它需要避免康多塞悖論,同時繼續保持一致性和順序公平性。

對此,研究者分別提出了基於leader和無leader的共識協議,然後設有同步和異步設置,因而共有4種協議。這些協議均提供了一致性、區塊順序公平性,以及某種程度的活性。下圖是這4種協議的比較結果。

洒脱喜一周评灑脫喜簡評:Aequitas協議的思路,簡單看,就好比規定兩人比武只能同時出手,這就確保了雙方之間的公平性,而其背後的理論,其實非常複雜,另外,根據論文介紹,Aequitas提供了一種通用的編譯器,其可以將任何標準共識協議轉換為提供順序公平性的協議,如果真正可以實現,這將解決掉區塊鏈金融應用面臨的一大難題。

二、硬核技術文章一週精選

2、1 突破區塊鏈不可能三角(六)——吹個關於區塊鏈活性的哨子

maxdeath在這篇文章中,列舉出了一系列關於閃電網絡和區塊鏈的已知問題。這些都是關於區塊鏈活性安全的哨子,而這些哨子早就被吹過不止一次。作者希望這次,當未來又有人不考慮這些問題設計了某個系統,而有人通過這些問題獲益時,請不要再叫它黑客攻擊。

文章鏈接:https://www.8btc.com/media/563994

2、2 tBTC:一種新的比特幣側鏈設計

tBTC是一種去中心化的、有保障的比特幣託管系統,它發行一種叫做TBTC的代幣。用戶無需信任託管者(稱為簽名者),因為這些簽名者存入的債券價值高於他們託管的比特幣的價值。如果他們要轉移未經授權的資金,導致未償的TBTC價值高於託管的比特幣,系統將會沒收他們的債券,用於購買和抵消市場上等值的TBTC,恢復TBTC和託管比特幣價值的平衡。

文章鏈接:https://www.8btc.com/media/565485

2、3 Core開發者教你如何驗證比特幣客戶端

在這篇文章中,Bitcoin Core開發者Luke Dashjr介紹瞭如何通過三個步驟來確保自己安裝的比特幣客戶端是安全、未經惡意方修改的。

文章鏈接:https://www.8btc.com/article/566181

2、4 科普 | 什麼是稀疏默克爾樹多值證明

以太坊網絡是一臺富狀態(stateful)的世界計算機,其狀態包括狀態餘額、交易流水號(nonce)、合約代碼及合約存儲內容等。在技術上,這些狀態數據是靠一種叫做 “默克爾樹” 的結構來組織的,因此,以太坊世界狀態及其訪問、更新,便可表達為一棵默克爾樹及其訪問、更新。同樣地,所有跟默克爾樹相關的數據證明及驗證操作,都可以在以太坊協議的語境下被理解為狀態的證明及驗證操作。實際上,默克爾樹是我們理解、利用、改進以太坊協議不可或缺的一環。

文章鏈接:https://www.8btc.com/article/566768

2、5 除了“減半”,2020年你還需要關注這些比特幣技術

在過去的一年時間裡,比特幣技術已經獲得不錯的發展,那種這種趨勢會在 2020 年繼續延續下去嗎?MAST、Taproot、Schnorr 簽名,以及其他出色的技術是否能進一步改善比特幣安全性,並推動其價格升值嗎?

文章鏈接:https://www.8btc.com/article/566236

三、比特幣&以太坊 開發更新進展

3、1 比特幣開發更新進展

  1. Bitcoin Core 0.19.1版本客戶端正式發佈,修復了一些錯誤,其中大多數修正涉及錢包/ GUI / RPC;
  2. BIP340 schnorr密鑰和簽名方案的更新,而這也會對BIP341 taproot產生一些影響,對於這些改進,作者Pieter Wuille要求社區提供有關更改的反饋;
  3. 關於標準化防洩露隨機數協議的提案:Stepan Snigirev在Bitcoin-Dev郵件列表上發起了關於標準化協議的討論,該協議可防止硬件錢包使用偏斜隨機數洩露用戶的私鑰;
  4. Taproot的安全性證明:Lloyd Fournier在兩週前的金融密碼學會議上發表了他的研究,其描述了Taproot使用的哈希函數中,必須具備哪些屬性才能確保Taproot的安全。
  5. 閃電網絡客戶端LND 0.9.1發佈,該版本並不包含任何新功能,但修復了多個漏洞,包括可能導致“節點之間強制關閉”的漏洞。

更多關於比特幣的技術進展更新內容,可以看這裡:https://bitcoinops.org/en/newsletters/2020/03/04/

3、2 以太坊開發更新進展

以太坊1.X更新內容:
  1. 以太坊基金會成員Hudson Jameson:ProgPoW不值得,它會死亡;
  2. ProgPoW算法被曝漏洞,或無法抗ASIC;
  3. Trinity v0.1.0-alpha.35發佈;
  4. DHT方案或解決無狀態以太坊數據檢索問題;

以太坊2.0研發更新內容:

  1. Prysmatic客戶端更新,減少大量RAM,第一次罰沒(slashing)成功,已更新至最新規範;
  2. Lighthouse客戶端更新,區塊處理速度提高70%,同步速度為每秒100個區塊,內存量大大減少;
  3. 用於以太坊2.0 ewasm EE的零知識證明工具;
  4. Vitalik等人發表論文,提出新的Gasper共識協議,其結合了Casper FFG以及分叉選擇規則LMD GHOST,在不同的假設條件下可證明安全性和活性; (注:Gasper也是以太坊2.0 信標鏈將採用的版本)

本期的分享就到這裡啦,下週再見~


分享到:


相關文章: