999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于密碼累加器的無狀態(tài)區(qū)塊鏈性能優(yōu)化

2023-02-20 09:38:22孫林昆蔣文保郭陽楠李春強(qiáng)
計(jì)算機(jī)工程 2023年2期
關(guān)鍵詞:有效性智能

孫林昆,蔣文保,郭陽楠,李春強(qiáng)

(北京信息科技大學(xué) 信息管理學(xué)院,北京 100192)

0 概述

區(qū)塊鏈由于其去中心化、防篡改和可追溯等特點(diǎn),引起了金融機(jī)構(gòu)、投資機(jī)構(gòu)、監(jiān)管部門以及政府部門的廣泛關(guān)注。但目前區(qū)塊鏈仍存在較多技術(shù)難點(diǎn),如性能問題就是其中之一。區(qū)塊鏈在不同場景下的應(yīng)用都因高冗余存儲(chǔ)增強(qiáng)了數(shù)據(jù)的公開性、透明性和去中心化,提高了系統(tǒng)的可用性;但另一方面,每個(gè)節(jié)點(diǎn)都需要同步并保存系統(tǒng)中所有的賬本數(shù)據(jù)。此外,共識(shí)節(jié)點(diǎn)為了驗(yàn)證交易,需要存儲(chǔ)賬戶余額以及系統(tǒng)中各種智能合約的當(dāng)前狀態(tài),這使得參與共識(shí)協(xié)議的成本更高,也給區(qū)塊鏈帶來性能問題和巨大的存儲(chǔ)壓力。

針對(duì)上述問題,許多學(xué)者進(jìn)行了大量研究。與傳統(tǒng)的存儲(chǔ)方案不同,比特幣[1]采用一種SPV 的方式緩解存儲(chǔ)問題,但隨著存儲(chǔ)量的增多,會(huì)有更多的節(jié)點(diǎn)無法承擔(dān)全節(jié)點(diǎn)的存儲(chǔ)需求,從而轉(zhuǎn)變?yōu)檩p節(jié)點(diǎn),降低網(wǎng)絡(luò)的去中心化程度。文獻(xiàn)[2]通過IPFS協(xié)議將交易存儲(chǔ)進(jìn)鏈下,鏈上保存交易的索引,該文主要針對(duì)基于UTXO 模型的區(qū)塊鏈設(shè)計(jì),未考慮基于賬戶模型區(qū)塊鏈的存儲(chǔ)及智能合約執(zhí)行情況。文獻(xiàn)[3]通過分片技術(shù)降低了單個(gè)節(jié)點(diǎn)的存儲(chǔ)負(fù)擔(dān),同時(shí)提高了區(qū)塊鏈系統(tǒng)的吞吐量,然而該系統(tǒng)中的跨分片交易存在分叉攻擊的威脅,并且該系統(tǒng)需要執(zhí)行一個(gè)代價(jià)高昂的節(jié)點(diǎn)重新分配協(xié)議,以增強(qiáng)系統(tǒng)安全性。文獻(xiàn)[4]提出在 DHT 網(wǎng)絡(luò)中驗(yàn)證新交易和新區(qū)塊以保存區(qū)塊鏈數(shù)據(jù),然而該系統(tǒng)需要頻繁訪問網(wǎng)絡(luò)來申請狀態(tài)數(shù)據(jù),并且不具有數(shù)據(jù)緩存功能,具有較大的網(wǎng)絡(luò)開銷。文獻(xiàn)[5]采用糾刪碼的方法有效降低了系統(tǒng)中區(qū)塊數(shù)據(jù)的冗余存儲(chǔ)數(shù)量,然而共識(shí)節(jié)點(diǎn)在執(zhí)行交易時(shí)需要進(jìn)行頻繁的網(wǎng)絡(luò)請求來恢復(fù)區(qū)塊數(shù)據(jù),給網(wǎng)絡(luò)帶來一定的負(fù)擔(dān)。

近年來,無狀態(tài)區(qū)塊鏈的概念[6-7]被提出,無狀態(tài)區(qū)塊鏈通過減少節(jié)點(diǎn)的狀態(tài)數(shù)據(jù)存儲(chǔ)量從而減少存儲(chǔ)負(fù)載。然而,現(xiàn)有的無狀態(tài)區(qū)塊鏈系統(tǒng)[7-8]大部分是為加密貨幣設(shè)計(jì)的,而試圖開發(fā)支持智能合約的通用無狀態(tài)區(qū)塊鏈將面臨新的問題。首先在一般應(yīng)用程序中,由智能合約支持的事務(wù)可能包含任意邏輯,這需要新的證明技術(shù)來證明合約執(zhí)行的完整性;其次智能合約交易會(huì)引入任意大小的讀寫集,這比簡單的加密貨幣交易復(fù)雜得多,需要額外設(shè)計(jì)來支持狀態(tài)承諾更新[9]。

本文提出一種基于密碼累加器的無狀態(tài)區(qū)塊鏈性能優(yōu)化方案STiPChain。采用RSA 累加器生成具有分布式存儲(chǔ)能力的合約有效性證明(Contract Validity Proof,CVP)技術(shù),并基于該技術(shù)構(gòu)建無狀態(tài)區(qū)塊鏈,共識(shí)節(jié)點(diǎn)不再保存區(qū)塊數(shù)據(jù),而只需保存合約累加值及合約有效性證明降低磁盤和內(nèi)存的負(fù)擔(dān)。在此基礎(chǔ)上,STiPChain 將有效性證明與可驗(yàn)證計(jì)算技術(shù)相結(jié)合,設(shè)計(jì)一種適用于智能合約的無狀態(tài)區(qū)塊鏈,以解決無狀態(tài)條件下智能合約運(yùn)行驗(yàn)證問題。

