現(xiàn)在工作是越來越繁忙了,聽譯視頻的頻率降得越來越低。為了盡可能跟上最新的研究進展,還是有必要堅持聽譯的。今天為大家?guī)淼氖莵碜悦艽a學頂級會議CCS 2016的演講視頻《工作量證明區(qū)塊鏈系統(tǒng)的安全性與可用性討論》(On the Security and Performance of Proof ow Work Blockchains)。
如果對比特幣和區(qū)塊鏈技術(shù)有深入了解,就會發(fā)現(xiàn)比特幣和區(qū)塊鏈技術(shù)更多地涉及到了經(jīng)濟學和博弈論的相關(guān)知識。我們來看幾個簡單的例子:
· 比特幣可以遭受51%算力攻擊(51% Attack)。然而,如果攻擊者真的發(fā)起51%攻擊,雖然它可以篡改交易信息、獲得大量的比特幣,但這也要付出大量的算力成本。更重要的是,比特幣賬本的篡改很可能會導致人們對比特幣系統(tǒng)喪失信心,使得比特幣價格大跌,反而讓攻擊者遭受更大的損失。因此,雖然51%攻擊理論上是可行的,但由于比特幣已經(jīng)牽涉到巨大的算力投入,實施51%攻擊從經(jīng)濟角度講是一件吃力不討好的事情。
· 公鏈系統(tǒng)還可以遭受自私挖礦攻擊(Selfish Mining Attack)。這是Eyal和Sirer在密碼學著名會議Financial Cryptography 2014上提出的一種攻擊方法。其基本思想是:攻擊者在成功挖到一個區(qū)塊后可以暫時不公開此區(qū)塊,而是默默地在這個區(qū)塊上挖下一個區(qū)塊。當其它誠實節(jié)點挖到了這個區(qū)塊后,攻擊者再把自己挖到的這個區(qū)塊公開出去。這樣做的好處在于,攻擊者由于先挖到了區(qū)塊,他可以優(yōu)先在這個區(qū)塊之后繼續(xù)挖礦,而誠實節(jié)點會把算力浪費在已經(jīng)有下一個區(qū)塊的區(qū)塊上。這么做看似可行,但攻擊者也有很大的風險:如果攻擊者區(qū)塊發(fā)布的速度不夠快,全網(wǎng)可能會很快接受誠實節(jié)點挖到的區(qū)塊,攻擊者就會蒙受巨大的損失,還不如早早公開挖到的區(qū)塊為妙。
為此,衡量區(qū)塊鏈是否安全,不應該只從密碼學或者協(xié)議的角度去分析,更應該把博弈論的思想引入其中,通過衡量攻擊者的行為是否對自己最有利來判斷區(qū)塊鏈系統(tǒng)的安全性。而這正是本次視頻的核心思想。在巴比特上我只給出此視頻關(guān)鍵性的結(jié)論和重要的鏈接。由于巴比特上無法上傳過大的視頻文件,因此本視頻的聽譯版本發(fā)布在我的知乎專欄中(https://zhuanlan.zhihu.com/p/49494558),感興趣的讀者朋友們可以去專欄上觀看。連接打不開的原因是視頻正在知乎審核,相信在11月13日上午就應該可以審核通過。
內(nèi)容簡介
要說區(qū)塊鏈系統(tǒng)最大的問題就是交易吞吐量不足了。一般用系統(tǒng)所能支持的每秒交易量(Transactions per Second,TPS)衡量交易吞吐量。而影響交易吞吐量的核心參數(shù)有兩個:(1)區(qū)塊生成時間(Block GeneraTIon TIme),即平均每隔多長時間可以生成一個區(qū)塊;(2)區(qū)塊大?。˙lock Size),側(cè)面表示每隔區(qū)塊所能容納的交易數(shù)量。例如,比特幣的區(qū)塊生成時間為10分鐘,區(qū)塊大小為1MB,而比特幣的每個交易所需要消耗的存儲量大約為0.25KB,因此比特幣的TPS為1000KB/0.25KB/60s=6.67。以太坊的區(qū)塊生成時間大約為15秒,雖然以太坊沒有規(guī)定每個區(qū)塊的大小限制,但是由于區(qū)塊越大,區(qū)塊在網(wǎng)絡(luò)中的傳播速度越慢,因此以太坊實際的TPS約為20。從定性角度講,我們可以很直觀地得到下面的結(jié)論:
· 區(qū)塊生成時間越短,出塊速度越快,交易速度也就越快
· 區(qū)塊大小越大,每個區(qū)塊所能容納的交易量越大,交易速度也會變快
如果區(qū)塊鏈系統(tǒng)的點對點(Peer-to-Peer,P2P)網(wǎng)絡(luò)沒有網(wǎng)絡(luò)延遲,所有區(qū)塊都可以瞬間同步給全網(wǎng)所有節(jié)點,我們就可以把區(qū)塊生成時間設(shè)置得足夠小,區(qū)塊大小設(shè)置得足夠大,使得區(qū)塊鏈系統(tǒng)支持任意高的交易吞吐量。但是,由于網(wǎng)絡(luò)延遲的存在,全網(wǎng)所有節(jié)點并不總能很快地獲得最新的區(qū)塊信息,這就會導致競爭區(qū)塊的出現(xiàn)。當全網(wǎng)挖出了兩個區(qū)塊時,兩個區(qū)塊就需要根據(jù)規(guī)則進行競爭,最終只有一個區(qū)塊會勝出,而另一個區(qū)塊將被廢棄,成為廢區(qū)塊(Stale Block)此區(qū)塊關(guān)聯(lián)的算力也就被浪費了。
不僅是算力浪費的問題,競爭區(qū)塊是區(qū)塊鏈出現(xiàn)各種共識協(xié)議攻擊的核心原因。正是由于競爭區(qū)塊的存在,只要攻擊者可以在篡改交易時確保被篡改交易所關(guān)聯(lián)的區(qū)塊可以競爭成為合法區(qū)塊,攻擊就可以成功。這就引入了區(qū)塊鏈中針對共識協(xié)議的經(jīng)典攻擊:自私挖礦攻擊,雙花攻擊(Double Spending Attack)。
直觀來看,區(qū)塊成為廢區(qū)塊的比率,即廢塊率(Stale Block Rate)越高,區(qū)塊鏈遭受攻擊的概率也就越高。實際測試表明,比特幣的廢塊率約為0.4%(感謝比特幣極慢的出塊時間和嚴格的區(qū)塊大小限制);以太坊的廢塊率約為6.8%(但由于以太坊中有叔區(qū)塊的概念,因此雖然區(qū)塊率被廢棄,但關(guān)聯(lián)的算力仍然起作用);狗幣的廢塊率是0.6%,萊特幣的廢塊率是0.3%。
有了這樣的結(jié)論,區(qū)塊鏈系統(tǒng)設(shè)計者們就要做出權(quán)衡了:
· 提高區(qū)塊生成時間、增加區(qū)塊大小,則交易吞吐量會顯著提高,但區(qū)塊鏈的安全性就會降低。
· 反之,降低區(qū)塊生成時間、減小區(qū)塊大小,交易吞吐量就會降低,但區(qū)塊鏈安全性會提高。
我們要解決的問題是:不同的區(qū)塊鏈系統(tǒng)會設(shè)置不同的參數(shù),參與節(jié)點數(shù)量、算力分布、出塊時間、區(qū)塊大小、乃至攻擊者所擁有的算力都不一樣,如何橫向?qū)Ρ雀鱾€區(qū)塊鏈系統(tǒng)的安全性,從而選擇最優(yōu)的參數(shù)呢?
本視頻對應的論文的主要貢獻為:
· 提出了一種量化衡量指標,可以客觀分析工作量證明區(qū)塊鏈系統(tǒng)在抵御雙花攻擊、自私挖礦攻擊方面的能力。
· 設(shè)計并實現(xiàn)了一個區(qū)塊鏈仿真器,可以仿真區(qū)塊鏈系統(tǒng)的各個參數(shù),得到對應的廢塊率,從而幫助衡量區(qū)塊鏈系統(tǒng)的安全性。
這一工作可以得到很多有意思的結(jié)果,例如:
1. 可以把比特幣的出塊時間從10分鐘提高到1分鐘,使得比特幣的TPS從6.67提高到66.7,同時不會犧牲比特幣的安全性。
2. 37個以太坊的區(qū)塊確認量等價于6個比特幣的區(qū)塊確認量??紤]到以太坊的出塊時間為15秒,而比特幣的出塊時間為10分鐘,因此當交易被以太坊區(qū)塊確認后,只需等待大約10分鐘,其交易的安全性就等價于比特幣等待60分鐘的安全性。
3. 自私挖礦攻擊不一定是一個理智行為。在特定的場景下,與其實施自私挖礦,不如誠實挖礦的收益大。
4. 區(qū)塊挖礦回報率越高(用代幣所具有的實際價格衡量),則區(qū)塊鏈系統(tǒng)本身的安全性也會越高。
系統(tǒng)主要有2部分組成:
· 區(qū)塊鏈仿真器,可以配置相應的參數(shù)實現(xiàn)區(qū)塊鏈系統(tǒng)的仿真,得到廢塊率。支持設(shè)置的參數(shù)有:區(qū)塊生成時間、各節(jié)點算力分布情況、區(qū)塊大小、各節(jié)點的地理位置(即節(jié)點之間的網(wǎng)絡(luò)延時)、節(jié)點維護的TCP連接數(shù)量(即各節(jié)點的網(wǎng)絡(luò)吞吐量)、區(qū)塊傳播協(xié)議等。
· 安全模型,可以得到相應的安全量化指標。支持設(shè)置的參數(shù)有:攻擊者所擁有的算力、攻擊者的網(wǎng)絡(luò)連接情況、攻擊者分隔全網(wǎng)算力的能力(即日蝕攻擊,參見我之間分享的視頻:比特幣點對點網(wǎng)絡(luò)中的日蝕攻擊)、全網(wǎng)默認交易的確認次數(shù)。
通過對比量化指標,我們就能橫向?qū)Ρ雀鱾€區(qū)塊鏈系統(tǒng)的安全性了。