一提到區(qū)塊鏈,首先想到的就是比特幣。確實比特幣是第一個區(qū)塊鏈項目,也是最成功的項目,目前的價格是60428¥/btc。想想當初用10000個比特幣買了2個披薩的程序員Laszlo,估計怎么也想不到比特幣能漲到如此之高(畢竟眼光有多遠,就只能賺多少錢)。那么到底什么是區(qū)塊鏈呢?為什么區(qū)塊鏈上的交易不可被篡改呢?
區(qū)塊鏈: 我們可以從字面上對這個詞語進行拆分,“區(qū)塊”和“鏈”。區(qū)塊鏈就是由區(qū)塊線性連接而成的鏈。
數(shù)據(jù)不可篡改: 這個是由密碼學、哈希函數(shù)、礦工算力等保障的
一、區(qū)塊鏈
先上一個區(qū)塊鏈的結構圖
?文章來源地址http://www.zghlxwxcb.cn/news/detail-812845.html
1.什么是區(qū)塊
區(qū)塊主要是由區(qū)塊頭和區(qū)塊體構成:
區(qū)塊頭:里面包含了一些基本信息,比如版本號、父區(qū)塊頭的哈希、默克爾樹根哈希、時間戳、挖礦難度、隨機數(shù)。
區(qū)塊體:主要就是打包的交易,這些交易是資產(chǎn)的擁有者使用私鑰簽名的數(shù)據(jù),代表了資產(chǎn)從哪里轉移到哪里。最特殊的一筆交易是由曠工自己寫上去的,它的金額是對礦工的獎勵加上所有交易者支付的手續(xù)費。這筆交易稱為幣基交易(Coinbase Transaction),比特幣就是通過對礦工的獎勵來發(fā)行貨幣的。
2. 什么是鏈
每個區(qū)塊的頭包含了父區(qū)塊的頭的哈希,就這樣逐個鏈接下去,就形成了區(qū)塊鏈。
實際上這就是區(qū)塊鏈的本質了,但這只是從數(shù)據(jù)方面看,那么數(shù)據(jù)的可靠性又是怎么保證的?
二、數(shù)據(jù)不可篡改
1. 交易不可被篡改
當我們發(fā)送一筆交易到區(qū)塊鏈節(jié)點的時候,節(jié)點會驗證這個交易的簽名,如果簽名不對那么數(shù)據(jù)是會被丟棄的,只有持有私鑰匙的人才可以修改這筆交易,其他人是修改不了的,這個問題是由密碼學解決的。在比特幣中使用的是橢圓曲線算法來對交易進行簽名。
任何一個交易的修改都將導致區(qū)塊體的變化
2. 區(qū)塊體不可被篡改
區(qū)塊體中是一筆一筆的交易,這些交易通過默克爾樹組織起來,如果其中任何一筆交易被修改,都會造成默克爾樹根哈希的變化,這個問題是由哈希函數(shù)解決的。在比特幣中使用的是sha256算法
區(qū)塊體的變化將導致區(qū)塊頭的變化
3. 區(qū)塊頭不可被篡改
前面兩個問題都是由不可解的數(shù)學難題來保證的,區(qū)塊頭的不可修改是由算力保證的,這就是礦工需要干的事情。那么區(qū)塊頭是怎么保證不可被修改的呢?
全世界所有的礦工都會計算區(qū)塊頭的哈希,但是計算出來的哈希要求前面有n個0。如果區(qū)塊的頭信息不變,那么計算出來的哈希也都是一樣的。前面我們說過,區(qū)塊頭中包含一個nonce,礦工就是通過修改nonce以此來找到滿足要求的哈希(這個過程被稱為挖礦)。在比特幣的世界中,這個問題需要全世界的礦工計算十分鐘左右才能找到一個滿足要求的nonce。所以單憑個人要想修改一個區(qū)塊是完全不可能的。
礦工一旦計算出來這個nonce,就會將這個區(qū)塊廣播給其他節(jié)點,這些節(jié)點對區(qū)塊中的數(shù)據(jù)進行驗證,如果驗證通過,就會停止此區(qū)塊的挖礦,將此區(qū)塊廣播給其他的節(jié)點,并開始爭奪下一個區(qū)塊的記賬權
區(qū)塊頭的變化將導致區(qū)塊鏈的變化
4. 區(qū)塊鏈不可被篡改
從前面三步可知,如果一個人修改了區(qū)塊中的交易數(shù)據(jù),默克爾樹的根哈希會發(fā)生變化,接著區(qū)塊頭會發(fā)生變化,這個時候區(qū)塊的隨機數(shù)(nonce)將變得不合法,需要重新挖礦。假設某個組織擁有大量的計算機,并重新挖出了這個隨機數(shù)(nonce)。但這又會導致此區(qū)塊頭的哈希發(fā)生變化,子區(qū)塊的區(qū)塊頭中記錄了父區(qū)塊頭的哈希,這樣,子區(qū)塊頭也發(fā)生了變化,子區(qū)塊的隨機數(shù)(nonce)也變得不合法了,又需要重新挖子區(qū)塊的隨機數(shù)(nonce)。如此下去,將造成連鎖反應,任何修改都將造成數(shù)據(jù)坍塌,需要重新挖礦。在比特幣中,如果一筆交易后面被添加了六個區(qū)塊,那么這筆交易可以認為,將永遠不可能被修改。(除非全世界所有的礦機都否認先前的交易,重新開始挖礦)
最后
至此,區(qū)塊鏈的存儲結構和數(shù)據(jù)不可篡改就講解完了,在這個模型當中還存在很多問題需要解決,比如UTXO經(jīng)濟模型、為什么比特幣只有2100萬個、什么是錢包、什么是挖礦。這些問題等后面再給大家講解
區(qū)塊鏈開發(fā)文章來源:http://www.zghlxwxcb.cn/news/detail-812845.html
?
到了這里,關于什么是區(qū)塊鏈,為什么數(shù)據(jù)不可被篡改的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!