鏈接區塊
區塊 1 會按照時間順序從第一筆交易開始記錄,直到資料量達到 1 MB 為止,之后的交易會記錄在區塊 2 中,直到資料量達到 1 MB 為止,以此類推,這些區塊就是資料塊,它們一個接著一個聯系在一起,為此,每個區塊會根據其內部資料串生成一個特殊的(數字)簽名,如果這個區塊中的資料發生任何變動,即使只改變了一個數字,這個區塊的簽名也會發生改變,
即使區塊 1 中存盤的資料改動了一個數字,也會得到一個完全不同的簽名 !只要將區塊 1 的簽名添加到區塊 2 中,就可以將區塊 1 的資料與區塊 2 關聯起來,
區塊 1 的簽名也包含在區塊 2 的資料串內,因此這個簽名與區塊 2 中的其它資料一樣,成了區塊 2 簽名的資料基礎
區塊鏈的不可篡改性
如果篡改者修改了資料,簽名改變,這條鏈上的其他用戶就會知道區塊中的資料被更改了,為了維護區塊鏈的不可變性,其他用戶會拒絕同步更改后的交易資訊,依舊維持原有的交易記錄不變,整條鏈依舊保持完整,
資料簽名(ASH-256),只要當前一位資料發生改變,其生成的簽名就會發生改變,因此如果篡改者修改了資料,則簽名將改變,而后面的區塊中始終保持著前一個區塊原始的簽名,此時簽名改變,兩個區塊的鏈接斷開,以此類推,如果篡改者想要修改某個區塊的資料,就必須保證篡改之后的區塊仍然都聯系在一起,他需要重新計算當前區塊以及后面的所有區塊的簽名,可以認為這幾乎是不可能的(計算一個鏈的簽名需要礦工有足夠大的算力,甚至超過全網其他人的總算力,否則他永遠趕超不了其他礦工),
密碼學哈希函式:將任意資料串作為輸入值代入公式,可以得到一個獨一無二的 64 位輸出值
挖礦
并非所有的簽名都符合要求,區塊鏈協議會預先確定一些要求,為了獲得符合條件的區塊簽名,需要反復改變輸入的資料串,但由于交易資料和元資料(區塊編號、時間戳等等)需要保持原樣,每個區塊里面還另外添加了一段特定長度的、可以改動的資料,想把區塊添加到鏈上時,可以不斷改變這段資料,直到找到一個合格的簽名,然后確定下這段資料的具體值,這段資料就是區塊的 nonce ,nonce 不是預先確定的資料,而是應實際需要而找出的一串完全隨機的數字,
綜上所述,區塊包含:1、交易資料;2、上一個區塊的簽名;3、nonce ,這種通過反復更改 nonce、對區塊資料進行哈希運算、尋找合格簽名的程序就叫做 挖礦 ,也就是 礦工 所做的事,礦工投入大量電力,轉化成算力,不斷代入 nonce 進行哈希運算,直到找到合格的簽名(輸出)為止,礦工手中掌握的算力越多,哈希運算的速度就越快,搶先找到合格簽名的可能性就越高,這是一種 反復試錯 的程序,
如何防止礦工將偽造的交易資料添加到區塊鏈上?
只有私鑰掌控者才能花費相應地址中的資金,而礦工并不知道你的私鑰,他人只能通過你公開的公鑰來驗證某筆交易是不是你發起的,所以偽造交易并不可行
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/74302.html
標籤:其他
