• 沒有找到結果。

第三章 區塊鏈技術之概述

第二節 區塊鏈的基礎架構

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

27

塊廣播給其他節點,其他節點會確認這個區塊所包括的交易是否有效,確認沒被 重複花費且具有效數位簽章後,接受該區塊,此時區塊才正式接上區塊鏈,無法 再竄改資料。所有節點一旦接受該區塊後,先前沒算完工作量證明的區塊會失效,

各節點會重新建立一個區塊,繼續下一回工作量證明計算工作。

第二節 區塊鏈的基礎架構

區塊鏈產業鏈主要包括基礎網路層、中間協定層以及應用服務層。其中,基 礎網路層由資料層、網路層組成,實現資料加密和傳輸的機制,其中,資料層封裝 了底層資料區塊以及相關的資料加密和時間戳記等技術,網路層則包括分散式組 網機制、資料傳播機制和資料驗證機制;中間協議層由共識層、激勵層、合約層組 成,共識層主要封裝網路節點的各類共識演算法,激勵層將經濟因素集成到區塊 鏈技術體系中,主要包括經濟激勵的發行機制和分配機制,合約層主要封裝各類 腳本、演算法和智慧合約,是區塊鏈之可程式設計特性的基礎;應用服務層包括 應用層,作為區塊鏈產業鏈中最重要的環節,包括各種應用場景和案例。

因此,區塊鏈的基礎架構可分為六層,包括資料層、網路層、共識層、激勵 層、合約層與應用層(如圖6 所示)。每一層分別完成一項核心功能,各層之間互 相配合,實現一個去中心化的信任機制29。需注意的是,資料層、網路層和共識層 是建構區塊鏈應用的必要因素,否則將不能稱之為真正意義上的區塊鏈;而激勵 層、合約層和應用層則不是每個區塊鏈應用的必要因素,有部分的區塊鏈應用並 不完整的包含著這三層結構。

29 徐明星、田穎、李霽月,圖解區塊鏈,第 2-81~82 頁,2017 年 12 月。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

28

圖 6:區塊鏈的模型架構

(資料來源:圖解區塊鏈30

壹、資料層

資料層封裝了底層資料區塊的鏈式結構以及相關的非對稱公私鑰資料加密技 術和時間戳等技術,這是整個區塊鏈技術中最底層的資料結構。因此,資料層涉 及區塊、鏈式結構、時間戳、雜湊演算法、默克爾樹結構(Merkle Tree)和非對稱 加密技術要素。

一、區塊

以比特幣的區塊鏈為例,如圖7 所示,每個區塊包括區塊的容量大小(Block Size)、區塊頭(Block Header)、該區塊包括的交易數量(Transaction Counter)和 每一筆被包括在這個區塊中的交易資訊(Transactions)31。其中,區塊頭可包括當 前版本號(Version)、前一區塊的哈希值(Previous Block Hash)、難度值(Difficulty)、 工作證明共識過程的隨機數(Nonce)、默克爾樹根(Merkle Root)以及時間戳(Time Stamp),當前版本號為規範該區塊的軟體版本;前一區塊的哈希值係為將前一區

30 同上註。

31 辜騰玉,區塊鏈運作原理大剖析:區塊到底是什麼?,iThome 新聞網站,2016 年 4 月 23 日,

https://www.ithome.com.tw/news/105375 (最後瀏覽日:2019 年 8 月 10 日)。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

29

塊的區塊頭進行哈希函數(Hash Function)運算而得到的值,以使每一區塊與前一 區塊資料產生無形的連結(如圖8 所示),並確保區塊序列及歷史紀錄的正確性;

默克爾樹根記錄了該區塊中所有交易經由默克爾樹演算法所算出來的哈希值,以 簡化網路下載交易資料並做安全正確驗證32;時間戳為從該區塊生成的那一刻起究 存在於該區塊之中,用以記錄並表明存在的、完整的、可驗證的數據,是每一次交 易記錄的認證33,其為從格林威治時間1970 年 01 月 01 日 00 時 00 分 00 秒(台北 時間1970 年 01 月 01 日 08 時 00 分 00 秒)起至現在的總秒數;難度值係為衡量 在給定目標下找到哈希值的難度,即該區塊的工作量證明算法的困難值,每2016 區塊後更新一次難度值;隨機數係為表示工作量證明演算法進行的次數,更動隨 機數來為區塊重新計算哈希值。

圖 7:區塊結構

(資料來源:區塊練簡介與技術探討34

32 高靖鈞、丁川偉、陳耀鑫、馬金溝、陳澤世,區塊練簡介與技術探討,電腦與通訊,2017 年

5 月 9 日,

https://ictjournal.itri.org.tw/Content/Messagess/contents.aspx?MSID=744257557510131250&MmmID=

654304432061644411 (最後瀏覽日:2019 年 5 月 1 日)。

33 維京資本、甲子光年編,區塊鏈行業辭典,第 12 頁,2018 年 7 月。

34 同前引註 32。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

30

圖 8:區塊鏈的結構

(資料來源:區塊鏈技術的應用價值瞭解下35

二、鏈式結構

在區塊鏈中,各個區塊依次環環相接,從而記錄了區塊鏈資料的完整歷史。

三、時間戳36

區塊鏈技術要求獲得記帳權的節點必須在當前資料區塊頭中加蓋時間戳,表 明區塊資料的寫入時間。因此,主鏈上各區塊是按照時間順序依次排列的。時間 戳技術本身並不複雜,但其在區塊鏈技術中的應用是具有重要意義的創新。

時間戳可以作為區塊資料的存在性證明(Proof of Existence),有助於形成不 可篡改和不可偽造的區塊鏈資料庫。更為重要的是,時間戳增加了時間維度,使 得通過區塊資料和時間戳來重現歷史成為可能。

四、雜湊函數(哈希函數)

區塊鏈通常並不直接保存原始資料或交易記錄,而是透過哈希函數將原始資 料經由哈希演算法轉換為特定長度的由數字和字母組成的字串(即哈希值)後記 入區塊鏈。哈希函數具有定長性、單向性、隨機性和定時性,定長性是指哈希函數 輸出長度固定;單向性是指幾乎不能通過輸出的哈希值反推輸入值;隨機性是指 即使輸入僅相差一個位元組也會產生顯著不同的輸出值;定時性是指不同長度的

35 Rajarshi Mitra, Learn How to Trade Bitcoin: Most Comprehensive Quick Start Guide, Blockgeeks, April 2019, https://blockgeeks.com/guides/how-to-trade-bitcoin/ (last visited April 15, 2019).

36 袁勇、王飛躍,區塊鏈技術發展現狀與展望,自動化學報,42(4),頁 481-494,2016 年 4 月。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

31

輸入值得到輸出的哈希值的時間大致相同37。其中,常使用的哈希演算法包括MD5、

SHA-1、SHA-256(安全散列演算法,輸入長度為 256 位,輸出為一串長度為 32 位元組的隨機散列資料)、SHA-384 及 SHA-512。

五、默克爾樹結構

默克爾樹是一種資料結構,具有樹結構的所有特點。區塊鏈利用默克爾樹結 構存放所有葉子節點的值,並以此為基礎生成一個哈希值。其中,默克爾樹結構 的葉子節點儲存資料訊息的哈希值,默克爾樹結構的非葉子節點儲存對其下面所 有葉子節點的組合進行雜湊計算後得出的哈希值38,如圖9 所示。

圖 9:默克爾樹結構的示意圖

(資料來源:Bitcoin: A Peer-to-Peer Electronic Cash System39

六、非對稱加密

非對稱加密是一種密鑰的保密方法,加密和解密過程中使用兩個非對稱的密 碼,分別稱為公開金鑰(公鑰)和私密金鑰(私鑰),其中,公鑰可向其他人公開,

而私鑰由個人擁有,其他人無法通過公鑰推算出相應的私鑰。由於公鑰和私鑰是 一對,當使用公鑰或私鑰加密資料後,只有透過另一個對應的金鑰才能解密,從

37 同上註。

38 同前引註 29,第 2-32 頁。

39 同前引註 10。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

32

而獲取對應的資料。在區塊鏈中,可使用公鑰與私鑰來標示身分,還可以保證分 散式網路點對點訊息傳遞的安全性40

非對稱加密常用的演算法包括 RSA、Elgamal、Rabin、D-H 與 ECC(即橢圓 曲線加密演算法)。

貳、網路層

網路層的主要目的為實現區塊鏈網路中節點之間的訊息交流,其包括區塊鏈 系統的組網方式、資料傳播協定和資料驗證機制等要素。

一、組網方式

區塊鏈網路一般採用點對點網路(Peer-to-Peer Network,P2P 網路)來組織散 佈全球之參與資料驗證和記帳的節點。P2P 網路沒有中心伺服器,每個節點均會 承擔網路路由、驗證區塊資料、創造新區塊資料、發現新節點等功能,節點之間透 過維護一個共同區塊鏈來保持通信。因此,即使部分節點失效,只要存在一個正 常運行的節點,區塊鏈資料就可完全恢復而不會影響後續區塊資料的記錄與更新。

二、資料傳播協定

任一區塊資料生成後,將由生成該區塊的節點廣播到網路中,以供其他節點 加以驗證。需要說明的是,交易資料廣播時,並不需要網路中全部的節點皆接收 到該交易資料,只要足夠多的節點做出回應即可整合進入區塊帳本中,未接收到 特定交易資料的節點則可向鄰近節點請求下載該缺失的交易資料41

三、資料驗證機制

P2P 網路中的每個節點接收到鄰近節點發來的資料後,將驗證該資料的有效 性,如果資料有效,則按照接收順序記入為區塊的有效資料,同時繼續向鄰近節 點轉發;如果資料無效,則立即丟棄該資料。

40 同前引註 29,第 2-30~31 頁。

41 同前引註 36。

算力而能夠達成共識的機制,例如:依賴節點算力的工作量證明(Proof of Work,

PoW)機制、權益證明(Proof of Stake,PoS)共識機制和授權股份證明機制

(Delegated Proof of Stake,DPoS)共識機制等。

此外,當區塊鏈技術應用於聯盟鏈與私有鏈時,由於區塊鏈上的各節點都是 可信的成員且不需透過激勵機制維持區塊鏈系統運作,因此,共識機制的選項可 選擇傳統的共識機制:拜占庭容错共識機制(Practical Byzantine Fault Tolerance,

PBFT)、Paxos 共識機制、Raft 共識機制等。

一、PoW 共識機制

43 Larimer D., Transactions as proof-of-stake, Nov. 28 2013,

http://7fvhfe.com1.z0.glb.clouddn.com/@/wp-content/uploads/2014/01/TransactionsAsProofOfStake10.pdf (last visited May 1, 2019).

44 同前引註 32。

45 同前引註 33,第 40 頁。

46 Samson Hoi,區塊鏈 Blockchain–共識機制之 DPOS (Delegated Proof Of Stake),Samson's Blog,2018 年 3 月 11 日,https://www.samsonhoi.com/404/blockchain_dpos (最後瀏覽日:2019 年 5 1 日)。

基於上述PBFT 共識機制的流程,為了保證在異步系統中提供可用性(liveness)

與安全性(safety),當存在 f 個副本節點有問題(即 f 個非正常副本節點)時必須

https://www.itread01.com/content/1544937510.html (最後瀏覽日:2019 年 6 月 30 日)。

48 Miguel Castro and Barbara Liskov, Practical Byzantine Fault Tolerance, Proceedings of the Third Symposium on Operating Systems Design and Implementation, pp175, February 1999,

http://pmg.csail.mit.edu/papers/osdi99.pdf (last visited June 30, 2019).

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

38

肆、激勵層

激勵層將經濟因素集成到區塊鏈技術體系中來,主要包括經濟激勵的發行機 制和分配機制等,該層主要出現在公有鏈(Public Blockchain)中,因為在公有鏈 中必須激勵遵守規則參與記帳的節點,並且懲罰不遵守規則的節點,才能讓整個 系統朝著良性循環的方向發展49

伍、合約層

合約層是建立在基礎功能之上的商業邏輯與商業策略,技術上並不複雜,通

合約層是建立在基礎功能之上的商業邏輯與商業策略,技術上並不複雜,通