1 相關(guān)工作

1.1 無狀態(tài)區(qū)塊鏈

以Ethereum[10]為代表的區(qū)塊鏈2.0 是基于交易的狀態(tài)機(jī),從創(chuàng)世區(qū)塊開始,通過交易持續(xù)不斷地改變區(qū)塊鏈狀態(tài)。區(qū)塊鏈狀態(tài)信息描述了系統(tǒng)中賬戶和余額的當(dāng)前狀態(tài),以及在區(qū)塊鏈虛擬機(jī)中部署和運(yùn)行的所有智能合約的參數(shù)數(shù)據(jù)。鏈上每個(gè)最終確定的區(qū)塊都有且只有一個(gè)狀態(tài),這是由網(wǎng)絡(luò)中的所有參與者共同確認(rèn)的。每當(dāng)有新的區(qū)塊產(chǎn)生時(shí),系統(tǒng)狀態(tài)都會(huì)隨之更新。

在無狀態(tài)區(qū)塊鏈中,用戶和共識(shí)節(jié)點(diǎn)都不需要存儲(chǔ)完整的系統(tǒng)狀態(tài)。相反,所有賬戶的當(dāng)前狀態(tài)以及在EVM 中部署和運(yùn)行的所有智能合約的集體組成的狀態(tài)使用經(jīng)過驗(yàn)證的數(shù)據(jù)結(jié)構(gòu)在所有節(jié)點(diǎn)中分配。通過這種方式,共識(shí)節(jié)點(diǎn)只存儲(chǔ)系統(tǒng)狀態(tài)的簡要摘要,每個(gè)用戶存儲(chǔ)他們的自身狀態(tài)數(shù)據(jù)。共識(shí)節(jié)點(diǎn)仍然可以驗(yàn)證收集到的交易,這些交易中包含了合約的有效性證明。此外,共識(shí)節(jié)點(diǎn)仍然可以提出新的事務(wù)塊,用戶也可以在發(fā)布新塊時(shí)快速同步或更新他們的證明。

文獻(xiàn)[11]提出一種基于RSA 累加器的改進(jìn)型輕節(jié)點(diǎn),極大地優(yōu)化了輕節(jié)點(diǎn)的存儲(chǔ)空間,但是并沒有解決全節(jié)點(diǎn)存儲(chǔ)問題。文獻(xiàn)[12]基于RSA 累加器提出一種適用于UTXO 模型的無狀態(tài)客戶端,可以較好地優(yōu)化共識(shí)節(jié)點(diǎn)的存儲(chǔ)問題,但并不能適用于智能合約的驗(yàn)證。文獻(xiàn)[6]提出一種無狀態(tài)交易驗(yàn)證的通用框架EDRAX,所有節(jié)點(diǎn)只需持有最新被確認(rèn)的區(qū)塊即可驗(yàn)證交易并更新狀態(tài),但是EDRAX 僅支持對(duì)賬號(hào)的余額進(jìn)行驗(yàn)證。文獻(xiàn)[7]首先針對(duì)通用累加器和向量承諾,提出了批處理技術(shù),極大地提升了累加器的驗(yàn)證效率并降低了傳輸開銷。然而,該累加器只適用于基于UTXO 模型的無狀態(tài)公有鏈,同時(shí)在不知道群階的情況下,RSA 累加器批量刪除操作的復(fù)雜度為O(n2),導(dǎo)致累加器更新效率低,無法適用于高吞吐量的環(huán)境。文獻(xiàn)[8]通過KZG 多項(xiàng)式承諾[13]構(gòu)造新的向量承諾方案aSVC,使用一個(gè)更強(qiáng)的交叉承諾聚合概念,將不同向量承諾的多個(gè)子向量證明聚合為一個(gè)單一的、恒定大小的證明。該方法雖然可以高效地支持加密貨幣轉(zhuǎn)賬交易,卻不能支持智能合約所需的任意計(jì)算邏輯。

1.2 可驗(yàn)證計(jì)算技術(shù)

可驗(yàn)證計(jì)算技術(shù)[14]確保遠(yuǎn)端計(jì)算機(jī)計(jì)算行為與期望一致,同時(shí)確保任意參與者可以檢測和監(jiān)視整個(gè)過程,可驗(yàn)證計(jì)算通常由基于密碼學(xué)和基于硬件2 種方式實(shí)現(xiàn)。以SNARKs[15]為代表的基于密碼學(xué)[16-17]的可驗(yàn)證計(jì)算技術(shù)由于密碼原語的存在,通常具有較高的計(jì)算量。相比之下,基于安全硬件的解決方案效率更高,如以Intel Software Guard eXtension(SGX)[18]為代表的可信執(zhí)行環(huán)境(TEE)[19],可以將計(jì)算任務(wù)在可信執(zhí)行環(huán)境中以保證數(shù)據(jù)完整性的方式執(zhí)行。

文獻(xiàn)[20]提出將計(jì)算與共識(shí)解耦,計(jì)算節(jié)點(diǎn)在線下的TEE 環(huán)境中完成隱私數(shù)據(jù)的計(jì)算,并向區(qū)塊鏈提供正確計(jì)算的證明。共識(shí)節(jié)點(diǎn)維護(hù)區(qū)塊鏈賬本以及驗(yàn)證計(jì)算節(jié)點(diǎn)計(jì)算的正確性,將可信執(zhí)行環(huán)境和區(qū)塊鏈相結(jié)合,實(shí)現(xiàn)了高效的隱私數(shù)據(jù)處理。

