區塊鏈技術基本運作原理

2023-6-5 by 高田鑑識

當談到區塊鏈技術的基本概念時,有幾個重要的核心元素需要說明。

首先,區塊鏈是一種分散式的資料儲存和管理技術,它的核心是每10~15分鐘會產生一個包含交易資料的「區塊 – Block」,每個「區塊」會依照時間順序連接串成一條「鏈」。每個「區塊 – Block」包含一定數量的交易內容,例如加密貨幣的交易記錄或合約的內容。

其次,區塊鏈技術採分散式架構,也就是說,紀錄交易內容的「區塊 」不會存儲在一個中央機構或單一伺服器上,而是在節點網絡中的多個參與者之間共享和存儲。這些節點可以是任何連接到網絡的電腦或設備,它們一起協作維護和驗證區塊鏈的完整性安全性

區塊鏈的安全性和完整性依賴於兩個主要的機制。首先是「雜湊 – hashing」函數,它是一種將任意長度的數據轉換成固定長度雜湊值的數學函數。這意味著無論輸入數據的大小,雜湊函數都會產生一個獨一無二的雜湊值。區塊中的每個數據都使用雜湊函數進行計算,並將其雜湊值存儲在下一個區塊中,以確保資料鏈的不可變性。

另一個重要的概念是「數位簽章」技術,它是區塊鏈中驗證資料真實性和交易合法性的關鍵機制。「數位簽章」使用公鑰和私鑰的組合,資料的發送者使用私鑰對資料進行加密簽名,接收者使用相應的公鑰對簽名進行驗證。這種機制確保了資料據的完整性和不可篡改性,同時也確保了交易的真實性和可信度。

區塊包含什麼內容

區塊鏈的「區塊 – Block」是儲存資料的基本單位,每個區塊包含了不同類型的內容。以下是一個區塊結構:

  1. 區塊表頭(Block Header): 區塊表頭是區塊的元數據 (metadata),包含了關於區塊本身的重要資訊。通常包含以下內容:
    • 版本資訊(Version Number):指定區塊的協議版本。
    • 上一個區塊雜湊值(Previous Block Hash):指向前一個區塊的雜湊值,這樣可以將區塊串聯成鏈狀結構。
    • Merkle 根(Merkle Root):是一個雜湊樹(Merkle Tree)的根雜湊值,用於確保交易資料的完整性。
    • 目標難度(Difficulty Target):用於區塊的挖掘難度調整,通常會依據當下的總算力動態調整。
    • 時間戳記(Timestamp):該區塊的產生時間。
    • Nonce:是一個隨機數字,每一個礦工在挖掘區塊 Proof of Work(工作量證明)驗證過程時隨機產生的數字。
  2. 交易紀錄(Transaction Data): 區塊中包含一個或多個交易,每個交易都包含了特定的資訊,例如交易的發送者、接收者、交易金額等。交易紀錄使用數位簽章進行驗證和確認,以確保交易的真實性和安全性。
  3. 其他元數據: 除了區塊表頭和交易紀錄外,一個區塊還可以包含其他元數據。

區塊鏈中的每個區塊都以特定的格式和結構組成,這種結構確保了資料的安全性、完整性和連接性。

Block

圖一、區塊內容

分散式架構和節點網絡

分散式架構和節點網絡是區塊鏈技術的關鍵技術之一。它們是區塊鏈的基礎結構,提供了一種去中心化的方式來存儲和管理資料。

在傳統的中心化系統中,資料通常由單一的中央機構或伺服器掌控和管理。然而,區塊鏈透過分散式架構,將資料存儲和處理的權力分散到節點網絡中的多個參與者手中。

節點是指連接到區塊鏈網絡的設備。這些節點可以是個人電腦、伺服器、行動裝置、物聯網設備等。每個節點都有一個完整的「區塊鏈副本」,包含了化名中本聰(Satoshi Nakamoto)的比特幣主要作者,製作的比特幣世界的第一個區塊、「創世區塊 – Genesis Block 」以來的所有交易記錄和資料。

創世區塊地址:

複製

