# 何謂區塊?何謂鏈?
在上一篇文章中,我們用了「麻將」的概念來講一個以太坊的粗淺比喻,希望能幫助大家有個大略的想像。接下來,將以名詞解釋系列,一步步補充這些背景知識。
# 區塊
區塊鏈,顧名思義,是由「區塊(Block)」與「鏈(Chain)」所組成的名詞。要理解區塊鏈,我們就要先理解這兩個名詞實際上的含義。
天地洪荒,萬物混沌之初,這世界本沒區塊,直到「創始區塊(Genesis Block)」的出現,才定義了萬物的狀態。有了基礎的狀態,在未來的每個區塊只需要記錄「狀態的變化」即可。
因此,在一個區塊裡面包含了多筆「交易(Transaction)」,而在以太坊裡的交易又分為:「建立(Create)」與「執行(Execute)」。
# 建立(Create)
通常發生在「部署智能合約」所使用。我們將在智能合約章節有詳細的解釋。
# 執行(Execute)
代表著以下幾種可能的狀態變化:
- 收發以太(Ether):增減該帳戶的 Ether 餘額。
- 與智能合約互動:改變智能合約的儲存資料。
# 以創始區塊為例
圖片擷取自:https://etherscan.io/txs?block=0
我們可以發現這個創始區塊紀錄了多筆由「GENESIS」轉給「以太坊帳戶」的以太轉帳。
# 以第15553296區塊為例
圖片擷取自:https://etherscan.io/txs?block=15553296
在這個區塊中,就能看到很多與智能合約互動的交易,比如說近期熱門的 NFT 就會提供一個 Mint
的函式,讓使用者可以鑄造 NFT 出來。
# 鏈
有了對區塊的初步概念,我們就能來探討「鏈」了。
鏈的目的是把區塊有順序地給串起來。而為什麼「順序」如此重要呢?
每個區塊實際上是記錄「交易」,也就是「狀態的變化」,如果順序不同會發生什麼事?
# 以銀行交易為例
Alice 的戶頭有 100 元,Bob 的戶頭有 200 元,海帶的戶頭有 300 元
初始狀態
Alice | Bob | 海帶 |
---|---|---|
100 | 200 | 300 |
Alice 今天請海帶幫忙代購商品,欠了海帶 200 元。 而 Bob 同時欠了 Alice 100 元。 Alice 為了能還海帶錢,請 Bob 先還她 100 元。
Bob 還錢後的狀態
Alice | Bob | 海帶 |
---|---|---|
200 | 100 | 300 |
Alice 這時還給海帶 200 元
最終狀態
Alice | Bob | 海帶 |
---|---|---|
0 | 100 | 500 |
上面的交易如果順序亂了, Alice 要還錢的交易被放在 Bob 還錢之前,那發生的瞬間就會因為餘額不足導致交易失敗。
# 結語
同理在區塊鏈上前面交易的順序、成功與否都會影響後面的狀態,因此我們需要通過「鏈」的概念確保所有的「區塊」都能以一個不可變動的順序被牢牢的串在一起。
而這,就是區塊鏈。