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