這些節點透過協作來維護和驗證區塊鏈的完整性和安全性。當一個新的交易發生時,節點會將該交易廣播到整個網絡中的其他節點。其他節點會驗證該交易的合法性,例如透過數位簽章檢查帳戶餘額等,然後將該交易打包到一個新的區塊中。

一旦新的區塊生成,節點們會透過共識算法來決定哪個節點可以成為下一個區塊的創建者。這樣的共識算法可以是工作量證明(Proof of Work)或其他形式的共識機制。當節點成功建立新的區塊並將其加到鏈最尾端後,其他節點會更新自己的區塊鏈副本,以保持整個網絡的一致性。

這種分散式架構和節點網絡的設計使得區塊鏈具有高度的容錯性和安全性。由於資料存儲在多個節點上,即使某些節點出現故障或遭受攻擊,整個區塊鏈系統仍然能夠正常運作和保持的完整性。同時,節點網絡中的多個參與者共同驗證和確認交易,避免了單一機構的中心化控制,增加了系統的可信度和防範篡改的能力。

Genesis Block

圖二、創世區塊 – Genesis Block

SHA-256 雜湊函數

區塊鏈使用SHA-256(Secure Hash Algorithm 256-bit)進行雜湊計算。SHA-256 是一種安全雜湊函數,它可接收一個任意長度的資料並產生一個 256 bit(32 bytes)的固定長度雜湊值。

在區塊鏈中,SHA-256主要用於以下兩個方面:

  1. 區塊雜湊計算: 在區塊鏈中,每個區塊都包含著一個或多個交易記錄外,為了確保區塊的完整性和不可篡改性,每個區塊都計算出一個唯一的區塊雜湊值,該雜湊值將用於與下一個區塊連接從而串成鏈。這樣可以建立一個具有時間順序的區塊鏈。計算區塊雜湊值的過程通常是將區塊的所有內容(例如交易資料、區塊表頭、時間戳等)整合在一起,然後對這個內容採兩次 SHA-256 雜湊函數計算。
  2. 交易資料雜湊驗證: 在區塊鏈中,交易資料也需要被雜湊計算以確保其來源性。每個交易都包含發送者、接收者和交易紀錄等資訊。為了產生交易的唯一識別 ID,這些交易紀錄也採 SHA-256 雜湊函數進行計算。
kaotenforensic 的 SHA256 結果
複製
Kaotenforensic 的 SHA256 結果
複製

SHA-256 的計算過程是不可逆的,這意味著無法從雜湊值反向計算出原始輸入資訊。而且,即使輸入資料的僅有一個 bit 的變化也會導致產生出完全不同的雜湊值,從而確保了資料的安全性和完整性。

比特幣總數

根據比特幣的設計,比特幣的總供應量是有上限的。這數量被定為 2100 萬枚比特幣(21,000,000 BTC)。比特幣的總供應量是透過比特幣協議的共識機制進行控制和發行的。

比特幣的供應是根據一個固定的發行速率進行的,稱為「挖礦獎勵」。在比特幣網絡中,礦工透過參與區塊的挖掘和驗證來創造新的比特幣。每當一個新的區塊被成功挖掘出來 (每個區塊產生的時間約為 10 ~ 15 分鐘),礦工將獲得一定數量的比特幣作為獎勵。這個獎勵在比特幣網絡中被設計為每 210,000 個區塊(約四年)就會減半一次,這被稱為「挖礦獎勵的半衰期 – Bitcoin Halving」。

在比特幣網絡的早期階段,每個新區塊的挖礦獎勵為 50 BTC。在2012年的第一個半衰期後,挖礦獎勵減半為25 BTC。之後,於2016年和2020年發生了兩次半衰期,挖礦獎勵分別減半為 12.5 BTC 和 6.25 BTC。

根據這樣的減半規則,挖礦獎勵將在每一個半衰期中逐漸減少,直到最終趨近於零。根據現有的規則,預計最後一個比特幣將於2140年前後挖掘出來。此時,比特幣的總供應量將達到 2100 萬枚,且不再有新的比特幣產生。

因此,比特幣的總數量是根據挖礦獎勵的半衰機制和發行規則計算的,並且在 2140 年左右達到了 2100 萬枚。這一設計是為了確保比特幣供應的有限性和價值的保值。

