科技大補帖
eLearning

顛覆金融業的區塊鏈
2020.11.01

作者/曲建仲

 

由於比特幣不適合即時、大量的小額交易,而且在法規上存有疑義、難以被主管機關接受,因此有人將比特幣的部分技術(主要是保護資料無法篡改的技術)抽離出來尋找新的應用,並且取了新名字「區塊鏈(block chain)」,也有人擴大區塊鏈的定義,把前面提到的交易識別確認、資料無法篡改、節點資料同步三種技術統稱為「區塊鏈」。所以到底這三種技術是怎麼做的呢?

 

公開金鑰加密

公開金鑰加密(public key encryption)的每一位使用者必須自行產生自己所擁有的金鑰對(key pair),包括一把「私有金鑰(private key)」與一把「公開金鑰(public key)」,加密與解密使用不同的金鑰,使用者必須秘密地保存自己的私有金鑰,並且在網路上發佈公開金鑰。公開金鑰可以用來加密,也可以用來驗證,驗證的流程如圖一所示,傳送端使用自己的「私有金鑰」對文件(明文)進行加密(簽署文件)產生密文再傳送到網路中,接收端使用傳送端的公開金鑰解密(確認簽署者)得到明文,如果可以解密代表確認文件真的是傳送端的某人傳送出來的,數位簽章就是使用這種方式來驗證文件的真偽。

 

▲圖一:公開金鑰加密的驗證流程。

 

交易識別確認

假設 Alice 支付 Bob 金額 10 btc 購買一顆蘋果,則她的手機應用程式(比特幣電子錢包)使用 Alice 自己的私有金鑰將訊息加密,這個動作稱為「數位簽章(digital signature)」,想想這不就好像我們在交易文件上簽名一樣嗎?

接下來再將訊息傳送到節點 A,節點 A 再使用 Alice 的公開金鑰將訊息解密,如圖二所示,如果真的可以解開代表這個訊息確認是由 Alice 發出來的,而且 Alice 也不可否認,因為只有 Alice 的公開金鑰能夠解開 Alice 私有金鑰加密過的訊息。

 

▲圖二:比特幣的交易識別確認機制。

 

比特幣帳本

比特幣帳本是由一個一個的「區塊」連接而成的「鏈結」,因此這種技術又稱為「區塊鏈」,如圖三所示,每一個區塊記錄著付款人與收款人以及交易金額,每一個區塊都記錄了許多筆交易,區塊與區塊之間再鏈結起來,例如:區塊 3 鏈結到區塊 2,再鏈結到區塊 1,最後再鏈結到區塊 0。

 

▲圖三:比特幣帳本示意圖。(資料來源:杜宏毅博士,Block Chain 的前世今生與未來,臺灣網路認證公司)

 

值得一提的是,圖三畫出來的只是示意圖,實際上比特幣帳本並不是像Excel一樣的表單,基本上比特幣是一種虛擬電子貨幣,因此比特幣帳本其實就是一個電腦程式,裡面有許多欄位,如圖四所示,其中包括:

 

1. 表頭(header)

→“previousblockhash”:前一個區塊的雜湊值(hash value)。

→“difficulty”:雜湊(hash)必須小於「困難指數(difficulty)」。

→“time”:代表這個區塊形成的時間,以 unix 作業系統格式表示。

→“nonce”:計算雜湊值所使用的參數。

→“merkleroot”:儲存「交易(transaction)」的「摘要(summary)」。

 

2. 交易

→“tx”:儲存「交易」的欄位,每一個區塊可以儲存多筆交易。

 

3. 其他欄位

→“confirmations”:代表這個區塊已經被 35561 個節點(node)確認過了!

→“height”:代表這個區塊在比特幣區塊鏈中的排序為第 277316 個。

 

4.hash”:利用雜湊演算法(hash algorithm)計算出雜湊值。

 

▲圖四:比特幣帳本。(資料來源:杜宏毅博士,Block Chain 的前世今生與未來,臺灣網路認證公司)

 

雜湊演算法

雜湊演算法(hash algorithm)是一種從資料中建立「數位指紋(digitalngerprint)」的方法,可以將任何長度的原始資料轉換成一個長度較短的雜湊值,而且也很難由雜湊值反推原始資料,等於是把原始資料加密了一樣,某一段資料對應到某一個雜湊值,不同資料具有不同雜湊值,就好像不同人具有不同指紋一樣,因此稱為「數位指紋」。我們可以利用雜湊值來確認資料有沒有被篡改,同時因為很難由雜湊值反推原始資料,因此也很難篡改。

 

區塊的意義

「區塊」是指電腦中的一組資料,以事先設定好的欄位與格式儲存,我們可以將圖四的比特幣帳本看成是一個區塊,我們的目標就是要將這個區塊的資料「封鎖(block)」起來讓別人無法篡改。

問題是,如果「重新計算雜湊(hash)」很簡單, 則這整個保護機制就無效,因此科學家發明了「條件雜湊(conditional hash)」,規定「雜湊」必須小於「困難指數」,讓雜湊很難重新計算,而保護「交易」的內容不被篡改。

 

比特幣的採礦

講到比特幣大家一定常常聽到網路上有許多人在「採礦(mining)」,到底什麼是比特幣的採礦呢?各節點熟悉電腦操作的自願者計算「雜湊」小於「困難指數」的動作稱為「採礦」,而我們所要採的「礦」就是計算出一個「區塊」其「雜湊」小於「困難指數」,找到了這個區塊就可以把「交易」打包「封鎖」起來。

