基于區(qū)塊鏈的股權(quán)眾籌平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于區(qū)塊鏈的股權(quán)眾籌平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于區(qū)塊鏈的股權(quán)眾籌平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于區(qū)塊鏈的股權(quán)眾籌平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于區(qū)塊鏈的股權(quán)眾籌平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于區(qū)塊鏈的股權(quán)眾籌平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)DesignandImplementationofEquityCrowd-fundingPlatformBasedonBlockChain計(jì)算機(jī)科學(xué)與技術(shù)(教育)袁靜ComputerScienceandTechnology(Education)YuanJing 指導(dǎo)老師黃強(qiáng)DirectedbyHuangQiang摘要:隨著我國(guó)人口基數(shù)的持續(xù)上升,傳統(tǒng)就業(yè)崗位正逐漸被人工智能和新興技術(shù)所淘汰,而國(guó)家提倡大眾創(chuàng)業(yè)、大力扶持小微企業(yè)。在這樣的就業(yè)形勢(shì)下,本設(shè)計(jì)運(yùn)用區(qū)塊鏈的超級(jí)賬本(HyperledgerFabric)SDK和JAVA相結(jié)合的技術(shù),實(shí)現(xiàn)了基于區(qū)塊鏈可信的資產(chǎn)化、資產(chǎn)交易化、資產(chǎn)收益化和資產(chǎn)可跟蹤化的平臺(tái),解決了創(chuàng)業(yè)者與投資人之間互不信任的問(wèn)題及股權(quán)眾籌涉及到的法律等問(wèn)題。關(guān)鍵詞:眾籌、股權(quán)眾籌、區(qū)塊鏈、FabricAbstract:WiththecontinuousincreaseofpopulationbaseinChina,traditionalemploymentpositionsaregraduallybeingeliminatedbyartificialintelligenceandemergingtechnologies,whiletheStateadvocatesmassentrepreneurshipandvigorouslysupportssmallandmicroenterprises.Undersuchemploymentsituation,thisdesignusesthetechnologyofcombinationofHyperledgerFabricSDKandJAVA,realizestheplatformofassettransformation,assettransaction,assetprofitabilityandassettraceabilitybasedonthetrustworthinessofblockchain,andsolvestheproblemofmutualdistrustbetweenentrepreneursandinvestorsandthelegalissuesinvolvedinequityCrowd-funding.Keywords:Crowd-funding、Equity-basedcrowd-funding、Blockchain、Fabric緒論1.1論文研究背景自高校擴(kuò)招以來(lái),大學(xué)生畢業(yè)人數(shù)年年創(chuàng)新高,至2018年,已有超過(guò)820萬(wàn)畢業(yè)生,若加上中職畢業(yè)生與尚未就業(yè)學(xué)生,將超1500萬(wàn)人。就業(yè)難的問(wèn)題受到政府和社會(huì)的高度重視,尤其在十八大以來(lái),提出了“大眾創(chuàng)業(yè),大眾創(chuàng)新”的口號(hào),大學(xué)生創(chuàng)業(yè)的熱潮席卷而來(lái),隨之而來(lái)的便是創(chuàng)業(yè)成功率的問(wèn)題,與發(fā)達(dá)國(guó)家相比我國(guó)創(chuàng)業(yè)成功率只有2%~3%[1]。其主要原因是大學(xué)生創(chuàng)業(yè)并不受投資人的信任,大多無(wú)法完成項(xiàng)目融資便中斷了。因此創(chuàng)業(yè)者需要借助一個(gè)安全可靠的平臺(tái)來(lái)幫助達(dá)到融資的目的。融資的方式有債務(wù)性融資和權(quán)益性融資[2],債務(wù)性融資會(huì)構(gòu)成負(fù)債,采用抵押或貸款的方式獲得融資,但對(duì)于大學(xué)生來(lái)說(shuō),這樣的方式不適用。眾籌是一種新型的互聯(lián)網(wǎng)金融模式[3],指創(chuàng)業(yè)者向投資者募集資金,進(jìn)而獲得資金幫助,用于創(chuàng)作、發(fā)明、創(chuàng)業(yè)等活動(dòng),其成本低、快速等特點(diǎn)吸引了大多慕名而來(lái)的人。同時(shí)眾籌的缺點(diǎn)也暴露無(wú)疑,其安全性得不到保障和與非法集資掛的特點(diǎn)將大多數(shù)的慕名投資者擋在門外,而區(qū)塊鏈的出現(xiàn),將把眾籌帶上一個(gè)新的高度。區(qū)塊鏈的特點(diǎn)主要有去中心化、安全存儲(chǔ)各類交易數(shù)據(jù)、信息不可偽造和篡改等,保證了區(qū)塊鏈交易的可靠,加上加密技術(shù)保證了信息的不可泄露,這對(duì)于金融行業(yè)來(lái)說(shuō)將是一個(gè)巨大的保障,基于區(qū)塊鏈的眾籌平臺(tái)將會(huì)讓交易更加安全可靠,同時(shí)對(duì)交易信息進(jìn)行追溯,這使交易雙方對(duì)交易事實(shí)不可否認(rèn)。1.2國(guó)內(nèi)外研究現(xiàn)狀眾籌一詞自2010年傳入中國(guó)至今,經(jīng)歷過(guò)風(fēng)雨也有輝煌,根據(jù)金研院《我國(guó)眾籌行業(yè)的發(fā)展?fàn)顩r》顯示,截止2018年7月,我國(guó)眾籌平臺(tái)在經(jīng)歷2017年行業(yè)大洗牌后,其中存活下來(lái)的200+眾籌平臺(tái)中,股權(quán)型的眾籌平臺(tái)高達(dá)30.27%,僅次于權(quán)益型的眾籌平臺(tái)。在國(guó)內(nèi)的股權(quán)眾籌平臺(tái),大多與非法集資逃不開(kāi)關(guān)系,而有些融資者籌得資金后就攜款潛逃,政府難以對(duì)這些平臺(tái)進(jìn)行管理。而在國(guó)外,自美國(guó)股權(quán)眾籌鼻祖Angelist的上線以來(lái),不僅幫助自已完成融資,還幫助一千多家企業(yè)完成融資,美國(guó)政府也希望借此模式促進(jìn)企業(yè)發(fā)展,并簽署了《促進(jìn)初創(chuàng)企業(yè)融資法案》,為美國(guó)股權(quán)眾籌打開(kāi)了通道,并逐年完善監(jiān)管制度。在歐洲,其眾籌市場(chǎng)規(guī)模約占全球市場(chǎng)三分之二,歐洲對(duì)股權(quán)眾籌的支持表現(xiàn)在發(fā)出名為“眾籌在歐盟——發(fā)掘歐盟行動(dòng)的潛在附加價(jià)值”的《意見(jiàn)征詢書》,并且耐心進(jìn)行市場(chǎng)調(diào)查而且重視對(duì)投資者的保護(hù)[4]。而區(qū)塊鏈的應(yīng)用方面,“區(qū)塊鏈”技術(shù)在國(guó)外連花旗銀行、瑞銀、紐約梅隆、高盛、摩根大通等銀行被投入巨資進(jìn)行技術(shù)研發(fā)[5],國(guó)內(nèi)外學(xué)者和專家也紛紛提出區(qū)決鏈技術(shù)對(duì)未來(lái)金融業(yè)的影響。國(guó)內(nèi)的眾籌平臺(tái)像井噴式一樣的增長(zhǎng),眾籌面臨著許多問(wèn)題,主要是:一是開(kāi)展眾籌的平臺(tái)不能夠有足夠的可信力,這主要由于平臺(tái)技術(shù)不能支持它說(shuō)服投資者,投資者希望能更多地了解項(xiàng)目細(xì)節(jié)及執(zhí)行情況,而平臺(tái)主要是為了解決資金供需雙方的困難,實(shí)際上平臺(tái)本身不承擔(dān)受信責(zé)任,并不能保證投資都的資金是被合理使用的。二是在傳統(tǒng)眾籌項(xiàng)目中,項(xiàng)目的周期時(shí)間長(zhǎng),投資都很難從將資金在短時(shí)間變現(xiàn),如遇風(fēng)險(xiǎn)也不能及時(shí)轉(zhuǎn)售降低風(fēng)險(xiǎn),這對(duì)于一些中小投資者來(lái)說(shuō)是一種沒(méi)有回報(bào)的投資,他們很難接受這樣的風(fēng)險(xiǎn)。2.區(qū)塊鏈眾籌平臺(tái)相關(guān)內(nèi)容概述2.1區(qū)塊鏈眾籌平臺(tái)概述眾籌的興起源于艱難奮斗的藝術(shù)家們?yōu)閯?chuàng)作籌集資金的手段,通過(guò)搭建網(wǎng)絡(luò)平臺(tái)面對(duì)公眾籌資,以便使他們的夢(mèng)想有可能實(shí)現(xiàn),但現(xiàn)在已經(jīng)演變成為初創(chuàng)企業(yè)和個(gè)人為自己獲取資金的一個(gè)渠道。眾籌平臺(tái)在基于眾籌的功能上,大多數(shù)人逐漸追求更為安全可靠的平臺(tái)性能。在區(qū)塊鏈中,一個(gè)眾籌項(xiàng)目就相當(dāng)于一條區(qū)塊鏈,也是一個(gè)賬本,而一個(gè)用戶就相當(dāng)于區(qū)塊鏈中的成員,這條區(qū)塊鏈記錄了從項(xiàng)目誕生以來(lái)的所有交易信息。所有的成員都參與共同維護(hù)同一個(gè)賬本并在自己的節(jié)點(diǎn)創(chuàng)建賬本副本,達(dá)到去中心化的數(shù)據(jù)管理方式,成員之間用安全多方計(jì)算SMC[6]來(lái)實(shí)現(xiàn)互不信息的多方之間保護(hù)隱私的協(xié)同計(jì)算,保證了交易雙方的安全性和可靠性。 2.2區(qū)塊鏈眾籌平臺(tái)相關(guān)技術(shù)2.2.1區(qū)塊鏈關(guān)鍵技術(shù) 區(qū)塊鏈的構(gòu)建主要包括超級(jí)賬本技術(shù)、智能合約技術(shù)、Docker容器虛擬化等技術(shù),其基本內(nèi)容可以概括為:(1)超級(jí)賬本技術(shù)HyperledgerFabric[7]是被linux基金會(huì)設(shè)計(jì)來(lái)為使用模塊化架構(gòu)開(kāi)發(fā)區(qū)塊鏈應(yīng)用程序的基礎(chǔ),以便開(kāi)發(fā)人員能夠?qū)@些模塊實(shí)現(xiàn)即插即用的目的,它由來(lái)自開(kāi)發(fā)社區(qū)內(nèi)的多個(gè)組織的人員共同維護(hù)。Fabric使用容器技術(shù)來(lái)托管構(gòu)成系統(tǒng)應(yīng)用邏輯的智能合約(也稱為鏈代碼)。簡(jiǎn)而言之,HyperledgerFabric是為企業(yè)構(gòu)建的領(lǐng)先的開(kāi)源、通用區(qū)塊鏈結(jié)構(gòu)。其提供了五大核心模塊以支撐區(qū)塊的運(yùn)行,分別是peer、orderer、cryptogen、configtxgen、configtxlator。HyperledgerFabric的許多組件和模塊都是使用Go語(yǔ)言編寫的,這為Fabric提供了強(qiáng)大的海量并行支持[8]。(2)智能合約技術(shù)智能合約[9]又稱chaincode,簡(jiǎn)稱“鏈碼”。它在Fabric中是一段用Go、Java和Node.js編寫的,并能夠?qū)崿F(xiàn)預(yù)定義接口的程序。應(yīng)用系統(tǒng)可以調(diào)用這些程序來(lái)實(shí)現(xiàn)對(duì)區(qū)塊狀態(tài)的訪問(wèn)和控制,進(jìn)而完成業(yè)務(wù)邏輯或查詢結(jié)果。每一個(gè)智能合約都會(huì)實(shí)現(xiàn)區(qū)塊鏈接口,即“shim”,且必須實(shí)現(xiàn)init和invoke方法,以達(dá)到對(duì)應(yīng)用程序的初始化和響應(yīng)業(yè)務(wù)系統(tǒng)的各種invoke事務(wù)。一個(gè)鏈碼可以調(diào)用另一個(gè)鏈碼,若兩個(gè)鏈碼在不同的channel[10](通道)中,則只允許讀取類的查詢。(3)Docker容器虛擬化技術(shù)Docker是一個(gè)容器引擎,開(kāi)發(fā)人員可以他們的應(yīng)用打包移植到容器中,就可以使這些應(yīng)用運(yùn)行在任何一個(gè)Linux機(jī)器上。Docker能讓項(xiàng)目的部署更加快捷,提高了開(kāi)發(fā)效率。以往要部署一個(gè)mysql服務(wù)器,平均得耗時(shí)2小時(shí),而用Docker來(lái)實(shí)現(xiàn),只需要5分鐘[11];虛擬化的實(shí)現(xiàn)能讓你的機(jī)器運(yùn)行不同平臺(tái)的軟件或系統(tǒng),同一個(gè)Docker可以在不同環(huán)境中使用,這大大降低了硬件要求和應(yīng)用環(huán)境之間的耦合。Docker-compose是一個(gè)可以讓你輕松且高效的定義、管理和運(yùn)行多容器Docker應(yīng)用程序的工具,可以使用YAML文件來(lái)配置應(yīng)用服務(wù)。Fabric的各模塊都是通過(guò)Docker來(lái)打包并運(yùn)行的,以支持各節(jié)點(diǎn)“熱插撥”功能的支持。2.2.2Web平臺(tái)技術(shù)使用java來(lái)開(kāi)發(fā)web平臺(tái),主要采用了SSH的框架設(shè)計(jì),分別是Spring、Springmvc、Mybatis,在前端頁(yè)面主要采用了Bootstrap插件,其主要內(nèi)容概括為:(1)SpringSpring是由RodJohnson為解決企業(yè)在開(kāi)發(fā)大型應(yīng)用軟件時(shí)面臨的復(fù)雜性而開(kāi)發(fā)出的一種輕量級(jí)的容器型框架,它具有控制反轉(zhuǎn)(IOC)和面向切面(AOP)兩大特性??刂品崔D(zhuǎn)通過(guò)依賴注入的方式促進(jìn)了松耦合。當(dāng)創(chuàng)建一個(gè)對(duì)象且需要依賴其他對(duì)象時(shí),這些對(duì)象不用你自已去創(chuàng)建或去查找,而是通過(guò)Spring自己傳遞進(jìn)來(lái),即依賴注入,而依賴注入只是控制反轉(zhuǎn)的一個(gè)具體例子。面向切面編程,不是對(duì)某一個(gè)具體的對(duì)象編程,而是對(duì)某一類對(duì)象的所有對(duì)象編程,這是一個(gè)相對(duì)模糊和更加抽象化的編程。使用Spring開(kāi)發(fā)應(yīng)用軟件使得模塊之間的耦合度降低,提高了開(kāi)發(fā)的效率,它幫助你將橫切關(guān)注點(diǎn)從它們所影響的對(duì)象中分離出來(lái),然而依賴注入幫助你將你的應(yīng)用程序?qū)ο髲谋舜酥蟹蛛x出來(lái)。(2)Springmvc SpringMVC是在SpringWebFlow里的一款典型的基于mvc的web框架,用于代替servlet處理或響應(yīng)頁(yè)面請(qǐng)求,以及獲取表單,校驗(yàn)數(shù)據(jù)等功能。Springmvc通過(guò)大量的注解方式,使得操作變得更加效率,同時(shí)保留非注解方式,對(duì)于使用習(xí)慣其他web層框架的更加友好。核心控制器DispatcherServlet在整個(gè)生命周期里起到了至關(guān)重要的作用,包括了接收請(qǐng)求、調(diào)用資源、分派調(diào)用和響應(yīng)請(qǐng)求,貫穿于整個(gè)流程。處理映射器、處理適配器、視圖解析器是Springmvc的三大組件,分別實(shí)現(xiàn)了對(duì)請(qǐng)求url的映射、調(diào)用處理器、解析具體視圖的功能。(3)Mybatis Mybatis是一個(gè)基于Java的持久層框架,它支持普通的SQL語(yǔ)句、存儲(chǔ)過(guò)程以及高級(jí)映射,并且避免了JDBC代碼需要手工設(shè)置參數(shù)以及對(duì)結(jié)果集的手工檢索。相對(duì)于老對(duì)手hibernate更加靈活和簡(jiǎn)單,在處理SQL上更為細(xì)致,減少查詢字段,在應(yīng)付復(fù)雜查詢方面更為高效。(4)Bootstrap Bootstrap是一款基于HTML、CSS、JS的的前端開(kāi)發(fā)框架,具有簡(jiǎn)潔、直觀的特點(diǎn),它是由動(dòng)態(tài)css和less寫成的,設(shè)計(jì)者可以對(duì)所有組件的CSS變量進(jìn)行修改,也可以根據(jù)需求裁剪代碼。Bootstrap提供了帶有網(wǎng)絡(luò)系統(tǒng)、鏈接樣式、組件樣式的基本網(wǎng)頁(yè)結(jié)構(gòu),讓前端開(kāi)發(fā)更加快速,適用所有設(shè)備和所有項(xiàng)目。3.系統(tǒng)分析3.1用戶需求眾籌平臺(tái)近幾年來(lái),在國(guó)內(nèi)發(fā)展不斷狀大,平臺(tái)數(shù)量層出不窮,用戶量也相當(dāng)龐大[12],相信在將來(lái)會(huì)有更多的人參與到眾籌當(dāng)中來(lái)。隨著用戶和平臺(tái)的增加,用戶就不得不考慮眾籌平臺(tái)的安全性,目前國(guó)內(nèi)眾籌平臺(tái)大多采用中心化的數(shù)據(jù)庫(kù)服務(wù)來(lái)管理用戶的數(shù)據(jù),用戶無(wú)法對(duì)自己的數(shù)據(jù)進(jìn)行管理隨時(shí)會(huì)有被泄露的可能,因此為了最大程度上保障用戶的權(quán)益,需要采去中心化的方式來(lái)管理,如此,用戶信息將可以由自身來(lái)管理,而且還可以對(duì)其他用戶有一定的監(jiān)督作用。3.2功能需求 功能需求就是根據(jù)用戶的需求實(shí)現(xiàn)對(duì)應(yīng)的功能,本平臺(tái)應(yīng)在實(shí)現(xiàn)用戶眾籌的基本功能基礎(chǔ)上,要保障用戶信息的安全,不會(huì)出現(xiàn)信息被篡改、數(shù)據(jù)泄露的可能。其主要的功能模塊應(yīng)包括用戶模塊部分:提供用戶注冊(cè)查詢功能,發(fā)起眾籌模塊即用戶注冊(cè)成功后可以發(fā)起眾籌項(xiàng)目,跟投模塊部分即用戶可以根據(jù)自己的情況對(duì)已發(fā)起的眾籌進(jìn)行跟投,結(jié)算模塊即對(duì)到達(dá)一定條件的眾籌項(xiàng)目進(jìn)行結(jié)算功能。在眾籌中產(chǎn)生交易信息應(yīng)該被記錄在去中心化的數(shù)據(jù)庫(kù)中,以保障數(shù)據(jù)的安全可靠。3.3業(yè)務(wù)需求 開(kāi)發(fā)一個(gè)基于區(qū)塊鏈的股權(quán)眾籌平臺(tái),應(yīng)該在眾籌的基本功能基礎(chǔ)上,保證交易的公正性,即拋開(kāi)第三方的數(shù)據(jù)管理,將權(quán)利分配給所有用戶,提升可信度,其次保證用戶的數(shù)據(jù)不被其他用戶竊取、篡改。一個(gè)完整的眾籌項(xiàng)目業(yè)務(wù)流程應(yīng)該是:用戶發(fā)起一個(gè)眾籌項(xiàng)目,首先進(jìn)行區(qū)塊數(shù)據(jù)的驗(yàn)證,驗(yàn)證合格后進(jìn)行數(shù)據(jù)庫(kù)的保存及區(qū)塊鏈的關(guān)聯(lián),并在頁(yè)面中對(duì)發(fā)起的項(xiàng)目進(jìn)行展示;另一個(gè)用戶可以查詢已經(jīng)發(fā)起的項(xiàng)目,并進(jìn)行跟投,最后,在項(xiàng)目達(dá)到某種條件之后,可以對(duì)項(xiàng)目進(jìn)行結(jié)算[13]。4.基于區(qū)塊鏈的眾籌平臺(tái)的架構(gòu)設(shè)計(jì)4.1總體功能設(shè)計(jì) 業(yè)務(wù)系統(tǒng)的設(shè)計(jì)包括了用戶模塊、發(fā)起模塊、跟投模塊和結(jié)算模塊四大模塊。其中在用戶模塊中可以進(jìn)入用戶的注冊(cè)登錄,該功能可能是每個(gè)平臺(tái)網(wǎng)站必不可少的,除此之外,針對(duì)區(qū)塊鏈,還添加了加入節(jié)點(diǎn)的功能。除了用戶模塊,作為該平臺(tái)重要的業(yè)務(wù)支撐,其他三大模塊也是必不可少的功能。綜上,眾籌平臺(tái)業(yè)務(wù)系統(tǒng)的功能結(jié)構(gòu)圖如下圖1所示:圖1系統(tǒng)功能結(jié)構(gòu)圖4.1.1用戶模塊功能設(shè)計(jì)用戶模塊設(shè)計(jì):在系統(tǒng)中設(shè)計(jì)了有3種角色,一種是平臺(tái)的普通用戶,一種是區(qū)塊系統(tǒng)普通用戶,還有一種是區(qū)塊鏈管理員用戶。平臺(tái)普通用戶主要用于登錄此平臺(tái),只能進(jìn)行查詢眾籌項(xiàng)目的功能;區(qū)塊系統(tǒng)普通用戶能對(duì)眾籌項(xiàng)目進(jìn)行查詢、跟投、個(gè)人結(jié)算操作;區(qū)塊系統(tǒng)管理員用戶,是該區(qū)塊鏈的發(fā)起者,擁有發(fā)起眾籌項(xiàng)目的權(quán)限,也擁有對(duì)該區(qū)塊鏈成員的加入和踢除權(quán)限。平臺(tái)普通用戶可以通過(guò)加入組織來(lái)成為區(qū)塊鏈用戶,需要管理員用戶將文件加入該區(qū)塊網(wǎng)絡(luò),在平臺(tái)進(jìn)行任何操作都需要進(jìn)行登錄。4.1.2發(fā)起模塊功能設(shè)計(jì) 發(fā)起模塊設(shè)計(jì):該功能通過(guò)將由區(qū)塊鏈管理用戶發(fā)起,在頁(yè)面中輸入項(xiàng)目的具體信息,發(fā)布到平臺(tái)上。項(xiàng)目的信息會(huì)經(jīng)由區(qū)塊網(wǎng)絡(luò)生成一個(gè)超級(jí)賬本,記錄到區(qū)塊鏈中,這些信息包括了項(xiàng)目的名字、項(xiàng)目的啟動(dòng)資金、項(xiàng)目的籌集資金、項(xiàng)目的狀態(tài)等,這些信息也會(huì)通過(guò)存儲(chǔ)在數(shù)據(jù)庫(kù)中,以便系統(tǒng)更優(yōu)的運(yùn)行。4.1.3跟投模塊功能設(shè)計(jì) 跟投模塊設(shè)計(jì):在加入?yún)^(qū)塊鏈并成員賬本成員后,可以對(duì)平臺(tái)中的項(xiàng)目進(jìn)行跟投,也就是投資。跟投成功后,如果項(xiàng)目未結(jié)束,你可以通過(guò)個(gè)人結(jié)算選擇退出投資或者將投資轉(zhuǎn)移給同一區(qū)塊鏈中的其他成員,以退出投資,當(dāng)然,這些信息會(huì)在區(qū)塊鏈中生成區(qū)塊以記錄,在數(shù)據(jù)庫(kù)也同樣會(huì)記錄這些信息。4.1.4結(jié)算模塊功能設(shè)計(jì) 結(jié)算模塊設(shè)計(jì):項(xiàng)目眾籌成功后,資金將變成項(xiàng)目所有,通過(guò)個(gè)人結(jié)算可以在項(xiàng)目未結(jié)束之前退出眾籌或者轉(zhuǎn)讓,以規(guī)避風(fēng)險(xiǎn);項(xiàng)目結(jié)算是在項(xiàng)目需要結(jié)束的時(shí)候結(jié)束此次眾籌,將以投資的比例回報(bào)或虧損給投資人,這意味著區(qū)塊鏈的生命周期結(jié)束。4.2系統(tǒng)模型設(shè)計(jì)在本設(shè)計(jì)中,采用了應(yīng)用系統(tǒng)加區(qū)塊鏈系統(tǒng)的結(jié)合的方式。Tomcat承擔(dān)了部署應(yīng)用系統(tǒng)的任務(wù),使應(yīng)用系統(tǒng)提交請(qǐng)求到區(qū)塊鏈系統(tǒng)的智能合約,ca模塊去驗(yàn)證請(qǐng)求的合法性,peer執(zhí)行本次合約的具體代碼并生成交易區(qū)塊block,而且還會(huì)將執(zhí)行的結(jié)果驗(yàn)證并返回給智能合約,orderer則對(duì)交易區(qū)塊進(jìn)行驗(yàn)證和排序,couchdb將對(duì)這些排好序區(qū)塊進(jìn)行存儲(chǔ)。其總體的架構(gòu)如下圖2所示:圖2 眾籌平臺(tái)系統(tǒng)模型4.3區(qū)塊系統(tǒng)架構(gòu)設(shè)計(jì)Fabric是一個(gè)可擴(kuò)展性的模塊化的開(kāi)源github區(qū)塊鏈項(xiàng)目,這些模塊都被打包成鏡像且相互依賴,它們都用Docker來(lái)充當(dāng)運(yùn)行媒介。這些模塊都是一個(gè)節(jié)點(diǎn),它們可以被全部虛擬化在一臺(tái)主機(jī)中,可以分散配置在各個(gè)主機(jī)中,而這些主機(jī)可以是一臺(tái)物理主機(jī)或者虛擬機(jī),且必須支持Docker的運(yùn)行。Fabric的模塊化在結(jié)構(gòu)上也分了層次,在底層利用Gossip協(xié)議進(jìn)行同步[14],利用gRPC進(jìn)行交互,這些交互都基于了P2P網(wǎng)絡(luò)。在中間層分為許多組件和模塊,權(quán)限管理利用現(xiàn)有的密碼學(xué)技術(shù),如PKI體系、數(shù)字證書、加解密算法來(lái)保證數(shù)據(jù)的安全,同時(shí)使用策略來(lái)指定各場(chǎng)景下的操作權(quán)限。賬本是Fabric最核心的結(jié)構(gòu),記錄著應(yīng)用的信息,應(yīng)用則通過(guò)發(fā)起交易來(lái)向賬本中記錄數(shù)據(jù);交易的執(zhí)行通過(guò)鏈碼來(lái)實(shí)現(xiàn),并且制約于區(qū)塊鏈結(jié)構(gòu)和共識(shí)機(jī)制;鏈碼的執(zhí)行又基于容器和狀態(tài)。而在應(yīng)用層,開(kāi)發(fā)者只需要通過(guò)gRPC和SDK的API來(lái)和這些資源打交道即可,無(wú)需關(guān)心如何實(shí)現(xiàn)。這些模塊的結(jié)構(gòu)如下圖3所示:圖3系統(tǒng)模塊結(jié)構(gòu)4.4 應(yīng)用系統(tǒng)結(jié)構(gòu)設(shè)計(jì)在web應(yīng)用平臺(tái)的設(shè)計(jì)也分為了前端和后端的設(shè)計(jì),前端的設(shè)計(jì)使用了jsp來(lái)展示內(nèi)容,jquery用于獲取頁(yè)面組件的一些屬性和內(nèi)容,Javascript用來(lái)響應(yīng)用戶對(duì)網(wǎng)頁(yè)的操作,比如即時(shí)的檢查等,jquery與javascript的結(jié)合,使得用戶與平臺(tái)的交互更加順暢,也減少了程序設(shè)計(jì)人員編碼工作;Ajax可以讓平臺(tái)在不刷新網(wǎng)頁(yè)的情況下去數(shù)據(jù)庫(kù)獲取一些信息,也是為了增加交互的一種設(shè)計(jì);Bootstrap插件擁有自己的組件風(fēng)格,這讓整個(gè)頁(yè)面顯得更加好看,在沒(méi)有UI的情況下,Bootstrap是一個(gè)簡(jiǎn)單的布局工具。后端的設(shè)計(jì)中使用了Spring作為容器框架各組件的生命周期,包括了對(duì)Springmvc的配置文件、service和dao這些對(duì)象;mybatis的配置文件和mapper文件。Springmvc是業(yè)務(wù)的控制器,它主要是通過(guò)自身的映射控制器去找到對(duì)應(yīng)的控制器、服務(wù)和數(shù)據(jù)庫(kù)操作對(duì)象,讓它們能夠正常工作,其中service是為了完成某種任務(wù)而建立的一種服務(wù),服務(wù)調(diào)用dao去數(shù)據(jù)庫(kù)執(zhí)行任務(wù)。Mybatis是持久層的一種框架,它通過(guò)mapper映射了dao對(duì)象的所有操作語(yǔ)句,dao對(duì)象在執(zhí)行任務(wù)的時(shí)候就會(huì)去查找這個(gè)映射從而執(zhí)行具體的語(yǔ)句。在本系統(tǒng)中,為了保證數(shù)據(jù)的安全可信任引入了Fabric的支持,在發(fā)生交易的時(shí)候,應(yīng)用系統(tǒng)就會(huì)通過(guò)service去調(diào)用FabricManager,實(shí)現(xiàn)交易能在區(qū)塊系統(tǒng)中進(jìn)行。FabricManager是用于管理應(yīng)用系統(tǒng)中的Fabric實(shí)例的一種管理器,通過(guò)它可以去調(diào)用ChaincodeManager從而實(shí)現(xiàn)對(duì)區(qū)塊系統(tǒng)的訪問(wèn);FabricConfig是用于配置應(yīng)用系統(tǒng)與區(qū)塊系統(tǒng)連接的屬性配置文件;ChaincodeManager是SDK的實(shí)現(xiàn),即可通過(guò)網(wǎng)絡(luò)調(diào)用區(qū)塊鏈中chaincode的代碼實(shí)現(xiàn)交易。綜上,整個(gè)應(yīng)用系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)為下圖4所示:圖4眾籌平臺(tái)應(yīng)用系統(tǒng)結(jié)構(gòu)4.5數(shù)據(jù)庫(kù)設(shè)計(jì) 基于區(qū)塊鏈的眾籌平臺(tái)的數(shù)據(jù)庫(kù)設(shè)計(jì),基本的實(shí)體對(duì)象為用戶和項(xiàng)目,其中主要的數(shù)據(jù)庫(kù)表包括用戶表、項(xiàng)目表、投資詳細(xì)表、個(gè)人結(jié)算信息表。用戶表ZC_USER,是用戶的信息表,其中的字段包括了用戶的標(biāo)識(shí)(ID)、用戶名(USERNAME)、用戶密碼(PASSWORD)、加入組織名稱(ORG)、賬戶(COUNT)。其表的設(shè)計(jì)結(jié)構(gòu)如下表1所示:表1用戶表字段名類型是否為空注釋IDVARCHAR2否用戶標(biāo)識(shí)USERNAMEVARCHAR2否用戶名PASSWORDVARCHAR2否用戶密碼ORGVARCHAR2否加入的組織COUNTFLOAT否用戶賬戶BLOCK_IDVARCHAR2否用戶在區(qū)塊中的標(biāo)識(shí)項(xiàng)目表ZC_PROJECT,是眾籌項(xiàng)目信息表,其中的字段包括了項(xiàng)目標(biāo)識(shí)(PROJ_ID)、項(xiàng)目名(PROJ_NAME)、項(xiàng)目描述(PROJ_CONTEXT)、項(xiàng)目預(yù)籌金額(PROJ_ALL_FUND)、項(xiàng)目已籌金額(PROJ_RAISE_FUND)、項(xiàng)目狀態(tài)(PROJ_STATUS)。其表的設(shè)計(jì)結(jié)構(gòu)如下表2所示:表2項(xiàng)目表字段名類型是否為空注釋PROJ_IDVARCHAR2否項(xiàng)目標(biāo)識(shí)PROJ_NAMEVARCHAR2否項(xiàng)目名PROJ_CONTEXTVARCHAR2是項(xiàng)目描述PROJ_ALL_FUNDFLOAT否項(xiàng)目預(yù)籌金額PROJ_RAISE_FUNDFLOAT是項(xiàng)目已籌金額PROJ_STATUSVARCHAR2否項(xiàng)目狀態(tài)PROJ_BLOCK_IDVARCHAR2否項(xiàng)目在區(qū)塊中的標(biāo)識(shí)投資詳細(xì)INVEST_DETAIL,是眾籌投資的信息表,其中的字段包括了記錄標(biāo)識(shí)(INVEST_ID)、用戶標(biāo)識(shí)(USER_ID)、項(xiàng)目標(biāo)識(shí)(PROJ_ID)、投資金額(INVEST_AMOUNT)。其表的設(shè)計(jì)結(jié)構(gòu)如下表3所示:表3投資詳細(xì)表字段名類型是否為空注釋INVEST_IDVARCHAR2否記錄標(biāo)識(shí)USER_IDVARCHAR2否用戶標(biāo)識(shí)PROJ_IDVARCHAR2否項(xiàng)目標(biāo)識(shí)INVEST_AMOUNTFLOAT否投資金額BLOAK_IDVARCHAR2否記錄交易信息的區(qū)塊ID個(gè)人結(jié)算SETTLE_PERSON,是個(gè)人結(jié)算的信息表,其中的字段包括了項(xiàng)目標(biāo)識(shí)(SETTLE_ID)、項(xiàng)目名(AUSER_ID)、項(xiàng)目描述(BUSER_ID)、項(xiàng)目預(yù)籌金額(DEAL_AMOUNT)。其表的設(shè)計(jì)結(jié)構(gòu)如下表4所示:表4個(gè)人結(jié)算表字段名類型是否為空注釋SETTLE_IDVARCHAR2否結(jié)算標(biāo)識(shí)AUSER_IDVARCHAR2否交易人標(biāo)識(shí)BUSER_IDVARCHAR2否被交易人標(biāo)識(shí)DEAL_AMOUNTVARCHAR2否交易金額5.基于區(qū)塊鏈的眾籌平臺(tái)的實(shí)現(xiàn)5.1區(qū)塊鏈系統(tǒng)實(shí)現(xiàn) 從github下載安裝Fabric源碼進(jìn)行安裝,并切換使用版本為v1.1.0。由于Fabric的各模塊都被打包成鏡像放在DockerHub上,所以我們需要參照Fabric鏡像關(guān)系將這些鏡像按照下載到本地,以供容器運(yùn)行。下載的時(shí)候特別要注意版本與鏡像之間的關(guān)系,例如將peer節(jié)點(diǎn)下載到本地的命令如圖5如示:圖5下載peer節(jié)點(diǎn)到本地 在該區(qū)塊鏈系統(tǒng)中需要5個(gè)節(jié)點(diǎn),分別是cli、peer、couchdb、ca、orderer。將這些節(jié)點(diǎn)都布署在一臺(tái)虛擬機(jī)上,以容器的方式運(yùn)行,因此我們需要為這些節(jié)點(diǎn)編寫Docker-compose文件。每個(gè)添加一個(gè)peer節(jié)點(diǎn),要保證該節(jié)點(diǎn)能夠獨(dú)存儲(chǔ)區(qū)塊鏈副本以及節(jié)點(diǎn)之間的驗(yàn)證,就需要一起將cli、peer、couchdb、ca定義在節(jié)點(diǎn)中,同時(shí)通過(guò)拷貝證書文件,保證每個(gè)節(jié)點(diǎn)的證書一致。例如ca容器的定義如下圖6所示:圖6ca容器在yaml文件中的定義 Channel是在Fabric中一個(gè)重要的對(duì)象,在區(qū)塊鏈網(wǎng)絡(luò)中,要?jiǎng)?chuàng)建一個(gè)鏈必須創(chuàng)建一個(gè)通道,然后將節(jié)點(diǎn)成員加入到該通道,由這些成員來(lái)共同維護(hù)超級(jí)賬本。通道的創(chuàng)建不僅是為了創(chuàng)建區(qū)塊鏈,還保證了賬本的私有化,同時(shí)限制了信息傳播的范圍。Channel的創(chuàng)建命令如下圖7所示:圖7創(chuàng)建channel編寫智能合約代碼,以實(shí)現(xiàn)對(duì)區(qū)塊鏈的操作,其中查詢的智能合約代碼如下圖8所示:圖8chaincode查詢 至此,本文即實(shí)現(xiàn)了區(qū)塊鏈系統(tǒng)的部署。容器信息如下表5所示:表5區(qū)塊鏈系統(tǒng)容器信息CONTAINERIDIMAGECOMMANDPORTSNAMES6a24cc9ec380Hyperledger/Fabric-tools"/bin/bash"clic7b37dd4e821Hyperledger/Fabric-peer"peernodestart":7051-7053->7051-7053/tcp03680bd135edHyperledger/Fabric-couchdb"tini--/Docker-ent…"4369/tcp,9100/tcp,:5984->5984/tcpcouchdb9bf3f912519aHyperledger/Fabric-ca"sh-c'Fabric-ca-se…":7054->7054/tcpcabb8f6d648268Hyperledger/Fabric-orderer"orderer":7050->7050/tcp5.2用戶模塊的實(shí)現(xiàn) 用戶模塊的注冊(cè)功能通過(guò)在home.jsp頁(yè)面點(diǎn)擊用戶頭像按鈕,會(huì)彈出模態(tài)框,當(dāng)點(diǎn)擊注冊(cè)按鈕,則跳轉(zhuǎn)到regist.jsp頁(yè)面,由該頁(yè)面提交用戶注冊(cè)的表單信息到后臺(tái),檢測(cè)數(shù)據(jù)格式匹配后,添加到用戶信息表。而登錄功能也是同樣在home.jsp點(diǎn)擊用戶頭像按鈕,再選擇登錄,在彈出的模態(tài)框中輸入用戶名密碼,再點(diǎn)擊提交表單信息,到數(shù)據(jù)庫(kù)中驗(yàn)證用戶名密碼是否正確,若登錄成功則跳轉(zhuǎn)到用戶界面,若登錄失敗則在此頁(yè)面中提示錯(cuò)誤信息。其流程圖如以下圖9所示:圖9用戶模塊的流程圖 數(shù)據(jù)庫(kù)方面選擇的是oracle,在后端由Mybatis去連接數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)的配置文件表現(xiàn)為圖10所示:圖10連接數(shù)據(jù)的配置文件登錄界面如圖11所示:圖11登錄界面用戶頁(yè)面如圖12所示:圖12用戶頁(yè)面 在用戶參與眾籌之前,應(yīng)該進(jìn)行加入節(jié)點(diǎn)的操作,實(shí)現(xiàn)用戶與區(qū)塊鏈的節(jié)點(diǎn)相對(duì)應(yīng)。加入節(jié)點(diǎn)的頁(yè)面如圖13所示:圖13加入節(jié)點(diǎn) 加入節(jié)點(diǎn)命令如圖14所示:圖14節(jié)點(diǎn)的加入5.3發(fā)起模塊的實(shí)現(xiàn) 發(fā)起眾籌項(xiàng)目的功能通過(guò)在home.js點(diǎn)擊發(fā)起眾籌按鈕跳轉(zhuǎn)到發(fā)起頁(yè)面,在此頁(yè)面中輸入項(xiàng)目的信息,如項(xiàng)目名稱、項(xiàng)目預(yù)期資金等信息。服務(wù)器獲得這些信息后,將這些信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,在此之前,應(yīng)完成區(qū)塊鏈channel的創(chuàng)建,發(fā)起成功后將會(huì)返回到主頁(yè)面,發(fā)起失敗則返回失敗信息。其流程圖為如下圖15所示:圖15發(fā)起流程發(fā)起項(xiàng)目的原型圖如下圖16所示:圖16發(fā)起眾籌項(xiàng)目界面5.4跟投模塊的實(shí)現(xiàn) 跟投功能會(huì)首先會(huì)通過(guò)搜索框或者跟投頁(yè)面查看有哪些眾籌項(xiàng)目,然后點(diǎn)擊項(xiàng)目,就可輸入金額進(jìn)行跟投,后臺(tái)會(huì)通過(guò)查詢你是否加入通道,如果沒(méi)有加入通道不能進(jìn)行跟投,若已經(jīng)加入則查詢你的賬戶是否有足夠的余額,然后在項(xiàng)目籌集資金賬戶中和跟投的賬戶中增加和減去相應(yīng)的金額。跟投成功后返回查詢頁(yè)面,失敗后返回失敗信息。其流程圖如下圖17所示:圖17跟投流程 為保證交易的可靠性,在區(qū)塊鏈中的交易是一個(gè)復(fù)雜的過(guò)程,當(dāng)成員加入到通道后,應(yīng)用系統(tǒng)通過(guò)SDK或API生成交易議案(Proposal)給背書(Endorser)節(jié)點(diǎn)。背書結(jié)點(diǎn)收到議案后,會(huì)對(duì)其進(jìn)行合法性和ACL權(quán)限檢查,通過(guò)模擬運(yùn)行,將運(yùn)行結(jié)果進(jìn)行背書返回給應(yīng)用系統(tǒng)。應(yīng)用系統(tǒng)收到背書信息后對(duì)其進(jìn)行檢查比對(duì),對(duì)交易提案進(jìn)行廣播,并發(fā)送給Orderer進(jìn)行排序。Ordere不讀取交易細(xì)節(jié),從網(wǎng)絡(luò)中接收交易,按時(shí)間順序調(diào)用每個(gè)通道的交易,為每個(gè)通道創(chuàng)建交易區(qū)塊,然后發(fā)送給Committer節(jié)點(diǎn),Committer節(jié)點(diǎn)獲取排序后的交易區(qū)塊,對(duì)這些交易區(qū)塊進(jìn)行最后檢查并更新賬本,然后將區(qū)塊加入到鏈中并記錄交易是否有效。區(qū)塊鏈中的交易流程如下圖18所示:圖18區(qū)塊交易流程跟投將會(huì)產(chǎn)生交易,交易調(diào)用區(qū)塊的代碼如下圖19所示圖19調(diào)用區(qū)塊進(jìn)行交易跟投頁(yè)面如下圖20所示:圖20跟投頁(yè)面5.5結(jié)算模塊的實(shí)現(xiàn)結(jié)算模塊包括了個(gè)人結(jié)算和項(xiàng)目結(jié)算,個(gè)人結(jié)算在項(xiàng)目界面點(diǎn)擊個(gè)人結(jié)算,可以選擇交易人,即可把投資記錄轉(zhuǎn)為他人,以獲取其他利益,如果選擇自己,則將投資原款退回賬戶。項(xiàng)目結(jié)算會(huì)判斷項(xiàng)目是否已經(jīng)完成眾籌,只有完成眾籌的項(xiàng)目才能選擇項(xiàng)目結(jié)算,并且只能由發(fā)起人操作。其中個(gè)人結(jié)算流程如圖21所示:圖21個(gè)人結(jié)算流程個(gè)人結(jié)算頁(yè)面如圖22所示:圖22個(gè)人結(jié)算頁(yè)面6.系統(tǒng)測(cè)試6.1測(cè)試方法本次系統(tǒng)測(cè)試的方法采用應(yīng)用系統(tǒng)加區(qū)塊系統(tǒng)的結(jié)合測(cè)試,在開(kāi)發(fā)階段已經(jīng)對(duì)每個(gè)功能模塊進(jìn)行了測(cè)試,保證了每個(gè)模塊能夠按照預(yù)期的流程進(jìn)行,再進(jìn)行系統(tǒng)集成測(cè)試,主要是測(cè)試每個(gè)功能與區(qū)塊鏈接口的完整性和可效性,以使得整個(gè)系統(tǒng)能按需求正常運(yùn)行。6.2測(cè)試用例1)用戶模塊功能測(cè)試 通過(guò)注冊(cè)和登錄兩個(gè)用戶A和B,在頁(yè)面測(cè)試用戶模塊的各個(gè)功能是否可以正操作運(yùn)行,測(cè)試結(jié)果見(jiàn)表6所示:表6用戶模塊功能測(cè)試 操作用例結(jié)果測(cè)試結(jié)果注冊(cè)用戶用戶名不重名一致登錄用戶能正常跳轉(zhuǎn)頁(yè)面一致加入節(jié)點(diǎn)能修改組織字段一致轉(zhuǎn)賬雙方用戶可以進(jìn)行轉(zhuǎn)賬操作一致2)發(fā)起模塊功能測(cè)試 管理員通過(guò)發(fā)起眾籌,然后去執(zhí)行創(chuàng)建通道的命令,查看是否可以創(chuàng)建成功,測(cè)試結(jié)果見(jiàn)表7所示:表7發(fā)起模塊功能測(cè)試操作用例結(jié)果測(cè)試結(jié)果發(fā)起眾籌數(shù)據(jù)庫(kù)能正常記錄項(xiàng)目信息一致通道創(chuàng)建通道創(chuàng)建正常一致加入默認(rèn)節(jié)點(diǎn)節(jié)點(diǎn)加入通道并生成創(chuàng)世區(qū)塊一致3)跟投模塊功能測(cè)試 用戶選擇想?yún)⑴c的項(xiàng)目并跟投后,生成跟投記錄,并從對(duì)應(yīng)的賬戶中執(zhí)行增加和減去金額,我們從區(qū)塊鏈中和數(shù)據(jù)庫(kù)中數(shù)據(jù)是否正確,測(cè)試結(jié)果見(jiàn)表8所示:表8發(fā)起模塊功能測(cè)試操作用例結(jié)果測(cè)試結(jié)果跟投項(xiàng)目數(shù)據(jù)庫(kù)能正常記錄跟投信息一致項(xiàng)目賬戶增加增加了相應(yīng)資金一致成員賬戶減少減少了相應(yīng)資金一致4)結(jié)算模塊功能測(cè)試 當(dāng)眾籌發(fā)起者想結(jié)束此次項(xiàng)目或者投資者想提

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論