陳宇翔,張兆雷,劉地軍,彭 笛,李 楓
(中國電子科技集團公司第三十研究所,四川 成都 610041)
區塊鏈技術[1]是國內外企業、金融和政府關注的重點。智能合約作為區塊鏈的重要組成,是區塊鏈被稱為顛覆性技術的主要原因。智能合約(Smart Contract)在區塊鏈中可以概括為一段代碼,運行在去中心化的、復制的賬本上,能保持自己數據的狀態,控制數字資產,對收到的外界信息和資產回應。
從用戶看,智能合約是一個自動執行賬戶,滿足預設條件就會釋放轉移資金。從開發人員看智能合約則是網絡服務器,這些服務器不是被架在互聯網上使用IP地址,而是架在區塊鏈上。因此,區塊鏈及其智能合約被認為是實現價值互聯網的重要手段,最終實現人們在網絡上像傳遞信息一樣方便、快捷、低成本的傳遞價值。
早在20世紀90年代,密碼學家Nick Szabo[2]就提出了智能合約的概念,用程序代碼實現人們約定的合同條款。程序從外界獲取信息識別并判斷,滿足條件則觸發程序完成相應的操作,如資產轉移、交易等。但是,由于缺乏支持可編程合約的數字系統和技術,Szabo的理論遲遲沒有實現,只有一些原始粗糙的應用,如刷卡機(PoS)、自動售貨機等。
在生產產品和提供服務的過程中,要把人和物、人和人整合,才能創造更大的價值。比如,汽車發動機的幾千個零件涉及多方面專業,需要不同工廠協作完成。所以,建立合約將某個部件生產外包給別人,別人也許會繼續外包,形成一個合約網絡。在雙方約定的過程中,大家希望交易利于自己,所以要創建共贏的交易。如果用程序代碼實現合約網絡,則能更好地保障參與方的權益。
區塊鏈的出現解決了平臺問題,如去中心化、不可篡改、過程透明和可追蹤等特點,天然適應于智能合約,也使智能合約被企業、金融機構所關注。
區塊鏈1.0以比特幣為代表,在去中心化的網絡中支付加密貨幣。區塊鏈2.0則要實現更宏觀的目標,對市場去中心化,使網絡中不僅交易貨幣,還包括其他數字資產,如房產、汽車等。區塊鏈3.0則轉向社會治理,如身份管理、公證、仲裁審計何投票等領域[3]。
當前,區塊鏈和智能合約技術的結合成為解決方案的研究熱點,如Hyperledger[4]、以太坊[5-6]和Codius[7]等,都通過建立在可執行基礎設施上的可編程合約語言實現智能合約。智能合約作為區塊鏈上的腳本,在節點間以分布式形式執行,類比法律法規在交易、合同中的應用。智能合約按照雙方事先約定的條件,保證合約安全、可信、按需以及可監管的執行。表1展示了典型的智能合約項目平臺。

表1 三種知名區塊鏈平臺的智能合約應用對比
不同的區塊鏈平臺針對不同類型的應用場景。公有鏈平臺以比特幣為代表,任何人都可參與記賬;私有鏈平臺通常用于金融機構或公司、政府的內部審計;設計的稅收智能合約場景跨聯盟和組織,通常多個機構組織具有記賬權,屬于典型的聯盟鏈應用。因此,本文選擇最具代表性的Hyperledger Fabric區塊鏈平臺進行設計。
智能合約[8-9]一般包括以下內容:交易(Transaction)處理,保存機制,一個完備的狀態機用于接收和處理各種智能合約,事務保存和狀態處理則在區塊鏈上完成。
調用智能合約[10]需要滿足觸發條件,一旦符合條件,就從合約代碼傳出預設的數據資源。它最重要的特點是,輸入智能合約的是一組事務,處理后的輸出也是一組事務。類似于生活中的合同,使一組復雜、有觸發條件的數字承諾按照參與方的意志自動執行。通用的智能合約模型如圖1所示。
智能合約系統Hyperledger Fabric是一個開源區塊鏈底層系統,像安卓一樣提供了豐富的API接口,可以使人在上面開發各種區塊鏈應用場景。主要較成熟的平臺中,Hyperledger Fabric是面向企業聯盟的區塊鏈應用,也是此次應用設計選擇的主要原因。它的智能合約又被稱為Chaincode,選用docker容器作為沙盒環境,容器中有被簽名的磁盤映像和Go語言運行的SDK。上層應用通過gRPC或REST,與運行在Hyperledger Fabric節點上的智能合約進行通信。