本文主要考慮使用基于TEE 的解決方案,TEE提供了一個(gè)完全隔離的環(huán)境,可以防止其他軟件應(yīng)用程序、操作系統(tǒng)和主機(jī)所有者了解甚至篡改在TEE 中運(yùn)行的應(yīng)用程序的狀態(tài)。例如SGX 提供了TEE 的實(shí)現(xiàn),Keystone-enclave 項(xiàng)目[21]旨在提供開源TEE 設(shè)計(jì)。然而,值得注意的是:本文提出的性能優(yōu)化方案可以與上述任何可驗(yàn)證計(jì)算解決方案共同工作。

2 STiPChain 系統(tǒng)架構(gòu)

STiPChain 將傳統(tǒng)區(qū)塊鏈中共識(shí)節(jié)點(diǎn)存儲(chǔ)系統(tǒng)中的全部智能合約的狀態(tài)數(shù)據(jù)轉(zhuǎn)變?yōu)榇鎯?chǔ)各合約的有效性證明,將智能合約的狀態(tài)數(shù)據(jù)抽象為hash 摘要,并通過RSA 累加器完成各智能合約摘要的累加與合約有效性證明的創(chuàng)建。同時(shí),各節(jié)點(diǎn)不必存儲(chǔ)所有智能合約的有效性證明,而是可以根據(jù)節(jié)點(diǎn)本身需求存儲(chǔ)相對(duì)應(yīng)合約的hash 摘要及有效性證明,從而極大地降低系統(tǒng)及系統(tǒng)中單個(gè)節(jié)點(diǎn)的存儲(chǔ)量。

此外,STiPChain 將區(qū)塊共識(shí)與區(qū)塊執(zhí)行解耦,由提議節(jié)點(diǎn)執(zhí)行合約事務(wù)并生成交易,共識(shí)節(jié)點(diǎn)負(fù)責(zé)提出區(qū)塊共識(shí)與新區(qū)塊。用戶在提交交易時(shí),首先由提議節(jié)點(diǎn)在本地可驗(yàn)證計(jì)算環(huán)境中執(zhí)行智能合約,之后采用Remote Attention 機(jī)制對(duì)TEE 進(jìn)行認(rèn)證,系統(tǒng)中任意節(jié)點(diǎn)可以檢查提議節(jié)點(diǎn)是否正確地加載了智能合約與合約參數(shù)以及運(yùn)算結(jié)果完整性的驗(yàn)證。共識(shí)節(jié)點(diǎn)基于合約有效性證明生成技術(shù)快速驗(yàn)證合約狀態(tài)摘要的合法性,并通過Remote Attention 機(jī)制驗(yàn)證智能合約的執(zhí)行情況,從而解決智能合約在無狀態(tài)環(huán)境下的驗(yàn)證問題。可驗(yàn)證計(jì)算確保了智能合約在提議節(jié)點(diǎn)本地得到了正確執(zhí)行,共識(shí)節(jié)點(diǎn)不再需要在區(qū)塊鏈虛擬機(jī)中執(zhí)行智能合約字節(jié)碼完成系統(tǒng)狀態(tài)更新,而只需要更新合約有效性證明即可完成,從而有效提高系統(tǒng)吞吐量。

1)提議節(jié)點(diǎn):接收用戶交易請求,在本地TE 環(huán)境中運(yùn)行智能合約并在交易中附上可驗(yàn)證計(jì)算證明,使得共識(shí)節(jié)點(diǎn)可以在不保存合約狀態(tài)信息的情況下完成交易執(zhí)行的驗(yàn)證。

2)共識(shí)節(jié)點(diǎn):運(yùn)行共識(shí)協(xié)議并維護(hù)區(qū)塊鏈全局狀態(tài)的一致性。接收提議節(jié)點(diǎn)在區(qū)塊鏈網(wǎng)絡(luò)中廣播交易并存儲(chǔ)至交易池中,從交易池中打包一批交易組成候選區(qū)塊進(jìn)行檢查與執(zhí)行,并提出新的區(qū)塊。

STiPChain 系統(tǒng)架構(gòu)如圖1 所示。

圖1 STiPChain 系統(tǒng)架構(gòu)Fig.1 STiPChain system architecture

3 基于密碼累加器的合約有效性證明

密碼累加器技術(shù)由文獻(xiàn)[22]提出,目的是證明一個(gè)元素是否存在于集合中的問題。它將集合中的元素X={x1,x2,…,xn}累加到一個(gè)值A(chǔ)Acc上,并為各元素生成存在性證明π,從而可以通過(AAcc,xi,πi)快速判斷元素存在性問題。當(dāng)前很多學(xué)者基于不同的密碼工具給出了不同的構(gòu)造,可分為基于RSA 的累加器、基于雙線性映射的累加器和基于Merkle 樹的累加器[23]。

合約有效性證明(CVP)基于RSA 累加器設(shè)計(jì),重要符號(hào)說明如表1 所示。在CVP中,Alice 存儲(chǔ)n個(gè)元素xi的一個(gè)恒定大小的累加值A(chǔ)Acc。元素xi本身不是由Alice 存儲(chǔ),而是分配給n個(gè)參與方,除元素xi外,每一個(gè)參與方都持有對(duì)AAcc的證明πi。當(dāng)Alice 希望通過u′更新合約狀態(tài)u的累加元素時(shí),其應(yīng)該能夠通過僅訪問信息(u,u′)輕松地將AAcc更新為A′Acc。也就是說,與Merkle 樹不同,更新是獨(dú)立于其他元素的。類似地,當(dāng)參與方i得知更新(u,u′)時(shí),應(yīng)該同樣能夠有效地只通過訪問(u,u′)更新證明(πi→)。

