跳至主要內容

區塊鏈 101:視覺化示範

示範區塊鏈技術的運作原理,涵蓋雜湊運算、區塊、鏈、分散式帳本和代幣,讓區塊鏈概念變得具體且直觀。

Date published: 2016年11月13日

安德斯·布朗沃思 (Anders Brownworth) 關於區塊鏈技術運作原理的視覺化示範,包含涵蓋 SHA-256 雜湊運算、區塊、挖礦、區塊鏈、分散式帳本、代幣等內容的逐步解說。

本逐字稿是安德斯·布朗沃思發布的原始影片逐字稿 (opens in a new tab)的無障礙副本。為了提高可讀性,已進行了輕微的編輯。

SHA-256 雜湊 (0:01)

這是一個區塊鏈示範。我們將以非常視覺化的方式進行——透過逐步了解構成區塊鏈的關鍵部分,讓它變得非常容易理解。

在開始之前,我們需要先看看這個叫做 SHA-256 雜湊的東西。雜湊看起來像是一堆隨機數字,本質上它是某些數位資料的指紋。碰巧的是,它就是我在這個方塊中輸入的任何內容的指紋。如果我在這個方塊中輸入我的名字「Anders」,你會看到雜湊改變了。事實上,每次我輸入一個字母時它都會改變。

所以這是全小寫名字「Anders」的雜湊——它以 19ea 開頭。如果我刪除它並再次輸入「Anders」,你可以看到它以 19ea 開頭——完全相同的雜湊。從這個意義上來說,它是這筆資料的數位指紋。無論這裡有什麼資料,每次你輸入完全相同的資料,你都會得到完全相同的雜湊。

我可以輸入任何我想要的內容。你可以什麼都不輸入——e3b0——這就是沒有內容的雜湊。或者你可以輸入成千上萬的東西。事實上,你可以把整個美國國會圖書館的內容放進來,你也會得到一個雜湊。有趣的是,無論是極少量的資訊、沒有資訊,還是整個國會圖書館,你總是會得到一個這麼長的雜湊。你無法預先猜測這會是什麼——你必須把資料放進去才能算出雜湊是什麼,但無論你輸入完全相同的資訊多少次,你總是會得到完全相同的雜湊。

區塊 (2:10)

我要做的是將雜湊的這個概念延伸到我們稱之為區塊的東西。區塊和雜湊完全一樣,但資料區塊被分成了三個部分:一個叫做「區塊」——只是一個數字,這是 1 號區塊;一個「隨機數」,這只是另一個數字;然後是一些就像我們之前那樣的資料。

所有這些資訊的雜湊在下面這裡,它以四個零開頭。這是一個相對不尋常的雜湊——大多數雜湊不會像這樣以四個零開頭。但這個是,正因為如此,我完全武斷地說這個區塊是「已簽署的」。

如果我改變這些資訊的任何一部分會發生什麼事?假設我在這裡輸入一些東西——雜湊將會改變,而它以四個零開頭的機率有多大?非常低。我只輸入「hi」——看看這個,這個雜湊不是以四個零開頭,而且背景變成了紅色。所以現在你知道,包含這些資訊的這個區塊不是一個有效或已簽署的區塊。

這就是隨機數發揮作用的地方。隨機數只是一個你可以設定的數字,用來嘗試找到一個能讓雜湊再次以四個零開頭的值。我可以整天坐在這裡輸入數字,但我有這個小小的「挖礦」按鈕。當我按下它時,它會從 1 開始往上跑過所有數字,試圖找到一個讓雜湊以四個零開頭的數字。這個過程被稱為挖礦。

它停在 59,396——而這個數字剛好能雜湊出一個以四個零開頭的結果。它滿足了我對已簽署區塊的定義。

區塊鏈 (5:16)

那麼你能告訴我什麼是區塊鏈嗎?它可能只是一條由這些區塊組成的鏈。這是我的區塊鏈——1 號區塊有一個和以前一樣的隨機數、一個資料區,但它還有這個「前一個」欄位,這是一堆零。繼續往下看,這是 2 號區塊、3 號區塊、4 號區塊——這條區塊鏈上有五個區塊。

每個區塊的「前一個」欄位是它前面那個區塊的雜湊。你可以看到每個區塊都向後指向它前面的那個區塊。第一個區塊沒有前一個區塊,所以它只是一堆零。

如果我在這裡改變一些資訊會發生什麼事?這將會改變這個區塊的雜湊並使其無效。但如果我改變較早區塊中的某些內容呢?這將會改變那個雜湊,但那個雜湊會被複製到下一個區塊的「前一個」欄位,所以它會破壞這兩個區塊。我們可以隨意回到過去的某個時間點並破壞那個區塊,這將會破壞從那時起的所有區塊。在它之前的一切仍然是綠色的,但在它之後的一切都會變成紅色。

