常 興 趙運(yùn)磊
1(復(fù)旦大學(xué)軟件學(xué)院 上海 210203)2(復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院上海市數(shù)據(jù)科學(xué)重點(diǎn)實(shí)驗(yàn)室 上海 210203)
2008年末,有人用中本聰(Satoshi Nakamoto)的化名發(fā)表了一篇論文[1],介紹了一種在沒(méi)有可信任第三方參與的情況下,實(shí)現(xiàn)完全對(duì)等、安全的新型電子現(xiàn)金系統(tǒng),該系統(tǒng)稱為比特幣。比特幣這項(xiàng)技術(shù)組合了密碼學(xué)、工作證明和點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)等技術(shù)[2],創(chuàng)新地提出了一種分布式時(shí)間戳服務(wù)器,可用于分布式系統(tǒng)中數(shù)據(jù)的有序存儲(chǔ),這項(xiàng)技術(shù)在之后被稱為區(qū)塊鏈(Blockchain)。
在論文發(fā)表后的短短幾周,第一個(gè)版本的比特幣就已經(jīng)開發(fā)完成并發(fā)布,最開始僅僅由少數(shù)技術(shù)愛好者構(gòu)成的網(wǎng)絡(luò)來(lái)充當(dāng)?shù)V工處理交易,創(chuàng)始區(qū)塊(Genesis Block)得以被挖出(Mining)。直到今天,中本聰?shù)恼鎸?shí)身份仍然難以捉摸、無(wú)跡可尋,但他所創(chuàng)造的比特幣,在市場(chǎng)價(jià)格的激勵(lì)下,幾乎發(fā)生了天翻地覆的變化,強(qiáng)有力地引領(lǐng)了新技術(shù)變革浪潮的到來(lái),讓人們進(jìn)入了“機(jī)器信任”的時(shí)代。
比特幣可以被認(rèn)為是第一個(gè)真正意義上實(shí)現(xiàn)了全球化流通的數(shù)字貨幣。在過(guò)去的幾年里,已經(jīng)從依靠少數(shù)技術(shù)愛好者支撐以存活,發(fā)展成為擁有全球規(guī)模的數(shù)字支付系統(tǒng),整個(gè)資產(chǎn)價(jià)值也超過(guò)了1 100億美元。比特幣成功的關(guān)鍵在于其去中心化(Decentralization)、匿名性(Anonymity)、不可篡改性(Non-tamper)等特點(diǎn)[3],實(shí)現(xiàn)了對(duì)社會(huì)信任機(jī)制的顛覆。是一個(gè)包容、開放(Openness)、無(wú)需許可(Permissionless)便可自由參與的全球化系統(tǒng)。在這里,用戶可以自由進(jìn)出,也可以通過(guò)提供交易驗(yàn)證與打包區(qū)塊,來(lái)獲得一定的系統(tǒng)獎(jiǎng)勵(lì)。比特幣與傳統(tǒng)記賬機(jī)制所完全不同的是,在這里記賬不再由可信中心化實(shí)體來(lái)執(zhí)行,而是由網(wǎng)絡(luò)中所有參與者,通過(guò)在分布網(wǎng)絡(luò)中的協(xié)作來(lái)完成。需要特別指出的是,雖然系統(tǒng)中存在有一定量的惡意參與者,但這絲毫沒(méi)有影響到比特幣賬本的完整性、正確性與不可篡改性。
近年來(lái),隨著比特幣市場(chǎng)熱度的不斷攀升[4],價(jià)格持續(xù)增長(zhǎng)的同時(shí),隨之而來(lái)的是交易量井噴式的爆發(fā)(圖1顯示了自2009年以來(lái),比特幣網(wǎng)絡(luò)中每天確認(rèn)的交易數(shù)量,不斷上升并趨近于飽和的現(xiàn)象[5])。現(xiàn)階段,比特幣網(wǎng)絡(luò)的處理速度約為每秒7筆,遠(yuǎn)不能夠滿足日常生活需求,更不用說(shuō)適應(yīng)工業(yè)化發(fā)展的需要。與其他新技術(shù)從誕生到成熟所經(jīng)歷的過(guò)程一樣,比特幣還需要有一系列挑戰(zhàn)亟待解決[6],在本文中主要闡述、分析了比特幣的容量、吞吐量與可擴(kuò)展性這一主要瓶頸的解決方案。

