常 興 趙運磊
1(復(fù)旦大學(xué)軟件學(xué)院 上海 210203)2(復(fù)旦大學(xué)計算機科學(xué)技術(shù)學(xué)院上海市數(shù)據(jù)科學(xué)重點實驗室 上海 210203)
2008年末,有人用中本聰(Satoshi Nakamoto)的化名發(fā)表了一篇論文[1],介紹了一種在沒有可信任第三方參與的情況下,實現(xiàn)完全對等、安全的新型電子現(xiàn)金系統(tǒng),該系統(tǒng)稱為比特幣。比特幣這項技術(shù)組合了密碼學(xué)、工作證明和點對點網(wǎng)絡(luò)等技術(shù)[2],創(chuàng)新地提出了一種分布式時間戳服務(wù)器,可用于分布式系統(tǒng)中數(shù)據(jù)的有序存儲,這項技術(shù)在之后被稱為區(qū)塊鏈(Blockchain)。
在論文發(fā)表后的短短幾周,第一個版本的比特幣就已經(jīng)開發(fā)完成并發(fā)布,最開始僅僅由少數(shù)技術(shù)愛好者構(gòu)成的網(wǎng)絡(luò)來充當(dāng)?shù)V工處理交易,創(chuàng)始區(qū)塊(Genesis Block)得以被挖出(Mining)。直到今天,中本聰?shù)恼鎸嵣矸萑匀浑y以捉摸、無跡可尋,但他所創(chuàng)造的比特幣,在市場價格的激勵下,幾乎發(fā)生了天翻地覆的變化,強有力地引領(lǐng)了新技術(shù)變革浪潮的到來,讓人們進入了“機器信任”的時代。
比特幣可以被認為是第一個真正意義上實現(xiàn)了全球化流通的數(shù)字貨幣。在過去的幾年里,已經(jīng)從依靠少數(shù)技術(shù)愛好者支撐以存活,發(fā)展成為擁有全球規(guī)模的數(shù)字支付系統(tǒng),整個資產(chǎn)價值也超過了1 100億美元。比特幣成功的關(guān)鍵在于其去中心化(Decentralization)、匿名性(Anonymity)、不可篡改性(Non-tamper)等特點[3],實現(xiàn)了對社會信任機制的顛覆。是一個包容、開放(Openness)、無需許可(Permissionless)便可自由參與的全球化系統(tǒng)。在這里,用戶可以自由進出,也可以通過提供交易驗證與打包區(qū)塊,來獲得一定的系統(tǒng)獎勵。比特幣與傳統(tǒng)記賬機制所完全不同的是,在這里記賬不再由可信中心化實體來執(zhí)行,而是由網(wǎng)絡(luò)中所有參與者,通過在分布網(wǎng)絡(luò)中的協(xié)作來完成。需要特別指出的是,雖然系統(tǒng)中存在有一定量的惡意參與者,但這絲毫沒有影響到比特幣賬本的完整性、正確性與不可篡改性。
近年來,隨著比特幣市場熱度的不斷攀升[4],價格持續(xù)增長的同時,隨之而來的是交易量井噴式的爆發(fā)(圖1顯示了自2009年以來,比特幣網(wǎng)絡(luò)中每天確認的交易數(shù)量,不斷上升并趨近于飽和的現(xiàn)象[5])?,F(xiàn)階段,比特幣網(wǎng)絡(luò)的處理速度約為每秒7筆,遠不能夠滿足日常生活需求,更不用說適應(yīng)工業(yè)化發(fā)展的需要。與其他新技術(shù)從誕生到成熟所經(jīng)歷的過程一樣,比特幣還需要有一系列挑戰(zhàn)亟待解決[6],在本文中主要闡述、分析了比特幣的容量、吞吐量與可擴展性這一主要瓶頸的解決方案。
圖1 自2009年以來,比特幣網(wǎng)絡(luò)中每天的確認的交易量
比特幣每秒約7筆的處理速度,一直被社區(qū)用戶詬病,比特幣網(wǎng)絡(luò)交易擁堵的情況時有發(fā)生,更有甚者交易發(fā)出24小時后還沒有被打包確認,類似現(xiàn)象隨著比特幣價格的攀升以及區(qū)塊鏈市場用戶量的激增而愈演愈烈。
比特幣網(wǎng)絡(luò)的交易處理能力,受到了10分鐘平均出塊時間和1 MB區(qū)塊容量的限制。近年來比特幣不斷增加的關(guān)注度,使得區(qū)塊容量這一瓶頸完全暴露無疑,導(dǎo)致了過高的交易費用以及較長的交易處理延遲。需要說明的是,提高比特幣網(wǎng)絡(luò)的交易處理能力,需要對比特幣系統(tǒng)現(xiàn)有的架構(gòu)進行改進,這里的軟件更新過程不同于普通軟件升級方式,被稱為分叉,同時,分叉有兩種不同的類型。
(1) 硬分叉(Hard Fork) 硬分叉是比特幣規(guī)則的一種大的變動,區(qū)塊結(jié)構(gòu)可能會因此發(fā)生變化。分叉后的礦工,根據(jù)新規(guī)則所產(chǎn)生的區(qū)塊,在依據(jù)舊規(guī)則驗證區(qū)塊的節(jié)點下,被視為無效。所以在硬分叉時,所有按照舊規(guī)則工作的節(jié)點都需要升級它們的軟件版本。如果一組節(jié)點繼續(xù)使用舊軟件,而其他節(jié)點使用新軟件,則可能會發(fā)生區(qū)塊鏈被分裂為兩個同源鏈的現(xiàn)象。
就以太坊2016的硬分叉為例來說,在被黑客利用代碼漏洞攻擊發(fā)生盜幣事件后,DAO[7]社區(qū)希望用分叉的方式來找回這部分丟失的以太幣,但這與區(qū)塊鏈“去中心化”的愿景相違背。所以以太坊硬分叉派與以太坊經(jīng)典派產(chǎn)生了激烈的爭論,雙方始終沒有達成一致共識,導(dǎo)致各自在自己認為正確的鏈上進行挖礦。事件發(fā)展的最后是以太坊的分裂創(chuàng)建了以太坊(Ethereum)和以太坊經(jīng)典(Ethereum Classic)兩條同源鏈。對于比特幣而言,比特幣現(xiàn)金[8](Bitcoin Cash)是比特幣最大的硬分叉幣,并一度有傳聞稱其價格屬性最終將超過比特幣。
(2) 軟分叉(Soft Fork) 與硬分叉相比,軟分叉是在不影響區(qū)塊結(jié)構(gòu)的情況下,一種規(guī)則的微調(diào),它創(chuàng)建了被舊軟件識別為有效的區(qū)塊,即它是向后兼容的,軟分叉一般不會產(chǎn)生永久性分叉的鏈。隔離見證(Segregated Witness)就是軟分叉的一個例子。
硬分叉與軟分叉的區(qū)別示意圖如圖2所示。
圖2 硬分叉與軟分叉的區(qū)別示意圖
關(guān)于比特幣的擴容改進方案,代表不同利益集團的不同組織持有不同的態(tài)度,雖然在全球范圍內(nèi)舉辦了多場不同的技術(shù)高峰會議來討論具體的實施方案,并由此展開了激烈的討論,但仍然很難達成一個統(tǒng)一的共識。這場爭論也被稱為“比特幣未來的思想斗爭”,主要有三方面的提案相持不下:
(1) 以比特幣核心開發(fā)團隊(Bitcoin Core)為代表的軟分叉方式。團隊指出可以用隔離見證和閃電網(wǎng)絡(luò)(Lightning Network)的方法進行擴容,也就是說在不改變區(qū)塊容量1 MB限制的情況下,通過第二層閃電網(wǎng)絡(luò)來加速處理比特幣小額度、高頻次交易,從而達到提高用戶之間交易確認速度的目的。
(2) 以Gavin (Gavin Andresen,2014年之前比特幣首席開發(fā)者) 為代表的硬分叉方式。Gavin等主張比特幣區(qū)塊的容量限制應(yīng)當(dāng)用市場行為來確定,也就是說隨著比特幣參與者和使用者的不斷增多,區(qū)塊容量也需要隨之增大,這個行為和數(shù)值應(yīng)該由市場因素來決定。由于比特幣需要進行的是硬分叉,從字面意思來看的話,用戶更多會把這類型的分叉與以太坊的硬分叉類比,直接分成兩種幣,從而引起市場的恐慌。
值得一提的是,Gavin曾是比特幣核心開發(fā)團隊中的一員,并且素有 “中本聰接班人”之稱。在Gavin接手比特幣核心代碼后,中本聰逐漸銷聲匿跡,不在社區(qū)發(fā)聲。考慮到公平性,Gavin組建了維護比特幣核心代碼的Bitcoin Core團隊,但由于內(nèi)部意見的分歧,Gavin和其本人主張的比特幣硬分叉擴容方案被排斥在外。
(3) 在硬分叉和軟分叉爭論觀點不相上下時,有人提出更為折中的處理方法,即在利用閃電網(wǎng)絡(luò)的同時,增加主鏈區(qū)塊的容量限制(SegWit2X)。這種方法得到社區(qū)眾多人的支持,并認為是其能打破比特幣網(wǎng)絡(luò)長期存在的擴容僵局。在2016年2月舉辦的香港比特幣擴容圓桌會議上,Bitcoin Core團隊和中國礦工達成共識,在將主鏈提高到2 MB的同時利用閃電網(wǎng)絡(luò)來處理交易。
但在協(xié)議簽署不久,比特幣核心開發(fā)團隊Bitcoin Core便違反了所簽署的協(xié)定,拒絕執(zhí)行2 MB的擴容計劃,雙方再次陷入了不斷爭論的僵局。
在本節(jié)中,主要分析了現(xiàn)有的5種比特幣擴容技術(shù):支付通道、隔離見證、提高區(qū)塊容量限制、多重簽名、聚合簽名,并對它們的實現(xiàn)方式進行了簡要的闡述。
支付通道(Payment Channels)是運行在比特幣網(wǎng)絡(luò)上的二層結(jié)構(gòu),允許參與的雙方直接建立彼此間點對點的支付渠道。參與方可以安全地維護和更新彼此間私有賬本,這樣他們在通道內(nèi)的交易就不需要寫入?yún)^(qū)塊鏈。需要指出的是,交易過程中,支付通道的中間狀態(tài)也可以隨時寫入比特幣賬本。支付通道避免了直接在比特幣上進行交易,因此可以顯著提高容量、可擴張性、交易吞吐量。通道內(nèi)的交易處理速率僅受參與方的網(wǎng)絡(luò)帶寬限制,而不需要考慮比特幣網(wǎng)絡(luò)的擁堵情況。支付通道的另一個優(yōu)勢是它們不需要比特幣礦工的直接服務(wù),因此可以以極低的的交易費進行,可以經(jīng)濟地執(zhí)行比特幣用戶間的微額支付。
通道建立開始時,在此通道中的初始存款交易總金額必須置于比特幣網(wǎng)絡(luò)的托管中,這種擔(dān)保的出發(fā)點在于,如果發(fā)生支付糾紛或需要提取存款,當(dāng)前雙方同意的最新賬本狀態(tài)可以直接提交給區(qū)塊鏈,每一方都可以合理地進行資產(chǎn)訴求。通過支付通道,可以在不信任第三方機構(gòu)的情況下,保證參與節(jié)點的安全、瞬時交易,這對于比特幣網(wǎng)絡(luò)中的小額交易尤為有效。現(xiàn)有的支付通道主要是應(yīng)用比特幣中的多簽名(Multisig)與時間鎖定(Time Locks)機制來實現(xiàn)的。根據(jù)不同的技術(shù)指標與實現(xiàn)特性,現(xiàn)有的支付通道可以歸結(jié)為以下幾個版本:
(1) 雙向微型支付通道 雙向微型支付通道(Duplex Micropayment Channels),是由Christian Decker與 Roger Wattenhofer在文獻[9]中首先提出,主要利用了比特幣交易的時間鎖定機制(時間鎖定的交易可以在被包含于區(qū)塊中后,未來10天內(nèi)觸發(fā))。同時,比特幣改進建議書BIP 68[10]和BIP 112[11]中定義的腳本操作碼OP_CHECKSEQUENCEVERIFY將更有助于設(shè)計此類支付通道,保證瞬時支付而沒有任何交易確認延遲。
(2) 閃電網(wǎng)絡(luò) 閃電網(wǎng)絡(luò),是由Joseph Poon 與Thaddeus Dryja在文獻[12]中首次提出的,也是目前發(fā)展前景最好、影響力最大的支付通道。與雙向微型支付通道類似,允許參與的用戶執(zhí)行比特幣鏈下支付,但其實現(xiàn)方式不是利用時間間隔,而是依靠懲罰機制來促進用戶的誠實行為。如果一個節(jié)點廣播惡意交易,那么誠實的參與者就可以合法地索取相關(guān)閃電網(wǎng)絡(luò)內(nèi)的所有資金,這有力地保證了多個參與方,在公平、公正的情況下進行交易。閃電網(wǎng)絡(luò)的測試版本最早在2017年1月正式對外公布、開源,并在同年12月發(fā)布了標準版,由于篇幅限制,這里不對其實現(xiàn)的具體細節(jié)展開論述,有興趣的可以參考文獻[12]。
(3) 雷電網(wǎng)絡(luò) 雷電網(wǎng)絡(luò)[13](Raiden Network),是一項現(xiàn)階段正在開發(fā)的項目,旨在實現(xiàn)與閃電網(wǎng)絡(luò)相同的目標,但其原理是基于以太坊智能合約(Smart Contract)。根據(jù)有關(guān)數(shù)據(jù)的統(tǒng)計,使用雷電網(wǎng)絡(luò)的交易成本預(yù)期估計要低于現(xiàn)有以太坊區(qū)塊鏈7個數(shù)量級,這將為小額支付的蓬勃發(fā)展鋪平道路。同時,由于以太坊區(qū)塊鏈支持創(chuàng)建自定義類型的代幣(Token),因此,通過標準代幣生成協(xié)議所生成的代幣,雷電網(wǎng)絡(luò)將為任何代幣提供低成本的鏈下交易功能。
(4) 精靈網(wǎng)絡(luò) 精靈網(wǎng)絡(luò)(Sprites Network),是由Andrew Miller等在文獻[14]中提出的,是基于以太坊設(shè)計的支付通道。它的設(shè)計也受到了閃電網(wǎng)絡(luò)與雷電網(wǎng)絡(luò)的啟發(fā),但目標是盡量減少鏈下支付交易的抵押成本,將閃電網(wǎng)絡(luò)在最壞情況下抵押開銷的復(fù)雜度從O(1Δ)降到了O(1+Δ)。精靈網(wǎng)絡(luò)的優(yōu)勢有兩方面,一是減少了支付通道的抵押成本,二是支持部分資產(chǎn)的存入與取回,并在這個過程中用戶可以繼續(xù)操作而不需要中斷。
隔離見證,是比特幣的交易格式的軟分叉修正,在比特幣的改進建議書BIP141[15]“隔離見證-共識層(Segregated Witness-Consensus Layer)”中被提出,目的是一方面解決比特幣中存在的延展性攻擊[16-18](Malleability Attacks),另一方面也旨在緩解因區(qū)塊容量限制(Block Size Limit)而引起的容量、可擴展性、吞吐量問題,從而優(yōu)化比特幣交易的處理速度。
在隔離見證引入之前,交易中的每個發(fā)送者(Sender)數(shù)據(jù)都跟著解鎖它的見證數(shù)據(jù)[19](Witness Data),見證數(shù)據(jù)作為每個發(fā)送者數(shù)據(jù)的一部分嵌入到交易中,參與了交易的標識(Transaction ID)的計算。
隔離見證,簡單來說是從比特幣交易中分離出見證數(shù)據(jù)的區(qū)塊結(jié)構(gòu)改變。通過將比特幣交易見證數(shù)據(jù)從原始交易中移出,并作為單獨的結(jié)構(gòu)添加到區(qū)塊中,原始部分發(fā)送者和接收者的數(shù)據(jù),將繼續(xù)保存在原有有區(qū)塊的位置。
由于區(qū)塊的頭部,與改變位置的見證數(shù)據(jù)結(jié)構(gòu)無關(guān),這意味著見證數(shù)據(jù)將不會被區(qū)塊鏈做防篡改性保護,所以需要將見證數(shù)據(jù)重新添加進當(dāng)前區(qū)塊結(jié)構(gòu),以達到防止見證數(shù)據(jù)被任意篡改的目的。在這里,考慮到每個區(qū)塊的第一筆交易是Coinbase交易[20](用于設(shè)置礦工的賬戶地址,從而將成功挖礦的獎勵發(fā)送到礦工賬戶),可以把通過Merkle樹[21](Merkle Tree)處理過后的見證數(shù)據(jù),將其Merkle樹根(Merkle Tree Root)放進Coinbase交易中。當(dāng)見證數(shù)據(jù)被篡改時,首先改變了見證數(shù)據(jù)的Merkle樹根值,從而影響了Coinbase交易的標識,最終影響了整個區(qū)塊的哈希值(Hash),此時的區(qū)塊可能會因不通過區(qū)塊正確性檢驗而被放棄,保證了見證數(shù)據(jù)的不可篡改性。
在比特幣改進建議書BIP141中,引入了一個新的塊重(Block Weight)的概念,其大小可以通過以下公式計算:
BlockWeight=3×BaseSize+TotalSize
式中:BaseSize為區(qū)塊不包含見證數(shù)據(jù)的部分,這是未進行升級的節(jié)點看到的數(shù)據(jù);TotalSize為包含了所有字段的數(shù)據(jù)容量,這是升級后的節(jié)點看到的數(shù)據(jù)。在新的規(guī)定下,塊重不能超過4 MB,再此規(guī)則下,可以保證BaseSize不大于1 MB,即不包含見證數(shù)據(jù)的區(qū)塊容量不超過1 MB,與原有包含見證數(shù)據(jù)區(qū)塊容量不超過1 MB的舊規(guī)則相比,達到了擴容的目的。
按照最初設(shè)計,比特幣區(qū)塊容量限制最初受限于處理它所需的數(shù)據(jù)庫鎖(Database Locks)的數(shù)量(最多10 000個),這個限制大約是500~750 KB的連續(xù)字節(jié)。在2013年3月之前,這個設(shè)計一直被人遺忘,沒有引起足夠的注意。直到2010年,中本聰秘密地在兩個代碼提交[22-23]中,為比特幣引入了1 MB區(qū)塊容量的限制。之后,比特幣一直以區(qū)塊1 MB容量限制作為行業(yè)標準。
2013年3月,原來的數(shù)據(jù)庫鎖的限制被意外發(fā)現(xiàn),比特幣的核心版本v0.8.0未能執(zhí)行這項限制,導(dǎo)致了升級的節(jié)點有被比特幣網(wǎng)絡(luò)剔除的危機。在解決危機之后,由于很少人關(guān)注原有數(shù)據(jù)庫鎖限制,所以當(dāng)時一致認為要硬分叉限制刪除。移除限制的硬分叉在2013年5月成功實施,從此區(qū)塊1 MB容量的限制第一次成為比特幣區(qū)塊容量的首要限制因素。
這個限制在2017年之前沒有再更改,但隨著比特幣的普及率越來越高,以及比特幣市場價格的持續(xù)攀升,每次市場受到外界因素擾動,交易量隨之驟然變化,導(dǎo)致發(fā)出的交易遲遲得不到確認(自2016年至今,比特幣網(wǎng)絡(luò)中每天未確認交易數(shù)量的變化情況,如圖3所示),交易延遲愈演愈烈。
圖3 自2016年至今,比特幣網(wǎng)絡(luò)中每天未確認的交易數(shù)量
是否增加區(qū)塊容量的限額引起了激烈的爭論。同時,為防止比特幣暫時或永久分裂成多條同源鏈,基金會希望整個比特幣社區(qū)對提高區(qū)塊容量限制的硬分叉達成共識。但這個期待的共識一直沒能夠達到,于是比特幣的第一個分叉幣比特幣現(xiàn)金(Bitcoin Cash)橫空出世,后來人們逐漸意識到潛藏在分叉幣背后誘人的經(jīng)濟利益,于是不同的團隊開始以各種宣稱的改進,對比特幣進行惡意的分叉。本文總結(jié)了5種目前發(fā)展情況良好的分叉幣與比特幣進行比較,結(jié)果如表1所示。
表1比特幣分叉幣與比特幣的比較
幣種BTCBCHBTGBCDSBTCLBTC分叉日期2017/08/012017/10/252017/11/242017/12/172017/12/23發(fā)行總量2 100萬2 100萬2 100萬21 000萬2 121萬2 100萬挖礦算法SHA256SHA256EquihashSHA256SHA256POS區(qū)塊大小1 MB8 MB1 MB8 MB8 MB2 MB隔離見證支持不支持支持支持支持支持
多重簽名(Multi-Signature),是n指個簽名參與者P1,P2,…,Pn利用他們所對應(yīng)的私鑰SK1,SK2,…,SKn,合作對消息M進行簽名,從而n個用戶合作生成1個消息的簽名σ,這一過程可以表述為σ=Multi_Sig(M,SK1,SK2,…,SKn)。當(dāng)進行多重簽名σ正確性驗證時,需要n個用戶的公鑰(PK1,PK2,…,PKn)共同參與,這一過程可以表述為TRUE/FALSE=Multi_Verify(σ,PK1,…,PK2,PKn)。
比特幣交易可以看作是由1個或n個發(fā)送者(Sender)向1個或m個接收者(Receiver)的轉(zhuǎn)賬。同時,每個發(fā)送者為了聲明對轉(zhuǎn)賬資金(UTXO)的所有權(quán),需要提供交易的數(shù)字簽名來進行認證。如果一筆交易有n個發(fā)送者參與交易,那么就會有n個不同發(fā)送者所對應(yīng)的簽名需要附加在交易中,在打包交易生成區(qū)塊過程中供比特幣礦工(Miner)進行交易合法性驗證。需要指出的是,在比特幣網(wǎng)絡(luò)中,85%以上的交易是由多個發(fā)送者構(gòu)成的,所以這里還有較大的可優(yōu)化程度。
比特幣基金會的核心開發(fā)者Gregory Maxwell等希望用多重簽名的方式來提高1 MB區(qū)塊的利用率。鑒于ECDSA構(gòu)造多重簽名的困難性,他們采用Schnorr簽名[24]的簽名可加性這一先天多重簽名特性進行改進。這一成果發(fā)表在文獻[25]中,下面對其多重簽名的技術(shù)細節(jié)進行簡單的描述。
(1) 密鑰生成算法(Key Generation) 每個用戶Pi隨機生成一個私鑰SKi←Zp并計算其所對應(yīng)的公鑰PKi=gSki。
之后,簽名者隨機選擇ri←Zp并計算Ri=gri后發(fā)送給其他簽名者。當(dāng)收到了其他簽名者發(fā)送的R2,R3,…,Rn后,計算:
s1=r1+ca1x1modp
在應(yīng)用了多重簽名來進行改造之后,根據(jù)他們的實驗統(tǒng)計,應(yīng)用多重簽名前后區(qū)塊鏈體積的比較如圖4所示,將會節(jié)約到的區(qū)塊體積,這在“寸土寸金”的區(qū)塊中顯得極為難能可貴,可以較為有效地提高交易吞吐量,節(jié)約比特幣網(wǎng)絡(luò)帶寬資源。
圖4 應(yīng)用多重簽名前后區(qū)塊鏈體積的比較
聚合簽名(Aggregate Signature),是指n個簽名參與者P1,P2,…,Pn分別利用他們的私鑰SK1,SK2,…,SKn,對每個簽名參與者所對應(yīng)的消息M1,M2,…,Mn進行簽名,從而n個用戶對n個消息生成1個消息的簽名σ,這一過程可以表述為σ=A_Sig(M1,M2,…,Mn,SK1,SK2,…,SKn)。在進行多重簽名正確性驗證時,需要n個用戶的公鑰PK1,PK2,…,PKn共同參與,這一過程可以表述為TRUE/FALSE=A_Verify(σ,PK1,PK2,…,PKn,M1,M2,…,Mn)。
比特幣區(qū)塊中的主要數(shù)據(jù)是交易,且隨著比特幣的發(fā)展,每個區(qū)塊中的交易數(shù)不斷增長并趨近于飽和,現(xiàn)階段每個區(qū)塊大概有1 600筆交易(自2009年至今,區(qū)塊中所包含交易數(shù)的變化情況,如圖5所示),每筆交易中含有1個或個簽名,來證明交易資金的所有權(quán)。如果利用多重簽名技術(shù)來改進交易,每筆交易中將會僅存1個簽名,接下來的優(yōu)化將要從聚合簽名的角度來考慮。
圖5 自2009年至今,區(qū)塊中所含交易數(shù)量的變化
文獻[26]運用聚合簽名的方式來進一步壓縮區(qū)塊體積,提高比特幣區(qū)塊的利用率。需要指出的是,簽名聚合的環(huán)節(jié)應(yīng)當(dāng)出現(xiàn)在礦工打包交易生成區(qū)塊的過程中,而礦工所處理的交易數(shù)量較多,同時都是匿名化地來自于全球不同節(jié)點,所以考慮到比特幣的實際應(yīng)用場景,聚合簽名一定是需要有非交互的特性。
文獻[26]的工作,在考慮到Schnorr簽名的不可聚合后(存在有具體的攻擊方式,本文中進行了闡述),基于簽名[17]構(gòu)造了聚合簽名,相關(guān)工作已經(jīng)公布在文獻[26]中,在這里對其聚合簽名的技術(shù)細節(jié)進行簡單的說明。
(2) 簽名算法(Signing) 對于需要簽名的消息Mi,簽名用戶Pi隨機選擇ri←Zq,并計算Ai=riP,di=H(A),ei=H(PKi,Mi),zi=ridi-eiSKimodq。然后,返回用戶Pi關(guān)于消息Mi的簽名σi=(di,zi)。
(3) 簽名驗證算法(Verification) 在進行簽名聚合前,需要對每一個需要聚合的簽名σi進行驗證,否則任意一個簽名有問題時,聚合后的簽名將不能通過聚合簽名驗證。
(4) 簽名聚合算法(Aggregation) 在每個簽名組{PKi,Mi,σi}i∈{1,2,…,n}通過驗證后,才可以將簽名聚合,當(dāng)運用到比特幣的時候,這個過程一般由礦工來進行操作。
根據(jù)統(tǒng)計,如果利用聚合簽名技術(shù)來對比特幣進行優(yōu)化,那么簽名的存儲體積將會減少50%,同時因在一個區(qū)塊內(nèi)僅存在一個聚合簽名,那么區(qū)塊驗證的時間將會減少80%。同時,比特幣改進后的交易標識,需要有新不包含簽名計算方式,即由TxID=HASH(Transaction[σ1,σ2,…,σn])變?yōu)門xID=HASH(Transaction),這將有效地抵抗交易延展性攻擊[27]。因原有交易中的多個簽名,由1個聚合簽名來代替,那么區(qū)塊中存放簽名的位置將會改變,這與3.2節(jié)中隔離見證的概念不謀而合,所以聚合簽名還兼顧了隔離見證的優(yōu)勢,進一步提高吞吐量,節(jié)約比特幣網(wǎng)絡(luò)帶寬資源。
將僅僅取決于簽名者P1。從這點出發(fā),作惡者甚至可以給整個系統(tǒng)帶來毀滅性攻擊。
目前比特幣每秒7筆的處理速度,遠遠不能滿足公眾預(yù)期以及工業(yè)生產(chǎn)需要。如果長期處于這樣的“亞健康”發(fā)展事態(tài),一直沒有可靠的技術(shù)從根本上解決問題,那么可能會讓一直支持比特幣的社區(qū)與投資者們失去信心。同時,比特幣作為區(qū)塊鏈技術(shù)的鼻祖,在區(qū)塊容量、可擴展性、吞吐量遲遲無法優(yōu)化的情形下,甚至?xí)鸸妼^(qū)塊鏈技術(shù)所帶來的顛覆式發(fā)展的質(zhì)疑。
本文就現(xiàn)階段討論比較激烈且具有代表性的5種擴容技術(shù):支付通道、隔離見證、提高區(qū)塊容量限制、多重簽名與聚合簽名進行了總結(jié),并簡要地對它們的實現(xiàn)方式、原理進行了說明。
首先就支付通道來看,這樣的“小額交易鏈下處理”的方式,確實是在源頭上遏制了交易擁堵問題的發(fā)生,但從區(qū)塊鏈技術(shù)定義上來講似乎背離了比特幣“一切可追溯”的設(shè)計初衷,并且在實際應(yīng)用中很難來衡量小額交易與大額交易在比特幣價值層面的區(qū)別。
與支付通道“從交易源頭來遏制”不同的是,隔離見證與提高區(qū)塊容量限制,可以被看作是“緩兵之計”??梢郧宄卣J識到,利用了隔離見證之后,整個區(qū)塊的數(shù)據(jù)體積并沒有減少,數(shù)據(jù)是依然全部存在鏈上。其所帶來的比特幣“區(qū)塊容量上的提升”,是通過簡單的見證數(shù)據(jù)位置移動,輔助區(qū)塊體積計算方式的改變來實現(xiàn)的。
提高區(qū)塊容量限制,可以說是最為直接、暴力的解決方案,但從比特幣網(wǎng)絡(luò)數(shù)據(jù)覆蓋率上,很難來衡量區(qū)塊容量簡單增大后,對比特幣實時網(wǎng)絡(luò)傳播速率的影響[28]。例如,原有1 MB的區(qū)塊需要10分鐘便可到達全網(wǎng)95%以上的節(jié)點,但8 MB的區(qū)塊可能在10分鐘內(nèi)只能到達全網(wǎng)的節(jié)點。而且,容量增大的方式可能暫時滿足現(xiàn)有對比特幣容量、可擴展性與吞吐量的需求,但不排除未來再一次無法滿足要求時,繼續(xù)進行硬分叉調(diào)整的可能性。
多重簽名與聚合簽名,是從交易本身數(shù)據(jù)結(jié)構(gòu)出發(fā),在不影響比特幣安全性與交易完整性的基礎(chǔ)上,依托密碼學(xué)技術(shù)將見證數(shù)據(jù)盡可能的體積壓縮,由此帶來交易處理與區(qū)塊的驗證速度上提升。同時,聚合簽名還與隔離見證有著異曲同工之處,都可以解決交易的延展性攻擊。并且多重簽名、聚合簽名可以與其他的擴容方式“互無妨礙”地結(jié)合使用,是未來一段時間內(nèi)價值較高的擴容方案。
總而言之,引領(lǐng)從“機器不可靠”發(fā)展到了“機器信任”時代的比特幣,是區(qū)塊鏈技術(shù)的起點與源泉,同時也需要指出,每一門新技術(shù)的發(fā)展初期,都會面臨著種種挫折與挑戰(zhàn),但從這個殘酷過程中生存下來的,才是真正有價值的。關(guān)于區(qū)塊鏈的未來,尚需拭目以待。