圖1 智能合約模型
區塊鏈從比特幣發展到引入智能合約的以太坊,再到聯盟鏈Hyperledger Fabric,盡管各應用實現上有所差別,但體系架構上有一定的相似度。圖2給出了稅收區塊鏈的體系架構及相關軟件模塊。

圖2 稅收區塊鏈體系架構及模塊
最底層的網絡層包括了P2P組網機制、數據傳播機制和數據驗證機制,使得區塊鏈具有自動組網功能,可以適應網絡變化而查詢到完整的結果集,也方便數字資產交易類應用。Hyperledger Fabric的P2P協議基于HTTP/2協議實現,節點時刻監聽網絡中廣播的數據。當收到鄰居節點發來的新區塊交易時,根據預先設定的背書策略,驗證這些交易和區塊是否有效,驗證內容包括數字簽名、工作量證明等。只有通過驗證的交易,才會被加入正在構建的區塊。通過驗證的區塊,才會接入區塊鏈并轉發。其中,加入正在構建的區塊,還涉及排序節點(Orderer)。
共識層使用先進的PBFT(Practical Byzantine Fault Tolerance)算法解決分布式一致性問題,在n≥3f+1的條件下解決拜占庭將軍問題(n是網絡中總節點數,f是最多可容忍的惡意節點個數),并在異步通信中使拜占庭協議的復雜度從指數級別降低到多項式級別。在稅收智能合約設計中,共識流程如下:在網絡中設定一個主節點orderer(排序節點,如圖3所示),負責把網絡中收集的交易排序后生成列表,并向其他節點擴散;其他各節點收到交易列表后,根據列表中交易排序模擬交易;模擬完排序的交易后,生成交易結果的哈希摘要,并向其他節點廣播。每個節點如果收到2f個節點的摘要與自己相同,就向全網廣播commit消息;如果某節點收到2f+1條commit消息,就可以生成新區塊,并把交易提交到區塊鏈和狀態數據庫。該共識流程設計的拓撲結構,如圖3所示。值得一提的是,org1和org2的錨節點設置(本案例設置圖中0和2號節點分別代表org1和org2的錨節點)體現了聯盟鏈特征,可防止單點失敗。Org1的peer節點與Org2的peer節點加入通道,通過對方組織的錨節點來發現對方所有加入通道的節點。

圖3 智能合約網絡的節點拓撲結構
數據層在數據結構方面如圖4所示,設計上基于文檔時間戳證明各類文檔的創建時間,并提供數字公證服務。時間戳服務器對文檔、時間和指向之前文檔的hash指針簽名,后續文檔重復該操作,形成基于時間的證書鏈,無法篡改。每個區塊都包含類似圖4中所示的區塊頭和區塊體。塊頭存放Merkle根、時間戳和前塊哈希等。塊體存放批量交易數據。一個塊內所有交易不斷兩兩哈希生成最終的Merkle根,實現了交易的不可篡改性和支付的可驗證性。每個區塊通過前一區塊的哈希把所有塊連接在一起。塊頭包含難度值、nonce等數據。在數據模型方面,Hyperledger Fabric采用了基于賬戶的模型,可根據賬戶快速查詢當前狀態,支持功能豐富的通用應用。在存儲方面,按照日志文件格式存儲,通過哈希鍵值檢索數據(通過交易哈希檢索交易數據,通過區塊哈希檢索區塊數據),索引和狀態數據一般存儲在Key-Value數據庫。Hyperledger Fabric目前支持LevelDB和CouchDB數據庫存儲和索引。

