在 Ethereum 開發筆記 1–4 應該已經將 Blockchain 的技術原理說明得很清楚了,不過如果要向一般大眾簡單說明 Blockchain 是什麼,要怎麼說呢?我會說:Blockchain 就是一個分散式帳本,大家都有一樣的帳本,大家都可一起參與記帳,且記完帳大家的帳本就會自動更新到最新版本,而帳裡的紀錄都會分塊並用密碼按順序鏈結起來,用以驗證帳的正確性,如果中間有人改了資料,那後面的鏈結密碼都會發生錯誤,因此沒有人可以亂改帳,這就是 Blockchain。

但 Blockchain 這個名詞還包含了許多概念與內涵,我們之前說過,Blockchain 是因為分散式去中心化帳本的發展而慢慢產生出來的,這樣慢慢被統稱出來的名詞裡底下也就會包含了許多內涵,很難用三言兩語來說明,所以有一些 Blockchain 相關的定義與名詞我們都可以了解一下,這樣就能更了解 Blockchain。

交易(Transaction)

交易是 Blockchain 帳本中的原子單位,如果將交易再往下拆分就會變得沒有意義,比如下列就是一個交易:

  1. A 減少了 $10
  2. B 增加了 $9
  3. C 增加了 $1

如果只看 1,我們就會想那減少的 $10 到哪裡去了?所以 1、2、3 一起看才算是一個交易。

Blockchain 是一個分散式帳本(Distributed Ledger)

不像銀行依靠自己的帳本來記帳,Blockchain 提供了可靠的分散式帳本,當銀行之間要進行交易時,會需要一個受信任的第三方來進行銀行之間的交易,這也是為何你在做跨國轉帳時,需要付出高昂的手續費以及等待數天處理交易,Blockchain 可靠的分散式帳本讓跨國交易可以在幾分鐘甚至幾秒之內完成,這也是為何銀行想要應用 Blockchain 在金融交易上以降低交易成本。

Blockchain 是一個資料結構(Data Structure)

通常 Blockchain 的資料結構如下組成:

  • 交易是原子單位
  • 區塊是由一系列的交易組成
  • 區塊鏈由排序良好的區塊所組成

Blockchain 會有分叉(Fork)

當有兩名礦工 A 及 B 幾乎在相同時間內算出了合法的 hash,這兩個區塊傳播到鄰近節點時,有些節點收到了 A 的區塊,有些節點收到了 B 的區塊,這兩個區塊都可以是主鏈的延伸,這時就會產生區塊鏈分叉。

這時會比較分叉中哪個鏈有更多的工作量(工作量證明)來決定作為主鏈,另一個分叉作為備用鏈保存(因為未來可能會超過主鏈工作量成為新主鏈),如此各節點繼續工作下去延長區塊鏈。

更短的區塊產生間隔可以讓較易確認更快完成,但也可能更頻繁的產生分叉,而長的區塊產生間隔可以減少分叉數量,但卻會導致更長的交易確認時間。為了減少分叉的發生,Bitcoin 將區塊間隔設計為10分鐘(用工作難度來調整時間),這個時間設計是在交易確認速度與分叉機率之間做出的妥協。

Blockchain 是一個去中心化共識系統(Decentralized Consensus)

Blockchain 是個分散式帳本,且各個節點之間並沒有哪個節點比其他節點更有權威性,也因此許多人稱之為「去中心化」。沒有了權威中心的控制系統要如何讓各節點之間可以協同運作?Blockachin 就是使用了共識機制來彼此協同運作,決定整個鏈如何延展下去。

Blockchain 代表數位自由化

由於 Blockchain 中各個節點之間並沒有哪個節點比其他節點更有權威性,任何節點都可以自由的存取資料,也因此在 Blockchain 相較於其他中心化的系統更具自由,言論審查在 Blockchain 上基本上不可行。

Blockchain 是新的運算平台

在 Ethereum 這樣的 Blockchain,由於可以將程式在 Blockchain 上運行,這讓一個全球性的運算平台成為可能,也因此我們可以將 Blockchain 視為一種新的運算平台。

公有鏈、聯盟鏈、私有鏈(Public Chain、Consortium Chain、Private Chain)

公有鏈是指任何人都可以存取與發送交易、任何人都可以參與共識過程的區塊鏈,這就是我們一般在說的 Blockchain。

有時我們在應用場景上不希望完全公開,但卻又希望借重 Blockchain 的不可竄改及 P2P 共識機制,比如在銀行間進行支付、結算等交易就可能不希望完全公開,這時就可以用聯盟鏈的形式來整合各家銀行的記帳節點。

私有鏈與聯盟鏈最大的不同在於,聯盟鏈是為一個聯盟,比如為一個行業服務;而私有鏈則是為一個組織,比如一家公司的內部服務,完全私有的區塊鏈,寫入權限僅在一個組織手裡的區塊鏈。

分散式與去中心化的差異(Distributed vs. Decentralised)

分散式與去中心化常混為一談,但分散式與去中心化是不同的,分散式代表系統不存在單點脆弱性,而去中心化則代表各系統中沒有不同的權威性,比如 Google 其實是一個分散式系統,但卻是中心化系統,Google 可以控制整個系統,而 Bitcoin 就是一個既分散也去中心的系統,由各系統彼此協同共治。我們可以用下圖更清楚地了解分散式與去中心化(沒有控制的手)的概念。

以上就是你可能會常常聽到和 Blockchain 一起出現的一些定義與名詞,其實就稍微了解就好,畢竟這還是會隨著發展而改變啊。