表1 符號(hào)說明 Table 1 Description of symbols

CVP 非常適合區(qū)塊鏈中的智能合約模式,共識(shí)節(jié)點(diǎn)存儲(chǔ)各合約的有效性證明累加值A(chǔ)Acc,每個(gè)智能合約有效性證明用πi標(biāo)識(shí),通過(πi,xi,u,πTEE→u′)的交易形式標(biāo)識(shí)一條智能合約xi從狀態(tài)摘要u改變狀態(tài)到u′。在檢測πTEE是合法的情況下合約狀態(tài)證明更新πi→,同時(shí)共識(shí)節(jié)點(diǎn)更新AAcc→,以便將累加值包括在新區(qū)塊,使得所有其他提議節(jié)點(diǎn)同步它們的相應(yīng)證明πi。

3.1 初始化Gen(λ)的設(shè)置

借鑒文獻(xiàn)[7]中的RSA 累加器設(shè)計(jì),將累加器建立在未知階的群上,避免進(jìn)行可信的初始化設(shè)置。通過參數(shù)λ,生成累加器初始值g,并隨機(jī)挑選2 個(gè)大素?cái)?shù)p、q,生成N=p×q。

3.2 合約有效性證明WitAccCreate(Acci-1)的創(chuàng)建

提議節(jié)點(diǎn)將創(chuàng)建合約的請求打包進(jìn)交易中發(fā)送至共識(shí)節(jié)點(diǎn)。設(shè)Acci-1為創(chuàng)建此合約時(shí)系統(tǒng)中保存的最新累加值。此時(shí),Acci-1中不包括當(dāng)前要?jiǎng)?chuàng)建的合約的狀態(tài)摘要。基于RSA 累加器特點(diǎn),由RSA 累加器AAcc計(jì)算式(1)及證據(jù)計(jì)算式(2)定義得累加器中元素i的有效性證明,可由除i之外的其他元素集合來表示,因此合約xi的有效性證明可由Acci-1表示,通過文獻(xiàn)[24]完成hash 轉(zhuǎn)為素?cái)?shù)。

3.3 合約有效性證明WitAccUpdate(AAcc,u′,N)的更新

當(dāng)系統(tǒng)發(fā)布新區(qū)塊時(shí),共識(shí)節(jié)點(diǎn)需要更新累加值A(chǔ)Acc,同時(shí)各提議節(jié)點(diǎn)需要完成其保存的合約有效性證明πi的更新。由于在不知道群階的情況下RSA累加器更新合約有效性證明的時(shí)間復(fù)雜度為O(n),而CVP 基于區(qū)塊鏈的區(qū)塊特性以及狀態(tài)驅(qū)動(dòng)特點(diǎn),使得合約有效性證明更新的時(shí)間復(fù)雜度降低為O(1)。在區(qū)塊鏈中,每當(dāng)系統(tǒng)發(fā)布新的區(qū)塊時(shí),各節(jié)點(diǎn)都需要接收該區(qū)塊并同步更新自身合約有效性證明。獲取合約i更新后的狀態(tài)摘要u′,通過式(3)將AAcc更新到,合約有效性證明通過式(4)更新至。

該方法可以有效防范惡意節(jié)點(diǎn)通過合約歷史有效性證明πoldi發(fā)起雙花攻擊。當(dāng)產(chǎn)生新區(qū)塊后AAcc→,若惡意節(jié)點(diǎn)將πoldi作為當(dāng)前合約的有效性證明,則根據(jù)式(5)及hash 函數(shù)的抗碰撞性,惡意節(jié)點(diǎn)很難成功發(fā)起雙花攻擊。

3.4 合約有效性證明WitAccVerify(AAcc,π,u)的驗(yàn)證

共識(shí)節(jié)點(diǎn)需要完成合約狀態(tài)證據(jù)的合法性驗(yàn)證。{0,1}←WitAccVerify(AAcc,π,u):驗(yàn)證者使用合約有效性證明累加值A(chǔ)Acc檢查合約狀態(tài)u的證據(jù)π是否有效。若等于AAcc,則表示證據(jù)有效輸出1,否則證據(jù)無效輸出0。

4 交易流程及關(guān)鍵算法

STiPChain 實(shí)現(xiàn)了由傳統(tǒng)區(qū)塊鏈中共識(shí)節(jié)點(diǎn)冗余存儲(chǔ)各合約的狀態(tài)數(shù)據(jù)轉(zhuǎn)變?yōu)楸4娓骱霞s狀態(tài)證明,提議節(jié)點(diǎn)在TEE 中運(yùn)行智能合約,共識(shí)節(jié)點(diǎn)檢查交易可驗(yàn)證計(jì)算證明πTEE,從而使得各節(jié)點(diǎn)無須運(yùn)行智能合約,也可以完成全局狀態(tài)的更新。

4.1 交易流程

本節(jié)介紹共識(shí)節(jié)點(diǎn)如何在不保存狀態(tài)信息的情況下完成交易的驗(yàn)證與執(zhí)行,以及如何在區(qū)塊鏈網(wǎng)絡(luò)中保持狀態(tài)信息的一致性。STiPChain 的交易處理流程如下:

1)用戶通過提議節(jié)點(diǎn)發(fā)起交易請求來調(diào)用智能合約,分別表示交易的輸入?yún)?shù)以及交易的簽名信息。

2)提議節(jié)點(diǎn)接收到交易請求后,提取本地狀態(tài)摘要、要執(zhí)行的智能合約及相關(guān)參數(shù),轉(zhuǎn)發(fā)到TEE 中進(jìn)行計(jì)算,獲取交易讀寫集及改變后的合約狀態(tài)摘要。

3)執(zhí)行完成后將可驗(yàn)證計(jì)算證明、交易讀寫集及本地當(dāng)前合約狀態(tài)摘要(u,u′)嵌入該交易中,將交易進(jìn)行廣播發(fā)送。

4)共識(shí)節(jié)點(diǎn)接收候選交易,存入交易池中。滿足交易閾值后將交易池中的交易打包為候選區(qū)塊。在創(chuàng)建新區(qū)塊時(shí),每個(gè)區(qū)塊頭除了包含交易的Merkle 樹根外,還包含了由所有智能合約狀態(tài)組成的CVP 累加值。當(dāng)新區(qū)塊產(chǎn)生后,需要向CVP 中添加區(qū)塊中新的合約狀態(tài),構(gòu)造新的CVP 累加值。經(jīng)過相應(yīng)的共識(shí)算法后發(fā)布新區(qū)塊。

5)提議節(jié)點(diǎn)接收新發(fā)布的區(qū)塊,并更新本地CVP 承諾以及合約有效證明。

交易流程如圖2 所示。

圖2 STiPChain 交易流程Fig.2 STiPChain transaction procedure

4.2 交易創(chuàng)建

為了提供足夠的信息用于共識(shí)節(jié)點(diǎn)在無狀態(tài)環(huán)境下的合約驗(yàn)證,提出一種新的基于TEE 的交易生成算法。如算法1 所示,它接收2 個(gè)輸入:1)來自用戶的交易請求txi;2)用戶對(duì)交易請求的簽名sign。

當(dāng)提議節(jié)點(diǎn)發(fā)起交易時(shí),首先在TEE 環(huán)境中執(zhí)行交易所調(diào)用的智能合約,將生成的讀寫集寫回?cái)?shù)據(jù)庫并重新計(jì)算此時(shí)的合約狀態(tài)摘要。此外,將提議節(jié)點(diǎn)中保存的合約狀態(tài)ui,以及更新后的合約狀態(tài)′ 一并通過Remote Attention 機(jī)制進(jìn)行簽名,用于防止節(jié)點(diǎn)惡意篡改合約數(shù)據(jù)以及系統(tǒng)中其他節(jié)點(diǎn)對(duì)數(shù)據(jù)完整性的檢查。將運(yùn)行后的結(jié)果打包進(jìn)交易并廣播發(fā)送給共識(shí)節(jié)點(diǎn)。

算法1提議節(jié)點(diǎn)交易執(zhí)行

4.3 區(qū)塊創(chuàng)建

共識(shí)節(jié)點(diǎn)完成區(qū)塊創(chuàng)建工作,在創(chuàng)建區(qū)塊時(shí)首先通過Remote Attention 機(jī)制驗(yàn)證該條交易的可驗(yàn)證計(jì)算證明。若驗(yàn)證通過,則證明該交易被正確執(zhí)行,即修改后的合約狀態(tài)可信,完成該條交易驗(yàn)證。共識(shí)節(jié)點(diǎn)重復(fù)n次,完成區(qū)塊中所有交易的驗(yàn)證,根據(jù)相應(yīng)的共識(shí)算法發(fā)布區(qū)塊,并將該區(qū)塊添加到本地賬本中,其余節(jié)點(diǎn)同步更新本地合約狀態(tài)摘要。提議節(jié)點(diǎn)驗(yàn)證通過后,從交易中取出合約狀態(tài)hash,通過CVP 驗(yàn)證合約狀態(tài)摘要是否合法。引入緩存,使得交易可以在接下來的k個(gè)區(qū)塊時(shí)間內(nèi)被處理,避免因?yàn)榫W(wǎng)絡(luò)延遲導(dǎo)致的交易驗(yàn)證頻繁失敗的問題。k是一個(gè)系統(tǒng)參數(shù),由系統(tǒng)中的所有參與者共同制定。

假設(shè)最后一個(gè)被計(jì)算的是blockt,而共識(shí)節(jié)點(diǎn)競爭的是blockt+1。共識(shí)節(jié)點(diǎn)收集新交易并打包為候選區(qū)塊,采用算法2 生成新區(qū)塊。在blockt+1中,需要包含新的累加值。其中,txs表示共識(shí)節(jié)點(diǎn)從交易池中打包的一批交易,h表示當(dāng)前系統(tǒng)中的區(qū)塊高度(輸入)。算法流程如下:檢查該條交易是否屬于最近的k個(gè)區(qū)塊;解析交易并檢查sign 是否為該用戶下的有效簽名;檢查πTEE是否為可驗(yàn)證計(jì)算的有效簽名;檢查πi是否為合約xi的有效證明,其中為區(qū)塊t的合約累加值;將AAcc更新參數(shù)放入緩存,該區(qū)塊驗(yàn)證結(jié)束后進(jìn)行更新并填入新區(qū)塊,同時(shí)節(jié)點(diǎn)可根據(jù)自己需要完成對(duì)智能合約i的證據(jù)更新。

