第二章 文獻探討
2.2 區塊鏈
2.2.1 區塊鏈 (Blockchain)沿革
2.2.1 區塊鏈(Blockchain)沿革
關於區塊鏈(Blockchain)演進,第一先想到的不外乎是比特幣(Bitcoin),一 種採用區塊鏈技術打造出的點對點(Peer to Peer)電子貨幣系統應用,但比特幣 區塊鏈並非是一項全新的技術,而是跨領域的將過去數十年所累積的技術基礎 做結合。
區塊鏈的演變歷程相關技術如下:
1982 年:
拜占庭將軍問題
Leslie Lamport 等人首先提出拜占庭將軍問題(Byzantine Generals
Problem),把各地軍隊的將軍如何彼此取得共識?決定是否出兵?延伸解釋
David Chaum 提出了注重隱私安全的密碼學網路支付系統(Payment),具有 無法追蹤的特性,之後成為了比特幣區塊鏈在隱私安全面的基本雛形。
1985 年: 橢圓曲線密碼學
Neal Koblitz 和 Victor Miller 分別提出橢圓曲線密碼學(Elliptic Curve Cryptography,ECC),首次將橢圓曲線用於密碼學,建立非對稱式公開金 鑰加密演算法。相較 RSA 演算法,採用 ECC 好處在於可用較短的金鑰,卻 可以達到相同的安全強度。(Ex:密鑰安全:ECC 160 bits =RSA 1024 bits)
‧
David Chaum 基於先前理論打造出不可追蹤的密碼學網路支付系統,就是 後來的 eCash,不過 eCash 並非去中心化系統。
Leslie Lamport 提出具高容錯的一致性演算法 Paxos。
1991 年: 使用時間戳(Timestamp)確保數位文件安全
Stuart Haber 與 W. Scott Stornetta 提出用時間戳確保數位文件安全的協議,
之後此概念被比特幣區塊鏈系統採用,作為區塊鏈內資料的安全驗證。
1992 年: 橢圓曲線數位簽章演算法
Scott Vanstone 等人提出橢圓曲線數位簽章演算法(Elliptic Curve Digital Signature Algorithm,ECDSA)
1997 年: Adam Back 發明 Hashcash 技術
Adam Back 發明 Hashcash(雜湊現金),這是一種工作量證明演算法
(Proof of Work,POW),此演算法利用成本函數的不可逆特性,使用 Hash Function 加密(圖 2-1),達到容易驗證,卻很難被破解的特性,亦即 很難反推回去找出未 Hash 前的資料, 最早被應用在阻擋垃圾郵件。而後 Hashcash 成為比特幣區塊鏈所採用的關鍵技術之一。
Adam Back 於 2002 年正式發表 Hashcash 論文。
1998 年:
Wei Dai 發表匿名的分散式電子現金系統 B-money
Wei Dai 發表匿名的分散式電子現金系統 B-money,使用工作量證明機制 (POW),強調點對點間的交易,以及不可竄改特性。不過在 B-money 中,
並未使用 Adam Back 提出的 Hashcash 演算法。但是 Wei Dai 的許多設計,
之後仍是被比特幣區塊鏈所使用。
‧
Nick Szabo 發表去中心化的數位貨幣系統 Bit Gold,參與者可貢獻運算能力 來解出加密的謎題。
2005 年: 可重複使用的工作量證明機制(RPOW)
Hal Finney 提出一種可重複使用的工作量證明機制(Reusable Proofs of Work,RPOW),結合 B-money 與 Adam Back 提出的 Hashcash 演算法 來,可以創造出一個密碼學貨幣。
2008 年: 比特幣(Bitcoin)
Satoshi Nakamoto(中本聰)於 2008/10/31 發表一篇關於比特幣的論文:A Peer-to-Peer Electronic Cash System,描述一個點對點電子現金系統,可以 在一個不具信任的基礎的環境達到支付清算,並且建立一套去中心化的電 子加密數位貨幣交易系統。
2012 年之後:
區塊鏈可以使用在貨幣以外的數位資產轉移,例如股票、債券。比如彩色 幣(Colored Coin)便是基於比特幣區塊鏈的開源協議,可在比特幣區塊鏈上 發行多項資產,此時期屬於智慧資產、智慧契約發展期。
1. Blockchain 1.0: 為數位貨幣(Currency)應用,例如比特幣。
‧
2. Blockchain 2.0: 開始出現智慧資產(Smart Assets)、智慧契約(Smart Contracts)等數位貨幣之外的應用,例如彩色幣(Colored Coin),可以在區塊 鏈上運行 Open Assets Protocol,以及可傳遞貨幣以外的數位資產,如股票、
債券等。
3. Blockchain 2.5: 包括代幣(Token)應用、分散式帳本(Distributed Ledgers)、資料層區塊鏈(Data Layers Blockchain)、結合人工智慧
(Artificial Intelligent),像是可用於金融領域聯盟制區塊鏈,如運行 1:1 的 美元、日圓、歐元等法幣數位化,以及無交易所的國際匯款網路,如企圖取 代 SWIFT 功能的 Ripple Coin,而資料層、分散式儲存則是以 Factom、
MaidSafe 等等為代表。
4. Blockchain 3.0: 指的是更複雜的智慧契約,將區塊鏈用於政府、醫療、科 學、文化與藝術等領域,例如 Ethereum,而本篇論文即是以此 Ethereum 區 塊鏈平台作智能合約開發以達成信用狀交易功能。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
18
抗碰撞性:如果兩個原始輸入不同,其輸出的雜湊值也是不相同的,不 會一個 Hash 值卻有 2 個不一樣的輸入值,這代表擁有極高的 獨特性,所以 Hash 值又被稱為數位指紋。
圖 2-1 Hash Funciton
資料來源:本研究整理自(梁伯嵩,2016) 關鍵技術 2: 橢圓曲線數位簽章演算法,加上配對的公鑰和私鑰
公鑰加密系統:
Alice 有一把公鑰和一把私鑰。她可以用她的私鑰產生數位簽章,而 Bob 可以用 Alice 她的公鑰來驗證這個簽名確實是用 Alice 的私鑰產生的,也 就是說,確實是 Alice 的簽名。
反之,傳輸資料的做法則是 Alice 拿 Bob 公鑰加密傳給 Bob,Bob 再拿自 己私鑰解密。
相較傳統的 RSA 演算法(公鑰加密系統),採用 ECC(公鑰加密系統)好 處在於可用較短的金鑰,卻可以達到相同的安全強度。
(Ex:密鑰安全性:ECC 160 bits =RSA 1024 bits)
關鍵技術 3: 時間戳(Time Stamp Server)確保區塊鏈按照序列
將每個區塊頭內(Block Header)加上一個時間戳(Timestamp),這個時間戳 用來證明資料在是某個時間產生,形成一個用來確保區塊序列的區塊。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
19
圖 2-2 區塊結構
資料來源:本研究整理自(梁伯嵩,2016)
圖 2-3 Time Stamp Server 資料來源:本研究參考文獻[19]
2. 區塊鏈的三大特色之二:去中心化
進行 Hash 運算時,動態調整「Nonce」 值。直到區塊頭的 Hash 函數值,
低於「困難度目標」,方為可被接受的區塊頭 Hash 值 1.設定一個「Nonce」值
2.對區塊頭進行雜湊運算
3.檢查區塊頭的雜湊函數值,是否低於「困難度目標」?
Yes : Proof-of-Work 成功 (挖礦成功) No : 設定新的 Nonce 數值,重複再進行一次
俗稱的挖礦就是這種 POW 的驗證過程,挖礦的目的就是使待驗證的區塊成為 一個"已經被驗證"的區塊,而將交易驗證並記錄到區塊鏈上,此筆交易才算 真正的成立。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
20
圖 2-4 Proof-of-Work
資料來源:本研究整理自(梁伯嵩,2016)
4. 區塊鏈的三大特色之三:快速驗證
在每一個區塊中,可能包含數百筆到數千筆的資料,因此,為節省儲存空間 並減少資源浪費,區塊鏈採用 Merkle Tree 機制設計,讓這些資訊的 Hash 值,經由兩兩一組形成另一個新的 Hash 值方式,不斷的重複進行,直到最 後產生一組最終的 Hash 值(Merkle Tree Root)。
而這個 Merkle Tree Root(Root Hash)也就是 Block Header 組成的一部份,例 如下圖所示(圖 2-5)Hash01= Hash(Hash0+Hash1),而 Root Hash 則是 Hash01 與 Hash23 兩兩組成。
Merkle Tree 的設計機制,驗證時只需驗證 Merkle Tree Root 即可,可大幅減 少資料傳輸量與運算資源損耗。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
21
圖 2-5 Merkle Tree 資料來源:本研究參考文獻[1]