圖4 區塊鏈數據結構
智能合約層擴展了區塊鏈功能,用算法程序實現預設場景,編制合同條款。Fabric平臺中的智能合約稱為Chaincode(鏈碼),選用Docker作為沙盒,運行機制如圖5所示。按預設場景編寫完合約代碼后,將其安裝并實例化到區塊鏈的網絡節點上。部署后的合約被打包為Docker鏡像,各節點基于該鏡像啟動一個新Docker容器并執行合約中的實例化方法,然后等待調用。應用層通過調用智能合約實現各種交易場景。如果是轉賬等數據修改類調用,要在網絡中的所有節點達成共識,然后修改會被記在區塊鏈,結果會存儲在狀態數據庫。在本用例中,轉賬的金額和稅收的金額被記入區塊鏈,而賬戶余額包括稅收賬戶存儲在狀態數據庫中。如果是查詢,則不需節點共識。
市場交易中,常常出現偷稅漏稅的情況。比如,飯店老板常常以贈送小禮品的方式拒絕開發票,大型企業在交易時使用銀行轉賬存在虛假報賬偷稅漏稅的情況。小數額交易太過瑣碎,稅務局追查不便;大數額交易即使追查,也會耗費巨大人力物力。在支付寶、微信等電子支付手段越來越普遍的情況下,提出以智能合約的方式實現對偷稅漏稅的零容忍。
在稅收區塊鏈中,針對交易數額進行設計。圖6是交易中的稅收過程。當區塊鏈收到代碼的觸發交易時,從區塊鏈讀取代碼,基于交易數額、合約狀態與外界信息執行代碼,并通過Fabric區塊鏈平臺提供的智能合約接口查詢區塊鏈信息,把結果返回鏈上。應用中涉及的接口如表2所示。
在交易場景中,對每筆轉賬設置幾種交易金額的稅收比例,以合約方式自動完成交易場景中的稅收過程。Hyperledger Fabric平臺的智能合約也稱chaincode(鏈碼),是應用層與區塊鏈交互的渠道和交易的來源。編寫合約的實質是實現鏈碼接口的Init、Invoke和Query函數,分別對應部署合約、執行交易和查詢狀態。

圖6 交易的稅收過程

表2 稅收合約設計中使用的接口
Go程序在運行前會對所有對象加載,生成相應的節點和組織的證書和每個節點的公私鑰。該智能合約主要實現以下場景:初始化3個角色A、B、C,A客戶向B商家付款,總金額的稅率比例自動轉入稅務局的C賬戶;可以查詢A、B、C三個賬戶的金額,確認交易成功,也可以刪除賬戶??梢愿鶕伞⒍惵剩煌灰捉痤~設定分段函數執行每筆交易的稅收功能,如:

其中x1、x2……代表稅率設置。對每次的交易判斷其交易金額所處的區間,然后自動執行稅收功能。表3為稅收合約設計中的主要函數。

表3 稅收合約設計中主要函數
合約代碼的可信是通過把代碼部署在區塊鏈上實現的。交易觸發時,網絡中的節點會讀取鏈上的代碼并執行,觸發機制如圖7所示,通過Go實現說明。在Go語言運行前,會將代碼安裝在區塊鏈節點上并實例化。該過程也可理解為對象的加載,這樣在運行中可以知道所有屬性和方法。通過shell可執行文件或手動輸入,可以使合約動態獲取對象信息和調用對象的方法。智能合約被實例化后會被編譯為字節碼,等待觸發執行。當觸發時,通過Fabric區塊鏈平臺提供的接口與合約信息交互。

圖7 基于Go的智能合約執行模型及軟件模塊
稅收智能合約的全生命周期如圖8所示,主要包括:創建點對點交易的沙盒環境、在節點對智能合約的信息進行注冊登記和節點傳遞參數進行場景初始化。此三者為合約部署流程。鏈碼部署成功后,會創建連接到部署它的VP節點的gRPC通道,以接受后續Invoke或Query指令。節點傳遞transaction(交易)或query信息給接口,以調用相關函數執行稅收場景,其中圖8中的步驟4~步驟7都屬于代碼執行階段。智能合約類比社會中的法律法規,維護網絡環境中事先約定的秩序,可以根據不同場景和約定調整。

