徐 寧, 樊郁徽
(淮南師范學院計算機學院,安徽淮南 232038)
2019年6月,比特幣市值突破11 000美元,再一次讓比特幣成為熱點,而各種基于區塊鏈技術的代幣借著這股熱度如雨后春筍般拔地而出.雖然比特幣以及市場中一些類似的代幣在貨幣領域的應用還存在一定的爭議,但作為比特幣的核心技術——區塊鏈技術逐漸被人們接受和認可.從比特幣到可編程金融,再到未來的可編程社會,一個無中心的區塊鏈網絡在爭議聲中不斷快速發展.
區塊鏈是一種基于網絡的、通過去中心化和去信任化的方式集體維護的一套分布式賬本的技術方案.其發展可以劃分為三個階段:區塊鏈1.0階段以比特幣為代表,提供了非圖靈完備的腳本語言;區塊鏈2.0則是以以太坊為代表的可編程金融[1],智能合約是其代表性應用,并提供了圖靈完備的可編程語言Solidity,拓展了區塊鏈的應用范圍;未來的區塊鏈3.0將會是可編程世界,包括各種去中心化的應用和組織[2,3].
智能合約是區塊鏈從1.0階段向2.0階段過渡的最有代表性的應用,在構建去中心化應用中發揮著重要作用.智能合約是Szabo于1994年提出的一個概念[4],是想通過計算機的協議和接口來自動執行兩個或多個交易方之間訂立的合同,從而消除對合同條款的爭議.
區塊鏈的概念產生于2008年.中本聰(Satoshi Nakamoto)在網站metzdowd.com的密碼學郵件列表中發表的一篇名為Bitcoin:A Peer-to-Peer Electronic Cash System的論文中首次提到了區塊鏈技術[5],他將區塊鏈技術作為構建比特幣(bitcoin)的數據結構與交易信息加密傳輸的基礎技術.雖然比特幣的合法性沒有在國內獲得肯定,但作為比特幣的核心技術——區塊鏈引起了國內外的廣泛關注.2016年1月,英國政府發布區塊鏈專題研究報告[6];同年12月,中國政府將區塊鏈技術列入《“十三五”國家信息化規劃》[7].2016年10月,工信部發布《中國區塊鏈技術和應用發展白皮書》,這是首個落地的區塊鏈官方指導文件[8].此外,中國人民銀行也開展了基于區塊鏈的數字票據交易的研究,并進行了相關測試[9].
近年來,區塊鏈技術快速發展,吸引了眾多機構的參與.在國外,銀行和證券等金融機構成為研究主力,政府、監管機構、傳統大型企業和新興初創公司也都如火如荼地參與其中.
在金融領域,美國納斯達克,美國存管信托和結算公司,澳大利亞股票交易所,歐洲清算銀行、高盛銀行、瑞銀集團等都開展了區塊鏈技術的探索,成立了相關的區塊鏈金融實驗室,對區塊鏈在線支付、電子貨幣和結算等領域的應用進行了研究.
在國家層面,英國、俄羅斯、歐洲央行等從2016年開始對區塊鏈技術在電子貨幣、證劵和支付結算領域的應用開展了研究.
在科技公司方面,IBM、微軟在2015年就開始了分布式賬本技術的研究,為區塊鏈的應用進行了技術層面的設計,提供了可供使用的應用場景和生態系統.
一些國際合作組織也建立了相關的區塊鏈聯盟,如R3 CEV聯盟、Hyperledger等.這些聯盟有全球多家金融機構加盟,通過對銀行業間的區塊鏈技術進行開發,探索建立銀行業的區塊鏈組織,用于國際金融支付和清算領域,以及構建企業級的開源分布式賬本框架.
在國內,區塊鏈技術從2015年開始興起,越來越多的企業開始研究區塊鏈在本行業的應用,其中以金融企業為主.國內出現了研究區塊鏈應用的企業聯盟,也誕生了如萬向、小蟻、布比等區塊鏈實驗室和企業.我國政府機構在保持謹慎態度的同時,也開始關注區塊鏈研究的發展.中國平安、招商銀行、微眾銀行等金融公司進行了區塊鏈清算系統的應用研究.中國分布式總賬基礎協議聯盟(ChinaLedger)、金鏈盟等區塊鏈聯盟結合國內政策法規、國家標準等搭建了具體的應用場景.
從國內和國際的發展情況來看,區塊鏈技術得到了越來越多的國家及國際機構的認可.他們在該領域開展了大量的研究與探索,為區塊鏈的未來發展提供了強大的技術及政策支持.
區塊鏈通過分布式共識機制保持內部的一致性,交易的內容記錄在區塊中,每個區塊通過散列值鏈接上一個區塊,形成一個鏈式結構,礦工通過計算,獲得下一個區塊的地址,在擁有記賬權限的同時獲得一定的代幣獎勵.通過支付一定的代幣作為成本,用戶可以擁有記賬的權限,將發生的交易寫在指定的區塊地址中,并同步到網絡中的各個節點上.當有人試圖修改已發生交易的結果時,需要將所有節點中的交易信息都進行修改,否則不能通過一致性檢測,不能成為合法的記錄存在,而要實現對所有節點記錄信息的修改需要大量的計算,這往往難以實現.基于區塊鏈的這一特性,可以保證記錄數據的不可篡改,這也是區塊鏈在金融領域用于賬目記錄的一項重要應用.
區塊鏈技術是利用塊鏈式數據結構來驗證與存儲數據、利用分布式節點共識算法來生成和更新數據、利用密碼學的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分布式基礎架構與計算方式.區塊鏈的架構主要由6個層級構成[10],如圖1所示.