圖1 自2009年以來(lái),比特幣網(wǎng)絡(luò)中每天的確認(rèn)的交易量
比特幣每秒約7筆的處理速度,一直被社區(qū)用戶詬病,比特幣網(wǎng)絡(luò)交易擁堵的情況時(shí)有發(fā)生,更有甚者交易發(fā)出24小時(shí)后還沒(méi)有被打包確認(rèn),類似現(xiàn)象隨著比特幣價(jià)格的攀升以及區(qū)塊鏈?zhǔn)袌?chǎng)用戶量的激增而愈演愈烈。
比特幣網(wǎng)絡(luò)的交易處理能力,受到了10分鐘平均出塊時(shí)間和1 MB區(qū)塊容量的限制。近年來(lái)比特幣不斷增加的關(guān)注度,使得區(qū)塊容量這一瓶頸完全暴露無(wú)疑,導(dǎo)致了過(guò)高的交易費(fèi)用以及較長(zhǎng)的交易處理延遲。需要說(shuō)明的是,提高比特幣網(wǎng)絡(luò)的交易處理能力,需要對(duì)比特幣系統(tǒng)現(xiàn)有的架構(gòu)進(jìn)行改進(jìn),這里的軟件更新過(guò)程不同于普通軟件升級(jí)方式,被稱為分叉,同時(shí),分叉有兩種不同的類型。
(1) 硬分叉(Hard Fork) 硬分叉是比特幣規(guī)則的一種大的變動(dòng),區(qū)塊結(jié)構(gòu)可能會(huì)因此發(fā)生變化。分叉后的礦工,根據(jù)新規(guī)則所產(chǎn)生的區(qū)塊,在依據(jù)舊規(guī)則驗(yàn)證區(qū)塊的節(jié)點(diǎn)下,被視為無(wú)效。所以在硬分叉時(shí),所有按照舊規(guī)則工作的節(jié)點(diǎn)都需要升級(jí)它們的軟件版本。如果一組節(jié)點(diǎn)繼續(xù)使用舊軟件,而其他節(jié)點(diǎn)使用新軟件,則可能會(huì)發(fā)生區(qū)塊鏈被分裂為兩個(gè)同源鏈的現(xiàn)象。
就以太坊2016的硬分叉為例來(lái)說(shuō),在被黑客利用代碼漏洞攻擊發(fā)生盜幣事件后,DAO[7]社區(qū)希望用分叉的方式來(lái)找回這部分丟失的以太幣,但這與區(qū)塊鏈“去中心化”的愿景相違背。所以以太坊硬分叉派與以太坊經(jīng)典派產(chǎn)生了激烈的爭(zhēng)論,雙方始終沒(méi)有達(dá)成一致共識(shí),導(dǎo)致各自在自己認(rèn)為正確的鏈上進(jìn)行挖礦。事件發(fā)展的最后是以太坊的分裂創(chuàng)建了以太坊(Ethereum)和以太坊經(jīng)典(Ethereum Classic)兩條同源鏈。對(duì)于比特幣而言,比特幣現(xiàn)金[8](Bitcoin Cash)是比特幣最大的硬分叉幣,并一度有傳聞稱其價(jià)格屬性最終將超過(guò)比特幣。
(2) 軟分叉(Soft Fork) 與硬分叉相比,軟分叉是在不影響區(qū)塊結(jié)構(gòu)的情況下,一種規(guī)則的微調(diào),它創(chuàng)建了被舊軟件識(shí)別為有效的區(qū)塊,即它是向后兼容的,軟分叉一般不會(huì)產(chǎn)生永久性分叉的鏈。隔離見證(Segregated Witness)就是軟分叉的一個(gè)例子。
硬分叉與軟分叉的區(qū)別示意圖如圖2所示。

