国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

幫助中心 >  行業(yè)資訊 >  架構 >  區(qū)塊鏈基礎架構之數據層(上)

區(qū)塊鏈基礎架構之數據層(上)

2021-04-20 10:33:30 14311

一般來說,區(qū)塊鏈系統(tǒng)由自下而上的數據層、網絡層、共識層、激勵層、合約層和應用層組成,基本架構如圖所示,該模型中,基時間戳的鏈式區(qū)塊結構、分布式節(jié)點的共識機制、基于共識機制的經濟激勵和靈活可編程的智能合約是區(qū)塊鏈技術最具代表性的創(chuàng)新點,其中數據層、網絡層和共識層是構建區(qū)塊鏈應用的必要元素,否則將不能稱為真正意義上的區(qū)塊鏈。而激勵層、合約層和應用層則不是每個區(qū)塊鏈應用的要素,有部分的區(qū)塊鏈應用并不完整地包含著這些層結構。


區(qū)塊鏈基礎架構之數據層1.webp.jpg


數據層:

數據層是區(qū)塊鏈的核心部分,區(qū)塊鏈技術本質上是一種數據庫技術和分布式賬本,是由包含交易信息的區(qū)塊從后向前有序連接起來的一種數據結構。數據層封裝了底層數據區(qū)塊以及相關的數據加密和時間戳等基礎數據和基本算法,這是整個區(qū)塊鏈技術中最底層的數據機構,其中大多數技術都已被發(fā)明數十年,并在計算機領域使用了很久,無須擔心其中的安全性,因為如果這些技術出現安全性上的巨大漏洞,則意味著全球金融技術都會出現嚴重的問題。該層涉及的技術主要包括:區(qū)塊結構、 Merkle樹、非對稱加密、時間戳、數字簽名和哈希函數等。

區(qū)塊結構

在區(qū)塊鏈網絡中,所有的數據都以區(qū)塊的形式被永久記錄,而每個區(qū)塊又以單獨的文件保存在各個節(jié)點本地磁盤上。區(qū)塊結構如圖所示,由區(qū)塊頭和區(qū)塊體兩部分組成。一個區(qū)塊由三類元數據組成,一類是引用前一區(qū)塊的哈希值數據,用于與其進行連接;類包括難度值、時間戳和隨機數,與工作量證明算法(挖礦競爭)相關;還有一類是 Merkle根,區(qū)塊體中 Merkle樹的根節(jié)點。部分數據項列表如圖所示,包括被稱為“魔法數”的常數0xD9B4BEF9、區(qū)塊大小、區(qū)塊頭、區(qū)塊所包含的交易數量及部分或所有的近期新交易等。


區(qū)塊鏈基礎架構之數據層2.webp.jpg

區(qū)塊數據項列表


區(qū)塊頭封裝了當前版本號、前一區(qū)塊哈希值、時間戳、隨機數、當前區(qū)塊的目標哈希值、 Merkle樹的根值等信息,以比特幣為例,區(qū)塊頭是80字節(jié),包括 PrevBlock、 MerkleRoot、 Nonce、 TimeStamp、Bits等字段,如圖所示


區(qū)塊鏈基礎架構之數據層3.webp.jpg

區(qū)塊頭結構描述


區(qū)塊體中則主要包含此區(qū)塊中所有的交易信息。區(qū)塊體中的 Merkle樹將會對每一筆交易進行數字簽名,確保每一筆交易都不可偽造且沒有重復交易。所有交易將通過 Merkle樹的Hash過程產生一個唯一的 Merkle根值記入區(qū)塊頭。

每一個區(qū)塊對應著兩個值來識別區(qū)塊:區(qū)塊頭哈希值和區(qū)塊高度。每一個區(qū)塊都會有一個區(qū)塊頭哈希值,這是一個通過SHA256算法對區(qū)塊頭進行二次哈希計算而得到的32字節(jié)的數字指紋。例如,比特幣的第一個區(qū)塊的頭哈希值0019d6689085ae16583le934ff763ae46a2a6c72b3fb60a8ce26f區(qū)塊頭哈希值可以唯一標識區(qū)塊鏈上的區(qū)塊,并且任何節(jié)點通過對區(qū)塊頭進行簡單的哈希計算都可以得到該區(qū)塊頭的哈希值區(qū)塊頭哈希也包含在區(qū)塊的整體數據結構中,但是區(qū)塊頭的數據和區(qū)塊體的數據并不一定一起存儲,為了檢索效率起見,在實現中可以將二者分開存儲。除了通過頭哈希值來識別區(qū)塊,還可以通過區(qū)塊高度來對區(qū)塊進行識別。與頭哈希值不同的是,區(qū)塊高度并不能唯一地標識一個區(qū)塊。由于區(qū)塊鏈存在著分叉情況,所以可能存在2個或2個以上區(qū)塊的區(qū)塊高度相等。


區(qū)塊鏈基礎架構之數據層4.webp.jpg

區(qū)塊結構


 PrevBlock:每一個區(qū)塊都有一個名字,即區(qū)塊ID,區(qū)塊ID=SHA256(區(qū)塊頭信息),而 PrevBlock 就是當前區(qū)塊的上一個區(qū)塊的ID,即當前區(qū)塊的產生是基于上一個區(qū)塊的ID建立的。顯然,對于當前區(qū)塊而言, PrevBlock是已知的。

 MerkleRoot:Merkle樹是一種哈希二叉樹,使用它可以快速校驗大規(guī)模數據的完整性。在比特幣網絡中,使用Merkle Tree這種算法和數據結構,將當前區(qū)塊所有交易記錄最終壓縮和歸納成一個統(tǒng)一的哈希值,即 Merkle根值(Merkle Root)。這個計算過程詳見 Merkle樹相關內容,顯然Merkle Root根據已知的交易記錄可輕易得到,并且結果明確,區(qū)塊體中任何一筆交易記錄的改變都會使得區(qū)塊頭中的 MerkleRoot發(fā)生翻天覆地的改變。 

Difficulty&bits:難度( Difficulty)是對實現某給定目標難易程度的量化表征,比如說擲骰子,可以規(guī)定擲到小于等于數字6的難度為1,顯然這幾乎是沒有任何難度的,100%會擲到一個數字滿足這個條件;擲到小于等于3的難度就是4,小于等于1的難度則是6。比特幣協(xié)議中也有類似的規(guī)則,首先定義了一個64位的十六進制常數,在當時全網算力的條件下,10分鐘左右的哈希運算會找到一個數字小于等于這個整數。作為比特幣的締造者,規(guī)定了那個時間點、全網擁有的算力找到那個數字的難度是1;后續(xù)以此為標準,根據變化中的全網算力,動態(tài)調整一個與之匹配且成正比的 Difficulty難度值,來盡可能保證全網10分鐘運算找到符合要求的數字。調整的周期約每兩周一次,即每2016個區(qū)塊被挖出來之后就調整一次 Difficulty值。

Bits:是 Difficulty與對應的另外一種數據表現形式兩者本質上具有相同含義。因此,當全網算力已知, Difficulty和Bits即可由之確定。 

Nonce:從0到N,一個只使用一次的隨機數,用于實現工作量證明算法。 

TimeStamp:當前區(qū)塊產生的近似時間戳,在一個中心化的區(qū)塊鏈世界里,這個時間戳是根據產生該區(qū)塊節(jié)點相關聯的其他節(jié)點的時間戳求平均后計算得到,不完全等同于國際標準。


提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: