簡而言之,區塊鏈相當於一份去中心化數位帳本,記錄了一系列數據。這些數據組成區塊,由密碼學技術提供保護,依照時間順序排列。
區塊鏈最早的模型建構於1990年代初。當時,電腦科學家Stuart Haber和物理學家W. Scott Stornetta使用加密技術保護資料不被竄改。
Haber和Stornetta的這項成就鼓舞了許多電腦科學家與密碼學愛好者鑽研區塊鏈,這也推動了全球第一個去中心化電子現金系統(即第一種加密貨幣)——比特幣的誕生。
雖然區塊鏈技術先於加密貨幣問世,但直到2008年,也就是比特幣誕生,前者才逐漸被認可。自那時起,大眾對於區塊鏈技術的興趣日漸高漲,加密貨幣也開始流行。
區塊鏈技術主要用於記錄加密貨幣交易,但同樣可以記錄各種數位數據,也可應用於其他領域。最古老、最安全以及最龐大的區塊鏈網路是比特幣,它經過精心設計,將密碼學與博弈論均衡地融合在一起。
在加密貨幣領域,我們可以將區塊鏈視為由一連串穩定區塊組成的鏈,每個區塊都儲存了一系列先前確認的交易資料。 區塊鏈網路由無數電腦共同維護,因此其主要功能是充當去中心化資料庫(或帳本)。換言之,區塊鏈中的所有參與者(即節點)維護區塊鏈資料副本,彼此之間保持良好的溝通交流,確保大家始終處於同一頁(或區塊)。
因此,區塊鏈交易在全球點對點網路中進行,推動比特幣成為去中心化、無國界並且抗審查的加密貨幣。然而,多數區塊鏈無需任何信任機制,被視為去信任化系統。比特幣也沒有獨立的監管機構。
幾乎所有區塊鏈都以挖礦為核心,而這與哈希演算法密不可分。比特幣使用SHA-256演算法(安全雜湊演算法256位元),輸入任意長度的字串可以產生長度相同的輸出。輸出結果可以稱為“哈希值”,該值始終為64個字元(256位元)。
因此,無論“挖礦”重複執行多少次,相同輸入始終產生相同輸出。然而,如果輸入發生微小改變,輸出結果便截然不同。因此,雜湊函數是確定的,而多數加密貨幣均以單向雜湊函數設計。
此類函數決定了使用者無法根據輸出結果逆推輸入。唯一的方法是猜測,但是猜中的機率微乎其微。這正是比特幣區塊鏈安全可靠的原因之一。
現在我們了解了演算法的功能,以下透過簡單的交易範例說明區塊鏈的運作原理。
假設Alice和Bob是兩位比特幣持有者,Alice欠Bob兩枚比特幣。
為了向Bob償還兩枚比特幣,Alice向全網礦工廣播了這項交易資訊。
在這筆交易中,Alice將Bob的地址和交易的比特幣數量告知礦工,並且附上一個數位簽名與她的公鑰。該簽名由Alice的私鑰生成,礦工可透過其驗證Alice確為這些比特幣的實際擁有者。
確認這筆交易真實有效後,礦工即可將這條交易資訊與其他交易資訊一起放入某個區塊,嘗試對這個區塊進行“挖礦”。該區塊透過SHA-256演算法進行運算,運算結果必須以一定數量的“0”為開頭,方可判定為有效。 “0”的數量取決於運算的“困難度”,後者會隨全網算力的變化而改變。
為了正確輸出“0”數量符合預期的哈希值,礦工在運行加密演算法前會在區塊內加入一個“nonce”。該值發生細微變化會徹底改變運算結果,礦工必須嘗試不同的隨機nonce,直到得到正確的雜湊值。
每次挖出一個區塊,礦工就會向全網廣播新區塊的信息,以便其他礦工確認區塊的有效性。此後,他們會將有效區塊的資訊加入自己的區塊鏈,表明交易完成。然而,礦工仍需將前一個區塊的哈希值加入新區塊,最終將所有區塊相連,構成名副其實的“區塊鏈”。這一點非常重要,體現了信任在系統中的作用。
每位礦工將專屬區塊鏈副本儲存於個人電腦並達成共識:投入算力最多的區塊鏈一定最長。如有人想更改前一區塊中的交易信息,這個區塊的哈希值也會改變,導致此區塊之後的所有區塊的哈希值全部改變。他必須將之前進行的所有運算推到重來,讓別人相信他的區塊資訊正確無誤。因此,如有礦工企圖篡改區塊訊息,則必須投入超過全網50%的算力,這幾乎是天方夜譚。類似的網路攻擊因此稱為51%攻擊。
這種請求電腦運算,產生新區塊的模型稱為工作量證明(PoW)。另外還有其他機制,如權益證明(PoS),它不需要極大的算力支持,消耗的電能更少,吸引更多用戶參與其中。