區塊鏈如何運作?
什麼是區塊鏈?
簡而言之,區塊鏈相當於一份去中心化數位帳本,記錄了一系列數據。 這些數據組成區塊,由密碼學技術提供保護,依照時間順序排列。
區塊鏈最早的模型建構於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),它不需要極大的算力支持,消耗的電能更少,吸引更多用戶參與其中。