更新於 2024/07/22閱讀時間約 7 分鐘

比特幣很難理解?因為你還沒看過這篇

raw-image
比特幣是一種去中心化數字貨幣,通過許多運行比特幣軟體的節點構成的全球點對點網路進行交易
比特幣網路裡,每個節點不斷將網路收集的新交易訊息轉送給其他節點並嘗試將此交易訊息儲存到區塊上。

比特幣支付網路 - 全球點對點去中心化網路

用戶可以連接到全球任何一個運行比特幣軟體的節點進行交易,這些節點共同維護著一份去中心化的交易記錄。

此外,比特幣網路具備可擴展性。任何人可通過在自己的電腦上安裝比特幣軟體並連接網路成為新節點,無需經過中央單位審核、許可,就能自主提供交易服務並獲得比特幣獎勵。

查詢比特幣節點資訊 https://bitnodes.io/nodes/?q=Satoshi:26.0.0

比特幣運行節點統計

比特幣運行節點ip位址列表


比特幣節點加入網路後在忙什麼

  • 下載歷史交易紀錄 - 節點初次安裝完比特幣軟體、連接上網路後,會自動從相鄰結點下載所有用區塊鏈資料結構紀錄的完整歷史交易紀錄。
  • 接收/轉送交易資訊 - 節點收到交易訊息後,會先將交易訊息暫存在記憶池裡,並向相鄰節點再次發送這個交易訊息。因此隨著時間的累積,網路中所有節點都會收到這個交易訊息。
  • 建立新區塊 - 節點會建立尚未計算出編號的新區塊,並定期將記憶池裡的交易訊息打包存放進新區塊。
  • 為新區塊尋找編號(挖礦) - 每個新區塊的編號是用新區塊的資訊內容(包含所有已打包交易資料)透過hash函數(SHA-256)計算出來的。
新區塊編號 = SHA-256(新區塊資訊內容)

到底什麼是挖礦

新區塊編號: 挖礦可以簡單理解成為新區塊尋找合適編號

新區塊資訊內容分成區塊頭區塊體兩個部分。

區塊頭含有上一個區塊的編號以及一個叫NONCE的數值,區塊體則是儲存所有已打包交易資訊。

新區塊編號則是將區塊頭與區塊體輸入雜湊演算法(SHA-256)後計算出的數值。

區塊頭 = 上一個區塊編號 + NONCE
區塊體 = 已打包交易資訊

新區塊編號 = SHA-256(上一個區塊編號 + 已打包交易資訊 + NONCE)

SHA-256: 新區塊編號的計算公式

SHA全名是Secured Hash Algorithm安全雜湊演算法的簡寫,256代表他可以接受最多264 bits的輸入並轉換成256 bits的輸出

SHA-256("apple") = 3A7BD3E2360A3D29EEA436FCFB7E4...

SHA-256有幾個特點:

  1. 高隨機性:SHA-256 的輸出隨機,不可預測,這使得它對於任何試圖找到模式或弱點以進行破解的行為具有很高的抵抗力,要逆向找到原始輸入極其困難。
  2. 抗修改性/雪崩效應:輸入數據的微小改變(即使只是一個bit的變化)都會導致輸出有大範圍的不同,這使得數據的竄改變很容易被察覺。

編號規則與挖礦難度: 暴力計算新編號

假設我們規定新區塊編號必須是0000開頭,由於SHA-256的各種特性,除了不斷調整輸入重新計算之外(try&error暴力法)沒有其他方式,而這個可以嘗試調整的輸入,就是新區塊頭的NONCE。

NONCE = 1
1234xxx... = SHA-256(上一個區塊編號 + 已打包交易資訊 + NONCE)

NONCE = 2
9876xxx... = SHA-256(上一個區塊編號 + 已打包交易資訊 + NONCE)

...

NONCE = X
0000xxx... = SHA-256(上一個區塊編號 + 已打包交易資訊 + NONCE)

編號規則越嚴苛,找到符合規則的新區塊編號就更困難需要更久的時間,規則的嚴苛程度就是比特幣網路的挖礦難度。

挖礦就是這麼的樸實無華,不斷的調整NONCE,直到計算出符合規則的新區塊編號。