圖2 硬分叉與軟分叉的區(qū)別示意圖
關(guān)于比特幣的擴(kuò)容改進(jìn)方案,代表不同利益集團(tuán)的不同組織持有不同的態(tài)度,雖然在全球范圍內(nèi)舉辦了多場(chǎng)不同的技術(shù)高峰會(huì)議來(lái)討論具體的實(shí)施方案,并由此展開了激烈的討論,但仍然很難達(dá)成一個(gè)統(tǒng)一的共識(shí)。這場(chǎng)爭(zhēng)論也被稱為“比特幣未來(lái)的思想斗爭(zhēng)”,主要有三方面的提案相持不下:
(1) 以比特幣核心開發(fā)團(tuán)隊(duì)(Bitcoin Core)為代表的軟分叉方式。團(tuán)隊(duì)指出可以用隔離見證和閃電網(wǎng)絡(luò)(Lightning Network)的方法進(jìn)行擴(kuò)容,也就是說(shuō)在不改變區(qū)塊容量1 MB限制的情況下,通過(guò)第二層閃電網(wǎng)絡(luò)來(lái)加速處理比特幣小額度、高頻次交易,從而達(dá)到提高用戶之間交易確認(rèn)速度的目的。
(2) 以Gavin (Gavin Andresen,2014年之前比特幣首席開發(fā)者) 為代表的硬分叉方式。Gavin等主張比特幣區(qū)塊的容量限制應(yīng)當(dāng)用市場(chǎng)行為來(lái)確定,也就是說(shuō)隨著比特幣參與者和使用者的不斷增多,區(qū)塊容量也需要隨之增大,這個(gè)行為和數(shù)值應(yīng)該由市場(chǎng)因素來(lái)決定。由于比特幣需要進(jìn)行的是硬分叉,從字面意思來(lái)看的話,用戶更多會(huì)把這類型的分叉與以太坊的硬分叉類比,直接分成兩種幣,從而引起市場(chǎng)的恐慌。
值得一提的是,Gavin曾是比特幣核心開發(fā)團(tuán)隊(duì)中的一員,并且素有 “中本聰接班人”之稱。在Gavin接手比特幣核心代碼后,中本聰逐漸銷聲匿跡,不在社區(qū)發(fā)聲。考慮到公平性,Gavin組建了維護(hù)比特幣核心代碼的Bitcoin Core團(tuán)隊(duì),但由于內(nèi)部意見的分歧,Gavin和其本人主張的比特幣硬分叉擴(kuò)容方案被排斥在外。
(3) 在硬分叉和軟分叉爭(zhēng)論觀點(diǎn)不相上下時(shí),有人提出更為折中的處理方法,即在利用閃電網(wǎng)絡(luò)的同時(shí),增加主鏈區(qū)塊的容量限制(SegWit2X)。這種方法得到社區(qū)眾多人的支持,并認(rèn)為是其能打破比特幣網(wǎng)絡(luò)長(zhǎng)期存在的擴(kuò)容僵局。在2016年2月舉辦的香港比特幣擴(kuò)容圓桌會(huì)議上,Bitcoin Core團(tuán)隊(duì)和中國(guó)礦工達(dá)成共識(shí),在將主鏈提高到2 MB的同時(shí)利用閃電網(wǎng)絡(luò)來(lái)處理交易。
但在協(xié)議簽署不久,比特幣核心開發(fā)團(tuán)隊(duì)Bitcoin Core便違反了所簽署的協(xié)定,拒絕執(zhí)行2 MB的擴(kuò)容計(jì)劃,雙方再次陷入了不斷爭(zhēng)論的僵局。
在本節(jié)中,主要分析了現(xiàn)有的5種比特幣擴(kuò)容技術(shù):支付通道、隔離見證、提高區(qū)塊容量限制、多重簽名、聚合簽名,并對(duì)它們的實(shí)現(xiàn)方式進(jìn)行了簡(jiǎn)要的闡述。
支付通道(Payment Channels)是運(yùn)行在比特幣網(wǎng)絡(luò)上的二層結(jié)構(gòu),允許參與的雙方直接建立彼此間點(diǎn)對(duì)點(diǎn)的支付渠道。參與方可以安全地維護(hù)和更新彼此間私有賬本,這樣他們?cè)谕ǖ纼?nèi)的交易就不需要寫入?yún)^(qū)塊鏈。需要指出的是,交易過(guò)程中,支付通道的中間狀態(tài)也可以隨時(shí)寫入比特幣賬本。支付通道避免了直接在比特幣上進(jìn)行交易,因此可以顯著提高容量、可擴(kuò)張性、交易吞吐量。通道內(nèi)的交易處理速率僅受參與方的網(wǎng)絡(luò)帶寬限制,而不需要考慮比特幣網(wǎng)絡(luò)的擁堵情況。支付通道的另一個(gè)優(yōu)勢(shì)是它們不需要比特幣礦工的直接服務(wù),因此可以以極低的的交易費(fèi)進(jìn)行,可以經(jīng)濟(jì)地執(zhí)行比特幣用戶間的微額支付。
通道建立開始時(shí),在此通道中的初始存款交易總金額必須置于比特幣網(wǎng)絡(luò)的托管中,這種擔(dān)保的出發(fā)點(diǎn)在于,如果發(fā)生支付糾紛或需要提取存款,當(dāng)前雙方同意的最新賬本狀態(tài)可以直接提交給區(qū)塊鏈,每一方都可以合理地進(jìn)行資產(chǎn)訴求。通過(guò)支付通道,可以在不信任第三方機(jī)構(gòu)的情況下,保證參與節(jié)點(diǎn)的安全、瞬時(shí)交易,這對(duì)于比特幣網(wǎng)絡(luò)中的小額交易尤為有效。現(xiàn)有的支付通道主要是應(yīng)用比特幣中的多簽名(Multisig)與時(shí)間鎖定(Time Locks)機(jī)制來(lái)實(shí)現(xiàn)的。根據(jù)不同的技術(shù)指標(biāo)與實(shí)現(xiàn)特性,現(xiàn)有的支付通道可以歸結(jié)為以下幾個(gè)版本:
(1) 雙向微型支付通道 雙向微型支付通道(Duplex Micropayment Channels),是由Christian Decker與 Roger Wattenhofer在文獻(xiàn)[9]中首先提出,主要利用了比特幣交易的時(shí)間鎖定機(jī)制(時(shí)間鎖定的交易可以在被包含于區(qū)塊中后,未來(lái)10天內(nèi)觸發(fā))。同時(shí),比特幣改進(jìn)建議書BIP 68[10]和BIP 112[11]中定義的腳本操作碼OP_CHECKSEQUENCEVERIFY將更有助于設(shè)計(jì)此類支付通道,保證瞬時(shí)支付而沒(méi)有任何交易確認(rèn)延遲。
(2) 閃電網(wǎng)絡(luò) 閃電網(wǎng)絡(luò),是由Joseph Poon 與Thaddeus Dryja在文獻(xiàn)[12]中首次提出的,也是目前發(fā)展前景最好、影響力最大的支付通道。與雙向微型支付通道類似,允許參與的用戶執(zhí)行比特幣鏈下支付,但其實(shí)現(xiàn)方式不是利用時(shí)間間隔,而是依靠懲罰機(jī)制來(lái)促進(jìn)用戶的誠(chéng)實(shí)行為。如果一個(gè)節(jié)點(diǎn)廣播惡意交易,那么誠(chéng)實(shí)的參與者就可以合法地索取相關(guān)閃電網(wǎng)絡(luò)內(nèi)的所有資金,這有力地保證了多個(gè)參與方,在公平、公正的情況下進(jìn)行交易。閃電網(wǎng)絡(luò)的測(cè)試版本最早在2017年1月正式對(duì)外公布、開源,并在同年12月發(fā)布了標(biāo)準(zhǔn)版,由于篇幅限制,這里不對(duì)其實(shí)現(xiàn)的具體細(xì)節(jié)展開論述,有興趣的可以參考文獻(xiàn)[12]。
(3) 雷電網(wǎng)絡(luò) 雷電網(wǎng)絡(luò)[13](Raiden Network),是一項(xiàng)現(xiàn)階段正在開發(fā)的項(xiàng)目,旨在實(shí)現(xiàn)與閃電網(wǎng)絡(luò)相同的目標(biāo),但其原理是基于以太坊智能合約(Smart Contract)。根據(jù)有關(guān)數(shù)據(jù)的統(tǒng)計(jì),使用雷電網(wǎng)絡(luò)的交易成本預(yù)期估計(jì)要低于現(xiàn)有以太坊區(qū)塊鏈7個(gè)數(shù)量級(jí),這將為小額支付的蓬勃發(fā)展鋪平道路。同時(shí),由于以太坊區(qū)塊鏈支持創(chuàng)建自定義類型的代幣(Token),因此,通過(guò)標(biāo)準(zhǔn)代幣生成協(xié)議所生成的代幣,雷電網(wǎng)絡(luò)將為任何代幣提供低成本的鏈下交易功能。
(4) 精靈網(wǎng)絡(luò) 精靈網(wǎng)絡(luò)(Sprites Network),是由Andrew Miller等在文獻(xiàn)[14]中提出的,是基于以太坊設(shè)計(jì)的支付通道。它的設(shè)計(jì)也受到了閃電網(wǎng)絡(luò)與雷電網(wǎng)絡(luò)的啟發(fā),但目標(biāo)是盡量減少鏈下支付交易的抵押成本,將閃電網(wǎng)絡(luò)在最壞情況下抵押開銷的復(fù)雜度從O(1Δ)降到了O(1+Δ)。精靈網(wǎng)絡(luò)的優(yōu)勢(shì)有兩方面,一是減少了支付通道的抵押成本,二是支持部分資產(chǎn)的存入與取回,并在這個(gè)過(guò)程中用戶可以繼續(xù)操作而不需要中斷。
隔離見證,是比特幣的交易格式的軟分叉修正,在比特幣的改進(jìn)建議書BIP141[15]“隔離見證-共識(shí)層(Segregated Witness-Consensus Layer)”中被提出,目的是一方面解決比特幣中存在的延展性攻擊[16-18](Malleability Attacks),另一方面也旨在緩解因區(qū)塊容量限制(Block Size Limit)而引起的容量、可擴(kuò)展性、吞吐量問(wèn)題,從而優(yōu)化比特幣交易的處理速度。
在隔離見證引入之前,交易中的每個(gè)發(fā)送者(Sender)數(shù)據(jù)都跟著解鎖它的見證數(shù)據(jù)[19](Witness Data),見證數(shù)據(jù)作為每個(gè)發(fā)送者數(shù)據(jù)的一部分嵌入到交易中,參與了交易的標(biāo)識(shí)(Transaction ID)的計(jì)算。
隔離見證,簡(jiǎn)單來(lái)說(shuō)是從比特幣交易中分離出見證數(shù)據(jù)的區(qū)塊結(jié)構(gòu)改變。通過(guò)將比特幣交易見證數(shù)據(jù)從原始交易中移出,并作為單獨(dú)的結(jié)構(gòu)添加到區(qū)塊中,原始部分發(fā)送者和接收者的數(shù)據(jù),將繼續(xù)保存在原有有區(qū)塊的位置。
由于區(qū)塊的頭部,與改變位置的見證數(shù)據(jù)結(jié)構(gòu)無(wú)關(guān),這意味著見證數(shù)據(jù)將不會(huì)被區(qū)塊鏈做防篡改性保護(hù),所以需要將見證數(shù)據(jù)重新添加進(jìn)當(dāng)前區(qū)塊結(jié)構(gòu),以達(dá)到防止見證數(shù)據(jù)被任意篡改的目的。在這里,考慮到每個(gè)區(qū)塊的第一筆交易是Coinbase交易[20](用于設(shè)置礦工的賬戶地址,從而將成功挖礦的獎(jiǎng)勵(lì)發(fā)送到礦工賬戶),可以把通過(guò)Merkle樹[21](Merkle Tree)處理過(guò)后的見證數(shù)據(jù),將其Merkle樹根(Merkle Tree Root)放進(jìn)Coinbase交易中。當(dāng)見證數(shù)據(jù)被篡改時(shí),首先改變了見證數(shù)據(jù)的Merkle樹根值,從而影響了Coinbase交易的標(biāo)識(shí),最終影響了整個(gè)區(qū)塊的哈希值(Hash),此時(shí)的區(qū)塊可能會(huì)因不通過(guò)區(qū)塊正確性檢驗(yàn)而被放棄,保證了見證數(shù)據(jù)的不可篡改性。
在比特幣改進(jìn)建議書BIP141中,引入了一個(gè)新的塊重(Block Weight)的概念,其大小可以通過(guò)以下公式計(jì)算:
BlockWeight=3×BaseSize+TotalSize
式中:BaseSize為區(qū)塊不包含見證數(shù)據(jù)的部分,這是未進(jìn)行升級(jí)的節(jié)點(diǎn)看到的數(shù)據(jù);TotalSize為包含了所有字段的數(shù)據(jù)容量,這是升級(jí)后的節(jié)點(diǎn)看到的數(shù)據(jù)。在新的規(guī)定下,塊重不能超過(guò)4 MB,再此規(guī)則下,可以保證BaseSize不大于1 MB,即不包含見證數(shù)據(jù)的區(qū)塊容量不超過(guò)1 MB,與原有包含見證數(shù)據(jù)區(qū)塊容量不超過(guò)1 MB的舊規(guī)則相比,達(dá)到了擴(kuò)容的目的。
按照最初設(shè)計(jì),比特幣區(qū)塊容量限制最初受限于處理它所需的數(shù)據(jù)庫(kù)鎖(Database Locks)的數(shù)量(最多10 000個(gè)),這個(gè)限制大約是500~750 KB的連續(xù)字節(jié)。在2013年3月之前,這個(gè)設(shè)計(jì)一直被人遺忘,沒(méi)有引起足夠的注意。直到2010年,中本聰秘密地在兩個(gè)代碼提交[22-23]中,為比特幣引入了1 MB區(qū)塊容量的限制。之后,比特幣一直以區(qū)塊1 MB容量限制作為行業(yè)標(biāo)準(zhǔn)。
2013年3月,原來(lái)的數(shù)據(jù)庫(kù)鎖的限制被意外發(fā)現(xiàn),比特幣的核心版本v0.8.0未能執(zhí)行這項(xiàng)限制,導(dǎo)致了升級(jí)的節(jié)點(diǎn)有被比特幣網(wǎng)絡(luò)剔除的危機(jī)。在解決危機(jī)之后,由于很少人關(guān)注原有數(shù)據(jù)庫(kù)鎖限制,所以當(dāng)時(shí)一致認(rèn)為要硬分叉限制刪除。移除限制的硬分叉在2013年5月成功實(shí)施,從此區(qū)塊1 MB容量的限制第一次成為比特幣區(qū)塊容量的首要限制因素。
這個(gè)限制在2017年之前沒(méi)有再更改,但隨著比特幣的普及率越來(lái)越高,以及比特幣市場(chǎng)價(jià)格的持續(xù)攀升,每次市場(chǎng)受到外界因素?cái)_動(dòng),交易量隨之驟然變化,導(dǎo)致發(fā)出的交易遲遲得不到確認(rèn)(自2016年至今,比特幣網(wǎng)絡(luò)中每天未確認(rèn)交易數(shù)量的變化情況,如圖3所示),交易延遲愈演愈烈。

