李東云,白 杰,吳先鋒
(傲為信息技術(shù)(江蘇)有限公司,江蘇 南京 210032)
從2009年比特幣(Bitcoin)[1]正式面世開始,去中心化區(qū)塊鏈網(wǎng)絡(luò)從概念提出、工程實(shí)現(xiàn)到全網(wǎng)實(shí)際運(yùn)行,經(jīng)歷了長(zhǎng)足的發(fā)展和進(jìn)步。特別是隨著第二代區(qū)塊鏈網(wǎng)絡(luò)——以太坊(Ethereum)平臺(tái)及后來的EOS(Enterprise Operation System)逐步引入智能合約(Smart Contract)、去中心應(yīng)用(Decentralized Application)等內(nèi)容和功能,使得相應(yīng)的概念和應(yīng)用進(jìn)一步擴(kuò)展,在越來越多的實(shí)際應(yīng)用中落地。同時(shí),隨著去中心化和區(qū)塊鏈網(wǎng)絡(luò)的概念演進(jìn)和系統(tǒng)實(shí)踐深入,去中心化區(qū)塊鏈網(wǎng)絡(luò)作為有可能改變當(dāng)前諸多生產(chǎn)關(guān)系的一種新型的技術(shù)基礎(chǔ)平臺(tái)的趨向性也明顯體現(xiàn)。因此,傳統(tǒng)的中心化網(wǎng)絡(luò)服務(wù)商在自身業(yè)務(wù)轉(zhuǎn)型升級(jí)和新型技術(shù)探索的雙重需求下,也有將現(xiàn)有傳統(tǒng)中心化服務(wù)向去中心化網(wǎng)絡(luò)轉(zhuǎn)化的嘗試和要求?,F(xiàn)有的去中心化區(qū)塊鏈網(wǎng)絡(luò),無(wú)論是在承接越來越多的應(yīng)用,還是在嘗試切換傳統(tǒng)中心化服務(wù)的過程中,在技術(shù)方案和業(yè)務(wù)能力上,均出現(xiàn)了不少的問題亟待解決。其中,如何支持交易和信息的快速驗(yàn)證,是一個(gè)非常核心的問題。
在分布式系統(tǒng)的不可能三角CAP[2](Consistency/一致性,Availability/可用性,Partition tolerance/分區(qū)容錯(cuò)性)的條件下,以及區(qū)塊鏈技術(shù)在實(shí)現(xiàn)上的策略選擇,現(xiàn)有的各個(gè)區(qū)塊鏈系統(tǒng)在安全性(Security)、擴(kuò)展性(Scalability)和去中心化性(Decentralization)上也沒有辦法做到全面兼顧。安全性和去中心化性的要求往往會(huì)導(dǎo)致擴(kuò)展性出現(xiàn)問題,如比特幣網(wǎng)絡(luò)和以太坊網(wǎng)絡(luò);對(duì)應(yīng)地,考慮安全性和擴(kuò)展性的同時(shí),必然會(huì)犧牲去中心化性,如EOS。在不同的應(yīng)用場(chǎng)景中,這三個(gè)方面可以有不同的側(cè)重和選擇。但是最根本的,去中心化性作為Web3.0的標(biāo)準(zhǔn)特性,是一個(gè)核心要素。在這點(diǎn)上,為了擴(kuò)展性而犧牲去中心化性的EOS,某種程度上并不是嚴(yán)格意義上的區(qū)塊鏈網(wǎng)絡(luò)。
在實(shí)際應(yīng)用場(chǎng)景下,無(wú)論是交易,還是信息驗(yàn)證,區(qū)塊鏈網(wǎng)絡(luò)中關(guān)鍵的一個(gè)指標(biāo)為TPS(Transaction Per Second),即單位時(shí)間內(nèi)的事務(wù)處理量。這個(gè)指標(biāo)直接決定了該區(qū)塊鏈網(wǎng)絡(luò)能實(shí)際承載的業(yè)務(wù)能力。目前主流的幾個(gè)區(qū)塊鏈平臺(tái),如比特幣網(wǎng)絡(luò)平臺(tái),TPS在10以下;以太坊平臺(tái)在25左右,經(jīng)過優(yōu)化和提升,大致能到50~100之間;EOS網(wǎng)絡(luò)通過犧牲去中心性號(hào)稱可達(dá)到百萬(wàn),但還沒有實(shí)際驗(yàn)證和應(yīng)用。而對(duì)應(yīng)的傳統(tǒng)網(wǎng)絡(luò)服務(wù),如VISA網(wǎng)絡(luò)在2 000左右,而淘寶天貓“雙11”的尖峰交易數(shù)值已經(jīng)達(dá)到數(shù)十萬(wàn)。因此,現(xiàn)有的區(qū)塊鏈平臺(tái)如果想要承接傳統(tǒng)中心化服務(wù),就必須要對(duì)TPS的問題有切實(shí)可行的解決辦法。
在比特幣網(wǎng)絡(luò)和以太坊網(wǎng)絡(luò)中,TPS數(shù)值無(wú)法進(jìn)行有效提高的根本原因在于網(wǎng)絡(luò)本身的架構(gòu)設(shè)計(jì)。完全去中心化的網(wǎng)絡(luò)架構(gòu),對(duì)于數(shù)據(jù)的同步和共識(shí)機(jī)制達(dá)成的限制和要求,有著時(shí)間上的妥協(xié),比如,比特幣網(wǎng)絡(luò)數(shù)據(jù)區(qū)塊的間隔時(shí)間為10 min,以太坊為15 s左右;同時(shí),數(shù)據(jù)的同步也需要消耗一定的時(shí)間,所以對(duì)于一筆交易,在實(shí)際運(yùn)行中,比特幣網(wǎng)絡(luò)往往需要6個(gè)區(qū)塊周期,也就是1 h左右,才可以完全確認(rèn)交易完成,而以太坊網(wǎng)絡(luò),則往往需要12個(gè)區(qū)塊周期或以上,超過3 min。 對(duì)于一些應(yīng)用場(chǎng)景,如此長(zhǎng)的驗(yàn)證確認(rèn)時(shí)間是無(wú)法有效滿足需求的。而對(duì)于類似EOS這樣的平臺(tái),TPS數(shù)值的提升是在犧牲去中心化性和安全性的基礎(chǔ)之上的,所以在安全性有較強(qiáng)要求的應(yīng)用場(chǎng)景中,也會(huì)存在一些障礙。
另外,對(duì)于交易來說,完成一筆交易至少有兩個(gè)步驟,第一是驗(yàn)證該筆交易是合法的,最基本的驗(yàn)證包括:支付者有足夠余額進(jìn)行支付,收付者有合法地址進(jìn)行接收;第二則是將該筆交易進(jìn)行記賬并全網(wǎng)同步完成共識(shí)。比特幣和以太坊在處理交易時(shí),這兩個(gè)步驟是同步進(jìn)行的,也就是驗(yàn)證節(jié)點(diǎn)(礦工)在進(jìn)行區(qū)塊生成的時(shí)候,同步進(jìn)行交易驗(yàn)證和記賬。這種機(jī)制導(dǎo)致如下問題:首先是交易在同一個(gè)節(jié)點(diǎn)存在多次被驗(yàn)證的情況,造成資源浪費(fèi);其次,如果待驗(yàn)證交易過多,則必然存在較長(zhǎng)時(shí)間的等待和排隊(duì)情況;最后,計(jì)算資源的利用存在較大浪費(fèi),有限的計(jì)算資源在網(wǎng)絡(luò)運(yùn)行中,并沒有合理完整地進(jìn)行分配和利用。
因此,問題可以歸結(jié)為兩個(gè)方面,一個(gè)是如何處理好去中心化性、安全性和擴(kuò)展性的問題;另外一個(gè)是如何處理好驗(yàn)證和記賬的問題。
從中心化系統(tǒng)向去中心化系統(tǒng)轉(zhuǎn)換的一個(gè)顯著特點(diǎn)在于:通過分布式系統(tǒng)以相同賬本的方式構(gòu)建一個(gè)有序不可篡改數(shù)據(jù)記錄集,以算法達(dá)成全網(wǎng)數(shù)據(jù)和邏輯一致。因此在理論上,網(wǎng)絡(luò)中的所有對(duì)應(yīng)節(jié)點(diǎn)都可以具有相同的邏輯和功能,共同參與維護(hù)整個(gè)網(wǎng)絡(luò)的可用性和一致性,但是這就會(huì)帶來TPS的問題。同時(shí)在實(shí)際中,并不是所有的網(wǎng)絡(luò)節(jié)點(diǎn)都具備足夠的資源用于支持相應(yīng)的邏輯和功能,大部分的節(jié)點(diǎn)是作為網(wǎng)絡(luò)參與者與使用者,而不是維護(hù)者。所以方案設(shè)計(jì)上,在保證安全性和可擴(kuò)展性的基礎(chǔ)上,需要對(duì)去中心化性做相應(yīng)的優(yōu)化和折中。
從比特幣、以太坊的絕對(duì)去中心化,EOS的偽去中心化,向有效去中心化方向進(jìn)行演進(jìn),是一種合適的方式。有效去中心化的含義在于:通過恰當(dāng)?shù)臋C(jī)制和算法,在保證網(wǎng)絡(luò)安全性和擴(kuò)展性的基礎(chǔ)上,積極有效利用網(wǎng)絡(luò)資源,達(dá)成數(shù)據(jù)和業(yè)務(wù)邏輯的去中心化。相應(yīng)的原則和定義如下。
網(wǎng)絡(luò)中的參與節(jié)點(diǎn)是分組的。分組包含如下幾個(gè)方面:
(1)節(jié)點(diǎn)功能上,并不是所有節(jié)點(diǎn)都具有相同的功能;
(2)運(yùn)行網(wǎng)絡(luò)上,不同的節(jié)點(diǎn)也具有不同的優(yōu)先級(jí)和層級(jí);
(3)分組的依據(jù)是根據(jù)節(jié)點(diǎn)自身的資源和意愿,通過隨機(jī)選舉產(chǎn)生;
(4)分組并非是永久固定不變的,僅僅是某個(gè)時(shí)間周期內(nèi)相對(duì)固定;
(5)相同小組內(nèi)的節(jié)點(diǎn)也并非同時(shí)具有相同的功能,其也同樣存在競(jìng)爭(zhēng)和監(jiān)督關(guān)系。
不同組中的節(jié)點(diǎn)承擔(dān)不同的角色,相同組中的節(jié)點(diǎn)邏輯上歸屬同一個(gè)角色,不同角色的節(jié)點(diǎn)完成對(duì)應(yīng)的工作,共同維護(hù)網(wǎng)絡(luò)的運(yùn)行和穩(wěn)定。網(wǎng)絡(luò)中的角色按照CNWW3[1]標(biāo)準(zhǔn)框架可以靈活地進(jìn)行劃分,也可以在邏輯上進(jìn)行相應(yīng)的抽象和概括。
(1)核心角色:完整擁有網(wǎng)絡(luò)的所有功能,通過選舉和競(jìng)爭(zhēng)參與網(wǎng)絡(luò)的維護(hù)并獲取對(duì)應(yīng)的收益。
(2)監(jiān)督角色:對(duì)于核心角色所產(chǎn)生的結(jié)果進(jìn)行監(jiān)督和管理,同時(shí)提供相應(yīng)的網(wǎng)絡(luò)服務(wù)。
圖2 交易分層示意圖
(3)參與角色:不會(huì)參與網(wǎng)絡(luò)的維護(hù)和監(jiān)督,更多地作為網(wǎng)絡(luò)的使用者出現(xiàn)。
需要說明的是,相同角色中的節(jié)點(diǎn),在相同時(shí)間點(diǎn),并不是都具有相同的功能,互相之間同樣存在競(jìng)爭(zhēng)和監(jiān)督關(guān)系。
節(jié)點(diǎn)可以在不同組中進(jìn)行轉(zhuǎn)換以及進(jìn)行角色轉(zhuǎn)換。節(jié)點(diǎn)在不同的時(shí)間節(jié)點(diǎn),可以根據(jù)自身的資源情況和意愿,通過選舉競(jìng)爭(zhēng)的方式變換不同角色,成功之后就可以行使對(duì)應(yīng)角色所賦予的功能和權(quán)利,獲取對(duì)應(yīng)的網(wǎng)絡(luò)收益。
分組和角色的轉(zhuǎn)換是隨機(jī)的。通過隨機(jī)機(jī)制,保證節(jié)點(diǎn)的分組和角色的轉(zhuǎn)換過程中,不同節(jié)點(diǎn)享有相同的機(jī)會(huì)進(jìn)行分組和角色轉(zhuǎn)換,從而最大限度保障網(wǎng)絡(luò)中節(jié)點(diǎn)的積極性和活躍性,進(jìn)而提高網(wǎng)絡(luò)的能力。
不同節(jié)點(diǎn)在不同角色下進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)同步和更新時(shí),會(huì)同步進(jìn)行數(shù)據(jù)的校驗(yàn)和監(jiān)督工作。如果發(fā)現(xiàn)核心分組節(jié)點(diǎn)產(chǎn)生了異常或者錯(cuò)誤數(shù)據(jù),則可以進(jìn)行相應(yīng)的舉報(bào)和糾察工作,如果無(wú)誤則會(huì)獲得網(wǎng)絡(luò)對(duì)應(yīng)的獎(jiǎng)勵(lì)。
通過上述原則和方法,區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn)能從絕對(duì)去中心化向有效去中心化進(jìn)行轉(zhuǎn)變,從而大幅度提高網(wǎng)絡(luò)運(yùn)行的效率,提高資源的利用率,同時(shí)又能完整地保持去中心化性,滿足了網(wǎng)絡(luò)的安全性和可靠性要求。有效去中心化示意圖如圖1。
圖1 有效去中心化網(wǎng)絡(luò)示意圖
如前所述,交易完成的瓶頸在于交易的驗(yàn)證和記賬混合,最終的交易完成確認(rèn)因記賬周期和其他限制導(dǎo)致延遲。網(wǎng)絡(luò)中的節(jié)點(diǎn)歸屬不同分組,賦予不同角色后,就可以對(duì)交易過程進(jìn)行有效的分層處理,如圖2所示。
網(wǎng)絡(luò)中的節(jié)點(diǎn)可以按照交易過程分為3大類:交易驗(yàn)證節(jié)點(diǎn)、交易記錄節(jié)點(diǎn)和交易參與節(jié)點(diǎn)。
交易驗(yàn)證節(jié)點(diǎn)需要同步當(dāng)前全網(wǎng)數(shù)據(jù)區(qū)塊、賬號(hào)信息、賬本信息等其他內(nèi)容,作為網(wǎng)絡(luò)的全量節(jié)點(diǎn)提供相應(yīng)的服務(wù)。同時(shí),驗(yàn)證節(jié)點(diǎn)共同維護(hù)了兩個(gè)虛擬列表:待驗(yàn)證交易和已驗(yàn)證交易。這兩個(gè)列表均為先進(jìn)先出,在交易驗(yàn)證節(jié)點(diǎn)組中是全網(wǎng)共同維護(hù)的。交易驗(yàn)證過程如下:
(1)當(dāng)網(wǎng)絡(luò)中發(fā)出一筆交易,驗(yàn)證節(jié)點(diǎn)接收到該交易后,將其首先放入待驗(yàn)證交易列表。
(2)驗(yàn)證節(jié)點(diǎn)從待驗(yàn)證交易列表中獲取一筆交易,先查詢是否已有其他節(jié)點(diǎn)已經(jīng)驗(yàn)證該交易,如果沒有,則通過全量數(shù)據(jù)確認(rèn)該交易是否合法,如果合法,將其放入已驗(yàn)證交易列表并簽名。
(3)如該交易已由另外驗(yàn)證節(jié)點(diǎn)驗(yàn)證,則同步驗(yàn)證該交易,如交易合法,則更新該交易,附加簽名;如驗(yàn)證交易非法,則忽略該交易。
(4)如交易未驗(yàn)證通過,則忽略該交易。
(5)同步記賬網(wǎng)絡(luò)中的數(shù)據(jù)區(qū)塊,將已記賬的交易移除已驗(yàn)證交易列表。
通過這種方式,無(wú)需依賴記賬完成的狀態(tài),能使得交易的確認(rèn)時(shí)間快速提高。
交易記錄節(jié)點(diǎn)為傳統(tǒng)意義上的礦工節(jié)點(diǎn),通過搶奪記賬權(quán)的方式進(jìn)行記賬。記賬節(jié)點(diǎn)可以直接從已驗(yàn)證交易列表中獲取被驗(yàn)證的交易構(gòu)造區(qū)塊,而無(wú)需再進(jìn)行交易的驗(yàn)證,可以把資源都用在記賬權(quán)的爭(zhēng)奪和數(shù)據(jù)的同步上。記賬過程如下:
(1)向交易驗(yàn)證節(jié)點(diǎn)網(wǎng)絡(luò)同步已驗(yàn)證的交易列表;
(2)從其中獲取足夠數(shù)量的交易構(gòu)造數(shù)據(jù)區(qū)塊;
(3)搶奪記賬權(quán)并發(fā)布數(shù)據(jù)區(qū)塊。
交易參與節(jié)點(diǎn)本質(zhì)上是網(wǎng)絡(luò)的使用者,其通過查詢驗(yàn)證節(jié)點(diǎn)的已驗(yàn)證交易列表,向記賬節(jié)點(diǎn)同步記賬區(qū)塊數(shù)據(jù),來完成其自身的業(yè)務(wù)和交易的閉環(huán)。在這個(gè)過程中,對(duì)于實(shí)時(shí)性要求并不高的場(chǎng)景,可以通過記賬區(qū)塊進(jìn)行最終確認(rèn),而對(duì)于那些對(duì)實(shí)時(shí)性要求高的場(chǎng)景,就可以通過已驗(yàn)證交易列表快速完成相關(guān)的確認(rèn)工作。
通過交易分層的方式,解決交易確認(rèn)的瓶頸點(diǎn),同時(shí)也支持不同的場(chǎng)景下的業(yè)務(wù)需求。
通過節(jié)點(diǎn)分組、角色劃分和交易分層,已經(jīng)可以大幅度提高區(qū)塊鏈網(wǎng)絡(luò)的TPS數(shù)值,對(duì)于行業(yè)性或者區(qū)域性的區(qū)塊鏈平臺(tái)已經(jīng)足夠支持大部分的應(yīng)用場(chǎng)景。但是如果是一個(gè)全球性的公鏈平臺(tái),則會(huì)因網(wǎng)絡(luò)傳輸、帶寬限制等方面的原因,導(dǎo)致相關(guān)交易和驗(yàn)證發(fā)生延遲。因此就需要通過一種機(jī)制,對(duì)交易驗(yàn)證和記賬過程做進(jìn)一步的分解和組合,進(jìn)一步提升區(qū)塊鏈平臺(tái)無(wú)論是在地理上還是邏輯上的應(yīng)用寬度和廣度。
在交易場(chǎng)景中,簡(jiǎn)單來說有兩類交易:一類是大宗交易,比如能源、原材料等;另外一類是小額交易,如生活中的購(gòu)物、支付等。對(duì)于大宗交易,無(wú)論是安全性還是重要性,都需要全網(wǎng)驗(yàn)證并記賬,同時(shí)其對(duì)于時(shí)效性的要求并沒有那么高;而對(duì)于小額交易,一方面在地理上,交易雙方往往較近,另外一方面在業(yè)務(wù)邏輯上,也會(huì)有更多的相關(guān)性。所以從這點(diǎn)出發(fā),可以將全網(wǎng)網(wǎng)絡(luò)做進(jìn)一步的分片,使得交易以一種“就近原則”能最快速得到驗(yàn)證和處理。
通過將全網(wǎng)網(wǎng)絡(luò)節(jié)點(diǎn)以分片的方式組合成多個(gè)子網(wǎng)絡(luò),每個(gè)子網(wǎng)絡(luò)處理其被指定的交易,生成對(duì)應(yīng)的數(shù)據(jù)區(qū)塊,并最終通過分布式網(wǎng)絡(luò),達(dá)成全網(wǎng)統(tǒng)一。需要說明的是,分片僅僅只針對(duì)交易,記賬區(qū)塊不會(huì)做切片,還是會(huì)保持全網(wǎng)唯一。
一筆交易發(fā)起后,發(fā)起方可以通過一定原則指定其交易的處理方式,即是需要全網(wǎng)驗(yàn)證記賬,還是分片網(wǎng)絡(luò)驗(yàn)證記賬。如果選擇后者,那么該交易只會(huì)被同步至指定的分片網(wǎng)絡(luò),并由該分片網(wǎng)絡(luò)進(jìn)行驗(yàn)證、記賬并全網(wǎng)廣播最終的結(jié)果。
圖3所示為網(wǎng)絡(luò)切片示意圖。
圖3 區(qū)塊鏈網(wǎng)絡(luò)切片示意圖
本文提出一組機(jī)制,通過有效去中心化、交易分層和網(wǎng)絡(luò)分片機(jī)制,可以在保證去中心化區(qū)塊鏈網(wǎng)絡(luò)的安全性、擴(kuò)展性和去中心化性上,極大地提高網(wǎng)絡(luò)單位時(shí)間內(nèi)處理事務(wù)的能力,從而能有效地支持傳統(tǒng)中心化應(yīng)用向去中心化平臺(tái)轉(zhuǎn)移,完成業(yè)務(wù)和技術(shù)的雙重升級(jí)。