
- 區塊鏈教程
- 區塊鏈 - 首頁
- 區塊鏈基礎
- 區塊鏈 - 簡介
- 區塊鏈的歷史
- 區塊鏈 - 技術
- 區塊鏈與密碼學
- 區塊鏈超越加密貨幣
- 區塊鏈 - 高階概念
- 區塊鏈 - 分散化
- 區塊鏈 - 去中心化應用 (DApp)
- 區塊鏈 - 去中心化金融 (DeFi)
- 區塊鏈 - 未來展望
- 區塊鏈中的智慧合約
- 區塊鏈 - 裡卡迪安合約
- 區塊鏈 - 預言機
- 區塊鏈 - 去中心化自治組織 (DAO)
- 比特幣
- 比特幣 - 無形的黃金
- 比特幣是如何工作的?
- 比特幣 - 網路
- 比特幣 - 錢包
- 比特幣 - 創新
- 以太坊
- 以太坊替代加密貨幣
- 以太坊生態系統
- 以太坊虛擬機器 (EVM)
- 高階以太坊
- 以太坊錢包
- 以太坊礦工節點
- 其他
- 區塊鏈 - 雙重支付
- 公鑰密碼學
- 區塊鏈 - 雜湊演算法
- 比特幣 - 挖礦
- 區塊鏈 - 區塊鏈式連線
- 區塊鏈 - 工作量證明 (PoW)
- 區塊鏈 - 網路與挖礦
- 區塊鏈 - 礦工激勵機制
- 區塊鏈 - 梅克爾樹
- 區塊鏈 - 支付驗證
- 區塊鏈 - 解決衝突
- 區塊鏈 - 隱私
- 比特幣 - 緩解攻擊
- 區塊鏈 - 結論
- 區塊鏈資源
- 區塊鏈 - 快速指南
- 區塊鏈 - 資源
- 區塊鏈 - 討論
區塊鏈 - 高階概念
高階區塊鏈概念包含以下主題:CAP定理、區塊鏈中的共識機制、密碼學原語、區塊鏈中的資料結構、區塊和區塊頭。在學習完區塊鏈技術和密碼學的基礎概念和術語後,再學習這些概念。
CAP定理:是什麼以及如何運作?
CAP定理經常在區塊鏈技術的背景下討論。該定理強調,分散式系統只能實現三個理想特性中的兩個:一致性、可用性和分割槽容錯性。它斷言,分散式系統不可能同時提供所有三個保證:一致性、可用性和分割槽容錯性。CAP中的C、A和P分別代表:
- 一致性 - 所有使用者必須同時看到相同的資訊,無論他們使用的是哪臺計算機。為實現這一點,新增到一臺計算機的任何資訊都必須立即傳送到系統中的所有其他計算機進行儲存。
- 可用性 - 使用者應該在請求資訊時收到響應,即使某些計算機無法執行。系統中的每臺計算機都應該響應任何發出的請求。
- 分割槽容錯性 - 如果兩臺計算機之間的連線中斷,則認為這是一個分割槽。分割槽容錯性確保即使計算機之間存在連線問題,系統也能繼續執行。