圖3 自2016年至今,比特幣網(wǎng)絡(luò)中每天未確認(rèn)的交易數(shù)量
是否增加區(qū)塊容量的限額引起了激烈的爭(zhēng)論。同時(shí),為防止比特幣暫時(shí)或永久分裂成多條同源鏈,基金會(huì)希望整個(gè)比特幣社區(qū)對(duì)提高區(qū)塊容量限制的硬分叉達(dá)成共識(shí)。但這個(gè)期待的共識(shí)一直沒(méi)能夠達(dá)到,于是比特幣的第一個(gè)分叉幣比特幣現(xiàn)金(Bitcoin Cash)橫空出世,后來(lái)人們逐漸意識(shí)到潛藏在分叉幣背后誘人的經(jīng)濟(jì)利益,于是不同的團(tuán)隊(duì)開始以各種宣稱的改進(jìn),對(duì)比特幣進(jìn)行惡意的分叉。本文總結(jié)了5種目前發(fā)展情況良好的分叉幣與比特幣進(jìn)行比較,結(jié)果如表1所示。
表1比特幣分叉幣與比特幣的比較

幣種BTCBCHBTGBCDSBTCLBTC分叉日期2017/08/012017/10/252017/11/242017/12/172017/12/23發(fā)行總量2 100萬(wàn)2 100萬(wàn)2 100萬(wàn)21 000萬(wàn)2 121萬(wàn)2 100萬(wàn)挖礦算法SHA256SHA256EquihashSHA256SHA256POS區(qū)塊大小1 MB8 MB1 MB8 MB8 MB2 MB隔離見證支持不支持支持支持支持支持
多重簽名(Multi-Signature),是n指?jìng)€(gè)簽名參與者P1,P2,…,Pn利用他們所對(duì)應(yīng)的私鑰SK1,SK2,…,SKn,合作對(duì)消息M進(jìn)行簽名,從而n個(gè)用戶合作生成1個(gè)消息的簽名σ,這一過(guò)程可以表述為σ=Multi_Sig(M,SK1,SK2,…,SKn)。當(dāng)進(jìn)行多重簽名σ正確性驗(yàn)證時(shí),需要n個(gè)用戶的公鑰(PK1,PK2,…,PKn)共同參與,這一過(guò)程可以表述為TRUE/FALSE=Multi_Verify(σ,PK1,…,PK2,PKn)。
比特幣交易可以看作是由1個(gè)或n個(gè)發(fā)送者(Sender)向1個(gè)或m個(gè)接收者(Receiver)的轉(zhuǎn)賬。同時(shí),每個(gè)發(fā)送者為了聲明對(duì)轉(zhuǎn)賬資金(UTXO)的所有權(quán),需要提供交易的數(shù)字簽名來(lái)進(jìn)行認(rèn)證。如果一筆交易有n個(gè)發(fā)送者參與交易,那么就會(huì)有n個(gè)不同發(fā)送者所對(duì)應(yīng)的簽名需要附加在交易中,在打包交易生成區(qū)塊過(guò)程中供比特幣礦工(Miner)進(jìn)行交易合法性驗(yàn)證。需要指出的是,在比特幣網(wǎng)絡(luò)中,85%以上的交易是由多個(gè)發(fā)送者構(gòu)成的,所以這里還有較大的可優(yōu)化程度。
比特幣基金會(huì)的核心開發(fā)者Gregory Maxwell等希望用多重簽名的方式來(lái)提高1 MB區(qū)塊的利用率。鑒于ECDSA構(gòu)造多重簽名的困難性,他們采用Schnorr簽名[24]的簽名可加性這一先天多重簽名特性進(jìn)行改進(jìn)。這一成果發(fā)表在文獻(xiàn)[25]中,下面對(duì)其多重簽名的技術(shù)細(xì)節(jié)進(jìn)行簡(jiǎn)單的描述。
(1) 密鑰生成算法(Key Generation) 每個(gè)用戶Pi隨機(jī)生成一個(gè)私鑰SKi←Zp并計(jì)算其所對(duì)應(yīng)的公鑰PKi=gSki。