如果我去改變最後一個區塊,我只需要重新挖礦那一個區塊。如果我回到很久以前並做出改變,我必須挖礦這個、這個、這個和這個。經過的區塊越多,做出改變就越來越困難。這就是區塊鏈如何抵抗突變——抵抗改變的方式。

分散式區塊鏈 (9:18)

那麼我怎麼知道我的區塊鏈是否被重新挖礦了呢?現在我們有一個分散式區塊鏈。它看起來和上一個區塊鏈完全一樣,但這是對等節點 A。如果你往下看,你可以看到對等節點 B,它有區塊鏈的完全相同副本。還有一個對等節點 C——這可以無限延伸下去。網際網路上有許多對等節點,它們都有區塊鏈的完整副本。

如果我看這個雜湊,它是 e4b。如果我往下看下一個,它也是 e4b。它們一定是一模一樣的。現在如果我到這裡輸入一些東西,重新挖礦這個區塊,然後挖礦接下來的區塊——所有的鏈都是綠色的。然而,這條鏈顯示最後的雜湊是 e4b,最下面那條也顯示 e4b,而中間這條顯示 4cae

所以我只要瞥一眼這個小小的雜湊,就知道這條區塊鏈出了問題。即使所有的雜湊都以四個零開頭,這個卻不同。這本質上是二對一——我們這裡是一個小型的民主系統。所以 e4b 贏了。這就是為什麼在許多不同的電腦上擁有完全分散式的副本,能讓你快速看出所有區塊是否相同。

區塊鏈可以輕易地擁有 40 萬或 50 萬個區塊。與其檢查所有的區塊,你真正需要做的只是查看最近一個區塊的雜湊,你就能看出過去是否有任何東西被竄改。

代幣 (12:17)

這就是全部了——沒有比這更複雜的了。但這其實不太有用,因為我們在資料區沒有任何具意義的內容。我們真正想要的是代幣。

現在我有這些代幣——我完全武斷地稱它們為美元。我們有從 Darcy 給 Bingley 的 25 美元,從 Elizabeth 給 Jane 的 4.27 美元——你懂的。所有這些交易都在發生,而我只是用這些交易取代了資料。就像以前一樣,如果我們往下看,我們會注意到我們有同一條區塊鏈的所有其他副本。

這就是不可變的特性很重要的地方。如果我在這裡改變了一些東西,雜湊將會與其他副本上的不同。如果你回到過去並改變某個值,我們能注意到這一點是非常重要的。對於金錢來說,不失去追蹤是非常重要的,這就是使用區塊鏈的全部意義——抵抗對過去發生過的事情進行任何形式的修改。

我要提的一件事是:我們沒有列出「Darcy 有 100 美元,他給了 Bingley 25 美元」。我們只記住資金的流動,而不是銀行帳戶餘額。這就引出了一個問題——Darcy 有 25 美元嗎?

Coinbase 交易 (14:34)

在這個版本的區塊鏈中我們遇到了一個問題:我們其實不知道 Darcy 是否有 25 美元。所以讓我們來看看 Coinbase 交易。我們在區塊中加入了一筆 Coinbase 交易——它說我們將憑空創造 100 美元並給 Anders。這個區塊中沒有其他交易,因為在此之前沒有人有任何錢。

在下一個區塊中,又有 100 美元憑空出現並給了 Anders。現在我們有一些交易了——它們都來自 Anders,因為此時我是唯一有錢的人。我把我的 10 美元發送給 Sophie。我有 10 美元嗎?是的——我回顧過去,看到 Coinbase 交易給了我 100 美元,所以我至少有 10 美元。

你把這些全部加起來,它們不會超過 100 美元。它遵循貨幣的基本規則:你不能憑空創造金錢,而且它的分散是受到控制的。

如果我們把時間快轉,我們看到 Jackson 給了 Alexa 2 美元。Jackson 真的有 2 美元嗎?我們往回看一個區塊,看到 Emily 從 Anders 那裡得到了 10 美元,並給了 Jackson 10 美元。所以 Jackson 確實有這筆錢。我們可以往回追溯並找出答案——這就是擁有「前一個」欄位的好處之一。

結語 (16:30)

這就是一個在上面運行貨幣的基本區塊鏈。如你所知,區塊鏈有許多副本——每個人都有一個副本。如果我們竄改了某些東西並把它變成 6 美元,這些區塊就會失效,並且與其他副本不一致。這能抵抗竄改,這正是你對貨幣的要求。它對於小型和交易性質的事物運作得非常好。

區塊鏈是一種非常有效率的方式,用來處理對過去發生過的事情的共識——這段隨著時間推移而不可變的歷史。我們略過了一些重點,但如果你深入研究這個示範,點擊這些東西並試著操作看看,你會越來越了解它是如何運作的。

這個頁面對您有幫助嗎?