圖1 區塊鏈架構
基于區塊鏈技術的應用從最初的比特幣到以太坊再到EOS(Enterprise Operation System,即為商用分布式應用設計的一款區塊鏈操作系統),發展日新月異,新技術也在不斷產生.
2.2.1 比特幣
比特幣是最早的區塊鏈應用.它通過設計一個無中心的網絡,利用POW(工作量證明共識算法)進行挖礦和產生新區塊,礦工們通過雙重的SHA256加密算法不斷地對區塊頭和一個隨機數字進行哈希計算,直到出現一個和預設值相匹配的解,第一個運算出結果的礦工將這個解廣播到網絡中,由其他礦工進行驗證確認,驗證通過后,作為新區塊加入到鏈中,礦工在獲得挖礦獎勵的同時,也獲得了將交易記錄打包到新區塊的權限,并可以收取打包交易的手續費.為了適應算力的提升,確保每10分鐘才會計算出新的地址,比特幣網絡會不斷調整計算的難度,當所有的2 100萬個比特幣全部發行結束后,礦工就靠打包交易的手續費來維持挖礦的動力.
比特幣網絡在交易記錄上所花的時間較長,每秒的交易筆數只有7筆,不可能滿足現有應用的需求,且交易的確認時間也要等到后續的6個區塊建立,也就是1個小時之后.比特幣網絡的主要應用形式還是局限在加密貨幣上,但其協議也可用于創建智能合約.比特幣提供了一種編程語言,允許自定義智能合約,如多重簽名帳戶、支付渠道、托管和時間鎖,特別是在比特幣的區塊鏈上建立了一個名為RootStock的獨立智能合約平臺.
2.2.2 以太坊
以太坊是區塊鏈2.0的產物.它采用了POS(股權證明共識算法)來代替比特幣網絡的POW,通過擁有的以太幣數量來代替算力的權重,在一個POS系統中,區塊鏈的新區塊生成是通過該系統中的持幣人,或者是一個有影響力的持幣機構參與達成的.這比POW的挖礦具有更高的效率,不需要高性能的硬件,也不需要花費更多的電力.
以太坊與比特幣之間最大的不同在于:以太坊可以支持更加強大的腳本語言(圖靈完備的腳本語言),允許開發者在上面開發任意應用,實現任意智能合約.以太坊就像蘋果的應用商店,任何開發者都可以在上面開發應用,并出售給用戶.目前以太坊每個區塊大約能容納200筆交易,以平均出塊時間為15秒來計算,以太坊的交易處理速度可達13筆/秒.
2.2.3 EOS
EOS是一種新的區塊鏈架構,旨在實現分布式應用的性能擴展,被稱為區塊鏈3.0.
EOS通過并行鏈和DPOS(委托股權證明共識算法)的方式解決了比特幣和以太坊所面臨的延遲和數據吞吐量的難題.EOS每秒可以執行上千級別的處理量,在EOS上轉賬交易與運行智能合約并不需要消耗系統代幣.EOS網絡的帶寬和算力的分配是由代幣持有的份額來決定的.這意味著如果某人擁有1%的EOS代幣,那么他就永遠只能獲得1%的網絡帶寬,而不論網絡剩余部分的負載情況.
與比特幣、以太坊相比,EOS更側重于應用,比特幣和以太坊分別代表著區塊鏈1.0、區塊鏈2.0,重心分別是貨幣、智能合約,EOS則是借鑒與延續之前的思路重新開發,代表了以應用為主的區塊鏈3.0.
通過對區塊鏈不同發展階段的三種代表性應用的介紹,我們可以從所屬階段、功能、共識機制、區塊產生、交易性能、編程語言等幾個方面來進行比較,如表1所示.

表1 比特幣、以太坊和EOS比較

圖2 以太坊智能合約的部署和執行步驟
智能合約最早可以追溯到20世紀90年代中期,當時Nick Szabo預測數字革命將徹底改變人類訂立合約的方式[11].智能合約的訂立可以通過將協商一致的條款以計算機代碼實現而非日常語言或法律語言來記錄,其工作的基本原理類似于計算機程序的if-then語句,在預先設定的條件達成時,就自動執行相應的合同條款.智能合約是自我執行、自我強制的.只有智能合約才能修改(追加)帳本數據.簡單地說,智能合約就是根據事先制訂的規則來自動轉移數字資產的系統.
智能合約是一套以數字形式定義的約定,包括合約參與方可以在上面執行這些約定的協議.智能合約的基本思想是,各種各樣的合約條款可以嵌入到人們使用的硬件和軟件中,從而使得攻擊者攻擊時需要付出很大的代價.
區塊鏈技術出現后,其多方存儲、多方計算、規則透明、不可篡改等特性,恰好為智能合約提供了安全可靠的記錄載體和執行環境[12].智能合約像是一個活在區塊鏈系統里的自動代理人,他有一個自己的區塊鏈地址,當用戶向合約地址里發送一筆交易后,該合約就被激活,然后根據設定確立交易雙方合約的每一個細節,并會按照事先編寫好的程序,在特定條件發生時正確執行合約里的條款,合約會運行自身的代碼,最后返回一個結果,這個結果可能是從合約地址發出的另外一筆交易.
現階段,以以太坊(Ethereum)為代表的智能合約技術成為各界關注的熱點,以太坊通過支持圖靈完備的開發語言,允許用戶在以太坊中發布各種智能合約,以太坊提供的虛擬機(EVM)是智能合約的運行環境,EVM以沙箱的形式提供一個隔離的運行環境來執行智能合約[13].使用推薦編程語言開發的智能合約通過EVM將合約代碼解釋成EVM字節碼,然后經過以太坊網絡節點驗證后部署到區塊鏈上.智能合約的部署和執行如圖2所示.
作為商品交易平臺,淘寶、京東、亞馬遜等都已經成功地開展了相關業務,并取得了豐碩的成果.作為中心化的電商平臺雖然向商家和消費者提供了可信的資金交易環境,但相應地也會出現一些問題.中心化的電商平臺需要在商家和消費者間起到調解和仲裁的作用,這樣不可避免地會出現一些爭議,并需要消耗平臺的資源.去中心化的商品交易平臺利用智能合約約定商戶和消費者間的交易行為,交易雙方認可智能合約的執行條件,當執行條件滿足時,由平臺自動執行合約約定的結果,以避免交易中產生爭議.由于智能合約是部署在區塊鏈中,并通過共識算法為全網所確認的,是無法修改的,這也避免了一些由于合同內容的篡改所導致的糾紛.
結合傳統電商的交易流程,設計出商品交易智能合約的模型,如圖3所示.

圖3 商品交易智能合約模型

圖4 商品交易智能合約算法示意圖
商家與消費者注冊成為區塊鏈的用戶后,區塊鏈將會為每一個用戶分發公鑰和私鑰,公鑰為用戶在區塊鏈上的賬戶地址,私鑰為用戶加密的密鑰.然后交易雙方根據需求協定一份智能合約,交易雙方用各自私鑰簽名確認合約信息,以確保合約的真實性,避免合約被惡意篡改.合約內容通過P2P網絡傳入區塊鏈中,并由認證節點對此合約驗證,共識完成后,將合法合約存入數據區塊中并自動執行.此交易模型實現了系統的去中心化,交易和合約信息公開、透明、不可篡改,合約自動存儲和執行.
根據商品交易智能合約模型,結合傳統商品交易流程,提出商品交易智能合約算法,算法流程如圖4所示.
算法具體步驟如下:
開始:
Step1:消費者查詢商家的商品信息;
Step2:消費者確認購買商品,發送交易信息給商家;
Step3:交易雙方確認合約信息,生成合約;
Step4:合約生成,并在鏈中完成共識,將執行函數導入區塊,并根據結束條件完成清算;
完成合約執行.
本智能合約的發布與執行是在以太坊私有鏈上實現,通過Chrome瀏覽器的輕量級錢包插件Metamask來執行以太幣的轉賬、付款功能.其中,商家填寫相關商品信息數據并提交后彈出Metamask支付交易費用,然后填寫的數據將提交到服務器端的MySQL數據庫中存儲;消費者根據商家發布的智能合約的ID查詢相關商品信息,并通過Metamask進行轉賬付款,智能合約通過調用物流的簽收信息或者消費者的確認收貨信息完成交易.
在測試網絡中對智能合約的執行進行測試,以支付Gas的形式完成智能合約的運行.Gas作為以太坊中執行交易的計算工作量度,與以太幣之間存在換算關系,每筆合約執行時支付的Gas越多,被優先打包存儲的機會越高.
智能合約的發布和執行需要支付一定的Gas,并且隨著以太坊網絡越來越擁堵,執行智能合約的代價會越來越大,這將給智能合約的擁有者帶來經濟壓力.
以太坊作為真正支持智能合約并得到廣泛認可的區塊鏈,在共識算法上較比特幣時代有了很大進步,在執行合約的速度上也較比特幣時代有了進步,但相對于中心化網絡每秒百萬級的TPS(每秒事務處理量Transaction Per Second)還有很長路要走.在未來的區塊鏈3.0中,這種情況會大大改善,以EOS網絡為例,交易的費用已不再收取,交易的確認也不需要全網的51%節點認可,而是由投票選出的超級節點來完成區塊的產生和記賬,這樣一來,交易的速度會大大提升,逐漸達到中心化網絡的性能,并通過提供企業級的區塊鏈操作系統,使應用的開發和部署更加簡便.