比特幣的核心技術,區塊鏈的原理與應用(下):顛覆金融業的創新技術

作者 | 發布日期 2017 年 05 月 17 日 14:52 | 分類 Fintech , 科技教育 , 財經 follow us in feedly

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



想了解比特幣的架構,請參考前篇:比特幣的核心技術,區塊鏈的原理與應用(上):比黃金還貴的比特幣

公開金鑰加密(Public key encryption)

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

▲ 圖一:公開金鑰加密的驗證流程。(Icon made by Freepik from flaticon

交易識別確認

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

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

▲ 圖二:比特幣的交易識別確認機制。(Icon made by Freepik from flaticon

比特幣帳本(BTC ledger)

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

▲ 圖三:比特幣帳本示意圖。(Source:杜宏毅,Block Chain 的前世今生與未來,台灣網路認證公司;Icon made by Freepik from flaticon

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

1. 表頭(Header)
previousblockhash:前一個區塊的雜湊值(Hash value)。
difficulty:雜湊(Hash) 必須小於「困難指數」(Difficulty)。
time:代表這個區塊形成的時間,以 Unix 作業系統格式表示。
nonce:計算雜湊值所使用的參數。
merkleroot:儲存「交易」(Transaction)的「摘要」(Summary)。

2.交易(Transaction)
tx:儲存「交易」的欄位,每一個區塊可以儲存多筆交易。

3.其他欄位
confirmations:代表這個區塊已經被 35,561 個節點(Node)確認過了!
height:代表這個區塊在比特幣區塊鏈中的排序為第 277,316 個。

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

▲ 圖四:比特幣帳本。(Source:杜宏毅,Block Chain 的前世今生與未來,台灣網路認證公司;Icon made by Freepik from flaticon

雜湊演算法(Hash algorithm)

雜湊演算法是一種從資料中建立「數位指紋」(Digital fingerprint)的方法,可以將任何長度的資料轉換成一個長度較短的「雜湊值」。某一段資料對應到某一個雜湊值,不同資料具有不同雜湊值,就好像不同人具有不同指紋一樣,所以稱為「數位指紋」,我們可以利用雜湊值來確認資料有沒有被篡改。

區塊(Block) 的意義

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

問題是,如果「重新計算雜湊」很簡單,則這整個保護機制就無效,而且我們不只需要「資料篡改可以檢查出來」,更需要「資料無法篡改」,因此科學家發明了「條件雜湊」(Conditional hash),規定「雜湊」必須小於「困難指數」,讓雜湊很難重新計算,而保護「交易」的內容不被篡改。

【參考資料】封鎖的方法是利用雜湊演算法結合條件雜湊,由於流程比較複雜,有興趣的人可以參考《知識力專家社群:區塊鏈的原理》。

比特幣的採礦(Mining)

講到比特幣大家一定常常聽到網路上有許多人在「採礦(Mining)」,到底什麼是比特幣的採礦呢?各節點熟悉電腦操作的自願者計算「雜湊」小於「困難指數」的動作稱為「採礦」,而我們所要採的「礦」就是計算出「雜湊」小於「困難指數」。進行採礦的人稱為「礦工」(Miner),計算出一個區塊可以獲得 50btc 的酬勞,如果其他支付交易有給手續費,則礦工還會獲得手續費。比特幣設計大約每 10 分鐘採出一個區塊,每採出 21 萬個區塊(大約 4 年)酬勞減半,因此比特幣總數不超過 2,100 萬個(btc) ,總數固定可以提升比特幣的價值。

【參考資料】比特幣採礦是利用不停的重覆計算找出「雜湊」小於「困難指數」,由於流程比複雜,有興趣的人可以參考《知識力專家社群:區塊鏈的原理》。

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

【參考資料】處理器的種類會影響比特幣採礦的難易,到底 CPU、GPU、FPGA、ASIC 有什麼差別?為什麼會影響比特幣採礦的難易呢?有興趣的人可以參考《知識力專家社群:處理器的種類》。

區塊鏈(Block chain)的限制

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

  1. 比特幣大約每 10 分鐘採出一個區塊,可儲存 1MB 的資訊,由於每一個區塊容量是有限制的,隨著交易量愈來愈多,容量的限制會使處理速度受到影響,這個問題可以經由變更比特幣的設計來解決,但是目前比特幣社群尚無共識。
  2. 由於區塊容量的限制,再加上工作量證明也需要時間處理,因此比特幣無法處理超過每秒7次的交易,和目前廣泛使用的VISA這樣能夠每秒處理數萬次交易的支付系統相差很多,因此比特幣不適合即時大量的小額交易。
  3. 使用「可驗證的匿名制」,可驗證代表可以確認這筆交易的真實性,匿名制代表並不知道發動這筆交易的人是誰,因此容易造成交易追蹤斷線變成不法人士的洗錢管道,例如日前的勒索病毒「WannaCry」肆虐全球,怪客向受害者勒索價值300美元的比特幣,使用比特幣就是因為不容易追蹤。
  4. 分散式拓樸沒有中央控管機制會造成交易不確定性、究責與賠償困難,而且服務提供者(節點或電子錢包)的技術可能會有落差,那一天真的發現自己的比特幣不見了!或是已經完成的交易卻無效,基本上很難找到負責的人。
  5.  由於比特幣在法規上存有疑義難以被主管機關接受,因此有人將比特幣的部分技術抽離出來尋找新的應用,並且取了新名字:區塊鏈(Block chain),後來發現區塊鏈落實困難,也很難直接套用到現用的其他應用上,因此開始演化並且出現新名字,例如:分散式帳本(Distributed ledger)、分享式帳本(Shared ledger)、超級帳本(Hyper ledger)等。
  6. 比特幣(Bitcoin)的目標明確,就是要取代傳統貨幣扮演貨幣支付的角色,但是仍然有許多困難必須克服,包括:重複支付、結算確認、交易同步等。

區塊鏈(Block chain)的應用

比特幣主要必須達到 3 個特性:

  1. 交易識別確認:使用可驗證的匿名制,確認交易真實,使用者不可否認。
  2. 不可篡改否認:使用區塊(Block)與鏈結(Chain)確保交易資料無法篡改。
  3. 節點資料同步:使用工作量證明(Proof of Work,POW)達成收斂同步。

區塊鏈是集合了幾種軟體程式的技術,由全世界許多節點(電腦主機)組成的的系統,只要滿足 3 個特性的應用都可以用區塊鏈來做,由於區塊鏈落實困難開始演化,並且出現新名字:分散式帳本(Distributed ledger)、分享式帳本(Shared ledger)、超級帳本(Hyper ledger)。

【參考資料】比特幣帳本的節點資料同步過程有些複雜,這裡不再詳細描述,有興趣的人可以參考《知識力專家社群:工作量證明》。

比特幣在法規上存有疑義難以被主管機關接受,因此有人將比特幣的部分技術抽離出來尋找新的應用,並且取了新名字:區塊鏈,可能的應用包括:

  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 finance)、資本市場(Capital market)。
  4. 價值生態系(Value ecosystem):應用在非金融服務,Ethereum 將其應用在公開帳本(Public ledger) 提供各種商業應用;R3CEV 將其應用在私密帳本提供各種金融應用。

(首圖來源:shutterstock)

延伸閱讀: