楊國正,臧 鋮,陳嘉俊,張少鵬,鐘禮斌,黃 蓉
(1.浙商銀行股份有限公司金融科技部,浙江 杭州 311200;2.浙商銀行股份有限公司區塊鏈技術應用研究院)
區塊鏈被納入“十四五”規劃中,表明了國家監管與政策鼓勵區塊鏈技術發展在中國的數字經濟中發揮關鍵作用的決心。
與歐美國家側重公鏈區塊鏈技術發展模式不同,我國區塊鏈技術的發展大多基于聯盟鏈的應用,利用區塊鏈技術與傳統行業的創新結合,解決問題、提高效率,從而賦能政府、企業的數字化轉型,賦能實體經濟。因此,我國大量區塊鏈創新企業專注于尋找區塊鏈與傳統業務結合的創新點,專注于提高聯盟鏈平臺底層的效率以支持更多的應用場景。
以區塊鏈基礎技術平臺為例,創新利用區塊鏈自適應交易打包方法,根據業務場景對數據存儲的需求對交易打包方法進行自適應配置,以提高在不同業務場景下的聯盟鏈共識效率。
區塊鏈技術是一種分布式賬本技術,同時也是一個點對點的協作網絡。協作方節點共同維護數據,每個協作方節點都有一份完整數據,且所有協作方節點數據保持一致。這一切都需要依賴于區塊鏈的共識機制。
共識機制是指所有協作方在節點的預設規則下,通過多個節點交互,對鏈上數據、行為或流程達成一致的過程。其步驟如下:協作方節點將區塊(每個打包的交易叫做一個區塊)分發到其他協作方節點進行共識驗證,當大多數節點驗證區塊無誤(即各個協作方達成了共識),其他協作方節點同步該區塊。
這種協作方節點間達成共識的模式即為目前大多數聯盟鏈平臺采用的BFT 族共識算法,即拜占庭容錯算法。拜占庭容錯算法通過三個階段的共識對交易哈希、運行結果進行三次比對,在三個階段的共識全部通過之后,交易數據才會寫入區塊鏈賬本。

圖1 RBFT算法流程
交易打包為區塊的條件有兩個,打包時間(t)與交易筆數(n),即當交易達到打包時間閾值或者交易筆數閾值時,區塊鏈平臺將根據交易請求的先后順序進行全部或者部分打包,進行共識。在傳統的交易打包模式中,t 與n 參數在初始配置文件中進行配置,若想對參數進行修改則需要手動修改配置文件,并重啟節點服務。
目前市面上大部分區塊鏈節點均采用的是固定的配置文件。例如“基于區塊鏈的交易處理方法”專利,節點在交易處理過程中,設定特定的時間間隔執行交易打包。該模式適合比較單一的應用場景。當需在同一個節點鏈上實現多種應用場景,數據上鏈穩定性和效率會受到影響。例如,在實時交易場景下,業務應用系統要求區塊鏈平臺的響應時間盡可能的短,即打包時間盡可能的短;但是在批量數據登記場景下,交易請求數量激增,如果打包時間設置較短或者交易筆數n 設置較小,會導致區塊鏈打包區塊數量快速增多。當區塊產生的速度超過區塊鏈平臺區塊緩存池上限時,區塊數據會丟失,同時也會導致服務器資源使用急劇上升,使得數據上鏈效率降低。
目前,基于區塊鏈基礎技術平臺(下稱“區塊鏈平臺”)已實現多種應用場景,例如供應鏈金融、文件存證、日終批量數據存證等。在不同的應用場景下,其業務要求響應時效性和上鏈數據量具有較大差異,例如在供應鏈金融場景,會涉及到客戶資產轉讓,資產質押等操作,對區塊鏈平臺響應的時效性要求較高。在日終批量數據存證上鏈場景,由于其數據上鏈并發量大且無時效性要求,可以犧牲一部分數據上鏈時效性,來保證節點服務的穩定性和上鏈數據不被丟失。為此,采用固定的區塊鏈打包參數僅適合某一個特定的場景,并不適合多種場景的情況。
在此基礎上,區塊鏈平臺創新開發了一種自適應配置交易打包方法,在控制交易打包的配置文件中設置了打包時間(t)、交易筆數(n)、打包時間初始值(P)與交易筆數初始值(q)等四個參數,并根據業務的實際需求制定實時登記和批量登記的參數調整策略。在數據上鏈過程中,區塊鏈平臺會自動記錄前一時間段i的每秒交易請求數,并根據每秒交易請求數匹配配置文件中的參數策略,并實時刷新參數值。當區塊鏈平臺觸發刷新后的打包參數閾值,平臺便會對交易按照時間順序進行打包。通過區塊鏈基礎平臺自我調整區塊打包參數閾值,可同時滿足供應鏈金融、批量數據存證等不同場景下的應用需求。
為了直觀看出不同場景下,打包參數值對數據上鏈效率以及節點服務器性能的影響,分別在低壓力和高壓力情況下對節點進行了實驗,實驗節點分別部署在四臺4C8G的虛擬服務器上。
⑴低壓力實驗
在低壓力,要求響應實時性高的情況下,將打包時間t 設置為較小值,使其能快速達到打包時間閾值。分別將打包時間設置為100ms,200ms,300ms,400ms,500ms,600ms,每一秒發送20 筆交易,持續5s,再計算節點服務平均響應時間(如表1、圖2)。

圖2 在不同t值情況下,節點服務平均響應時間

表1 在不同t值情況下,節點服務平均響應時間
表1 中t 值越小,節點服務平均響應時間越短,上層業務應用系統可以獲得更高效的區塊鏈服務。
⑵高壓力實驗
在高壓力的情況下,將打包時間t 值設置得足夠大,使其只會觸發交易筆數的閾值。將交易筆數分別設置為200,400,600,觀察節點服務器CPU 及節點磁盤使用情況(圖3、圖4)。表2、表3 中顯示,在壓力恒定的情況下,交易筆數n越大,服務器CPU使用率和磁盤使用率越低,節點服務更穩定,上鏈效率也會越高。

表2 在不同n值情況下,節點CPU平均使用率

圖3 在不同n值情況下,節點CPU平均使用率

表3 在不同n值情況下,節點磁盤平均讀寫情況

圖4 在不同n值情況下,節點磁盤平均讀寫情況
從實驗結果可以得出,在低壓力情況下,隨著打包時間的增加,區塊鏈平臺平均響應時間也會隨之增加。在高壓力情況,打包筆數設置較小時,服務器CPU 平均使用率過高,會導致服務器不穩定,出現未知錯誤。若隨著并發量的增加,調整打包筆數參數的大小,使服務器CPU平均使用率可以保持在一個正常的水平。
為此,區塊鏈平臺需要根據當前交易請求數來選擇最優的區塊打包參數,以保證區塊鏈平臺服務的高效性和穩定性。當某時間段內交易請求數較少,且要求實時登記交易信息時,區塊鏈平臺可以將打包時間t設置為較小值,提高區塊鏈響應時間;隨著交易請求數增加,區塊鏈平臺可以將打包時間t 相應比例調大,增加每個區塊中的交易筆數以提高數據上鏈效率;當某段時間,數據上鏈請求量突然放大時,區塊鏈平臺可以增大交易筆數n值,對數據進行批量打包,減少區塊鏈平臺生成區塊速度和數量,防止區塊鏈數量超出區塊緩存池導致區塊數據丟失,同時提高批量交易登記效率。此外,在區塊鏈平臺中區高度越高,上鏈數據查詢效率會降低。為保證區塊鏈數據查詢效率,需適當控制區塊高度。
顯然,在多樣化的應用場景下,區塊鏈平臺需要能夠自適應調節區塊打包參數,故區塊鏈平臺采用如圖5中所示的自適應交易打包流程。首先在區塊鏈平臺配置實時登記策略和批量登記策略的打包參數,在區塊鏈平臺接收交易的過程中,平臺自動根據前一時間段i 的每秒交易請求數,實時刷新配置中對應的打包時間或者交易筆數閾值,當平臺觸發打包參數閾值,便會對交易按時間順序進行打包,使區塊鏈平臺對打包參數的選擇更加合理。

圖5 自適應交易打包流程
以下為區塊鏈平臺的一次實際應用,配置打包的參數策略如下:
區塊鏈平臺在控制交易打包的配置文件中設置了四個參數,分別為打包時間(t)、交易筆數(n),以及打包時間初始值(P)和交易筆數初始值(q)。
將打包時間初始值P 設置為0.05,將交易筆數初始值q設置為100。
當區塊鏈平臺前一時間段i 內每秒收到的交易請求數a≤b(b為自定義的閾值,b<q,例如取b=10),區塊鏈平臺采取實時登記策略,將打包時間t 設置為打包時間初始值P(例如0.05s)。此時,區塊鏈平臺在收到交易請求后便會立刻進行數據打包和節點共識。
隨著區塊鏈平臺i 秒內收到的每秒交易請求數量的增大,例如每秒交易請求數a≥b且a≤c(c為自定義的閾值,c 小于q,例如取20)時,區塊鏈平臺可根據增大的數量的量級讀取相應的配置參數值。實時登記的策略上可以依次設置10個等級區間(例如i秒內,當a≤10 時,t=0.05;當10<a≤20 時,t=0.1;當20<a≤30,t=0.15;當30<a≤40 時,t=0.2;……;當90<a≤100 時,t=0.5;最高等級打包時間內的交易請求數a小于100)。
當每秒交易請求數量過大時,會觸發交易筆數的閾值。在這種情況下,區塊鏈平臺采取批量登記策略,將交易筆數值n變大。當i秒內每秒交易請求數a≥q 且a≤w 時,設置打包時間t 為一較大值(例如5 秒)。當i 秒內每秒交易請求數a≥w 且a<f 時,將交易筆數n更新為w。同上也可以依次設置10 個等級區間(例如i 秒 內,當100≤a<200 時,n=100;當200≤a<300 時,n=200;當300≤a<400 時,n=300;……依此類推,最高等級交易筆數不超過區塊鏈平臺處理交易的上限)。
區塊鏈平臺對交易打包模式的創新,旨在提高不同場景下的數據上鏈效率。區塊鏈平臺可以根據不同的交易請求數量,自適應選擇其交易打包參數的最優配置,從整體上提高區塊鏈平臺的處理效率。
眾所周知,區塊鏈共記一本賬、不可篡改、可追溯的特性使其天然適用于交易清算以及交易登記的場景,而區塊鏈的共識效率問題使其一直無法應用于證券等金融衍生品交易、清算、登記等場景。本文闡述了區塊鏈技術的特點,研究了在交易打包方面提升了數據高頻上鏈場景下的系統吞吐量方法,并在區塊鏈平臺實現本文提出的靈活調整交易打包參數策略。實驗結果表明,應用該方法,區塊鏈節點服務器以及磁盤使用率更低,節點服務更穩定,大幅提升了數據上鏈效率。下一步將繼續優化該方法的參數配置策略,使其能夠適應更多的數據上鏈場景,不斷提升數據上鏈效率,全面拓展區塊鏈的應用場景,從而推動區塊鏈技術賦能實體經濟,推動我國數字產業化。