Total BTCs Formula

圖三、總 BTC 計算方式

2020 年後挖礦獎勵從 12.5 BTC 減半為 6.25 BTC。若礦工於 2023 年 6 月成功挖出一個區塊,可獲得 6.25 BTC 的獎勵,市值相當於 500 萬台幣的收益。

Total BTCs Formula

圖四、2023 年挖礦獎勵

PoW工作量證明

工作量證明機制(Proof of Work,PoW)是一種被廣泛應用於區塊鏈技術中的演算方式,特別是比特幣。它的目的是確保網絡中的節點在驗證和建立新區塊到區塊鏈時需要進行一定的工作,以確保區塊鏈的安全性和一致性。

工作量證明機制的基本是透過節點(稱為礦工)在解決複雜數學問題上耗費大量的計算資源和能量來證明其對區塊鏈網絡的貢獻。這個數學問題通常涉及在計算新的區塊雜湊值中找到一個特定的值,並且這個值必須滿足特定的條件,若以比特幣的區塊為例,區塊的雜湊值必須是特定數量的「零位」開始。

礦工需要不斷地試圖找到符合特定條件的 SHA-256 雜湊值,這個過程被稱為「挖礦」。由於 SHA-256 是一個無法預測的雜湊函數,礦工只能透過嘗試不同的亂數(稱為「nonce」- number once)來尋找符合要求的雜湊值。

在比特幣網絡中,工作量證明的問題被設計成需要進行大量的計算才能找到解。這意味著礦工需要投入大量的計算資源,並消耗大量的電力來解決這個問題。這樣做的目的是確保區塊的產生速度適中 (每 10~15 分鐘),並且不容易被惡意節點攻擊和竄改鏈。

當一個礦工找到符合要求的雜湊值時,他可將新的區塊加入區塊鏈中,並向其他節點廣播這個新區塊的訊息。其他節點接收到這個新區塊後,會驗證該區塊的有效性,包括檢查工作量證明的計算結果是否正確。如果驗證成功,則這個區塊被接受,並成為區塊鏈的一部分。

PoW 規則通常會依據網路上當下的總算力來設定 0 的長度,難度越高,則 0 的長度越長。以下為一個前 80 個 bit 須為 0 的 SHA-256 雜湊值範例。

SHA-256

圖五、PoW 難度

區塊鏈的挑戰和未來發展性

區塊鏈作為一種新興的技術,面臨著一些挑戰,同時也有著巨大的發展潛力和革命性的應用前景。

  1. 可擴展性挑戰:目前的區塊鏈技術在處理大規模交易和資料時可能面臨可擴展性問題。由於每個節點都需要處理和存儲整個區塊鏈的數據,隨著交易數量增加,網絡的性能和效率可能會受到限制。
  2. 隱私和安全挑戰:雖然區塊鏈的交易記錄是公開和透明的,但這也帶來了隱私和安全方面的挑戰。如何在保持透明性的同時確保交易的隱私性是一個重要問題。同樣,區塊鏈系統面臨著來自攻擊者的威脅,包括雙重支付、51%攻擊等。
  3. 法律和監管挑戰:區塊鏈技術的發展也面臨著法律和監管方面的挑戰。

儘管面臨這些挑戰,區塊鏈仍然具有革命性的應用前景。

  1. 金融和支付行業:區塊鏈可以提供更快速、安全和低成本的跨境支付和轉賬服務。智能合約也可以實現自動化的金融合同執行和資產管理。
  2. 物聯網(IoT):區塊鏈可以為物聯網設備之間的互信和資料交換提供安全可信的基礎。這可以促進智慧城市、供應鏈管理、智慧能源網絡等領域的發展。
  3. 版權保護和知識產權:區塊鏈可以提供去中心化的版權管理和知識產權保護機制,確保創作者的權益得到保護,並促進創新和創意產業的發展。

總結來說,區塊鏈技術在金融、物聯網、知識產權等領域具有巨大的應用前景。隨著技術的發展和不斷創新,區塊鏈將繼續推動數位經濟革命,改變傳統行業的運作方式,實現更加去中心化、透明和高效的社會結構。