• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 百科 查看內容
    • 1985
    • 0
    • 分享到

    比特幣區塊鏈的數據結構

    2019-12-6 14:54

    我們回到兩個人轉賬交易的過程中,去理解比特幣區塊鏈的數據結構。

    我發起一筆交易,即我向整個區塊鏈網絡廣播,我和你兩個人想進行這筆交易:我向你的地址中轉入一筆比特幣,無須你的許可。

    但只有當這筆交易被打包進最新的比特幣區塊中時,這筆交易才真正完成。通常來說,當在一筆交易所在的區塊之后又增加 5 個區塊,即包括它自己在內一共經過 6 次確認時,這筆交易可認為被完全確認。按比特幣每個區塊的確認時間 10 分鐘估算,即一筆交易最終確認要經過約 1 小時。

    這里包括了兩步:一是交易被打包進候選區塊,每個節點可以按規則生成不同的候選區塊;二是節點挖礦成功,候選區塊被成功地加到區塊鏈的尾部,成為最新的正式區塊。

    那么,把一筆交易打包進區塊是什么意思呢?這涉及區塊鏈最基礎的數據結構,這也是它不可篡改的基礎。

    以下討論可能略顯枯燥,但卻是認識比特幣與區塊鏈的最基礎的知識,我盡量以通俗的語言來解釋。

    區塊鏈之所以被稱為 blockchain,是因為它的數據塊以鏈狀的形式存儲著。從第一個區塊即所謂的創世區塊開始,新增的區塊不斷地被連到上一個區塊的后面,形成一條鏈條。

    每個區塊由兩個部分組成——區塊頭部和區塊數據。其中,區塊頭部中有一個哈希指針指向上一個區塊,這個哈希指針包含前一個數據塊的哈希值。哈希值可以被看成是數據塊的指紋,即在后一個區塊的頭部中均存儲有上一個區塊數據的指紋。如果上一個區塊中的數據被篡改了,那么數據和指紋就對不上號,篡改行為就被發現了。要改變一個區塊中的數據,對其后的每個區塊都必須相應地進行修改。

    比特幣區塊鏈設計有一種機制讓這種修改難以發生,我們稍后在談到“工作量證明”和“比特幣挖礦”時再詳細討論。

    一個區塊中的數據是被打包進這個區塊的一系列交易。這些交易按照既定的規則被打包形成特定的二叉樹數據結構——梅克爾樹(Merkle trees)。按目前的比特幣區塊的大小,一個區塊中能容納的交易數量在 2000 個左右,比如在第 526957 個區塊中容納了 1804 個交易。

    比特幣區塊鏈的數據結構中包括兩種哈希指針,它們均是不可篡改特性的數據結構基礎。一個是形成“區塊+鏈”(block+chain)的鏈狀數據結構,另一個是哈希指針形成的梅克爾樹(見圖 1)。鏈狀數據結構使得對某一區塊內的數據的修改很容易被發現;梅克爾樹的結構起類似作用,使得對其中的任何交易數據的修改很容易被發現。

    圖1:比特幣區塊鏈的“區塊鏈”與梅克爾樹
    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频