進行採礦的人稱為「礦工(miner)」,計算出一個區塊可以獲得 50 btc 的酬勞,如果其他支付交易有給手續費,則礦工還會獲得手續費。比特幣設計大約每 10 分鐘採出一個區塊,每採出 21 萬個區塊(大約四年)酬勞減半,因此比特幣總數不超過 2100 萬個(btc),總數固定可以提升比特幣的價值。

比特幣 2009 年發行時礦工酬勞 50 btc,2012 年 12 月第一次減半酬勞剩下 25 btc,2016 年 7 月第二次減半酬勞只有 12.5 btc,酬勞下降使手續費成為採礦動機。為了維持大約每 10 分鐘採出一個區塊,可儲存 1 MB 的資訊,產生新區塊的難度會定期調整,每採出 2016 個區塊(大約兩週)會自動調整接下來 2016 個區塊的採礦難度。比特幣礦工最早使用 Intel 或 AMD 的中央處理器(Central Processing Unit, CPU)產品來採礦,2013 年礦工開始使用圖形處理器(Graphics Processing Unit, GPU)、現場可程式化邏輯陣列(Field Programmable Gate Array, FPGA)來進行,甚至特定應用積體電路(Application Specic Integrated Circuit, ASIC)投入,使得個人礦工已經沒有收益。

 

比特幣的限制

區塊鏈的技術是電腦科學家創造出來的東西,它有許多優點產生許多創新的應用,但是同樣的也有許多限制,目前比特幣遇到的困難主要有下列幾項:

1. 比特幣大約每十分鐘採出一個區塊,可儲存 1 MB 的資訊,由於每一個區塊容量是有限制的,隨著交易量愈來愈多,容量的限制會使處理速度受到影響,這個問題可以經由變更比特幣的設計來改善,但是目前比特幣社群尚無共識。

2. 由於區塊容量的限制,再加上工作量證明也需要時間處理,因此比特幣無法處理頻繁的交易,和目前廣泛使用的 VISA 這樣能夠每秒處理數萬次交易的支付系統相差很多,因此比特幣不適合即時大量的小額交易。

3. 使用「可驗證的匿名制」,可驗證代表可以確認這筆交易的真實性,匿名制代表並不知道發動這筆交易的人是誰,因此容易造成交易追蹤斷線變成不法人士的洗錢管道,例如日前的勒索病毒「WannaCry」肆虐全球,怪客向受害者勒索價值 300 美元的比特幣,使用比特幣就是因為不容易追蹤。

4. 分散式拓撲沒有中央控管機制,會造成交易不確定性、究責與賠償困難,而且服務提供者(節點或電子錢包)的技術可能會有落差,哪一天真的發現自己的比特幣不見了!或是已經完成的交易卻無效,基本上很難找到負責的人。

5. 由於比特幣在法規上存有疑義,難以被主管機關接受,因此有人將比特幣的部分技術抽離出來尋找新的應用,並且取了新名字:區塊鏈,後來發現區塊鏈落實困難,也很難直接套用到現用的其他應用上,因此開始演化並且出現新名字,例如:分散式帳本(distributed ledger)、分享式帳本(shared ledger)、超級帳本(hyper ledger)等。

6. 比特幣的目標明確,就是要取代傳統貨幣扮演貨幣支付的角色,但是仍然有許多困難必須克服,包括:重複支付、結算確認、交易同步等。

 

區塊鏈的應用

比特幣主要必須達到下列三個特性,區塊鏈是集合了幾種軟體程式的技術,由全世界許多節點(伺服器)組成的系統,只要滿足三個特性的應用都可以思考是否能夠使用區塊鏈來做:

1. 交易識別確認:使用可驗證的匿名制,確認交易真實,使用者不可否認。

2. 不可篡改否認:使用區塊與鏈結確保交易資料無法篡改。

3. 節點資料同步:使用工作量證明(proof of work, POW)使每個節點(伺服器)的比特幣帳本收斂同步。

由於區塊鏈的技術有優點也有限制,因此不必過度吹捧它,我們還是要回歸基本面來判斷區塊鏈是否適合應用在某種商業模式。依照目前區塊鏈的發展,可能的應用包括:

1. 加密數位貨幣(crypto currency):必須考量主管機關接受程度,例如:比特幣、美國郵政貨幣(postcoin);考量是否適合應用在高頻交易,Ripple 將其應用在非即時的跨國金融機構外匯交換業務可能更合適。

2. 有價資產登錄(value registry):Factom、SmartContract 將分散式帳本應用在所有權與存在證明(proof of existence and possession, POEAP),這類的應用該是目前區塊鏈最成功的例子。

3. 價值型聯網(value web):進行有價資產登錄(value registry)、智慧型合約(smart contract)、國內支付(domestic payment)、國際支付(international payment)、貿易金融(trade nance)、資本市場(capital market)。

4. 價值生態系(value ecosystem):應用在非金融服務,Ethereum 將其應用在公開帳本(public ledger)提供各種商業應用;R3CEV 將其應用在私有帳本(private ledger)提供各種金融應用。

 

 

⇠上一篇:數位黃金比特幣

不只是一項科技人工智慧對未來的反思:下一篇⇢