閱讀:區塊鏈 通住資產數字化之路

閱讀:區塊鏈 通住資產數字化之路


書名:區塊鏈 通住資產數字化之路 Mastering Bitcoin: Unlocking Digital Cryptocurrencies

作者:Andreas M. Antonopoulos

這書以比特幣 (Bitcoin) 為例說明區塊鏈 (Blockchain) 技術。區塊鏈技術可說是分散式、去中心化系統之突破。它不旦可用於比特幣,也可用於其他加密貨幣,和其他用途的分散式系統。

什麼是比特幣

比特幣是開源的、去中心化分散式加密貨幣系統。去中心化的好處是沒有人能干預比特幣的發展,不再依賴銀行、政府機構結算,不再有單點故障 (Singe point of failure)。比特幣發行量每4年減半,再過幾年發行量便到達 2000 萬,而整個比幣系統只會有 2100 萬個比特幣,不會有通貨膨脤問題。

如何使用比特幣

比特幣是基於現代密碼學 (Cryptography) 的基礎,對密碼學有一定認識之讀者,應該明白什麼是Public key、Private key、Hash 函數、電子簽署 Digital signature 等基本概念,這裡不會詳述。

用戶必須有一比特幣地址,來接收比特幣。比特幣錢包可生成Public key (K)、Private key (k),和用一Hash函數 (Hash160) 生成一比特幣地址 (A)。

比特幣地址 A = Hash160(K)

任何人如有這地址 A 和它對應的 Private key,便有使用的該地址內比特幣的權利。

錢包會保留你未花費的比特幣余額,即使沒有保留,也可以在比特幣網絡中查看到。當要支付時,你從自己的多個自己的地址查看到未花費余額,然後輸入支付目標地址和支付量。錢包會創建一個交易,然後發送到比特幣網絡。錢包的安全,全是基於加密,只要有 Private key,便有使用權。

比特幣網絡 (P2P 網絡)

比特幣網絡有多種不同類型的節點。

  • 錢包 (輕量級客戶端)
  • 區塊鏈數據庫 (分散式區塊鏈條 / 帳本)
  • 礦工
  • 路由節點等

客戶端可分為輕量級客戶端和標準客戶端。輕量級客戶端,即一般沒有包括交易帳本的錢包,必須依賴其他節點驗證交易。標準客戶端包括全部交易帳本,能自主驗證交易。全部交易帳本數據量龐大,以數十GB計。比特幣網絡同一時間約有 7000 到 10000 個標準客戶端同時運行 (按書當時的資料),因而沒有單點故障的問題。

為什麼有那麼多節點

當交易上傳到比特幣網絡,會被放到交易池中,等候處理。每約十分鐘,各個礦工節點便會同時把幾百個交易從池中拿出來,創建一候選區塊。候選區塊包括這些已驗証的交易、交易費用、新發行之比特幣,和指向主區塊鏈的指針。早前提及比特幣發行量每 4 年減半,當中的發行過程就在這裡。交易費用和新幣都是給礦工的獎勵。但是要賺取這些獎勵並不容易,礦工要通過一個名為“挖礦”的競爭性過程,才能得到獎勵。如果全網同時有一萬個礦工在工作,每約十分鐘只有一名礦工幸運兒能夠全取候選區塊中的獎勵。

挖礦:處理交易、建立分散式帳本

在候選區塊中,除了包含幾百個已驗正的交易外,亦含有交易費和新發行的比特幣。還記得比特幣發行量每 4 年減半嗎?比特幣就是在挖礦時發行的。礦工只有在自己的候選區塊成功被挖時,才會贏得交易費和新發行的比特幣作為獎勵。

如何才算成功挖礦

挖礦是競爭性過程,勝者全取獎勵,負者一無所有,白付電費。全網有多個礦工同時工作,各自創建候選區塊,各自挖礦。

通過工作證明算法,可以確定候選區塊是否成功被挖。一個區塊實際上是一堆包含交易、和區塊鏈最頂層區塊的指針的資料。區塊鏈網絡會提出一個數學難題,在比特幣的中,是基於 Hash 值的計算,在其他應用也可能會使用其他不同的算法。

Hash 函數的特點是計算很容易,但有不可逆性。礦工除了乖乖試錯以外,難以作弊。

系統會給出一個目標值,只要礦工在候選區塊附加一個隨機數,然後使用 Hash 函數計算候選區塊的 Hash 值。只要該 Hash 值小於系統的目標值,便算成功挖礦,同時該礦工取得候選區塊內之獎勵。如果 Hash 值是大於目標值,礦工必須修改隨機數,再次計算 Hash 值,直至全網有一個或多於一個礦工成功挖礦,全部礦工都會廢棄自己沒勝出的候選區塊。

比特幣網絡會適時調節難度,使平均約10分鐘便有一礦工找到答案。但這完全是個全網隨機過程,個別礦工可能很快便可以成功挖礦,有的礦工可能整個月也沒有收穫。挖礦成本是礦機和電費,如果有硬件優勢和電費優勢,便會有更好之競爭力。

區塊鏈

新的區塊挖礦成功後,該礦工的候選區塊便會加到區塊鏈的最頂端。區塊鏈的首個區塊稱為”創世區塊”,以後所有的區塊都是基於最頂的區塊。候選區塊含有指向最頂層區塊的指針。往後不段有區塊加到該舊區塊之上,舊區塊便會更難推翻。當舊區塊之上有新區塊覆蓋在其上層,這稱為一個確認。如果一個舊區塊被 6 個新區塊覆蓋,即有 6 個確認,那便不能再被推翻。每約十分鐘生成一個區塊,即是說約一個小時後,交易便不可能被推翻。

同時有多於一個礦工成功挖礦

區塊鏈容許有分叉,多於一個候選區塊會被接納到區塊鏈,累計最大難度的稱為主鏈。以後生增區塊時,只會選擇主鏈。

缺點

比特幣網絡是區塊鏈首個成功之應用。給我的印象是區塊鏈方案既優雅又浪費。現在比特幣網絡,存在太多資源冗餘。每個標準節點都有整個區塊鏈帳本,那是數以幾千計的重複。

由於比特幣價格上升,吸引了很多礦工挖礦。挖礦是勝者全取,有大量都算力都是被浪費掉,而非花在有意義的事情上。此外,礦工為取得算力優勢,礦機很快便會淘汰。這也許是我見過最浪費的集體現象之一。

Libra

Facebook 最近稱會自行開發新的加密貨幣 Libra,現在還是處於很初步之階段。Libra 沒有挖礦的概念,只有 Libra 協會的會員能夠處理交易。協會成員將會各自出資,以支持 Libra 的發行。Libra 不是完全開放,只會開放給付得起錢的會員。私鏈的好壞現時還難以評論,但沒有挖礦,至少會減少資源的浪費。

它和比特幣似乎有很大的分別。比特幣最重要的特色是去中心化,減少對一些金融機構或實體之依賴。現在 Libra 則由 Facebook 主導,即使物理或網絡上仍然是分散式設計,但管理上就是由 Libra協會這個中心控制。


無法複製此頁面的內容