區(qū)塊鏈的核心概念

以下全文來自圖說區(qū)塊鏈。因為不會用自己的語言方式來說明概念,所以全部都是抄送全文的。這讓我明顯感到只有深入理解一個概念之后,才能通過自己的語言模式來講述文章。有些文章就算是別人的,也能通過一定程度的修改來加上自己的語言。而區(qū)塊鏈就完全不同了,這個不懂就一點都加不上自己的思考。

一、區(qū)塊

區(qū)塊作為區(qū)塊鏈的基本結(jié)構(gòu)單元,由包含元數(shù)據(jù)的區(qū)塊頭和包含交易數(shù)據(jù)的區(qū)塊主體構(gòu)成。區(qū)塊頭包含三組元數(shù)據(jù):

1. 用于連接前面的區(qū)塊、索引自父區(qū)塊哈希值的數(shù)據(jù);

2. 挖礦難度、Nonce(隨機數(shù),用于工作量證明算法的計數(shù)器)、時間戳;

3. 能夠總結(jié)并快速歸納校驗區(qū)塊中所有交易數(shù)據(jù)的Merkle(默克爾)樹根數(shù)據(jù)。

二、哈希算法

哈希算法是區(qū)塊鏈中保證交易信息不被篡改的單向密碼機制。哈希算法接收一段明文后,以一種不可逆的方式將其轉(zhuǎn)化為一段長度較短、位數(shù)固定的散列數(shù)據(jù)。它有兩個特點:

1. 加密過程不可逆,意味著我們無法通過輸出的散列數(shù)據(jù)倒推原本的明文是什么;

2. 輸入的明文與輸出的散列數(shù)據(jù)一一對應(yīng),任何一個輸入信息的變化,都必將導(dǎo)致最終輸出的散列數(shù)據(jù)的變化。

三、公鑰和私鑰

在區(qū)塊鏈的話題中,我們還經(jīng)常聽到這樣的詞匯——公鑰和私鑰。這就是俗稱的不對稱加密方式,是對以前的對稱加密方式(使用用戶名與密碼)的提高。

我們用電子郵件加密的模型來簡單介紹一下:公鑰就是給大家用的,你可以通過電子郵件發(fā)布,可以通過網(wǎng)站讓別人下載,公鑰其實是用來加密/驗章的。私鑰就是自己的,必須非常小心保存,最好加上密碼,私鑰用來解密/簽章,私鑰由個人擁有。

在比特幣的系統(tǒng)中,私鑰本質(zhì)上是32個字節(jié)組成的數(shù)組,公鑰和地址的生成都依賴私鑰,有了私鑰就能生成公鑰和地址,就能夠花費對應(yīng)地址上面的比特幣。私鑰花費比特幣的方式就是對這個私鑰所對應(yīng)的未花費的交易進行簽名。

信息發(fā)送者:用私鑰對信息進行簽名,使用信息接收方的公鑰對信息加密。

信息接收方:用信息發(fā)送者的公鑰驗證信息發(fā)送者的身份,使用私鑰對加密信息解密。

四、時間戳

區(qū)塊鏈中的時間戳從區(qū)塊生成的一刻起就存在于區(qū)塊之中,它對應(yīng)的是每一次交易記錄的認(rèn)證,證明交易記錄的真實性。

時間戳是直接寫在區(qū)塊鏈中的,而區(qū)塊鏈中已經(jīng)生成的區(qū)塊不可篡改,因為一旦篡改,生成的哈希值就會變化,從而變成一個無效的數(shù)據(jù)。每一個時間戳?xí)⑶耙粋€時間戳也納入其隨機哈希值中,這一過程不斷重復(fù),依次相連,最后會生成一個完整的鏈條。

五、Merkle樹結(jié)構(gòu)

區(qū)塊鏈利用Merkle樹的數(shù)據(jù)結(jié)構(gòu)存放所有葉子節(jié)點的值,并以此為基礎(chǔ)生成一個統(tǒng)一的哈希值。Merkle樹的葉子節(jié)點存儲的是數(shù)據(jù)信息的哈希值,非葉子的節(jié)點存儲的是對其下面所有葉子節(jié)點的組合進行哈希計算后得出的哈希值。

同樣地,區(qū)塊中任意一個數(shù)據(jù)的變更都會導(dǎo)致Merkle樹結(jié)構(gòu)發(fā)生變化,在交易信息驗證比對的過程中,Merkle樹結(jié)構(gòu)能夠大大減少數(shù)據(jù)的計算量,畢竟,我們只需驗證Merkle樹結(jié)構(gòu)生成的統(tǒng)一哈希值就可以了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容