1. 程式人生 > >人人都應學習的公鏈知識——比原總體架構

人人都應學習的公鏈知識——比原總體架構

包含 text blog cde 用戶 並不是 生成 產生 塊存儲

本文將會給大家介紹一下比原鏈總體的技術架構。

如下圖所示:比原鏈分為三個層次

技術分享圖片

第一層就是大家接觸比較多的錢包層,就是進行收款和打款的模塊,錢包一般帶操作界面,大家都可以日常使用,所以會比較熟悉。

然後就是最核心的內核層,內核可以理解為分布式系統中每個節點認同的一套規則,只有有相同的規則,兩個節點才能達成一致。如果規則不同,其實就是發生分叉了。

最後一層是通信層,通信層是節點之間交換信息的方式,包含區塊同步,交易同步等。

首先來看內核層,內核層主要由五個模塊構成:

孤兒塊管理:孤兒塊就是由礦工挖出但未成為主鏈區塊的區塊(在相同高度產生2個甚至更多的合法區塊,一個區塊成為主鏈,剩下的則稱為孤兒塊),孤兒塊管理就是將未成為主鏈區塊的孤兒塊存儲起來。

共識層:確認一個塊是否合法。分為區塊頭驗證和交易驗證。區塊頭驗證需要驗證它的父塊和時間戳,同是需要算力來保證記賬權利。交易驗證比原特別的設計了一層BC層,這層在交易驗證時會獲得更好的性能,交易驗證還和智能合約相關,交易被驗證時參數會參入虛擬機驗證該交易是否合法。
區塊樹管理:又成為Block Index,作用是記錄全網所有的塊,保存了全網所有塊的一張鏡像圖。因為有孤兒塊,所有它並不是鏈式結構的,會有分叉的情況,所以稱為區塊樹
數據存儲:將區塊數據做持久化存儲。包含兩種數據,第一種是區塊數據,會在網絡上進行廣播的原生區塊信息;第二種是UTXO數據,存儲UTXO數據是為了更快的驗證一筆UTXO是否可以花費,而不需要去遍歷所有區塊信息
交易池:維護了所有全網發出的但是還未被確認的交易。跟它關聯最大的是挖礦模塊,挖礦模塊每次要產生一個新區塊的時候,它會從交易池拿一些交易打包成塊,然後用Tensority共識算法進行工作量驗算

技術分享圖片

然後來說一下錢包層:

私鑰模塊:主要用於管理私鑰(私鑰的生成,存儲,備份等)和簽名
賬戶模塊:在比原的設計中,使用了賬戶-地址-密鑰三層體系,每個人可以擁有多把私鑰,通過私鑰不同的組合形式形成賬戶,每個賬戶可以又無限多個地址,地址是由賬戶的私鑰派生出的二級私鑰形成的地址,使用多地址可以更好的保護用戶的隱私。
資產模塊:管理賬戶下創建資產的模塊,任何issue的資產都是在這個模塊中交互。
交易模塊:可以理解成跟我相關的交易數據,它主要做了兩件事:

將和你相關的交易從所有交易中篩選出來
維護錢包層UTXO的數據庫,記錄本人所擁有的UTXO

技術分享圖片

最後說一下通訊層:

節點發現:P2P相關,是非常獨立和成熟的一塊,通過節點發現這個模塊獲得種子節點,然後通過種子節點來獲取其他更多的節點。
交易同步:在各個節點之間同步交易。
區塊同步:又稱為被動區塊同步,如果發現存在區塊高度高於自己的其他節點時,不斷請求區塊同步。
新區塊快速廣播模塊:新區塊主動同步,當挖到一個新的區塊時進行強制廣播,從而更快的在全網傳播。

技術分享圖片

比原鏈的基本架構就是這樣,後續我們將深入一些流程進行講解。

人人都應學習的公鏈知識——比原總體架構