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