圖8 稅收智能合約的全生命周期活動
設計基于區塊鏈的稅收應用場景,借助了區塊鏈作為分布式數據庫的優勢。
5.1.1 可信信息共享
數據庫通過去中心化的架構,由多方共同管理維護,任何一方不能完全操作數據。區塊鏈依靠每個區塊頭的哈希指針和塊體的Merkle樹實現不可篡改,而共識機制則加固了數據的安全性,促進了公平公正。
5.1.2 可追溯還原
區塊鏈上存儲了運行以來的所有數據,對交易糾紛、稅收公正都有益處,方便追溯還原所有歷史,提高監管、審計和執法的效率。
5.1.3 高可用可信
稅收合約自動執行所有電子交易的稅收功能。為相關的報賬、審計工作提供方便,網絡中無需參與人相互信任,審計監察也無需擔心偷稅漏稅事件。每個事務都要發送者簽名,且全網共識后才記錄在區塊中。多節點備份降低了原有數據庫的建設和維護成本。
本次借助Hyperledger Fabric平臺設計稅收應用場景,本身也存在很多不足需要克服。
5.2.1 交易量低
當前,主流區塊鏈架構吞吐量不大,主要原因是它們采用的共識算法系統開銷巨大。不管是比特幣區塊鏈采用的PoW,還是Hyperledger Fabric采用的PBFT算法,都是以犧牲電力或帶寬性能確保安全的。例如,比特幣吞吐量為7 TPS,以太坊為20~30 TPS,Hyperledger Fabric平臺雖有進步,但也不過2 000 TPS?;谥悄芎霞s的稅務場景雖然設計可行,但工程角度遠不能滿足當前巨大的電子交易量。
從以上數據可以看到,各區塊鏈平臺系統性能的關鍵瓶頸受制于共識算法。典型代表Fabric平臺采用的PBFT共識算法雖然理論證明完備,但大規模應用面臨廣播帶來的網絡開銷過大問題。在以后的發展中,包括選取部分主節點共識的算法、基于特定場景減少網絡廣播的共識算法、融合PoW與PBFT共識算法的優勢等都會受到關注。
5.2.2 事務處理效率
稅收合約設計中,Hyperledger Fabric依靠底層的LevelDB提供事務處理。LevelDB屬不支持嚴格事務的Key-Value數據庫,一旦單點合約執行失敗,需要依靠共識算法同步恢復一致。
除了上面分析的共識算法發展可能部分提高效率外,在區塊鏈平臺性能改善和數據積累過程中,平臺的數據將趨向結構化數據,如SQL on Blockchain,使現有分析查詢工具無縫接入。
5.2.3 擴展性差
中心化數據庫通過增加節點數提高吞吐量。目前,以Fabric為代表的聯盟鏈平臺隨節點增加整體性在下降。因此,擴展性方案還需改進。
除了提到的選取部分主節點共識提高效率外,它的吞吐性能改善也可能借助比特幣社區提出的隔離見證、增大區塊、閃電網絡和雷電網絡等擴大區塊容量,提高吞吐量。
從智能合約稅收應用場景的優劣勢分析可見,當前平臺本身的限制仍然是限制區塊鏈進入社會、轉化為工程應用的瓶頸。從20世紀90年代Nick Szabo提出智能合約概念但缺乏可編程技術手段和數字系統的環境相比,當前智能合約的設計環境已然大為改觀,距離進入工程應用并不久遠。
本文提出了基于Hyperledger Fabric平臺的帶有稅收交易場景的智能合約設計方案,包括智能合約的執行模型、狀態模型與合約模板,并給出了Go語言的具體實例解釋??梢钥吹剑現abric為智能合約提供了一個實現平臺,為合約提供了存儲代碼、狀態的地方,把執行合約的環境與一致性哈希算法融合,構成了基于Fabric平臺的智能合約系統。智能合約隨著區塊鏈的發展正處于初級階段,并且依然存在安全、法律和智能等方面的問題。后續將會對智能合約進一步研究,引入零知識證明、秘密共享等密碼技術,研究智能合約隱私保護功能,包括智能合約的一致性安全性研究和可用于合約建立的工程方法與技術等[11-12]。
智能合約存儲在區塊鏈節點以分布式形式執行,類似社會中的合同、監管等方面的法律法規。從稅收智能合約的設計可以看出,在應用場景上,技術與法律有了交叉是一個必然趨勢。分析對比智能合約與法律的關系,如表4所示。在以后越來越多的應用中,智能合約要與法律一致,必須經過專業法律知識的人士的指定審核,遵守法律并具有法律效應,學科交叉將會越來越多[13-15]。

