區塊鏈是如何運作的?
在本文中,我們將介紹區塊鏈的效益以及區塊鏈的缺點或挑戰。 深入研究密碼學; 涵蓋了加密哈希(hashing)。 探尋對各種區塊鏈的群體共識(group consensus)機制的深入分析,其中的重點在於Proof of Work(PoW) 和Proof of Stake(PoS)。
區塊鏈的效益
區塊鏈解決方案有許多效益,包括可公開驗證、安全、透明和具有成本效益。區塊鏈還使用代幣化的方法,使各種規模的組織能夠建議由現實世界價值支持的可交易代幣,提供部分所有權的問題,並創造機會減少處理時間和消除中間人的機制。
區塊鏈的一些主要效益是它利用了去中心化的基礎設施,是一個完全無需信任的網路環境,並通過加密的方式將所有區塊鏈接在一起後產生了所有的資料無法變動的特性。區塊鏈上的所有區塊都使用Merkle Tree進行索引。 Merkle Tree 是一個區塊內所有交易的輕量級數位指紋。
Peer-To-Peer的資料共享、區塊鏈底層的硬體是由許多人所擁有的、極高的容錯性和安全性是去中心化系統的關鍵原則。
了解去中心化、分佈式和集中式系統之間的區別對於理解區塊鏈至關重要。
區塊鏈的缺點
與任何技術一樣,區塊鏈也有許多缺點。從新的區塊鏈開始,到其使用源自暗網的污名。 ICO/ITO 騙局以及認為區塊鏈只是加密貨幣的另一個名稱的誤解也是缺陷,雖然不是技術性的,但確實會影響區塊鏈本身的使用。
如今,區塊鏈面臨的更具體挑戰包括區塊鏈技術仍在不斷變化和發展,最佳實踐和推薦的實施模式仍在形成中。訓練有素的專家不多,因此訓練資源的成本很高。
最後,“可擴展性”是區塊鏈的核心問題。區塊鏈將“安全性”置於“速度”之上。因此,需要高頻交易的解決方案不適合區塊鏈。目前正在提出PoW之外的不同的群體共識方法,以克服當前的可擴展性限制。今天,大多數主要的公有區塊鏈能夠在全球範圍內每秒處理 10–20 筆交易。
密碼學
區塊鏈中使用密碼學是用來解決隱私議題。 密碼學是研究如何在惡意者存在的情況下安全地來回發送訊息。 加密功能是用於對資料進行編碼或加密以保護內容免受他人侵害的功能。 以下組件是加密功能的基礎:
- The Secret — 我們試圖保護的資料
- The Key — 用於對資料的加/解密
- The Function — 用來加密Secret的過程或功能
- The Cipher — 加密後的資料
- 將Secret與key 傳送到Function後產生Cipher
Public Key(公鑰)
在常見的區塊鏈設計中,身份(identity)和交易(transaction)批准是通過公鑰實現的。 在公鑰密碼學中,有兩個key,public key和private key。 Public key用於驗證特定key pair的數位簽章。 Private key用於簽署/批准 key pair持有者可能進行的任何交易/動作。 提交給區塊鏈的所有交易都使用用戶的Private key進行簽名,並使用Public key在區塊鏈上進行驗證。
加密哈希(Hashing)
加密哈希函數是一種單向函數,用於加密後就無法解密的訊息。 任何傳入加密哈希函數的資料都將建立一個唯一的、固定長度的哈希值。 因此,驗證已哈希(hashing)資料的唯一方法是將完全相同的資料輸入到相同的加密哈希函數中。 只要有一點點的資料有不同,哈希值的輸出值將會完全不同。
區塊鏈的共識機制
所有公告/交易都記錄在區塊鏈中的區塊中。 當一個區塊被填滿時,它會通過群體共識進行驗證,然後才能添加到先前驗證的區塊鏈中。 現行有許多區塊鏈共識機制,但無論使用哪種共識類型,重要的是要注意,已經上鏈的區塊中的所有交易資料都被認為是可信的,並且由於資料的驗證,已經上鏈的區塊資料有著沒有被篡改的群體共識。
PoW共識
比特幣通過稱為PoW的驗證系統實現了拜占庭容錯(Byzantine Fault Tolerance)。在PoW共識中,當一個區塊已滿時,每個節點都競相解決猜謎遊戲問題來驗證這個資料區塊。這個問題是不是用計算的,而是用隨機猜測的,因為這樣的方式最有效。節點(電腦)又被稱為礦工,他們必須猜測稱為“nonce”的數字才能成功驗證區塊。所有區塊資料加上當前猜測(nonce)都經過加密哈希,如果結果與當前的“難度”等級匹配,則礦工猜對了答案。難度是由整體網路調整以對應其負載。
隨機數(nonce)是一個與區塊資料相結合的隨機資料,它將產生與區塊鏈當前難度等級相匹配的一個哈希值。任何認為自己有正確答案的礦工都會與所有其他礦工分享。礦工將通過將隨機數與他們的區塊資料一起驗證來確認答案是正確的,以嘗試獲得與難度等級相匹配的結果。如果 51% 或更多的礦工同意提議的 nonce,則認為獲勝者區塊上的交易是正確的,並且回答正確的礦工將獲得獎勵(通常獎勵以平台代幣的形式給予)。如果大多數礦工不同意隨機數,則不會給予任何獎勵,所以這個沒有得到將立的工作就是一個沉沒成本,因為沒有驗證等於沒有獎勵。任何沒有正確區塊資料的節點都將通過從相鄰節點複製經過驗證的區塊來進行協調。PoW共識為每個節點準確誠實地行為創造了賽局理論激勵;任何不誠實的參與者都將在猜測隨機數時產生實際成本,所以支付獎勵的機率就是零。
在PoW共識中,重要的是要注意向網路添加節點可將安全性提高 1/N(N = 網路上的節點數),並且將交易時間增加 1/N.因此,所有節點都必須驗證,在 PoW 驗證中,“安全性優先於速度”。
PoS共識
PoS是一種較新的區塊鏈共識系統,已被提議作為PoW共識的替代方案,以克服 PoW 中的可擴展性和成本問題。 PoS 消除了區塊驗證中的猜謎遊戲問題,因此挖礦不再需要強大且專業的硬體,任何有計算能力的裝置都可以作為節點。
PoS共識使用一個系統,其中每個“驗證者(Validator)”節點提供或支付stake以驗證交易。當需要達成群體共識時,所有希望參與的節點都將資金鎖定在stake中。選擇一個隨機節點,並將該節點的區塊資料的哈希值顯示給所有其他參與者。所有其他節點都押注區塊交易的有效性。如果大多數人同意提議的區塊,則隨機節點將獲得獎勵,就像所有在該節點上下注的人一樣。如果大多數人不同意,隨機節點將失去他們的stake,不會獲得任何獎勵,並且會隨機選擇一個新節點來分享他們的區塊資料。這樣同樣可以保持誠實和準確的賽局理論獎勵機制,只是它改變的執行機制。
這種共識的主要區別在於,在共識協調期間不進行任何計算,只有投注這個動作可以進行。 PoS的一個潛在漏洞是 Nothing at Stake 問題,即在發生硬分叉後,驗證者節點會批准帳本兩側邊(分叉前跟後)的所有交易。
其他共識機制
Proof of Activity — 是 PoW 和 PoS 的混合體。 空模板的區塊被開採(PoW),然後放在區塊中的資料用 PoS 的方式驗證交易。
Proof of Burn — 是通過將硬幣發送到無法檢索的地址來“燒掉”硬幣。 燒掉的硬幣越多,被選中開採下一個區塊的機會就越大。
Proof of Capacity — 是硬碟空間來賭注。 “賭注”的空間越多,被選中開採下一個區塊的機率就越大。 這裡的共識算法會產生大量的資料集,稱為“plots”來消耗存儲空間。
Proof of Elapsed Time — 由英特爾建立,用於在其受信任的執行環境上運行。它類似於 PoW,但更節能。不過,這需參與者信任英特爾,並且這被視為中央集權的。
Proof of Authority — 使用一組“Authority”,這些“Authority”是明確允許建立新區塊並保護區塊鏈的節點。這是 PoW 的替代品,但僅適用於私有的區塊鏈。節點必須室驗證者(validator)/authority的權利。
Proof of Importance — 是NEM最先引入的一種區塊鏈共識演算法。Proof of Importance是用於確定哪些網路參與者(節點)有資格向區塊鏈添加區塊的機制,NEM 將這一過程稱為“收割(harvesting)”。作為收割一個區塊的交換,節點能夠收取該區塊內的交易費用。
Hard Fork(硬分叉) — 是對區塊鏈軟體協議(規則)的重大變動,它使以前無效的區塊/交易有效(反之亦然)。這需要所有節點或用戶升級到最新版本的協議軟體(Protocol software)。如果大量節點拒絕將其軟體更新到較新的協議,則這些節點實際上是在不同的區塊鏈網路上運行。
公有區塊鏈的生命週期
- 用戶使用 Dapp/web3 開始交易
- 用戶使用他們的private key簽署交易
- 在本地節點上運行與驗證交易
- 向全網廣播這個交易
- 礦工選擇接受或傳遞交易
- 礦工接收每個接受的交易並將其寫入當前的區塊