在區塊鏈系統的背景下,CAP定理非常重要,因為它有助於理解在區塊鏈設計中需要權衡取捨的地方。例如,優先考慮一致性可能會導致可用性降低或對網路分割槽的處理能力較弱。相反,優先考慮可用性和分割槽容錯性可能會影響一致性。
什麼是拜占庭將軍問題?
共識機制在任何區塊鏈架構中都扮演著至關重要的角色,因為它保證了在分散的計算機網路中信任、一致性和安全性的維護。共識機制解決的主要挑戰之一是拜占庭將軍問題,它涉及在一些參與者可能出現故障或惡意行為的分散式系統中達成共識。在這種情況下,確保所有節點就特定問題(例如區塊鏈中交易的值)達成一致變得複雜,特別是當某些節點可能提供誤導性或矛盾的資訊時。缺乏安全的通訊渠道會帶來單點故障的風險,即拜占庭故障,元件可能發生故障,並且無法確定元件是否確實發生了故障。
拜占庭將軍問題源於一個涉及拜占庭軍隊的歷史場景,這是一個計算機科學難題,它涉及在分散的環境中達成共識,在這種環境中,一些參與者可能會出現故障或惡意行為。在這種情況下,確保所有節點就特定問題達成一致(例如區塊鏈中交易的值)變得複雜,特別是當某些節點可能提供誤導性或矛盾的資訊時。缺乏安全的通訊渠道會帶來單點故障的風險,即拜占庭故障,元件可能發生故障,並且無法確定元件是否確實發生了故障。
區塊鏈試圖透過建立一個不需要信任每個個人的信任層來解決這個問題。礦工和驗證者在這個系統中扮演著至關重要的角色。他們的目標是透過遵循遊戲規則向賬本新增新條目。一種用於解決拜占庭將軍問題的常見共識機制是PoW。在PoW中,網路節點競爭解決密碼難題,第一個成功解決難題的節點將下一個區塊新增到鏈中。隨後,其他節點驗證此區塊,並在就其有效性達成共識後,將其新增到他們的賬本中。此過程確保了一種去中心化和安全的方法來就係統的狀態達成共識。
另一種普遍的共識機制是PoS。在PoS中,根據節點持有的加密貨幣數量以及願意作為抵押品進行質押的數量來選擇節點驗證交易。此設定激勵節點誠實行事,因為任何惡意行為都可能導致其質押資金的損失。
PBFT(實用拜占庭容錯)作為一種共識機制,利用共識協議來確定要附加到區塊鏈的下一個區塊。透過節點之間的通訊,達成一致,並且只有在從網路中的其他節點收到足夠的投票後,節點才能被允許將區塊新增到區塊鏈中。
共識機制
區塊鏈共識是網路中對等節點就資料的當前狀態達成一致的過程。它是去中心化系統中的一個關鍵機制,為安全和保密的交易提供信任和安全保障。如果沒有共識,衝突的交易將無法得到阻止,這對於加密貨幣區塊鏈的運作至關重要。存在各種型別的共識機制,每種機制的能源使用、安全性和可擴充套件性各不相同,但所有機制都有一個共同的目標,即確保記錄的完整性。
以下是分散式系統為達成共識而使用的一些最著名的共識機制概述:
- PoW(工作量證明)是最初的共識機制,被比特幣和以太坊等加密貨幣使用。礦工競爭解決複雜的數學難題,第一個解決難題的人可以建立一個新的區塊並驗證交易。成功的礦工還會獲得稱為區塊獎勵的加密貨幣獎勵。PoW被認為是一種安全可靠的機制,但需要大量的計算資源和能源,導致運營成本高昂和環境影響大。
- PoS(權益證明)是PoW的一種更環保的替代方案。在PoS中,礦工承諾質押一定數量的加密貨幣,並被隨機選中來驗證交易。礦工持有的加密貨幣越多,他們被選中的機會就越高。該系統有利於擁有更多代幣的實體,從而導致中心化問題。
- DPoS(委託權益證明)是PoS的一種變體,網路使用者投票選擇見證人來代表他們保護網路安全。只有獲得最多投票的頂級見證人才能驗證區塊鏈交易。見證人透過面臨被認為更值得信賴的人取代的風險來激勵他們保持誠實。
- PoA(權益證明)是PoW和PoS的混合體,由Decred和Espers區塊鏈專案使用。挖礦過程像PoW一樣開始,礦工競爭解決數學問題,然後切換到PoS,驗證者被選中籤署區塊頭。區塊獎勵在礦工和驗證者之間共享。PoA因其能源密集型的挖礦階段及其對持有更多代幣的驗證者的偏袒而受到批評。
- PoA(授權證明)與PoS不同,因為它根據驗證者的聲譽而不是質押加密貨幣來選擇驗證者。這種方法所需的計算能力極低,並且更節省資源,但它因其可能將權力集中在少數權威節點手中的可能性而受到批評。
密碼學原語
密碼學原語的各種類別包括:
- 單向雜湊函式 - 這些是數學演算法,它們接受一條訊息並生成一個固定長度的數字字串,稱為雜湊值或摘要。它們透過防止更改來確保數字資料的完整性。需要注意的是,即使輸入的微小修改也會導致完全不同的雜湊輸出,這種現象稱為雪崩效應。一種廣泛使用的雜湊函式是SHA-256。
- 對稱密碼 - 當訊息使用金鑰加密時,它會轉換為密文,看起來可讀但缺乏意義。相同的金鑰用於將密文恢復到其原始訊息。金鑰作為加密和解密的變數,充當保護或釋放資料的機制。基於金鑰的加密演算法的著名示例包括AES、DES和Blowfish。雖然對稱加密通常比公鑰密碼學提供更快的處理速度,但挑戰在於金鑰的安全共享。
- 非對稱密碼 - 這些使用一對金鑰,一個用於加密資訊(公鑰),另一個用於解密資訊(私鑰)。示例包括RSA、DSA和橢圓曲線密碼學。
- 分組密碼 - 這些加密固定大小的塊中的資料,例如64位或128位。它們經常與雜湊函式結合使用以確保長訊息的安全。
- 流密碼 - 這些一次加密一個位或一個位元組的資料,這使得它們特別適用於保護即時資訊,例如音訊或影片流。
- 數字簽名 - 這些提供了一種驗證數字訊息或資訊真實性的方法,確認它來自聲稱的發件人。它們使用非對稱密碼來建立可以使用傳送方的公鑰驗證的簽名。
- 訊息認證碼 - 這些類似於數字簽名,但使用對稱密碼來生成可以使用相同的金鑰進行檢查的程式碼。
區塊鏈中使用的資料結構
區塊鏈技術使用一些基本的資料結構,這些資料結構對於其安全性和操作效率至關重要。從本質上講,區塊鏈由兩個主要資料結構組成:塊和連結串列。各種類別的塊包括:
- 大多數塊的設計目的是擴充套件現有的主區塊鏈,這被認為是網路中最長的鏈。這些被稱為主分支塊。
- 相反,有些塊可能連結到不是最長區塊鏈一部分的父塊,這些被稱為側分支塊。
- 此外,還有一些塊連線到處理塊的節點無法識別的父塊;這些被稱為孤塊。
區塊鏈中新區塊的生成是透過使用稱為雜湊的唯一識別符號將其連結到前一個區塊來實現的。這個新區塊包含前一個區塊的雜湊值、新的交易詳情以及一個稱為隨機數的nonce。只有在所有網路計算機驗證交易後,區塊才會被整合到區塊鏈中。這個驗證過程至關重要,因為它確保交易的永久性和不可變性,這是區塊鏈技術的根本特徵。區塊中的資料透過稱為雜湊的方法進行壓縮以減小其大小。每個區塊包含特定時間段內所有已確認的交易。隨著更多區塊的新增,它們共同形成一個稱為區塊鏈的鏈,這是區塊鏈安全性的結構基礎。
區塊鏈的特徵
區塊鏈中的每個區塊結構都獨一無二,由各種關鍵元件組成:
- 區塊頭 (Header) − 區塊的這一部分包含重要的元資料,例如區塊的唯一識別符號(區塊雜湊)、時間戳和鏈中前一個區塊的雜湊值。區塊之間的這種連線形成一條連續的鏈。
- 交易 (Transactions) − 一個區塊中可以包含多筆交易,代表數字資產從一個使用者轉移到另一個使用者的過程。這些交易在新增到區塊之前,會由網路參與者(節點)進行處理和驗證。
- 默克爾樹根 (Merkle Tree Root) − 為了簡化區塊內交易的驗證過程,使用了默克爾樹。這種二叉樹資料結構能夠高效且安全地驗證大型資料集。
- 隨機數 (Nonce) − 礦工使用隨機數(nonce)來解決新增區塊到區塊鏈所需的密碼難題。nonce與其他區塊頭資料組合後,會生成滿足網路難度標準的雜湊值。
- 難度目標 (Difficulty Target) − 此值設定將新區塊新增到區塊鏈的難度級別。難度會定期調整,以保持一致的區塊建立速度並防止區塊鏈中出現區塊溢位。
區塊頭雜湊和區塊高度
區塊鏈中的區塊需要一種識別方式來區分它們。為此使用了兩個關鍵引數:
區塊頭雜湊充當唯一識別符號,它是透過對區塊鏈中的區塊頭進行雜湊生成的。這個密碼學雜湊過程會執行兩次,得到一個包含區塊基本資訊的數值。這些資訊包括區塊新增的時間戳、對前一個區塊的引用、總結交易的默克爾樹根、用於挖礦的隨機數以及用於挖礦的難度目標。雜湊值是使用密碼學函式生成的,確保對區塊頭的任何修改都會產生不同的雜湊值。此雜湊值在傳輸過程中不會儲存在區塊資料中,在某些節點的區塊鏈中也不會儲存。
第二個區塊識別引數是其高度,表示區塊在區塊鏈中的位置。從創世區塊的零開始,每個後續區塊的高度遞增一。此指標對於維護區塊鏈中的時間順序和確定區塊順序至關重要。
創世區塊
區塊鏈的初始區塊稱為創世區塊。這個第一個區塊非常重要,因為它標誌著區塊鏈的開始,並作為所有後續區塊的基礎。比特幣和其他加密貨幣的創世區塊是其各自網路上挖掘的第一個區塊。區塊鏈中的每個區塊都包含與網路上交易相關的資訊,並具有獨特的區塊頭。但是,創世區塊與所有其他區塊的不同之處在於它沒有前一個區塊。它通常包含特定資料,例如時間戳和訊息,用於啟動區塊鏈。
創世區塊的建立是區塊鏈發展中的一個關鍵時刻,因為它確立了網路的基本規則和特性。一旦創世區塊建立,這些規則(例如區塊大小和挖礦獎勵)就固定不變,無法更改。作為區塊鏈的第一個區塊,創世區塊還在塑造網路起源的敘述中發揮著至關重要的作用。
比特幣網路的去中心化特性是其關鍵特徵之一,這意味著使用者和網路之間沒有中間商。為了確保網路上交易的有效性,使用了複雜的數學問題,這些問題由稱為比特幣礦工的計算機來解決。礦工必須完全解決數學難題後才能交易比特幣。此外,比特幣網路上的所有交易都會永久記錄,因此無法隱瞞任何違法活動的證據。
區塊連結
在區塊鏈中連結區塊的過程對於維護系統的安全性和完整性至關重要。每個區塊包含與交易相關的資料,並透過稱為前一個區塊雜湊的引用連線到其前驅。區塊中包含的資料是不可變的,可以被驗證。這些區塊按順序排列,形成一條鏈以確保其正確的排列。此引用類似於指紋,有助於保留區塊的順序。
為了生成此引用,區塊頭中的資訊會經過密碼學轉換。此轉換使用數學演算法來建立一個唯一的識別符號,稱為雜湊值。區塊頭的任何更改都會導致雜湊值的變化,使其他網路參與者能夠輕鬆檢測到任何修改。鏈是透過密碼學技術建立的,每個區塊都包含一個唯一的程式碼或雜湊值,將其連線到前一個區塊。此外,雜湊值記錄了區塊被新增到區塊鏈的時間戳。如果區塊中的任何資訊被修改,雜湊值將會不同,從而破壞鏈的連續性。
默克爾樹
默克爾樹,也稱為雜湊樹,是一種資料結構,其中每個葉子節點代表單個數據塊的密碼學雜湊值,而每個非葉子節點代表其子節點的雜湊值的密碼學雜湊值。這種型別的樹通常用於驗證區塊鏈網路中的交易,並且效率很高。大多數默克爾樹遵循二叉樹結構,每個節點只有兩個子節點,儘管有些節點可能有多個子節點。在計算機科學領域,默克爾樹是一種廣泛採用的資料結構形式,它可以透過一系列雜湊計算有效地總結區塊中的所有交易。
在默克爾樹中,交易被排列成葉子節點,每個葉子節點包含單個交易的雜湊值。然後將葉子節點的雜湊值配對並再次雜湊以產生一組中間節點。這個過程會迭代,直到生成單個雜湊值,稱為默克爾根。
默克爾根作為一種簡單的數學技術用於驗證默克爾樹中的資訊。它包含在區塊頭中,並作為區塊中所有交易的簡要摘要。當新的區塊新增到區塊鏈時,其默克爾根會被新增到前一個區塊的雜湊值中,從而建立兩個區塊之間的連線。