表4 傳統合約與智能合約的比較
除法律外,智能合約在公共服務[16-18]方面還有以下要求:具有合約利益的人才可接觸相應合約信息,合約相關的知識、控制和執行都需要保護,如合約執行方的過程可驗證、對違反合約的制裁、合約方可以從用戶界面觀察合約執行的所有狀態和過程等。
本文是對區塊鏈智能合約在交易領域及公共服務方面的一次有益探索,雖然智能合約還有很多問題要面對,但它一定會成為信息互聯網向價值互聯網轉變的關鍵技術之一,會有廣泛的應用前景。
[1] Nakamoto S.Bitcoin:A Peer-to-Peer Electronic Cash System[EB/OL].[2018-05-23].https://bitcoin.org/bitcoin.pdf.
[2] Szabo N.A Formal Language for Analyzing Contracts[EB/OL].(2017-01-12)[2018-01-05].http://nakamotoinstitute.org/contract-language/.
[3] Antonopoulos A M.Mastering Bitcoin:Unlocking Digital Cryptocurrencies[M].USA:O'Reilly Media Inc.,2014.
[4] Hyperledger.Project Charter[EB/OL].[2018-05-23].https: //www. hyperledger.org/about/charter.
[5] Ethereum White Paper.A Next-generation Smart Contract and Decentralized Application Platform[EB/OL].(2015-11-12)[2018-01-09].https://github.com/ethereum/wiki/wiki/White Paper.
[6] Ian A.Ethereum’s Vitalik Buterin Explains How State Channels Solve Privacy and Scalability[EB/OL].(2017-11-15)[2018-01-05].http://www.ibtimes.co.uk/ethereums-vitalik-buterin-explains-how-statechannels-address-privacy-scalability-1566068.
[7] 袁勇,王飛躍.區塊鏈技術發展現狀與展望[J].自動化學報,2016,42(04):481-494.YUAN Yong,WANG Fei-yue.Blockchain:the State of the Art and Future Trends[J].Acta Automatica Sinica,2016,42(04):481-494.
[8] Vitalik B.A Next-generation Smart Contract and Decentralized Application Platform[EB/OL].(2017-01-17)[2018-01-05].https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-White-Paper.
[9] 中國區塊鏈技術和產業發展論壇.中國區塊鏈技術和應用發展白皮書(2016)[EB/OL].(2016-10-18)[2018-01-05].http://www.cbdforum.cn/index/article/rsr-6.html.China Blockchain Technology and Industry Development BBS.China Blockchain Technology and Application Development White Paper[EB/OL].(2016-10-18)[2018-01-05].http://www.cbdforum.cn/index/article/rsr-6.html.
[10] Szabo N.Smart Contracts[R].1994.
[11] David B.Blockchain Revolution[EB/OL].(2016-10-21)[2018-01-05].http://www.slideshare.net/15Mb/blockchain-revolution.
[12] Swan M.Blockchain Thinking:the Brain as a Decentralized Autonomous Corporation[J].IEEE Technology and Society Magazine,2015,34(04):41-52.
[13] Christopher A.The Path to Self-Sovereign Identity[EB/OL].(2017-11-15)[2018-01-04].http://www.coindesk.com/path-self-sovereign-identity.
[14] Scalability B W.Scalability[EB/OL].(2017-11-15)[2018-01-05].https://en.bitcoin.it/wiki/Scalability.
[15] uPort.The Wallet is the New Browser-Medium[EB/OL].(2017-11-15)[2018-01-05].https://medium.Com/@ConsenSys/uport-the-wallet-is-the-new-browser-b133 a83fe73%7B%5C#%7D.1l0vsfq2p.
[16] Cheema G S,Popovski V.Building Trust in Government[EB/OL].(2017-11-15)[2018-01-05].https://www-01.ibm.com/common/ssi/cgi-bin/ssialias?Htmlfid=GBE03801USEN&.
[17] Djuri B.Towards Self-Sovereign Identity using Blockchain Technology[EB/OL].(2017-11-15)[2018-01-05].http://essay.utwente.nl/71274/1/Baars_MA_BMS.pdf.
[18] 何蒲,于戈,張巖峰等.區塊鏈技術與應用前瞻綜述[J].計算機科學,2017,44(04):1-7.HE Pu,YU Ge,ZHANG Yanfeng,et al.Block Chain Technology and Application Forward Review[J].Computer science,2017,44(04):1-7.