新區塊驗證與區塊鏈: 算得對還要算得快

當節點計算出符合網路難度目標的新編號後,會將新區塊廣播到比特幣網路。收到新區塊的節點會進行一系列的驗證,確認其中的交易有效且結構符合規則。

由於每個新區塊都包含著上一個區塊編號資訊,形成了一種鏈式數據結構,即所謂的區塊鏈。

隨著新區塊被更多節點接受、驗證並添加到各自的區塊鏈副本中,該區塊鏈版本逐漸在網路中得到廣泛認同,成為主鍊。

挖礦獎勵: 礦工爸爸

前面提到一個新區塊由區塊頭及區塊體組成,而區塊體則打包了一組交易資訊

除了從網路來的交易訊息之外,已打包交易資訊還存在一筆特殊交易(Coinbase transaction),通常翻譯成創幣交易或是礦工獎勵交易,這筆交易的收款人是節點本身,沒有付款人

已打包交易資訊 = Coinbase transaction(創幣交易/礦工獎勵交易) + 其他正常交易

也就是說當一個節點成功產生新區塊記錄其他人的交易時,也同時產生了一筆給自己獎勵的交易

沒錯,所有比特幣都是從礦工來的,沒有礦工就沒有比特幣可以炒,礦工是我們的爸爸。

區塊鏈分叉與最長鍊共識原則: 交易需要時間達成共識才會被記錄

由於每個節點的挖礦策略不同、訊息傳遞路徑與速度等不同步的因素造成整個比特幣網路同時存在多個不同版本的主鍊。

此時比特幣網路會採用「最長鍊原則」來解決分叉問題,網路中的節點會選擇最長的區塊鏈作為有效主鍊,因為最長的鏈擁有最大的計算工作量證明,代表了網路大多數節點的共識。

當一條分叉鍊成為最長鍊後,其他較短的分叉鍊上的交易需要被重新放入交易池,等待再次被節點挖掘並加入到新的最長鍊中。

這種動態調整過程使比特幣網路能夠有效應對節點間的信息延遲或網路分割等問題,並維護系統的高度去中心化和操作的透明性。


比特幣安全核心:

  • 加密技術
  • 挖礦機制(暴力計算x時間)
  • 共識機制
  • 經濟獎勵

中本聰在比特幣區塊鏈的設計中精心結合了加密技術、挖礦機制、共識機制、經濟獎勵四個關鍵要素,創造了一個堅不可摧的網路安全架構和去中心化交易系統。

1. 加密技術

SHA-256雜湊演算法保證數據的完整性,並確保每個區塊的編號依賴於前一個區塊,創建了一個不可更改的數據鏈,即區塊鏈。

2. 挖礦機制(暴力計算x時間)

挖礦機制要求礦工進行大量計算以驗證交易並創建新區塊。這不僅使篡改歷史記錄在計算上變得不可行,也極大地提高了對網路發動攻擊的成本,從而保護網路免受惡意攻擊。

3. 共識機制

通過共識機制,比特幣確保了所有網路參與者對帳本的狀態達成一致。最長鏈原則確保了網路在有多個有效的區塊鏈版本時能夠選擇最可靠的一條鏈,這支持了整個系統的去中心化和數據不可逆性。

4. 經濟獎勵

透過區塊獎勵更多礦工被激勵而加入網路成為節點,51%攻擊的難度隨之增加,進而提升整體網路的安全性。

無論發起網路攻擊與或是參與挖礦,都需要計算能力作為成本,獎勵機制的存在使得攻擊者在衡量攻擊成本、效益後,高機率會選擇正常參與挖礦獲得獎勵而非發起攻擊。


中本聰的設計巧妙地將這些元素結合在一起,創造了一個自我調節、高度安全和去中心化的數字貨幣系統,這使比特幣成為全球範圍內廣泛接受和信賴的數字貨幣。


看完還是不太清楚沒關係,只要記住中本聰真的很神就好。

本文用較淺顯易懂的方式描述區塊鏈與區塊,真實區塊鏈的資料結構較為複雜。

區塊鏈資料結構示意圖





分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.