算法2共識(shí)節(jié)點(diǎn)交易驗(yàn)證

4.4 證據(jù)同步

Alice 在接收到新區(qū)塊后,運(yùn)行區(qū)塊中的數(shù)據(jù)并更新本地合約有效證據(jù)。πi是合約xi的本地狀態(tài)證明,它對(duì)應(yīng)到blockt之前的合約狀態(tài)。當(dāng)系統(tǒng)中發(fā)生了新的交易并且創(chuàng)建了blockt+1時(shí),系統(tǒng)的世界狀態(tài)發(fā)生改變,Alice 的本地驗(yàn)證πi不再有效,持有合約xi的節(jié)點(diǎn)必須同步新的證明,以確保它包含所有更新。blockt+1中包含新的合約狀態(tài)(u1,′),(u2,u′2),…,(ui,)。為此,Alice 通過運(yùn)行π←WitAccUpdate(AAcc,ui,N)并執(zhí)行算法3,輸出一個(gè)新的同步驗(yàn)證。Alice 從blockt+1中進(jìn)行同步,基于Remote Attention 機(jī)制和本地存儲(chǔ)的合約狀態(tài)πi確保合約狀態(tài)進(jìn)行正確的更新,然后更新本地證明。需要注意的是:Alice 在進(jìn)行同步時(shí)運(yùn)行與共識(shí)節(jié)點(diǎn)交易驗(yàn)證相同的算法來驗(yàn)證區(qū)塊合法性并完成狀態(tài)同步。此外,各提議節(jié)點(diǎn)并不需要保存系統(tǒng)中所有合約的有效性證明,可根據(jù)節(jié)點(diǎn)自身需求保存相應(yīng)合約的有效性證明。

算法3提議節(jié)點(diǎn)合約有效性證明同步

5 性能測試

本節(jié)量化了STiPChain 每種優(yōu)化的性能收益,測試了CVP 證據(jù)大小和CVP 更新效率以及系統(tǒng)吞吐量和節(jié)點(diǎn)的存儲(chǔ)開銷,評(píng)估了STiPChain 的5 個(gè)應(yīng)用,1 個(gè)同臺(tái)加密計(jì)算合約,并通過Solidity 語言實(shí)現(xiàn)鏈上的基于同態(tài)加密的加減運(yùn)算。ERC20 轉(zhuǎn)賬操作、鏈上文件保存操作、數(shù)據(jù)加密和鏈上明文計(jì)算5個(gè)合約運(yùn)行在EVM中。與Ethereum 主網(wǎng)相比,STiPChain 可以在定長時(shí)間內(nèi)完成交易驗(yàn)證及狀態(tài)證明更新,支持吞吐量更高、存儲(chǔ)量更低的合約運(yùn)算。表2 所示為STiPChain 與其他區(qū)塊鏈優(yōu)化方案的對(duì)比,其中:√表示是;×表示否。

表2 STiPChain 與現(xiàn)有區(qū)塊鏈優(yōu)化方案的對(duì)比 Table 2 Comparison between STiPChain and existing blockchain optimization schemes

5.1 實(shí)驗(yàn)環(huán)境設(shè)置

將區(qū)塊鏈系統(tǒng)部署在4 臺(tái)阿里云ecs.c7t.large 服務(wù)器,每臺(tái)服務(wù)器運(yùn)行4個(gè)節(jié)點(diǎn),配置Intel Xeon(Ice Lake)Platinum 8369B 處理器,內(nèi)存為4 GB,網(wǎng)絡(luò)帶寬為10 Gibit/s,安裝Alibaba Cloud Linux 操作系統(tǒng)。

5.2 合約有效性證明大小

本節(jié)主要完成不同狀態(tài)承諾技術(shù)的證據(jù)大小測試。實(shí)驗(yàn)結(jié)果如圖3 所示,Boneh、Edrax 及STiPChain 的合約有效性證明大小隨著累加元素的增多一直維持在1 KB左右,不隨累加元素的增多而增大。然而,Merkle 樹產(chǎn)生的證據(jù)大小遠(yuǎn)大于Boneh 及STiPChain,并且隨著累加元素的增多以lbN的增長速度增大,當(dāng)累加元素個(gè)數(shù)為10 000時(shí),證據(jù)大小達(dá)到了626 KB。Ethereum 普通區(qū)塊包含一個(gè)區(qū)塊頭和交易列表,其大小約為100 KB,這種大小可以使得區(qū)塊廣播速度較快。但若采用Merkle樹承諾方案會(huì)對(duì)網(wǎng)絡(luò)帶寬帶來較大負(fù)擔(dān),系統(tǒng)中網(wǎng)絡(luò)延遲較高。

圖3 合約有效性證明大小測試結(jié)果Fig.3 Test results of contract validity certificate size

5.3 合約有效性證明更新

本節(jié)主要測試合約有效性證明的更新效率,該效率直接影響了系統(tǒng)的吞吐能力。Boneh 使用RSA 累加器構(gòu)建 UTXO 承諾,承諾更新的時(shí)間復(fù)雜度為O(n),Edrax 基于向量承諾方案實(shí)現(xiàn)更新操作的時(shí)間復(fù)雜度為O(lognlog logn),而STiPChain 基于區(qū)塊鏈的全局狀態(tài)一致性,只需要進(jìn)行添加操作即可完成合約的有效性證明更新,更新時(shí)間復(fù)雜度為O(1)。