之后,簽名者隨機(jī)選擇ri←Zp并計(jì)算Ri=gri后發(fā)送給其他簽名者。當(dāng)收到了其他簽名者發(fā)送的R2,R3,…,Rn后,計(jì)算:
s1=r1+ca1x1modp


在應(yīng)用了多重簽名來(lái)進(jìn)行改造之后,根據(jù)他們的實(shí)驗(yàn)統(tǒng)計(jì),應(yīng)用多重簽名前后區(qū)塊鏈體積的比較如圖4所示,將會(huì)節(jié)約到的區(qū)塊體積,這在“寸土寸金”的區(qū)塊中顯得極為難能可貴,可以較為有效地提高交易吞吐量,節(jié)約比特幣網(wǎng)絡(luò)帶寬資源。

圖4 應(yīng)用多重簽名前后區(qū)塊鏈體積的比較
聚合簽名(Aggregate Signature),是指n個(gè)簽名參與者P1,P2,…,Pn分別利用他們的私鑰SK1,SK2,…,SKn,對(duì)每個(gè)簽名參與者所對(duì)應(yīng)的消息M1,M2,…,Mn進(jìn)行簽名,從而n個(gè)用戶對(duì)n個(gè)消息生成1個(gè)消息的簽名σ,這一過(guò)程可以表述為σ=A_Sig(M1,M2,…,Mn,SK1,SK2,…,SKn)。在進(jìn)行多重簽名正確性驗(yàn)證時(shí),需要n個(gè)用戶的公鑰PK1,PK2,…,PKn共同參與,這一過(guò)程可以表述為TRUE/FALSE=A_Verify(σ,PK1,PK2,…,PKn,M1,M2,…,Mn)。
比特幣區(qū)塊中的主要數(shù)據(jù)是交易,且隨著比特幣的發(fā)展,每個(gè)區(qū)塊中的交易數(shù)不斷增長(zhǎng)并趨近于飽和,現(xiàn)階段每個(gè)區(qū)塊大概有1 600筆交易(自2009年至今,區(qū)塊中所包含交易數(shù)的變化情況,如圖5所示),每筆交易中含有1個(gè)或個(gè)簽名,來(lái)證明交易資金的所有權(quán)。如果利用多重簽名技術(shù)來(lái)改進(jìn)交易,每筆交易中將會(huì)僅存1個(gè)簽名,接下來(lái)的優(yōu)化將要從聚合簽名的角度來(lái)考慮。

圖5 自2009年至今,區(qū)塊中所含交易數(shù)量的變化
文獻(xiàn)[26]運(yùn)用聚合簽名的方式來(lái)進(jìn)一步壓縮區(qū)塊體積,提高比特幣區(qū)塊的利用率。需要指出的是,簽名聚合的環(huán)節(jié)應(yīng)當(dāng)出現(xiàn)在礦工打包交易生成區(qū)塊的過(guò)程中,而礦工所處理的交易數(shù)量較多,同時(shí)都是匿名化地來(lái)自于全球不同節(jié)點(diǎn),所以考慮到比特幣的實(shí)際應(yīng)用場(chǎng)景,聚合簽名一定是需要有非交互的特性。
文獻(xiàn)[26]的工作,在考慮到Schnorr簽名的不可聚合后(存在有具體的攻擊方式,本文中進(jìn)行了闡述),基于簽名[17]構(gòu)造了聚合簽名,相關(guān)工作已經(jīng)公布在文獻(xiàn)[26]中,在這里對(duì)其聚合簽名的技術(shù)細(xì)節(jié)進(jìn)行簡(jiǎn)單的說(shuō)明。

(2) 簽名算法(Signing) 對(duì)于需要簽名的消息Mi,簽名用戶Pi隨機(jī)選擇ri←Zq,并計(jì)算Ai=riP,di=H(A),ei=H(PKi,Mi),zi=ridi-eiSKimodq。然后,返回用戶Pi關(guān)于消息Mi的簽名σi=(di,zi)。
(3) 簽名驗(yàn)證算法(Verification) 在進(jìn)行簽名聚合前,需要對(duì)每一個(gè)需要聚合的簽名σi進(jìn)行驗(yàn)證,否則任意一個(gè)簽名有問(wèn)題時(shí),聚合后的簽名將不能通過(guò)聚合簽名驗(yàn)證。

