區塊鏈(blockchain)

經過查詢網上的一些資料,簡單整理了一些區塊鏈的知識,旨在整理本身所學內容,梳理知識框架。算法

區塊鏈的定義數據庫

簡單來講,區塊鏈是由節點參與的分佈式數據庫系統,最主要的的特色是不可更改,不可僞造。安全

從另外一個角度來講,區塊鏈是由一串使用密碼學方法產生的數據塊組成的。每個區塊都包含了上一個區塊的哈希值,從創世區塊開始鏈接到當前區塊,造成塊鏈。每個區塊都確保時間順序在上一個區塊以後產生,不然前一個區塊的哈希值是未知的。當出現同時產生兩個區塊A和B時,根據中本聰提到的,每一個節點先收到哪一個就追隨哪一個(提早驗證過),這個時候就會出現AB分叉,可是此時兩個區塊都是正確的。當一個新的區塊C被廣播出來,假如區塊C承認區塊A,A+C會成爲最長的鏈,而節點始終都將最長的鏈視爲正確鏈,而且持續工做和延續它,所以,收到區塊C的廣播後,以前承認區塊B的節點就會承認C,而且下載區塊A,將C做爲本身追隨的對象。網絡

區塊鏈也指代基於區塊鏈結構實現分佈式記帳技術,包括分佈式公式、隱私與安全保護、點對點通訊技術、網絡協議以及智能合約。架構

簡單介紹一些區塊鏈中經常使用的術語:框架

交易(Transaction):指一次對帳本的操做,致使帳本中狀態的一次改變(如添加一條轉帳記錄)。分佈式

區塊(Block):記錄一段時間內發生的交易和狀態結果等,是對當前帳本狀態的一次共識。區塊鏈

鏈(chain):由區塊按照當前發生順序串聯而成,是整個帳本狀態變化的日誌記錄。spa

若是把區塊鏈系統看做一個狀態機,而每次交易意味着一次狀態的改變,生成的區塊就是參與者對其中狀態改變結果(交易致使的)的共識。日誌


 

區塊鏈的結構

 

 由上圖能夠看到一個區塊由兩個部分組成:區塊頭和區塊體。其中區塊頭包括版本號、上一個區塊哈希值、Merkle根節點、時間戳、難度值、隨機數。而區塊體存儲交易數據。

大小 字段 描述
4字節 版本 版本號,用於跟蹤軟件/協議的更新
32字節 上一個區塊哈希值 引用區塊鏈中父區塊的哈希值
32字節 Merkle根節點 該區塊中交易的merkle樹根的哈希值
4字節 時間戳 該區塊產生的近似時間(精確到秒的Unix時間戳)
4字節 難度目標 該區塊工做量證實算法的難度目標
4字節 Nonce 用於工做量證實算法的計數器

 

 

 

 

 

 

 

 

區塊頭組成如上表


區塊鏈應用場景 

從計算特色上,區塊鏈技術有三種典型的演化場景,數字貨幣、分佈式應用引擎、帶權限的分佈式帳本


 

按照節點的參與方式的不一樣,區塊鏈技術能夠分爲三大類:公有鏈、聯盟鏈、私有鏈

公有鏈,顧名思義,任何人均可以參與使用和維護,參與者多爲匿名。典型的如比特幣和以太坊區塊鏈,信息是徹底公開的。

若是進一步引入許可機制,能夠實現私有鏈和聯盟鏈兩種類型。

私有鏈,由集中管理者進行管理限制,只有內部少數人能夠使用,信息不公開。通常認爲跟傳統中心化記帳系統的差別不明顯。

聯盟鏈則介於二者之間,由若干組織一塊兒合做(如供應鏈機構或銀行聯盟等)維護一條區塊鏈,該區塊鏈的使用必須是帶有權限的限制訪問,相關信息會獲得保護,典型如超級帳本項目。在架構上,現有大部分區塊鏈在實現都至少包括了網絡層、共識層、智能合約和應用層等分層結構,聯盟鏈實現往還會引入額外的權限管理機制。

相關文章
相關標籤/搜索