基于区块链的健康链系统设计与实现(5)区块链性能优化
4.4區塊鏈性能優化
通過更改相關參數和優化,交易性能在單節點的情況下能達到100個TPS以上。比如將生成塊的時間由每10分鐘改成10秒,將調整難度時間由2周改成80秒,將交易內存池擴大,并擴大交易最大容量大小等等。
在測試性能時,需要提前創建大量未花費的交易,并記錄交易哈希值以備使用。創建交易的思路是將某個交易按固定數量生成多個輸出,然后循環以上次的交易輸出作為新的交易輸入得到更多的交易。以1個CoinBase交易為例,其輸入為50個btc,將其按數量輸出為80份。再對這80個交易輸出進行操作,對每個輸出作為新的交易輸入又得到100個交易輸出,以同樣的步驟再次劃分為100倍。最終得到800000個數量約為6000聰btc的交易輸出。如下為示例代碼:
系統也對數據的存儲優化進行了嘗試。在比特幣的文件存儲系統中,blocks目錄下blk開頭的后綴為dat的文件表示當前的區塊數據,rev開頭的后綴為dat的文件是區塊回滾數據。chainstate目錄主要存儲UTXO(Unspent Transaction Output)相關的數據,以leveldb數據庫存儲,indexes目錄存儲的同樣是基于leveldb的交易索引數據。
當收到新的區塊或者區塊回滾時,系統代碼以CChainState::ConnectTip和 DisconnectTip為相應的入口。
數據分片在區塊鏈的數據副本基礎上進行,將相關數據分為100個區,具體分區根據交易在區塊中的順序而來,序號1、101、1001等序號除以100其模為1的交易組成第1個分區,依次類推。表4列出了第9個、19個…99個分區的數據。系統測試時將8,000,000個長度為100個字符的數據存儲在區塊鏈上,區塊高度為21105,總區塊大小為2825M,總的UTXO數據大小為588M,交易索引總大小為389M。
A表示交易的順序,B是每個分區下面的區塊數據大小,D是分區后交易索引大小,F是分區后UTXO數據大小。C、E、G表示當前分區所占比例。
C=B/2825M×100%; E=D/389M×100%;
G=F/588M×100%.
A B(M) C(%) D(M) E(%) F(M) G(%)
9 35.6 1.26% 3.97 1.02% 21.3 3.62%
19 34.7 1.23% 3.87 0.99% 20.1 3.42%
29 33.8 1.20% 3.77 0.97% 19.5 3.32%
39 32.9 1.17% 3.68 0.95% 18.5 3.15%
49 32 1.13% 3.59 0.92% 17.9 3.04%
59 31.2 1.11% 3.5 0.90% 17.3 2.94%
69 30.5 1.08% 3.42 0.88% 16.5 2.81%
79 29.7 1.05% 3.35 0.86% 16 2.72%
89 29 1.03% 3.27 0.84% 15.2 2.59%
99 28.3 1.00% 3.2 0.82% 14.8 2.52%
由表可知,數據呈現正確態勢,由于區塊中交易個數不等,相對來說,交易序號越少,分區中的交易也相對集中,數據量也越大。
【參考】
[1] 雷志偉 等 基于區塊鏈的健康鏈系統設計與實現. 《計算機與數字工程》2020年第12期
總結
以上是生活随笔為你收集整理的基于区块链的健康链系统设计与实现(5)区块链性能优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于区块链的健康链系统设计与实现(4)系
- 下一篇: 基于区块链的健康链系统设计与实现(6)结