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

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

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

2021-04-20 10:33:30 14312

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


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


數(shù)據(jù)層:

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

區(qū)塊結構

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


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

區(qū)塊數(shù)據(jù)項列表


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


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

區(qū)塊頭結構描述


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

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


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

區(qū)塊結構


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

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

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

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

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

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


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

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

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

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