(4) 簽名聚合算法(Aggregation) 在每個(gè)簽名組{PKi,Mi,σi}i∈{1,2,…,n}通過(guò)驗(yàn)證后,才可以將簽名聚合,當(dāng)運(yùn)用到比特幣的時(shí)候,這個(gè)過(guò)程一般由礦工來(lái)進(jìn)行操作。

根據(jù)統(tǒng)計(jì),如果利用聚合簽名技術(shù)來(lái)對(duì)比特幣進(jìn)行優(yōu)化,那么簽名的存儲(chǔ)體積將會(huì)減少50%,同時(shí)因在一個(gè)區(qū)塊內(nèi)僅存在一個(gè)聚合簽名,那么區(qū)塊驗(yàn)證的時(shí)間將會(huì)減少80%。同時(shí),比特幣改進(jìn)后的交易標(biāo)識(shí),需要有新不包含簽名計(jì)算方式,即由TxID=HASH(Transaction[σ1,σ2,…,σn])變?yōu)門xID=HASH(Transaction),這將有效地抵抗交易延展性攻擊[27]。因原有交易中的多個(gè)簽名,由1個(gè)聚合簽名來(lái)代替,那么區(qū)塊中存放簽名的位置將會(huì)改變,這與3.2節(jié)中隔離見證的概念不謀而合,所以聚合簽名還兼顧了隔離見證的優(yōu)勢(shì),進(jìn)一步提高吞吐量,節(jié)約比特幣網(wǎng)絡(luò)帶寬資源。


