On Availability for Blockchain-Based Systems
Abstract
探索區(qū)塊鏈技術(shù)在公共注冊中心、供應(yīng)鏈、健康記錄、投票等領(lǐng)域的廣泛應(yīng)用。
作者們在該論文中從現(xiàn)在兩個(gè)主流的區(qū)塊鏈,以太坊和比特幣中,發(fā)現(xiàn)了區(qū)塊鏈可用性的限制,證明了從區(qū)塊鏈中讀取數(shù)據(jù)的可用性很高,但是往區(qū)塊鏈中寫入數(shù)據(jù)(交易數(shù)據(jù)管理)的可用性就很低。
從以太坊的實(shí)驗(yàn)中發(fā)現(xiàn),大量的交易中,有很多交易信息是沒有被提交的,區(qū)塊鏈中也沒有明確的終止交易和重新提交的內(nèi)在機(jī)制,這些交易就一直處于一種等待狀態(tài)。最后,基于以上這些限制,作者們提出了一些技術(shù)來優(yōu)化這些問題。
1 介紹
區(qū)塊鏈?zhǔn)且环N新型的復(fù)制型數(shù)據(jù)庫(分布式賬本),最開始區(qū)塊鏈用于支持比特幣這種密碼貨幣。第二代的區(qū)塊鏈技術(shù)則用于記錄各種應(yīng)用領(lǐng)域的交易數(shù)據(jù),智能合約,健康記錄、投票、能源提供和關(guān)鍵基礎(chǔ)建設(shè)燈領(lǐng)域。
在記錄交易的不易性上,許多基于Nakmoto consensus(中本聰共識(shí))構(gòu)建的區(qū)塊鏈系統(tǒng)在客戶端上都只能提供概率性的保證。交易過程中所耗費(fèi)的時(shí)間也是這些區(qū)塊鏈系統(tǒng)十分需要去關(guān)注的一個(gè)問題。
作者在這片論文中會(huì)調(diào)查交易記錄沒有被提交的原因以及耗費(fèi)長時(shí)間的原因。
- 網(wǎng)絡(luò)重新排序也會(huì)造成很大的延遲。
- 調(diào)查研究用戶定義的
gas price、gas limit和block gas limit變量名所帶來的影響。 - 制定將阻塞在交易池的交易終止的機(jī)制的必要性。
2 背景
區(qū)塊鏈的基本特點(diǎn),機(jī)制原理,分布式賬本,挖礦,電子錢包,工作量證明,獎(jiǎng)勵(lì)機(jī)制,每筆交易需要給區(qū)塊礦工交易費(fèi),最長鏈解決沖突,51%攻擊,以太坊中的智能合約。
3 比特幣的交易確認(rèn)
在這部分,作者將探討影響比特幣提交時(shí)間的因素,并且發(fā)現(xiàn)交易的重組起著很關(guān)鍵的作用。每筆交易都需要給擁有該區(qū)塊的礦工一定的手續(xù)費(fèi),作為對(duì)礦工的激勵(lì)機(jī)制。因此,礦工更喜歡能提供高手續(xù)費(fèi)的交易,并且將其先寫入?yún)^(qū)塊中,因此能提供更高手續(xù)費(fèi)的交易能更快地提交。
作者通過研究發(fā)現(xiàn),在比特幣系統(tǒng)中,每筆交易需要有序地到達(dá),如果一筆交易先于其“父母”交易先到達(dá),即該交易的源交易不明,則這筆交易將會(huì)被放進(jìn)內(nèi)存池等待,超過一定時(shí)間甚至?xí)粍h除。
locktime鎖定時(shí)間的設(shè)置,帶locktime的transaction,指明了transactions在未來的一個(gè)區(qū)塊或者未來的一個(gè)時(shí)間點(diǎn),才會(huì)被驗(yàn)證并發(fā)送到比特幣網(wǎng)絡(luò)上去。
A.數(shù)據(jù)收集方法
B.比特幣交易所需要的時(shí)間
- 更低的手續(xù)費(fèi)并不是造成
orphan延遲提交的原因。 - 鎖定時(shí)間也不是造成
orphan延遲提交的關(guān)鍵因素。
4 以太坊的交易確認(rèn)
首先解釋為什么以太坊交易無法保證提交,無論其有效性如何,然后明確gas price、gas limit和網(wǎng)絡(luò)對(duì)提交時(shí)間的影響。
A.以太坊交易處理
以太坊中一筆交易的生命周期為:
- 系統(tǒng)中交易的公告
- 交易被包含進(jìn)某個(gè)分支鏈上的一個(gè)新挖的區(qū)塊中。
- 包含有該交易的區(qū)塊被接到主鏈上。
- 在足夠的區(qū)塊被挖出來后,該交易被最終確認(rèn)。
B.數(shù)據(jù)收集和基礎(chǔ)統(tǒng)計(jì)
作者使用geth客戶端,將參數(shù)gas price設(shè)置為0,其它設(shè)置為默認(rèn),并且允許最多連接500個(gè)節(jié)點(diǎn)。
區(qū)塊的時(shí)間戳指的是這個(gè)區(qū)塊是什么時(shí)候開始挖的,而不是這個(gè)區(qū)塊生成的時(shí)間。
C.從首次包含到提交
作者分析了每筆交易首次被包含的延遲時(shí)間,第二次被包含的延遲時(shí)間,第三次的延遲時(shí)間等。越是到后面的延遲時(shí)間就越長,越是需要用更多的區(qū)塊去確認(rèn)一筆交易,就越需要花費(fèi)更多的時(shí)間。但是幾乎不會(huì)出現(xiàn)交易不被包含進(jìn)去的情況,出現(xiàn)的幾率很小。
D.用戶定義的gas Price和Limit的影響
這部分作者將會(huì)研究gas Price和gas Limit對(duì)提交時(shí)間的影響。特別地,當(dāng)給礦工提供更高的回報(bào)是否能加快每筆交易提交的時(shí)間,例如設(shè)置更高的gas Price。
調(diào)查發(fā)現(xiàn),更高的gas Price區(qū)段里,延遲更短,但是在25Gwei再往上,更高的gas Price也不會(huì)對(duì)延遲造成很大的影響。0區(qū)段和其它區(qū)段的區(qū)別是很明顯的,gas Price為0明顯會(huì)造成更長的提交時(shí)間。
作者在目前調(diào)查當(dāng)中并沒有發(fā)現(xiàn)gas Limit和提交延遲之間有什么關(guān)聯(lián)。
E.網(wǎng)絡(luò)延遲的影響
每筆交易都有一串?dāng)?shù)字編號(hào)nonce,但是不同賬戶之間的nonce是不同的,每個(gè)賬戶的交易的nonce從0開始逐1遞增,編號(hào)n+1的交易在編號(hào)為n的交易沒有被包含進(jìn)區(qū)塊鏈時(shí),必須在交易池中等待編號(hào)n的交易到達(dá)。
作者調(diào)查發(fā)現(xiàn),gas price對(duì)交易的有序和無序影響不大,因此將gas price這個(gè)混淆因素排除。
作者通過先將編號(hào)n+1的交易先發(fā)布,然后再發(fā)布編號(hào)n的交易,將其所得到的結(jié)果與有序的交易發(fā)布作比較,發(fā)現(xiàn)有延遲的交易只能被很少的節(jié)點(diǎn)所知道。因此表明網(wǎng)絡(luò)的連通性對(duì)交易的廣播有一定的消極的影響。
5 以太坊的區(qū)塊gas limit的影響
如果gas limit太小而低于一筆交易所需要的費(fèi)用,則這筆交易則不能被包含進(jìn)區(qū)塊當(dāng)中。該限制是為了通過限制算力的總數(shù)來防止網(wǎng)絡(luò)上的DoS(Denial-of-Service)攻擊。
作者通過調(diào)查發(fā)生在DoS攻擊之前的交易,主要的gas被用于三種類型的交易:financial transfer轉(zhuǎn)賬、regular function calls to contracts合同的規(guī)則調(diào)用、contract creation合同的創(chuàng)建。
- 每筆轉(zhuǎn)賬交易只會(huì)消耗最基本的21,000
gas,加上一小部分gas用于攻擊數(shù)據(jù)。 - 大部分的合約功能規(guī)則調(diào)用最多需要消耗200,000
gas,只有剩下的很小一部分即使gas limit為500,000還是不夠。這說明現(xiàn)在在使用的大部分功能規(guī)則不是計(jì)算密集的。 -
DDoS攻擊前,一半的合約創(chuàng)建時(shí)gas limit設(shè)置為500,000,而另一半則需要更多。這證明了作者的假設(shè),當(dāng)gas limit在一定值時(shí),許多合約無法展開(使用)。
6 以太坊中的交易中止
這部分作者將提出人工地中止交易的機(jī)制。該機(jī)制可用于提高軟件客戶端或者錢包的用戶友好性。
- 如果用戶想中止一個(gè)超過預(yù)期時(shí)間的交易,可發(fā)起一個(gè)接收者為自己的新的交易,新的交易與超時(shí)交易的編號(hào)一樣,且交易金額為0,如果新的交易提交成功,超時(shí)交易將過期,如果超時(shí)交易在新的交易成功提交之前成功提交了,則與一開始的目的一樣,沒有任何問題。
- 用戶也可以重新發(fā)起一次新的交易,新的交易包含與之前的交易一樣的數(shù)據(jù),因此新的交易的數(shù)字特征和哈希值與之前的交易不一樣,可以被礦工認(rèn)為是另一次交易。但是如果重傳之前的交易而不做任何改變,則還是會(huì)被礦工認(rèn)為與之前一次的交易是一樣的,導(dǎo)致礦工還是會(huì)做出一樣的處理。如果兩次交易同時(shí)到達(dá),則二者只會(huì)有一個(gè)是有效的,因?yàn)樗鼈兊木幪?hào)是一樣的。
作者在3種場景下測試了以上的規(guī)則。
- 一筆交易在常規(guī)時(shí)間內(nèi)沒有被包含進(jìn)區(qū)塊中。
- 客戶端改變了主意想回溯之前的交易。
- 一筆交易由于費(fèi)用不足而無期限地等待。
7 相關(guān)工作
CAP(Consistency一致性, Availability可用性, Partition tolerance分區(qū)容忍性)理論,任何分布式系統(tǒng)只可同時(shí)滿足兩點(diǎn),無法三者兼顧。
作者通過觀察驚訝地發(fā)現(xiàn)許多主流的區(qū)塊鏈只提供有限的可用性,鑒于它們通常是不保證一致性的??雌饋磉@些區(qū)塊鏈只依靠概率性變化的網(wǎng)絡(luò)環(huán)境去確保其一致性。
鑒于實(shí)驗(yàn)是在私有鏈上進(jìn)行的,因此提交時(shí)間會(huì)與實(shí)際的有明顯區(qū)別。
8 結(jié)論
作者對(duì)影響區(qū)塊鏈提交時(shí)間的因素進(jìn)行了詳細(xì)的分析,并且提出了明確的限制這種消極影響的中止機(jī)制。發(fā)現(xiàn)網(wǎng)絡(luò)重新排序?qū)μ峤粫r(shí)間造成的明顯影響,且這種影響甚至能抵消交易手續(xù)費(fèi)和gas price造成的影響。另外以太坊應(yīng)對(duì)DoS攻擊所采取的措施對(duì)電子合約的創(chuàng)建也有很大的影響。
未來,作者將會(huì)研究可用性問題是如何影響以太坊中越來越重要的智能合約的執(zhí)行。
心得體會(huì)
作者先對(duì)比特幣和以太坊這兩種當(dāng)前主流的區(qū)塊鏈系統(tǒng)進(jìn)行簡單的介紹,并從這兩者的具體運(yùn)行機(jī)制去探討目前區(qū)塊鏈系統(tǒng)所常見的一個(gè)問題,就是交易的提交需要消耗大量時(shí)間,且每筆交易都只能被概率性地保證成功實(shí)施。
在比特幣系統(tǒng)中,影響交易提交時(shí)間的因素有一下幾點(diǎn):
- 手續(xù)費(fèi)的高低。
- 交易的有序性。
- 每筆交易所設(shè)置的鎖定時(shí)間。
- 網(wǎng)絡(luò)問題。
對(duì)于以太坊,作者探討了gas price,gas limit和網(wǎng)絡(luò)對(duì)于提交時(shí)間的影響:
-
gas price對(duì)于提交時(shí)間的影響有限,超過一定值后幾乎不產(chǎn)任何影響。 -
gas limit與提交時(shí)間并沒有很大的聯(lián)系。 - 由于每筆交易的有序性要求,網(wǎng)絡(luò)延遲容易造成交易出現(xiàn)亂序,因此導(dǎo)致提交時(shí)間的增加。
同時(shí),作者對(duì)gas limit的作用也做出了研究,gas limit主要用于防止DDoS攻擊,但是太小的gas limit也容易造成一些合約無法正常工作。
最后作者也提出了可用于以太坊系統(tǒng)中中止交易的機(jī)制,用于改善客戶端軟件和電子錢包。
總結(jié)以上發(fā)現(xiàn),當(dāng)前區(qū)塊鏈技術(shù)可應(yīng)用于許多場景,但是由于其現(xiàn)有機(jī)制的問題導(dǎo)致了數(shù)據(jù)提交的時(shí)候,需要耗費(fèi)一定的時(shí)間,且提交的成功與否具有不確定性,造成了一定不便。因此可將如何縮短數(shù)據(jù)提交所需要的時(shí)間,以及提高成功提交的概率作為區(qū)塊鏈技術(shù)研究的主要方向。