發(fā)布時(shí)間:2020-03-26所屬分類(lèi):計(jì)算機(jī)職稱論文瀏覽:1次
摘 要: 摘要比特幣是中本聰(Nakamoto)于2008年提出的數(shù)字貨幣,它具有去中心化、跨國(guó)界和發(fā)行總量固定等特性,現(xiàn)在已經(jīng)成為使用最廣泛的數(shù)字貨幣之一.然而,比特幣設(shè)計(jì)初期的一些人為限制,導(dǎo)致現(xiàn)有網(wǎng)絡(luò)處理交易的速率十分有限,最近交易處理能力已經(jīng)接近上限,交易
摘要比特幣是中本聰(Nakamoto)于2008年提出的數(shù)字貨幣,它具有去中心化、跨國(guó)界和發(fā)行總量固定等特性,現(xiàn)在已經(jīng)成為使用最廣泛的數(shù)字貨幣之一.然而,比特幣設(shè)計(jì)初期的一些人為限制,導(dǎo)致現(xiàn)有網(wǎng)絡(luò)處理交易的速率十分有限,最近交易處理能力已經(jīng)接近上限,交易確認(rèn)時(shí)間顯著增加.這不僅嚴(yán)重影響比特幣的使用體驗(yàn),進(jìn)而限制使用范圍,而且對(duì)比特幣的設(shè)計(jì)提出更高的要求.針對(duì)比特幣所面臨的交易處理性能挑戰(zhàn),以提升區(qū)塊鏈容量為目標(biāo)對(duì)比特幣展開(kāi)深入研究.首先,分析比特幣當(dāng)前網(wǎng)絡(luò)狀態(tài),根據(jù)比特幣交易數(shù)據(jù),統(tǒng)計(jì)交易延遲情況;其次,針對(duì)鏈上擴(kuò)容方案,分析可行性,研究擴(kuò)容效果%再次,針對(duì)鏈下擴(kuò)容方案,分析作用原理,研究擴(kuò)容效果;最后,分析鏈上/鏈下擴(kuò)容方案優(yōu)缺點(diǎn),提出適應(yīng)社區(qū)的可行的比特幣擴(kuò)容路線方案.最新比特幣擴(kuò)容的進(jìn)展進(jìn)一步證明了我們結(jié)論的正確性.
關(guān)鍵詞比特幣;區(qū)塊鏈;擴(kuò)容;見(jiàn)證隔離;閃電網(wǎng)絡(luò)
比特幣是一種去中心化的數(shù)字貨幣,最早由中本聰(Nakamoto)于2008年10月提出[1],其目的是避免傳統(tǒng)金融體系中存在中心機(jī)構(gòu)可能帶來(lái)的風(fēng)險(xiǎn).和傳統(tǒng)電子貨幣相比比比特幣具有系統(tǒng)健壯性強(qiáng)、使用便捷和安全性高等優(yōu)勢(shì).自從被推出以來(lái),比特幣正受到越來(lái)越多的關(guān)注[2].隨著比特幣的廣泛使用,比特幣設(shè)計(jì)之初的一些缺陷逐漸顯露出來(lái),其中非常嚴(yán)重的缺陷就是區(qū)塊鏈容量不足.
從2012年開(kāi)始,平均區(qū)塊大小不斷增加.在2016年年中左右,區(qū)塊容量已經(jīng)接近1MB上限[].這意味著一些交易將不能及時(shí)地被收集到區(qū)塊中,的&頻次繼續(xù)增加而區(qū)塊容量保持不變,那么一些交易可能永遠(yuǎn)也不能人塊.因此,這一問(wèn)題將會(huì)嚴(yán)重影響比特幣的使用體驗(yàn).
文獻(xiàn)[)]針對(duì)研究交易延遲問(wèn)題,分析2016年5月交易人塊情況,結(jié)果表明:43%的交易在發(fā)布超過(guò)1h后仍未進(jìn)人區(qū)塊鏈.文獻(xiàn)[5]列舉出比特幣等密碼貨幣的研究遠(yuǎn)景和面臨的各種挑戰(zhàn),其中之一就是可擴(kuò)展性問(wèn)題.由于改變比特幣規(guī)則需要引人分叉,同時(shí)造成各方面的影響,因此比特幣擴(kuò)容是一個(gè)非常復(fù)雜的問(wèn)題.
文獻(xiàn)[6]指出,將交易雜湊值代替交易數(shù)據(jù)可以提升網(wǎng)絡(luò)處理交易的能力.同時(shí),該文獻(xiàn)主張以修改區(qū)塊鏈本身結(jié)構(gòu)的方式達(dá)到擴(kuò)容的目的.文獻(xiàn)[7]研究區(qū)塊在網(wǎng)絡(luò)中的傳播情況,指出過(guò)大區(qū)塊需要更長(zhǎng)的時(shí)間傳播至整個(gè)網(wǎng)絡(luò),傳播延遲將不再遠(yuǎn)小于區(qū)塊間隔,這會(huì)影響網(wǎng)絡(luò)的共識(shí)機(jī)制,造成高孤塊率等問(wèn)題.同時(shí)作者指出當(dāng)前網(wǎng)絡(luò)未被充分利用,可以改進(jìn)比特幣協(xié)議以提高網(wǎng)絡(luò)利用效率.文獻(xiàn)[8]引人定量框架分析基于工作量證明的區(qū)塊鏈安全和性能,并分析了區(qū)塊參數(shù)改變對(duì)于比特幣系統(tǒng)安全性的影響.作者得出結(jié)論:在區(qū)塊大小是1MB的前提下,將區(qū)塊間隔降低至1min不會(huì)顯著影響比特幣的安全性&
為解決比特幣區(qū)塊鏈容量不足帶來(lái)的問(wèn)題,比特幣社區(qū)已經(jīng)提出多個(gè)解決方案,下面依次介紹代表性方案.
2015年6月,Andresen在比特幣改進(jìn)建議(bitcoinimprovementprotocol)BIP101中提出區(qū)塊容量限制在未來(lái)一段時(shí)間內(nèi)以可預(yù)測(cè)方式增大[]%同月,Garzik在BIP102中提出區(qū)塊容量上限一次性從1MB增長(zhǎng)到2MB[10];同期,相關(guān)人員提出很多類(lèi)似的直接提高區(qū)塊鏈上限的改進(jìn)建議[1112].由于交易數(shù)目與區(qū)塊大小成正比,因此通過(guò)增大單個(gè)區(qū)塊的大小,可以使得更多的交易被容納.
2015年12月,Lombrozo,Lau和Wuille在BIP141中提出的見(jiàn)證隔離(segregatedwitness)技術(shù)也對(duì)區(qū)塊鏈擴(kuò)容有幫助[13].當(dāng)前的比特幣交易中,交易數(shù)據(jù)與簽名數(shù)據(jù)保存于同一數(shù)據(jù)結(jié)構(gòu)中.見(jiàn)證隔離則將簽名數(shù)據(jù)從交易中分離出來(lái),組成新的結(jié)構(gòu)另行保存.由于舊節(jié)點(diǎn)不能解析這些新的數(shù)據(jù),因此他們認(rèn)為區(qū)塊大小要小于新節(jié)點(diǎn),這意味著區(qū)塊實(shí)際大小可以超過(guò)1MB.
2015年,Poon和Dryja提出閃電網(wǎng)絡(luò)方案,將頻繁的小額支付利用事先建立的通道離鏈完成[14].這種方案可以避免大量小額交易占用區(qū)塊鏈容量%文獻(xiàn)[15]提出了建立雙向微支付通道的協(xié)議,允許用戶建立離線通道,實(shí)現(xiàn)無(wú)延遲的實(shí)時(shí)支付,同時(shí)保證了端到端的安全性;文獻(xiàn)[16]對(duì)上述方案作了改進(jìn),提出了新的支付通道Sprites.利用狀態(tài)通道,Sprites將閃電網(wǎng)絡(luò)在最壞情況下的抵押開(kāi)銷(xiāo)復(fù)雜度大為降低,由〇(M)變?yōu)?(+W,其中分別代表通道個(gè)數(shù)和鏈上交易確認(rèn)時(shí)間;文獻(xiàn)[17]引人Teechan,它是一種全雙工的支付通道框架,可直接部署在現(xiàn)有區(qū)塊鏈上,比閃電網(wǎng)絡(luò)具有更高的交易容量和更低的交易延遲.但是,它需要利用具備可信執(zhí)行環(huán)境的安全硬件,例如IntelSGX,因此會(huì)額外增加開(kāi)銷(xiāo);Teechan的升級(jí)版Teechain實(shí)現(xiàn)了沿路徑支付,允許未直接建立連接的用戶交換資金[18].
可見(jiàn),針對(duì)區(qū)塊鏈容量不足的情況,社區(qū)和學(xué)術(shù)界都已經(jīng)提出多個(gè)擴(kuò)容方案.但是依然存在區(qū)塊鏈統(tǒng)計(jì)數(shù)據(jù)直、擴(kuò)案可性、見(jiàn)證隔離對(duì)區(qū)塊容量的貢獻(xiàn)不明確和社區(qū)意見(jiàn)不統(tǒng)一題
本文主要貢獻(xiàn)有3個(gè)方面!
1)針對(duì)區(qū)塊容量達(dá)到上限的問(wèn)題,分析當(dāng)前比特幣網(wǎng)絡(luò)中交易確認(rèn)狀態(tài).通過(guò)抓取2017年1#3月的比特幣交易數(shù)據(jù),統(tǒng)計(jì)分析交易確認(rèn)理論時(shí)間和實(shí)際時(shí)間的差別.已經(jīng)進(jìn)人區(qū)塊的交易中,有16%等待時(shí)間超過(guò)1h,甚至有1[等待時(shí)間超過(guò)1d.另夕卜,待確認(rèn)交易(unconfirmedtransaction)池不斷擴(kuò)大,一度超過(guò)110MB.
2)針對(duì)鏈上擴(kuò)容方案爭(zhēng)論,分析方案的優(yōu)點(diǎn)和缺點(diǎn).鏈上擴(kuò)容提倡增大區(qū)塊容量上限,此方案對(duì)改善交易延遲效果顯著,將區(qū)塊容量上限設(shè)定為2MB,即可解決當(dāng)下交易延遲問(wèn)題.但考慮到當(dāng)前網(wǎng)絡(luò)情況,為避免過(guò)高的孤塊產(chǎn)生率,最大區(qū)塊不應(yīng)超過(guò)4MB.鏈上擴(kuò)容優(yōu)勢(shì)在于見(jiàn)效快,但是無(wú)限擴(kuò)容易造成中心化.
3)針對(duì)鏈下擴(kuò)容方案的不確定性,分析鏈下擴(kuò)容效果.鏈下擴(kuò)容方案也附帶有鏈上擴(kuò)容效果,基于當(dāng)前交易比例的統(tǒng)計(jì)顯示,見(jiàn)證隔離最多可以將區(qū)塊容量提升83%.基于見(jiàn)證隔離的閃電網(wǎng)絡(luò)技術(shù),完全部署可以極大提高交易處理能力,縮短確認(rèn)時(shí)間.鏈下擴(kuò)容可以達(dá)到近乎無(wú)限的交易處理能力,但網(wǎng)絡(luò)建立需要時(shí)間.
1背景知識(shí)
本節(jié)簡(jiǎn)要介紹比特幣的相關(guān)背景知識(shí),包括比特幣的交易、區(qū)塊鏈形式和工作量證明機(jī)制等,詳細(xì)的介紹可以參考文獻(xiàn)[19-20].
1)比特幣交易.比特幣是一種基于交易的數(shù)字貨幣,一■切彳了為均通過(guò)父易完成.每一■項(xiàng)父易均有至少一個(gè)輸人和至少一個(gè)輸出.每一個(gè)交易指向另一個(gè)交易的輸出,用于表明資金的來(lái)源,僅當(dāng)交易被正確簽名之后,驗(yàn)證方可通過(guò).交易可以包含多個(gè)輸人和多個(gè)輸出,從而起到拆分與合并資金的功能.
2)比特幣腳本.交易輸出中存在scriptPubKey腳本,在標(biāo)準(zhǔn)P2PKH交易中,scriptPubKey包含收款人的公鑰雜湊值.交易輸人中存在scriptSig腳本,包含公鑰和簽名等信息.驗(yàn)證交易時(shí),依次運(yùn)行scriptSg腳本與前一交易中的scriptPubKey腳本,如果成功運(yùn)行并在桟頂設(shè)置true,即相當(dāng)于成功驗(yàn)證交易發(fā)起人的公鑰與簽名,那么證明交易發(fā)起人具備對(duì)應(yīng)輸出的使用權(quán)限,驗(yàn)證通過(guò)&1].在BIP16中,P2SH類(lèi)型的交易被引人.該類(lèi)型允許輸出中不指明收款人公鑰雜湊,并用一段腳本的雜湊替代.這種交易將復(fù)雜性從輸出腳本轉(zhuǎn)移到了輸人腳本,使得付款更加方便,利于多重簽名等交易普及&2].
3)比特幣賬本.基于交易的數(shù)字貨幣存在的最大問(wèn)題是雙花(double-spending),即支付者生成2筆交易,共用同一項(xiàng)輸出.解決辦法之一是維護(hù)一個(gè)任何人都可以訪問(wèn)的賬本,記錄所有歷史交易,使收款方可以查看一項(xiàng)輸出是否已被使用過(guò).比特幣使用梅克爾樹(shù)與區(qū)塊鏈構(gòu)建全局賬本.當(dāng)交易雙方需要交易快速完成時(shí),收款方會(huì)選擇在交易未進(jìn)人區(qū)塊鏈時(shí)即接受,這會(huì)帶來(lái)額外的雙花風(fēng)險(xiǎn)&3].只要攻擊者算力資源不超過(guò)全網(wǎng)算力的50%,此風(fēng)險(xiǎn)隨時(shí)間增長(zhǎng)呈指數(shù)級(jí)下降[1].
4)梅克爾樹(shù).梅克爾樹(shù)是一種二叉樹(shù),其葉子節(jié)點(diǎn)用于存放數(shù)據(jù),其他節(jié)點(diǎn)為2個(gè)子節(jié)點(diǎn)串聯(lián)的雜湊值.比特幣將交易雜湊值存放于梅克爾樹(shù)葉子節(jié)點(diǎn)中,任何一筆交易的變動(dòng)都將影響到梅克爾樹(shù)根的值.因此,只要保留梅克爾樹(shù)根的值,即可驗(yàn)證每一筆交易是否被篡改[19].
5)區(qū)塊鏈.每個(gè)區(qū)塊中包含一個(gè)梅克爾樹(shù)根,作為當(dāng)前區(qū)塊所有交易的指代.除此之外,區(qū)塊中還包含上一個(gè)區(qū)塊頭的雜湊值,作為此前區(qū)塊的指代.區(qū)塊依次相連形成區(qū)塊鏈,使用這種鏈狀結(jié)構(gòu),只要保存最后一■個(gè)區(qū)塊頭的雜湊值,就能保證整條區(qū)塊所有篡改[19]&比特幣頭下字段:version字段,表示當(dāng)前區(qū)塊版本號(hào),被解釋為比特向量,用于表明支持的特性;previousblockheaderHash字段,表示前一區(qū)塊頭的雜湊值,是所有歷史數(shù)據(jù)的指代;merklerootHash字段,表示梅克爾樹(shù)根,是區(qū)塊中所有交易的指代;time字段,表示區(qū)塊產(chǎn)生的時(shí)間,是Unix時(shí)間戳;nBits字段與nonce字段是工作量證明相關(guān)的字段&4].
6)工作量證明.作為一種去中心化的數(shù)字貨幣,比特幣區(qū)塊鏈的維護(hù)工作無(wú)法由中心化機(jī)構(gòu)完成.實(shí)際中區(qū)塊鏈由運(yùn)行于互聯(lián)網(wǎng)上的節(jié)點(diǎn)進(jìn)行維護(hù).在新區(qū)塊生成問(wèn)題上,所有節(jié)點(diǎn)需要達(dá)成共識(shí).比特幣采用的解決方案是工作量證明機(jī)制.所有節(jié)點(diǎn)利用算力解決一個(gè)難題,得到正確結(jié)果的節(jié)點(diǎn)有資格發(fā)布新的區(qū)塊.因此,難題應(yīng)該是難于求解和易于驗(yàn)證的.比特幣采用的難題為:改變區(qū)塊頭中的nonce字段(如果nonce字段遍歷完畢,那么礦工也可以改變coinbase交易中的coinbasescript字段,從而改變梅克爾根的值),計(jì)算區(qū)塊頭雜湊值,僅當(dāng)雜湊值低于某個(gè)目標(biāo)值時(shí),區(qū)塊合法,目標(biāo)值越低,難度越高.這樣,計(jì)算出合法區(qū)塊的節(jié)點(diǎn)即可證明自己已經(jīng)花費(fèi)足夠多的算力.目標(biāo)值保存在區(qū)塊頭的nBi+字段中,每經(jīng)過(guò)2016個(gè)(約2周#根據(jù)平隔重定目標(biāo)值,調(diào)整難題難度,以保證隔的穩(wěn)定.
相關(guān)期刊推薦:《計(jì)算機(jī)研究與發(fā)展》刊登內(nèi)容主要為計(jì)算機(jī)科學(xué)技術(shù)領(lǐng)域高水平的學(xué)術(shù)論文、最新科研成果和重大應(yīng)用成果。本刊優(yōu)先刊登國(guó)家基金項(xiàng)目(如國(guó)家自然科學(xué)基金項(xiàng)目、“八六三”、“九七三”等)、省部級(jí)基金項(xiàng)目等論文。本刊只接收中文稿,不受理英文稿。有投稿需求的作者,可以直接與期刊在線編輯聯(lián)系。