將僅僅取決于簽名者P1。從這點(diǎn)出發(fā),作惡者甚至可以給整個(gè)系統(tǒng)帶來(lái)毀滅性攻擊。
目前比特幣每秒7筆的處理速度,遠(yuǎn)遠(yuǎn)不能滿足公眾預(yù)期以及工業(yè)生產(chǎn)需要。如果長(zhǎng)期處于這樣的“亞健康”發(fā)展事態(tài),一直沒(méi)有可靠的技術(shù)從根本上解決問(wèn)題,那么可能會(huì)讓一直支持比特幣的社區(qū)與投資者們失去信心。同時(shí),比特幣作為區(qū)塊鏈技術(shù)的鼻祖,在區(qū)塊容量、可擴(kuò)展性、吞吐量遲遲無(wú)法優(yōu)化的情形下,甚至?xí)鸸妼?duì)區(qū)塊鏈技術(shù)所帶來(lái)的顛覆式發(fā)展的質(zhì)疑。
本文就現(xiàn)階段討論比較激烈且具有代表性的5種擴(kuò)容技術(shù):支付通道、隔離見證、提高區(qū)塊容量限制、多重簽名與聚合簽名進(jìn)行了總結(jié),并簡(jiǎn)要地對(duì)它們的實(shí)現(xiàn)方式、原理進(jìn)行了說(shuō)明。
首先就支付通道來(lái)看,這樣的“小額交易鏈下處理”的方式,確實(shí)是在源頭上遏制了交易擁堵問(wèn)題的發(fā)生,但從區(qū)塊鏈技術(shù)定義上來(lái)講似乎背離了比特幣“一切可追溯”的設(shè)計(jì)初衷,并且在實(shí)際應(yīng)用中很難來(lái)衡量小額交易與大額交易在比特幣價(jià)值層面的區(qū)別。
與支付通道“從交易源頭來(lái)遏制”不同的是,隔離見證與提高區(qū)塊容量限制,可以被看作是“緩兵之計(jì)”。可以清楚地認(rèn)識(shí)到,利用了隔離見證之后,整個(gè)區(qū)塊的數(shù)據(jù)體積并沒(méi)有減少,數(shù)據(jù)是依然全部存在鏈上。其所帶來(lái)的比特幣“區(qū)塊容量上的提升”,是通過(guò)簡(jiǎn)單的見證數(shù)據(jù)位置移動(dòng),輔助區(qū)塊體積計(jì)算方式的改變來(lái)實(shí)現(xiàn)的。
提高區(qū)塊容量限制,可以說(shuō)是最為直接、暴力的解決方案,但從比特幣網(wǎng)絡(luò)數(shù)據(jù)覆蓋率上,很難來(lái)衡量區(qū)塊容量簡(jiǎn)單增大后,對(duì)比特幣實(shí)時(shí)網(wǎng)絡(luò)傳播速率的影響[28]。例如,原有1 MB的區(qū)塊需要10分鐘便可到達(dá)全網(wǎng)95%以上的節(jié)點(diǎn),但8 MB的區(qū)塊可能在10分鐘內(nèi)只能到達(dá)全網(wǎng)的節(jié)點(diǎn)。而且,容量增大的方式可能暫時(shí)滿足現(xiàn)有對(duì)比特幣容量、可擴(kuò)展性與吞吐量的需求,但不排除未來(lái)再一次無(wú)法滿足要求時(shí),繼續(xù)進(jìn)行硬分叉調(diào)整的可能性。
多重簽名與聚合簽名,是從交易本身數(shù)據(jù)結(jié)構(gòu)出發(fā),在不影響比特幣安全性與交易完整性的基礎(chǔ)上,依托密碼學(xué)技術(shù)將見證數(shù)據(jù)盡可能的體積壓縮,由此帶來(lái)交易處理與區(qū)塊的驗(yàn)證速度上提升。同時(shí),聚合簽名還與隔離見證有著異曲同工之處,都可以解決交易的延展性攻擊。并且多重簽名、聚合簽名可以與其他的擴(kuò)容方式“互無(wú)妨礙”地結(jié)合使用,是未來(lái)一段時(shí)間內(nèi)價(jià)值較高的擴(kuò)容方案。
總而言之,引領(lǐng)從“機(jī)器不可靠”發(fā)展到了“機(jī)器信任”時(shí)代的比特幣,是區(qū)塊鏈技術(shù)的起點(diǎn)與源泉,同時(shí)也需要指出,每一門新技術(shù)的發(fā)展初期,都會(huì)面臨著種種挫折與挑戰(zhàn),但從這個(gè)殘酷過(guò)程中生存下來(lái)的,才是真正有價(jià)值的。關(guān)于區(qū)塊鏈的未來(lái),尚需拭目以待。