發布時間:2020-03-31所屬分類:計算機職稱論文瀏覽:1次
摘 要: 摘要P2P眾籌是一種基于互聯網金融技術的熱點模式,目前的眾籌平臺還存在公信力不足、無法監管等問題,新興的區塊鏈和智能合約技術提供了解決問題的新技術途徑.區塊鏈作為分布式賬本數據庫,記錄了不可更改的資產數據,存儲在區塊鏈上的智能合約可以直接控制
摘要P2P眾籌是一種基于互聯網金融技術的熱點模式,目前的眾籌平臺還存在公信力不足、無法監管等問題,新興的區塊鏈和智能合約技術提供了解決問題的新技術途徑.區塊鏈作為分布式賬本數據庫,記錄了不可更改的資產數據,存儲在區塊鏈上的智能合約可以直接控制數字資產的交易,從而構造了基于智能合約的可信眾籌業務計算環境,為完全數字化資產的記錄和轉移奠定了基礎.眾籌項目的規則制定成智能合約代碼后,把代碼與項目狀態全部記錄在眾籌區塊鏈(crowdfundingprivateblockchain,CPBC)上,并由區塊鏈執行交易代碼,這樣不僅保證了眾籌項目的真實性、可靠性與強制性,還使得項目的執行具有可信性,極大地提升了眾籌平臺的公信力,還可減少眾籌業務在第三方審核上的人工花費與計算成本.給出了眾籌區塊鏈的智能合約設計,包括智能合約的執行模型和存儲模型,分別給出了Java的具體實例說明.研究結果表明,眾籌區塊鏈上的智能合約設計已能夠滿足80%的眾籌業務需求,目前已經得到了初步的應用,取得了較好效果.
關鍵詞智能合約;區塊鏈;眾籌;眾籌區塊鏈;私有區塊鏈
眾籌(crowdfunding)是大眾籌資或群眾籌資,指通過互聯網方式發布籌款項目并募集資金.相對于傳統的融資方式,眾籌更為開放,具有低門檻、多樣性、依靠大眾力量和注重創意的特點.現在能否獲得資金也不再是由項目的商業價值作為唯一標準,只要是網友喜歡的項目都可以通過眾籌方式獲得項目啟動的第1筆資金,為更多小本經營或創作的人提供了無限的可能.
目前的眾籌行業發展經歷了3個階段:第1階段是用個人力量就能完成,支持者成本比較低,在最初更容易獲得支持;第2階段是技術門檻稍微高的產品;第3階段則是需要小公司或者多方合作才能實現的產品,這個階段的項目規模比較大、團隊最專業、制作能力最精良,因此也能吸引到最多的資金.但目前的眾籌平臺還存在3個主要問題:第一,公信力問題,眾籌平臺作為金融業務的補充,必須滿足金融機構業務所具有的信譽和信用,提供完整可靠的賬本,取信于投資大眾,尤其是網上模式造成的眾多問題亟待尋找信用出路;第二,沒有可靠監管與監督,如何基于網絡模式給出審計、投資、第三方、項目等不同層次和權限的監管是建立眾籌體系的關鍵;第三,規模擴展問題,眾籌平臺做大需要和銀行、其他眾籌平臺等金融實體的對接融合,需要給出與傳統業務的橋接和互聯互通技術平臺.
區塊鏈(blockchain)十智能合約(smartcontract)技術可以解決目前技術所不能解決的上述問題,其一,區塊鏈是一串使用密碼學方法產生相關聯的數據塊,每一個數據塊中包含了一定時間的交易信息,每個數據塊都包含上一個塊的哈希值,以用于驗證其信息的有效性.由于區塊鏈是一個去中心化的分布式數據庫,每一點小小的改動都會改變整個狀態,而在區塊鏈技術中,可以很快地發現這個改變并迅速進行糾正,這也就是所說的存儲的信息是不可更改的,這在一定程度上保證了數據的真實和可靠性.這對金融眾籌這種需要非常高的可信度的行業來說,使用區塊鏈技術是非常有必要的,首先區塊鏈技術可以給企業和公司帶來很高的公信力;其二,區塊鏈上的智能合約可以通過代碼合約實現對眾籌系統價值流的控制,對于提高眾籌業務的效率和可信度也是非常重要的,將眾籌業務流轉換成智能合約代碼,代碼與狀態均存放在區塊鏈上面,并由區塊鏈執行,不僅合約代碼本身具有不可更改的可信性,而且可使得眾籌業務具有可觀察與可信驗證的特點,提高系統的公信力;其三,區塊鏈是一種分布式的存儲架構,可以很容易地在不同的用戶處放置不同權限的節點,參與或部分參與管理,發布權威認證或消息,并且所有內容是不可更改和可追蹤的;最后,區塊鏈可以形成互聯鏈、鏈中鏈,可以統一按區塊鏈標準達到互聯互通互信,解決平臺與平臺、公司與公司的互信與互監督問題,并與傳統的大數據架構橋接,解決大數據查詢和分析的問題.
區塊鏈把眾籌項目的規則制定成智能合約代碼,把代碼與項目狀態全部記錄在區塊鏈上,并由區塊鏈執行項目代碼,區塊鏈上的智能合約可以直接控制資金及其轉移,這樣不僅保證了眾籌項目的真實性、可靠性與強制性,還使得交易的執行具有證據性,大大提升了眾籌平臺的公信力•
本文將會給出眾籌區塊鏈(crowdfundingprivateblockchain,CPBC)的智能合約設計,支持眾籌區塊鏈上智能合約的全生命周期活動.
1智能合約的研究現狀
智能合約就是執行合約條款的程序代碼,它在1994年由密碼學家尼克薩博(NickSzabo)[1]首次提出,用智能合約替代傳統的紙質合約可以大大地減少在合約制定、控制協議和執行效能上的人工花費與計算成本.雖然薩博提出的智能合約理論幾乎與互聯網(WorldWideWeb)同時出現,但應用實踐卻一直嚴重地落后于理論,沒有如何將這個理念轉變現實的清晰路徑.主要面臨2個方面問題:一是智能合約如何來控制實物資產保證有效地執行合約,售貨機通過將商品保存在內部控制財產所有權,可是計算機程序很難控制現實世界的現金、股份等資產;二是計算機很難保證執行這些條款以獲得合約方的信任,合約方需要可靠的解釋和執行代碼的計算機,它無法親自檢查有問題的計算機,也無法直接觀察與驗證其他合約方的執行動作,只有讓第三方審核各方合約執行的記錄.而區塊鏈技術的出現解決了這些問題,奠定了智能合約應用的基礎.區塊鏈通過把合約執行的規則加人到區塊鏈的共識算法中,并且合約本身的代碼與狀態也會存放在區塊鏈上,當合約觸發時直接讀取并執行合約代碼,執行的結果返回到合約狀態,這樣,區塊鏈就變成合約計算的可信環境.同時,區塊鏈為完全數字化資產的記錄和轉移奠定了基礎,通過完全數字化的資產,區塊鏈上的智能合約可以控制資產.所以,區塊鏈使智能合約成為受信任系統,它已經不僅限于數據庫的功能,同時還是可以執行代碼和記錄資產所有權的分布式計算機•
目前,區塊鏈和智能合約技術的結合正成為解決方案的研究熱點,如開源項目EthereumM、CodiusM和Hyperledger[5]等,它們都有可編程的合約語言與可執行的基礎設施來實現智能合約.在這些系統中,智能合約是存儲在區塊鏈上的腳本,通過區塊鏈節點以分布式的形式執行,相當于商業交易、監督管理過程中法律、法規的執行者.智能合約以按序、安全、可信觀察、可信驗證的方式保證合約的執行.表1列舉了目前一些典型的智能合約項目:
但目前的智能合約還處在初級應用階段,還不能大規模滿足應用的需求,面臨很多問題:比如智能合約的性能問題,把合約狀態的一致性過程與區塊鏈的一致性過程結合起來,有可能會增加區塊的制作時間,比如Ethereum中區塊的構造時間就包含了區塊中交易的處理時間,減慢了建塊速度,如何更合理地結合兩者,提升交易處理的速度.還有安全問題,如2016年6月17日發生的DAO攻擊事件,由于DAO智能合約自身的漏洞,導致6000萬美元從賬號中流失[9],如何從代碼本身檢測漏洞來保證合約代碼的安全性.而且,目前基于區塊鏈的智能合約應用還相對較少,這些問題都是值得關注與研究的,本文將對智能合約和區塊鏈結合的落地應用進一步研究探索,提出眾籌區塊鏈的智能合約設計方案.
2眾籌私有區塊鏈總體設計
CPBC是為解決眾籌項目目前存在的問題而開發的系統,其中智能合約設計是一個重要特色.CPBC是一種采用類拜占庭算法的私有區塊鏈™,目前已得到初步應用,它主要包括五大模塊:平臺服務模塊、用戶管理模塊、智能合約管理模塊、區塊鏈管理模塊、通信模塊,其模塊組織方式如圖1所示.
1)平臺服務模塊.用于提供眾籌平臺的公共服務模塊,包括項目管理、投資管理、支付管理、提現管理和平臺獎勵支持.
2)用戶管理模塊.用戶包括平臺普通用戶和區塊鏈上參與計算的節點,必須嚴格控制用戶權限.該模塊應支持用戶注冊、安全認證、賬戶管理和密鑰管理.
3)智能合約管理模塊.用于管理的全生命周期活動,項目完整的生命周期包括項目的生成、項目發布、合約生成和合約執行.
4)區塊鏈管理模塊.用于管理區塊鏈的運行,存儲平臺所有的交易數據.該模塊包括區塊鏈管理、一致性模塊、區塊鏈存儲和通信協議.
5)通信模塊.滿足用戶和服務器、服務器和服務器之間的信息交互通信的實時性、安全性.
眾籌區塊鏈中,每一個區塊的頭部都包含一個本區塊頭部的哈希值和前一個區塊的哈希值,通過這2個哈希值就可以將區塊連接起來.這種連接方式可以對整個區塊進行校驗,通過重新計算區塊的哈希值就可以確定塊與塊之間的聯系是否正確.其中,每個區塊包含時間戳、區塊高度、前區塊頭部哈希值、區塊制作者公鑰、區塊頭部哈希值、狀態根、交易根、版本號、交易結果根、擴展碼、區塊投票結果以及交易信息.
針對目前眾籌平臺普遍存在監管缺失、公信力不強問題,本文提出了一種監管模式,如圖2所示.將區塊鏈系統節點分散放置,其中眾籌平臺放置2臺服務器,眾籌聯盟組織放置2臺服務器,大客戶處放置1臺服務器,同時在監管和審計部門放置1臺服務器,這種組織方式可以使得審計和監管部門隨時查看在眾籌平臺上所發布的信息是否合乎法律法規,從而在提升監管力度的同時,也可以提髙眾籌平臺的公信力.
眾籌區塊鏈總體設計的特色如下:
1)雙數據系統.由于區塊鏈是一個不斷增長的、可追溯的分布式數據庫,所以不需要把所有的系統數據都放入區塊鏈中存儲.眾籌區塊鏈的數據包括3個部分:用戶個人信息、業務數據(合約、交易)和平臺數據(平臺的運維數據:圖片、文字),區塊鏈存儲的是用戶個人信息與業務信息,其他信息將會存儲在一般的關系型數據庫中.
2)雙私有鏈設計.通過區塊鏈參與計算的節點權限的控制程度來區分公有鏈與私有鏈[11_12],因此采用私有鏈來支持眾籌區塊鏈關鍵敏感數據的存儲.平臺采用雙鏈存儲的結構,一條鏈用于存儲用戶個人信息,另一條用于存儲交易信息,公正第三方可以查看的是存儲了交易信息的區塊鏈(其中每個用戶用公鑰地址表示).
3)高速與信譽機制.采用bitarray、高速的一致性算法、信譽機制來保證區塊鏈的安全性與高效性.
4)智能合約設計.現有眾籌項目的規則由智能合約代碼替代,統一合約模板與行為,保證公信力.
5)審計與監督設計.通過對不同身份的區塊鏈訪問對象設置不同的節點訪問權限.
6)可擴展鏈式設計.區塊鏈結構采用可擴展設計,適應未來多平臺、多企業、甚至是跨領域的多鏈交叉結構.
下面從智能合約的執行模型、狀態存儲模型來詳細描述智能合約管理模塊的設計.
3眾籌智能合約的設計
眾籌業務流程中,集資者會在平臺上發布眾籌項目,并為項目設置幾種回報方式:利潤回報、實物回報和抽獎回報,根據用戶的資金多少,會有不同的回報方式.本文的智能合約主要針對利潤回報方式的眾籌項目進行設計.如圖3是利潤回報方式的眾籌集資過程.
眾籌區塊鏈中,以智能合約的形式來自動完成眾籌項目集資過程與還款過程.集資者與平臺管理者將眾籌項目的投資規則轉換成項目合約,投資者投資該項目時,根據預設規則會生成投資合約,投資合約是用于執行還款計劃的.由此看出,眾籌智能合約的全生命周期活動主要包括:項目生成、項目發布、代碼驗證與代碼執行,如圖4所示•
項目生成就是填寫項目模板,包括項目序號、項目發起者ID和項目執行環境參數、項目代碼與其哈希和合約代碼與其哈希,加上項目哈希(為以下內容的哈希值,包括項目序號、發起者ID、項目執行環境參數、項目代碼哈希和合約代碼哈希).其中,項目代碼的主要功能是生成合約與修改項目狀態.合約代碼的主要功能就是執行還款計劃和債權轉讓的功能(其中債權轉讓可以作為后期實現).
項目發布指把簽名后的項目發布到區塊鏈上.當項目代碼生成后,先由項目發起者檢驗并簽名,然后眾籌平臺管理者審核后簽名并構造項目生成交易,發送到區塊鏈中處理.
代碼驗證指用形式化的方法減少合約設計上的錯誤,驗證代碼與文本的一致性[1314].
代碼執行指當區塊鏈接收到代碼的觸發交易時,從區塊鏈讀取代碼,然后基于交易內容、合約狀態與外界信息來執行代碼,并通過區塊鏈提供的智能合約接口查詢區塊鏈信息和把執行結果返回到區塊鏈上,其中,接口如表2所示.為了保證合約代碼的可信性,把代碼直接存放在區塊鏈上,當有交易觸發時區塊鏈的計算節點會讀取鏈中的代碼并執行.為了說明合約的觸發執行機制,下面以Java實現來舉例說明.
Java程序在運行之前會將所有的對象加載,這樣在運行狀態中能夠知道和調用這個類的所有屬性和方法,Java語言的反射機制使得程序可以動態獲取對象信息以及動態調用對象的方法.利用Java象的本質,用Java語言編寫智能合約,在運行過程中,利用Java反射機制實現合約代碼的觸發執行機制.如圖5所示,合約代碼生成后會被編譯成字節碼,通過交易存儲在區塊鏈中等待觸發執行,當被觸發時,由區塊鏈提供的智能合約接口實現與管理鏈與合約的信息交互.
期刊推薦:《計算機工程與應用》是一本面向計算機全行業的綜合性學術刊物,覆蓋面寬、信息量大、報道及時是本刊的服務宗旨。報道行業最新發展動態與最新研究成果;具有先進性和推廣價值的工程方案;有獨立和創新見解的學術報告;先進實用有一定廣泛性的開發成果。讀者對象:計算機相關專業科研開發人員、工程技術人員及大專院校師生。
SCISSCIAHCI