• 沒有找到結果。

2.1 技術背景

2.1.1 區塊鏈 (B LOCKCHAIN )

使用行為驅動開發(Behavior-driven development, BDD)技術來解決智能合約缺乏成熟 的開發工具與方法、缺乏系統性的驗證與測試機制來確保所開發合約的正確性以及目前

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

小美撰寫了一個交易訊息,內容為將 100 元傳送給小王,並使用小美的私鑰解鎖自 己的帳戶,取出 100 元放至訊息內並使用小王的公鑰加密(公鑰在區塊鏈中實際意義為 使用者的帳戶號碼),區塊鏈會透過公鑰傳送給小王此封訊息。當小王收到訊息後,因 區塊鏈公鑰為公開,則小王取得訊息後,區塊鏈會告知小王此封訊息由誰傳送,小王得 知傳送者為小美後可小美的公鑰解開小美的公私鑰鎖,而小美先前使用小王公鑰加密的 公私鑰小王則可使用自身的私鑰解鎖並取得訊息內所包含的金額。如此在傳送訊息時可 透過加密技術,區塊鏈中資金的動用必須透過本人帳戶的公私鑰解鎖才能夠動用,達到 第一項訊息傳遞的信任問題,沒有人可以隨意的動用自己帳戶內的資金流動。

圖 1: 區塊鏈交易過程

而比特幣的區塊鏈平台上存在一種名為智能合約的物件,實際上為程式碼,用來輔 佐區塊鏈交易訊行的自動化,例如上述小王及小美賭局的例子,小王與小美可撰寫一個 智能合約,個別將 100 元押金放入至其撰寫好的智能合約中,三日後依據氣象快報,三 日後不管下雨於否,智能合約的程式碼將透過外部資訊被觸發,並且自動將押金匯入正 確的帳戶中。但因比特幣原系統的限制,每一筆交易的大小最大僅僅只有 1MB,比特幣 平台中的智能合約無法做複雜的判斷,僅僅能夠做簡單的交易。數年後,於 2013 年 Vitalik Buterin 提出了《以太坊白皮書》在文內說明了以太坊讓開發者創建更具擴充性、易於開

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

發及應用的目標,並且在 2014 年透過 ICO 眾籌於並於 2015 年的 7 月正式上線,成為目 前區塊鏈應用程式最常使用的區塊鏈平台。

在以太坊區塊鏈平台上的智能合約抽象架構如下圖所示,區塊鏈中的每一個參與者

(Participabts)皆為一個節點,而每個節點們分別相互連結,形成一個部分連結網路拓 樸(Partially Connected Mesh Topology)。每個節點將會將所有記錄的交易記錄在各自 的帳本中,帳本實際上由一個接著一個的區塊(Block)鏈結而成,而區塊中又包含數個 交易,每過一段時間,發出的交易會被打包成一個區塊,當有新的區塊被打包完成後,

則會被廣播至所有相連的節點,並透過共識演算法進行驗證,驗證該區塊中的所有交易 是否合法,以及是否安全,當通過後則會將該區塊串連至已被成功驗證為合法的區塊中,

故每個節點將會各自擁有一份相同的帳本。

如圖 2 所示,在以太坊中,區塊中的交易(Transaction)可分為兩種,一種為一般 金錢轉移的交易,而另一種則為智能合約,而以太坊區塊鏈平台提供每一筆交易內可擺 放一些資料,智能合約撰寫完成並被成功編譯後會將其位元碼(Byte code)放入至交易 中的資料欄位,當區塊成功的串連至前一個區塊後將會回傳該智能合約在區塊鏈網路中 的帳號位址,故在以太坊中智能合約又被稱為內部帳戶(Internal Account),因智能合 約存在於區塊鏈內部且不須透過公私鑰解鎖,但智能合約卻也有帳戶位置,可以存放資 金至帳戶中,其存取資金的方式則仰賴於開發人員在撰寫程式碼時的設計。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 2: 區塊鏈網路架構

區塊鏈內智能合約的存在,相當於把上述小美與小王的賭局透過智能合約,數位化 成程式碼,並將其放入至區塊鏈平台中,當時間一到,由外部系統觸發智能合約判定結 果的程式碼,便可以自動將資金移動至正確的帳戶中,解決了信任中的第二個問題,將 合約數位化,當需要合約判定時該程式可以自動執行正確的資金流動,一旦合約數位化 可以透過程式碼自動執行時,則可以大大減低需要外部人力介入的問題。

其區塊鏈系統之所以稱為區塊鏈實際上是因為區塊鏈系統其實是由一個個區塊串 接而成,如下圖所示,每一個區塊內將會記載前一個區塊的號碼且其內部的交易將會形 成一個樹狀結構,如此區塊鏈因各個節點個別記載相同的區塊鏈結的資料,又因為其鏈 結關係,故其擁有公開透明且可追朔的特性。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 3: 區塊架構

這樣的特性又解決了上述小美與小王的替三個問題,原本第三方可能會有捲款潛逃 亦或者向雷曼兄弟公司那樣破產的可能,透過區塊鏈上智能合約以及可追朔、公開、透 明且分散式的特性,儘管區塊鏈上有任何一個節點中途離開,都不至於影響整體區塊鏈 的運作,因各個節點皆記載相同的帳本資料,交易可以不用仰賴第三方且又可以安全地 進行交易。

智能合約大大的提升了複雜交易的效率,但欲開發智能合約,必須深度了解區塊鏈 知識包含如何參與一個區塊鏈系統以及其運作原理為何,且當了解了區塊鏈的科學知識 後,又必須擁有基本的金融知識,當開發一應用系統時,必須正確地將實體合約數位化,

將該合約成功部署至區塊鏈平台後,必須學習要如何觸發合約的運行,須經過嚴謹的測 試,確認其智能合約正確且完整的將實體合約數位化後,才能確定該區塊鏈應用程式的 合約能依預期正常運行,故本論文提出了使用行為驅動開發(Behavior-driven development)

相關文件