圖4 所示為STiPChain、Edrax 與Boneh 累加器的更新效率對(duì)比。Boneh 更新時(shí)延隨著累加元素的增多明顯增高,當(dāng)累加元素個(gè)數(shù)為1 600時(shí),更新時(shí)延為17 033 μs。Edrax 方案隨著累加元素個(gè)數(shù)的增多增長緩慢,當(dāng)累加元素個(gè)數(shù)為從100 增長到1 600時(shí),更新時(shí)延從83 μs 增長到152 μs;STiPChain 的更新時(shí)延不隨元素個(gè)數(shù)的增多而增長,維持在24 μs 左右。實(shí)驗(yàn)結(jié)果表明,CVP 更新時(shí)延最低,而Boneh 累加器更新時(shí)延遠(yuǎn)大于STiPChain 與Edrax,并且隨著累積狀態(tài)數(shù)量的增多明顯增高。當(dāng)操作數(shù)量達(dá)到1 400時(shí),Boneh 累加器更新時(shí)間是CVP 的16 000倍,這就導(dǎo)致依賴于Boneh 狀態(tài)承諾的無狀態(tài)客戶端設(shè)計(jì)面臨嚴(yán)重的性能問題。

圖4 合約證明更新效率測試結(jié)果Fig.4 Test results of contract certification renewal efficiency

5.4 存儲(chǔ)開銷

