前陣子在油管看到了一個介紹區塊鏈的短視頻,把區塊鏈講得很清楚,於是我把它翻譯一下分享給大家。相信大家看了這篇文章,基本上能夠理解什么是區塊鏈了。
區塊鏈,顧名思義,它是由一組包含信息的區塊組成的信息鏈。
區塊鏈由一個有趣的屬性:一旦某些數據被記錄到一條區塊鏈中后,那么數據就很難再被改變。那區塊鏈到底是如何工作的呢?
區塊鏈的組成
區塊鏈由區塊和鏈組成。每一個區塊包含三個元素:數據、哈希值、前一區塊的哈希值。
區塊的第一個元素是數據。區塊中所保存的數據與區塊鏈的類型有關。例如,比特幣區塊鏈中的區塊保存了相關的交易信息,包括賣家,買家,以及交易比特幣的數量。
區塊的第二個元素是哈希值。每個區塊包含了一個哈希值,這個哈希值是唯一的,它用來標識一個區塊和它所包含的所有內容。一旦某個區塊被創建,它的哈希值就相對應的被計算出來了。改變區塊中的某些內容會使得哈希值改變。所以換句話說:當你想要檢測區塊中內容的改變時,哈希值對你就很有幫助。如果一個區塊的指紋改變了,那它就再也不是之前的區塊了。
區塊的第三個元素是前一個區塊的哈希值。這個元素使得區塊之間可以形成鏈接,並且能夠使得區塊鏈十分的安全。
舉個例子假設我們有一條區塊鏈包含3個區塊。如圖所示,每個區塊包含了一個自己的哈希值以及前一個區塊的哈希值。3 號區塊指向 2 號區塊,2 號區塊又指向 1 號區塊。但是 1 號區塊有點特殊,它不能指向前一個區塊,因為它是第一個區塊。我們把1號區塊叫做創世區塊。
那么,現在我們假設你篡改了第二個區塊。這將導致第二個區塊的哈希值改變,那么 3 號區塊存儲的數據就是錯誤的、非法的。而 3 號區塊存儲的數據一旦是非法的,后面的區塊也一定是非法的。
所以如果一個人想要篡改區塊鏈中任何一個區塊,它必須修改這個區塊以及這個區塊之后的所有區塊。這將是一個很繁重的任務。
區塊鏈的工作量證明
但是,僅僅使用哈希值的方法不足以防止用戶篡改區塊。因為現在的計算機運算速度已經足夠強大,並且能夠每秒計算成千上萬的哈希值。你完全可以篡改一個區塊並且重新計算其他的區塊的哈希值,這樣就使得你的區塊再次變得合法。
所以為了減少這種風險,區塊鏈還采用了一種技術叫做工作量證明。這是一種減緩新區塊創建過程的機制。
在比特幣區塊鏈中,大概需要花費10分鍾來完成所要求的工作量證明,並且添加一個新的區塊到區塊鏈中。這個機制使得區塊鏈的篡改更加困難,因為一旦你篡改了一個區塊,你需要重新計算所有后續的區塊的工作量證明。
所以區塊鏈技術的安全性主要來自於哈希值以及工作量證明機制。
區塊鏈的分布式特性
但是,區塊鏈還有一種機制來保護自身的安全性,那就是分布式。相對於用一個中心化的實體來管理區塊鏈網絡,區塊鏈采用的是一種peer-to-peer網絡,並且所有人都可以加入。當有人加入這個網絡時,他就會得到整個區塊鏈的復制。這個人就可以以此來驗證是否所有的區塊還是合法未篡改的。
那么接下來我們就來看看,當某人創建了一個新的區塊時,會發生哪些改變這個新的區塊會被發送給網絡上的所有人。每個人再驗證這個區塊以確保這個區塊沒有被篡改過。如果所有的東西都被檢驗正確之后,那么每個人就都會把這塊新的區塊加到自己的區塊鏈上。
我們可以稱之為,網絡上的所有人達成了「共識」。他們認同網絡中那些區塊是合法的,哪些是不合法的。那些被篡改過的區塊將會被網絡上的其他用戶拒絕。所以,要成功篡改一個區塊鏈,你需要篡改區塊鏈上的所有區塊,重新完成每個區塊的工作量證明,並且控制區塊鏈網絡中超過50%的用戶。
只有這樣,你篡改的區塊才會被所有人承認。但實際上,這基本上是不可能做得到的!
樹義有話說
看到這里,你可以嘗試着回答下面幾個問題:
- 什么是區塊鏈?
區塊鏈由區塊和鏈組成,每個區塊由數據、哈希值、前一個區塊的哈希值三個部分組成。
- 區塊鏈為什么需要挖礦(工作量證明)?
通過挖礦(工作量證明)可以避免壞人的惡意破解,增加其破解的時間成本和經濟成本。
- 區塊鏈為什么很安全?
區塊鏈安全是因為其不可更改特性和分布式特性。即如果要修改區塊鏈中的數據,你需要完成下面兩件事情:第一,你需要計算出修改區塊之后的所有區塊的哈希值,這需要非常龐大的計算能力。第二,你需要讓超過50%的區塊鏈用戶同意你的修改。同時完成上面兩件事情基本上是不可能的,所以區塊鏈很安全。
如果你能回答上面三個問題,那么你就算是理解區塊鏈了。但是區塊鏈技術本身也在不斷地發展。最近的一個技術改進,叫做智能合約。
智能合約的誕生使得我們可以做很多事情,例如網購的信任問題。我們將在后面的文章中講解智能合約的概念。