為了理解默克爾樹的功能,讓我們來看一個簡單的例子:假設在一個區塊中存在四個交易,分別表示為 A、B、C 和 D。然後,每個交易都被轉換為不同的字元字串(雜湊):雜湊 A、雜湊 B、雜湊 C 和雜湊 D。然後將這些雜湊值配對以建立兩個新的雜湊值:雜湊 AB 和雜湊 CD。
最終,這兩個雜湊值合併以產生默克爾根,即雜湊 ABCD。儘管此示例簡化了默克爾樹的概念,但實際結構要複雜得多,特別是當每個交易都有一個 64 個字元長的 ID 時。儘管如此,此示例傳達了演算法操作及其有效性的基本理解。默克爾樹可用於有效地監督和驗證參與者對獨家銷售或活動的資格。以下是詳細解釋:
生成唯一識別符號
每個參與者或潛在買家都會分配一個唯一的識別符號,例如他們的以太坊錢包地址或與他們的帳戶關聯的任何其他唯一識別符號。
建立白名單
NFT 銷售的組織者會制定一個白名單,其中包含有資格參加獨家活動的參與者的唯一識別符號。這個白名單實際上包含允許參與的地址列表。
對參與者識別符號進行雜湊處理
參與者的唯一識別符號(地址)會分別進行雜湊處理。這可以使用雜湊函式(例如 SHA-256)來完成,為每個識別符號生成一個雜湊值。
構建默克爾樹
已雜湊的識別符號被構建成默克爾樹格式。透過配對和雜湊單個雜湊值來構建默克爾樹,直到得出單個根雜湊值。
公佈默克爾根
組織者會公開默克爾樹的根雜湊值。此雜湊值充當整個白名單的簡潔而安全的表示。
參與者驗證
有興趣參加 NFT 銷售的參與者可以透過對其識別符號進行雜湊處理並將其與已釋出的默克爾根進行比較來檢查其資格。如果雜湊值匹配,則參與者在白名單中。
高效的驗證過程
透過默克爾樹驗證資格在計算上是高效的。參與者不需要透露其識別符號;他們只需要提供雜湊值。這確保了隱私,同時允許高效的驗證。
活動訪問
在 NFT 銷售或活動期間,只有識別符號在白名單上(與默克爾根匹配)的參與者才能獲得訪問許可權。這為白名單中的參與者創造了一個獨享的環境。