本節(jié)主要評(píng)估系統(tǒng)的存儲(chǔ)開銷,分別測試了Ethereum Geth 模式下全節(jié)點(diǎn)、文獻(xiàn)[4]及STiPChain 中狀態(tài)數(shù)據(jù)的空間開銷。獲取了Ethereum從20190101—20220101 期間運(yùn)行全節(jié)點(diǎn)所需存儲(chǔ)空間的數(shù)據(jù)變化(https://etherscan.io/chartsync/chaindefault),并與文獻(xiàn)[4]和STiPChain 進(jìn)行對(duì)比實(shí)驗(yàn)。此外,本文將緩存參數(shù)k設(shè)置為16,可保證大多數(shù)交易被處理。

圖5 所示為狀態(tài)數(shù)據(jù)存儲(chǔ)開銷對(duì)比,Ethereum 在20220101已經(jīng)超過了1 TB 并以極快的速度繼續(xù)增長。在20190101—20220101 期間,文獻(xiàn)[4]共識(shí)節(jié)點(diǎn)存儲(chǔ)量由17 743 553 KB 增長到89 506 154 KB,通過采用分布式哈希表的方法有效降低了節(jié)點(diǎn)的存儲(chǔ)負(fù)擔(dān),但仍然遠(yuǎn)高于STiPChain。相較于Ethereum 中全節(jié)點(diǎn)需要保存全部的區(qū)塊數(shù)據(jù)及狀態(tài)數(shù)據(jù)才可驗(yàn)證與執(zhí)行區(qū)塊中的任意交易,STiPChain 中共識(shí)節(jié)點(diǎn)保存AAcc,所占存儲(chǔ)空間不到1 KB。獲取要驗(yàn)證交易中包含的合約有效性證明π,通過交易驗(yàn)證算法即可完成交易驗(yàn)證與狀態(tài)更新,從而有效降低共識(shí)節(jié)點(diǎn)的存儲(chǔ)需求。此外,通過僅存儲(chǔ)AAcc完成交易驗(yàn)證,使得系統(tǒng)中的狀態(tài)存儲(chǔ)空間不隨運(yùn)行時(shí)間的增長而明顯增長,從而降低共識(shí)節(jié)點(diǎn)99%的存儲(chǔ)壓力。

圖5 存儲(chǔ)空間優(yōu)化測試結(jié)果Fig.5 Test results of storage space optimization

截止到20201006,以太坊中已經(jīng)包含了31 949 110條智能合約以及87 570 650 條用戶地址信息。雖然STiPChain 將共識(shí)節(jié)點(diǎn)中的區(qū)塊及狀態(tài)數(shù)據(jù)采用合約有效性證明標(biāo)識(shí),并將合約有效性證明的存儲(chǔ)負(fù)擔(dān)轉(zhuǎn)移至提議節(jié)點(diǎn),但對(duì)于整個(gè)系統(tǒng)來說,提議節(jié)點(diǎn)并不需要存儲(chǔ)全部智能合約的有效性證明,而是根據(jù)自身的需要存儲(chǔ),從而降低系統(tǒng)中數(shù)據(jù)冗余程度。與Ethereum中全節(jié)點(diǎn)數(shù)據(jù)完全冗余方式相比,STiPChain不僅可以有效降低共識(shí)節(jié)點(diǎn)的存儲(chǔ)負(fù)擔(dān),并且可以有效降低整個(gè)系統(tǒng)的數(shù)據(jù)存儲(chǔ)量。

5.5 吞吐量

為了測量STiPChain 的峰值性能,本文對(duì)16 個(gè)客戶端進(jìn)行了實(shí)驗(yàn),每個(gè)客戶端向一個(gè)計(jì)算節(jié)點(diǎn)發(fā)送100 個(gè)串行請求。測試采用共識(shí)節(jié)點(diǎn)執(zhí)行交易所需時(shí)間作為吞吐量測試樣本,并對(duì)每條合約實(shí)驗(yàn)忽略測試起始與結(jié)束前10%的請求,測試平均穩(wěn)定的性能。圖6 所示為吞吐量測試結(jié)果。STiPChain 的吞吐量一直高于2 000 T/s,各合約之間吞吐量變化不大。Ethereum 在ERC20 轉(zhuǎn)賬合約中達(dá)到了1 619 T/s,而在Encryption 合約測試中僅有67 T/s。實(shí)驗(yàn)結(jié)果表明,STiPChain 相較于Ethereum 具有更高的吞吐量并且在處理復(fù)雜合約時(shí)更具有優(yōu)勢。STiPChain 中的共識(shí)節(jié)點(diǎn)在修改全局狀態(tài)時(shí)只需要檢查合約有效性證明和可驗(yàn)證計(jì)算證明,無須重復(fù)執(zhí)行交易,通過該方式可以有效地提高系統(tǒng)的吞吐量。

圖6 吞吐量測試結(jié)果Fig.6 Test results of throughput

6 結(jié)束語

針對(duì)多數(shù)公有鏈低吞吐和數(shù)據(jù)增長問題,本文提出一種基于密碼累加器的無狀態(tài)區(qū)塊鏈性能優(yōu)化方案STiPChain。STiPChain 通過CVP 狀態(tài)承諾和可驗(yàn)證計(jì)算技術(shù)將狀態(tài)和交易執(zhí)行轉(zhuǎn)移到提議節(jié)點(diǎn),共識(shí)節(jié)點(diǎn)負(fù)責(zé)交易驗(yàn)證及區(qū)塊提交,從而提高系統(tǒng)的可擴(kuò)展性。在此基礎(chǔ)上,設(shè)計(jì)了新的狀態(tài)承諾方案以及鏈外事務(wù)執(zhí)行、鏈上事務(wù)驗(yàn)證和節(jié)點(diǎn)同步方案來支持無狀態(tài)交易執(zhí)行與驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,相較于Etherrum,STiPChain 能夠極大地降低共識(shí)節(jié)點(diǎn)的存儲(chǔ)壓力,并有效提高系統(tǒng)吞吐量。下一步將利用安全多方計(jì)算[25-26]技術(shù)實(shí)現(xiàn)RSA 累加器的可信初始化設(shè)置等關(guān)鍵功能,并通過狀態(tài)承諾[27-28]模型給出安全性更高的狀態(tài)承諾方案,從而提高的系統(tǒng)安全性與運(yùn)行效率。

猜你喜歡
有效性智能
如何提高英語教學(xué)的有效性
甘肅教育(2020年6期)2020-09-11 07:45:28
制造業(yè)內(nèi)部控制有效性的實(shí)現(xiàn)
提高家庭作業(yè)有效性的理論思考
甘肅教育(2020年12期)2020-04-13 06:24:56
智能制造 反思與期望
智能前沿
文苑(2018年23期)2018-12-14 01:06:06
智能前沿
文苑(2018年19期)2018-11-09 01:30:14
智能前沿
文苑(2018年17期)2018-11-09 01:29:26
智能前沿
文苑(2018年21期)2018-11-09 01:22:32
智能制造·AI未來
商周刊(2018年18期)2018-09-21 09:14:46
如何提高高中數(shù)學(xué)作業(yè)有效性
主站蜘蛛池模板: 一级毛片基地| 真人免费一级毛片一区二区 | 亚洲精品波多野结衣| 永久免费av网站可以直接看的| 久热中文字幕在线| 人妻无码中文字幕第一区| 亚洲aⅴ天堂| 色婷婷啪啪| 在线观看无码a∨| 91精品专区国产盗摄| 精品欧美一区二区三区在线| 亚洲一区色| 丝袜久久剧情精品国产| 韩国福利一区| 精品人妻一区二区三区蜜桃AⅤ| 欧美国产精品不卡在线观看 | 久热re国产手机在线观看| 国产尤物视频在线| 久久精品aⅴ无码中文字幕| 国产原创演绎剧情有字幕的| 亚洲视频在线观看免费视频| 农村乱人伦一区二区| 男女性色大片免费网站| 亚洲91精品视频| 伊人91在线| 日韩在线1| 午夜a级毛片| 国产男女免费视频| 色综合久久久久8天国| 欧美日韩专区| 国产精品亚欧美一区二区| 欧美区一区| 亚洲精品国产精品乱码不卞| 国产尤物视频网址导航| 思思99热精品在线| 波多野结衣无码视频在线观看| 又大又硬又爽免费视频| 色成人亚洲| 久久狠狠色噜噜狠狠狠狠97视色| 色精品视频| 亚洲VA中文字幕| 久久国产精品娇妻素人| 日本一本正道综合久久dvd| 2021国产精品自拍| 国产91色在线| 另类重口100页在线播放| 无码视频国产精品一区二区| 青青久久91| 亚洲男人在线天堂| 天天激情综合| 久久精品欧美一区二区| 小说区 亚洲 自拍 另类| 国产日韩欧美成人| 久久亚洲国产一区二区| 日本草草视频在线观看| 亚洲成人一区二区| 麻豆国产精品| 九色视频在线免费观看| 欧美亚洲第一页| 欧美国产在线精品17p| 99一级毛片| 国产成人久久综合777777麻豆| 99资源在线| 亚洲a级在线观看| a级高清毛片| 国产精品久久久免费视频| 亚洲水蜜桃久久综合网站| 久久伊人操| 日韩av电影一区二区三区四区 | 国产精品私拍99pans大尺度| 欧美亚洲欧美| 91午夜福利在线观看| 亚洲欧美精品一中文字幕| a级毛片免费网站| 国产凹凸一区在线观看视频| 在线免费亚洲无码视频| 国产swag在线观看| 国产精品高清国产三级囯产AV| 免费人成网站在线高清| 四虎永久免费在线| 538国产视频| 国产精品自在在线午夜|