基于区块链众筹平台的设计与实现计算机专业_第1页
基于区块链众筹平台的设计与实现计算机专业_第2页
基于区块链众筹平台的设计与实现计算机专业_第3页
基于区块链众筹平台的设计与实现计算机专业_第4页
免费预览已结束,剩余38页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要自2008年国际金融危机爆发以来,全球经济严重衰退,增长乏力。在此背景下,属于互联网金融范畴的众筹模式开始出现,并引起了人们的普遍关注。作为现代经济发展中不可或缺的融资模式,众筹的发展成为了国家和社会共同关心的问题。此外,由于金融行业的特殊性质,任何互联网金融平台都应当保证极高的安全性和一定的隐私性。因此,如何设计并实现一个安全可靠的众筹平台具有重要意义。 近年来,随着比特币等数字货币的流行,区块链技术逐渐走入互联网及金融从业人员的视野。区块链作为比特币的底层实现技术,本质上是一个去中心化的数据库。由于其特殊且巧妙的设计,区块链具有去中心化、自治性、信息不可篡改性和匿名性等特点。因此,以

2、区块链为基础实现的众筹平台将具有极高的安全性,能有力保证用户的财产安全。本文首先从众筹模式产生的背景和发展情况入手,阐述了众筹的基本概念以及发展过程。在此基础上,简要介绍了区块链以及基于区块链的智能合约等概念。随后是对系统的需求分析、模块设计、安全设计,以及系统的实现过程。本系统实现的主要功能包括:用户管理,发起众筹项目,投资众筹项目,发起提议,投票,获取回报等。本系统在区块链上以智能合约的形式实现了众筹平台的基本功能,并向用户提供了简洁友好的操作界面,探索了区块链技术在互联网金融领域的应用方向。关键词:互联网金融;众筹;区块链;智能合约- I -The Design and Implemen

3、tation of Crowdfunding Platform based on BlockchainAbstract Since the onset of the international financial crisis, the global economy experienced severe recession and lack of growth factor. In this background, crowdfunding which serves as a burgeoning financial industry arised and has drawed widespr

4、ead attention. As an essential part of the internet banking in the development of modern economy, the state and society have both given close attenion to the development of crowdfunding. Besides, due to the speciality of financial industry, any internet financial platform should guarantee high secur

5、ity and relative privacy. So, how to design and implement a sucure and reliable crowdfunding platform is of vital importance.In recent years, with the popularity of digital currency (e.g. Bitcoin), blockchain gradually grasps eyes of financial and internet staves. Blockchain, which serves as the fun

6、damental technology of Bitcoin, is substantially a decentralized database. It is decentralized, autonomous, unchangeable and anonymous because of its special and artful design. So, a crowdfunding platform based on blockchain is highly secure and can guarantee the safety of usersproperty. This paper

7、firstly raises the background, development status and the basic concept of the crowdfunding mode. On this basis, the writer will simply introduce the concept and implementation of blockchain, as well as smart contract. Next the writer will elaborate the requirements analysis, system design and syste

8、m implementation. The main functions realized in this platform include creating a project, investmenting a project, proposing a proposal, voting, retriving rewards and transfer shares and so on.Key Words:Internet Banking;Crowdfunding;Blockchain;Smart Contract- IV -目 录摘 要IAbstractII1 绪论11.1 课题的背景与现状2

9、1.1.1 课题的背景21.1.2 国内外现状21.2 课题的提出与意义31.2.1 课题的提出31.2.2 课题的意义31.3 本文结构安排42 相关技术52.1 区块链52.1.1 基本概念52.2.2 数据结构52.2.3 共识机制62.2 以太坊72.2.1 基本概念72.2.2 以太坊技术82.3 智能合约93 需求分析103.1 可行性分析103.2 系统需求分析103.2.1 用户管理功能113.2.2 项目管理功能123.2.3 提议管理功能143.2.4 众筹平台主体功能143.2.5 众筹项目主体功能143.2.6 非功能需求144 系统设计164.1 系统概述164.2

10、系统模块设计164.2.1 用户管理模块174.2.2 项目管理模块174.2.3 提议管理模块184.2.4 众筹平台主体模块194.2.5 众筹项目主体模块194.3 安全设计214.3.1 以太坊安全设计214.3.2 系统安全215 系统实现225.1 用户管理模块的实现225.2 项目管理模块的实现235.3 提议管理模块的实现265.4 众筹平台主体的实现275.5 众筹项目主体的实现286 系统测试296.1 系统功能测试296.2 安全测试30结 论32参 考 文 献33附录A 众筹项目主体代码34致 谢371 绪论近年来,我国的互联网行业步入了高速发展的阶段,已逐渐形成仅次于

11、美国的全球第二大互联网市场。与此同时,乘着“互联网+”的东风,我国的互联网金融行业也呈现出迅猛发展的态势,这一新兴的金融势力不仅对我国传统的金融行业产生了很大的影响和冲击,也使得传统金融体系开始进行改变和创新。“互联网金融”一词在 2016年两会的政府工作报告中被反复提及,互联网金融的发展壮大与李克强总理提出的“大众创业,万众创新”相辅相成。在过去的数年中,互联网金融虽然遭到了一些人的怀疑和担忧,却依然蓬勃发展,逐步成为我国金融机制的重要组成部分。从市场前景上看,2016年中国互联网金融行业市场规模将达17.8万亿。而众筹,作为一种创新的互联网金融发展模式,自2011年国内第一家众筹平台出现以

12、来,逐渐得到了大量来自社会及政府各界的关注。众筹是一种新型的融资模式,具有开放、大众、小额、便捷的特点。许多融资人和投资人已经开始关注和接受众筹,其市场规模正在不断扩张,未来前景十分广阔。但是,互联网金融的快速发展也带来了一系列问题。以2015年的“e租宝”事件为例,该平台将用户托管的500多亿资金挪作私用,除了一部分用户资金用于还付本金及利息外,大量资金被高管挥霍,或用于支付公司高额的营销费用。此次事件极大地损害了人们对互联网金融的信任,造成了极其恶劣的影响。在这种情况下,众筹平台的安全性和可靠性显得格外重要。一般而言,平台的安全性需要运营方作担保,一旦运营方产生恶意,投资者的权益将会遭到严

13、重损害。通过采用区块链技术,将不再需要信任一个可靠的运营方,用户的财产由区块链自身的机制保证安全。本文旨在为融资人和投资人搭建一个“安全,透明,公正”的互联网投融资平台,在该平台上融资人能在区块链网络中发布自己的众筹项目,投资人可以投资自己中意的项目,并通过投票参与项目决策,等到项目产生收益后,投资人能够根据自己持有的股份获取相应的收益。以上过程都在区块链上完成,不需要任何第三方机构介入,因此有效避免了因信任恶意第三方而造成的财产损失,也就杜绝了类似“e租宝”事件的发生。通过对这样一个众筹平台的研究,我们发现区块链技术在互联网金融领域有很多用武之地,能够有效解决信任和资金安全等问题。如今越来越

14、多的人们已开始关注区块链,相信区块链技术的普及将为互联网金融的真正繁荣打下坚实基础。1.1 课题的背景与现状1.1.1 课题的背景众筹,译自英文crowdfunding一词,本意是大众筹资或群众筹资。众筹概念诞生之初,指的是艺术家在互联网上展示其创意或作品,吸引大众的关注和支持,得到人们的资金援助来帮助实现自己的想法。后来,众筹逐渐发展成一种创业公司或个人为实现自己的项目筹取资金的方式。Ethan Mollick给出众筹更严谨的定义为:融资者不需要通过传统的财务投资人进行融资,而是直接通过互联网平台,寻求更加广泛的投资者和资金,每个投资者以适合自己的相对较少的额度对融资者提供资金支持,从而获得

15、预计产出的产品或股权回报。一般来说,众筹模式中主要的参与主体由三部分组成,分别是融资人,投资人以及众筹平台。融资人是拥有创业想法、创业计划,以及融资意愿的个人或企业;投资人是希望在众筹平台上寻求项目进行投资,从而达到资产增值目的的广大用户。众筹平台则是一条连接双方的桥梁,在众筹平台上,融资人可以描述自己的创业计划,吸引投资人的注意,获得资金支持;而投资者则通过对项目进行投资,既能参与到项目的实施与决策过程中,还能得到相应的经济回报。众筹平台一般会设定一些融资规则,只有当众筹项目满足这些规则时才算众筹成功,众筹平台会对成功的项目征收一定费用作为自身的收益。1.1.2 国内外现状最近几年,全球范围

16、内的众筹模式发展十分迅速。其中,美国的众筹融资占据了全球众筹融资的主要份额。2005年,美国的一些网站开始向大众提供众筹服务。2009年,Kickstarter众筹网站诞生,并迅速发展成为最典型和最知名的众筹平台。截止到2017年4月,Kickstarter上一共诞生了123578个众筹项目,支持这些项目的人高达1270万人次,总融资金额高达30亿美元。值得一提的是,2012年4月,美国总统奥巴马签署了促进创业企业融资法案 (JOBS),允许通过互联网为项目募集资金,这一法案使得众筹合法化,并且也引起了全球对众筹融资和互联网金融的高度关注。2013 年10月,美国证券交易委员会在JOBS法案的

17、基础上发布了一项针对众筹监管的新提案,同时以英国、法国为代表的欧洲国家也开始在发展中不断探索建立政府众筹监管的相关办法和政策。2011年,“点名时间”面世,标志着众筹模式第一次进入中国。在此之后,追梦网、众筹网、淘梦网等众筹平台相继出现在人们的视野中。面对各众筹平台的迅猛发展,几大互联网巨头也开始陆续进入众筹领域,其中以京东、淘宝为主要代表。巨头的进入对旧有的众筹平台造成了强烈的冲击,极大地改变了众筹行业的市场格局。就目前来看,国内的众筹平台还处于发展初期,与国外较成熟的Kickstarter等平台还有很大距离,而且市场规模也不够大,用户习惯还需进一步培养,但是社会各界给予众筹模式的关注越来越

18、多,众筹交易额也在持续攀升。与此同时,由于政府监管和法律规范仍处于探索试行阶段,尚未完善,许多众筹平台的安全性受到人们质疑,投资者的资金安全得不到有力保障。因此,我国众筹行业的发展仍有较大提升空间。1.2 课题的提出与意义1.2.1 课题的提出从整个互联网金融的发展大环境来看,众筹模式具有具有很大的发展前景,主要原因体现在两个方面。第一,企业有需求。自改革开放以来,各类民营企业有如雨后春笋般不断涌现,但是其中九成以上都是中小微企业,对于这些企业而言,经常需要面临的一个问题就是融资难。传统的金融机构,如银行、基金等,出于风险的考虑,往往更愿意融资给大型企业。所以互联网金融甫一出现,便迅速赢得了中

19、小微企业广泛青睐,原因就是其方便快捷的融资方式更符合此类企业的发展模式和刚性需求。第二,政府有支持。金融危机以来,国际经济普遍低迷,中国经济也进入了转型期,正在谋求通过“产业升级”的方式从制造业大国转向为制造业强国。为了实现这一宏大愿景,李克强总理于2014年9月在夏季达沃斯论坛上提出了“大众创业,万众创新”的口号,其实质内涵就是鼓励中小微企业的发展。2014年5月以来,国务院先后9次强调“降低中小企业融资成本、开拓融资新渠道”理念,在这一背景下,众筹融资得到了快速发展。与此同时,国务院、银监会以及证监会通过私募股权众筹融资管理办法(试行)国务院关于大力推进大众创业万众创新若干政策措施的意见等

20、利好政策文件,大力推动股权众筹融资模式,形成全民众筹热潮。正是基于对众筹行业发展前景的认识和理解,本人提出了众筹平台的研究课题。1.2.2 课题的意义众筹模式既能满足普通大众投资获益的需求,又能帮助解决中小微企业融资难的问题,从宏观上看有利于激发资本活力,促进经济发展。但是传统的众筹平台,如点名时间、淘梦网、京东众筹等,无一不是由第三方机构进行管理,而用户必须信任这些机构能保证其财产安全。如果第三方机构产生恶意或被攻击,那么用户的利益就将遭到损害。即使有政府对众筹平台进行监管,也只能起到事先警醒,事后惩罚的作用,无法从根本上杜绝受损事件的发生。但是通过引入区块链技术,可以实现一个去中心化,分布

21、式,高度安全的众筹平台。在这个平台里,用户将不再需要信任一个第三方机构,区块链可以保证用户的财产安全。因此,对本课题的研究,有利于解决互联网金融应用的安全性问题,有利于众筹行业的健康发展。1.3 本文结构安排本文的组织结构如下:第一章:简要叙述了课题提出的背景、意义,以及国内外众筹模式的发展现状。第二章:介绍了区块链的概念和部分技术细节,比如数据结构,共识机制等。还介绍了以太坊的概念以及基于以太坊区块链的智能合约应用。第三章:阐述对基于区块链的众筹平台的需求分析。分析结果既结合了众筹平台用户的实际需求,又考虑了区块链的特殊机制。第四章:介绍基于区块链的众筹平台的结构设计、功能模块设计等。还阐述

22、了本系统在安全性上的考虑。第五章:分别从用户管理、项目管理、提议管理、众筹平台主体以及众筹项目主体等五个模块详细介绍了系统的具体实现。第六章:从系统功能和系统安全两方面介绍了系统的测试情况。2 相关技术本章简要介绍了区块链、以太坊、智能合约的概念以及部分技术细节。第2.1节首先叙述了区块链的基本概念以及数据结构,共识机制等技术细节。第2.2节重点介绍了区块链的重要应用之一以太坊,包括其发展理念和使用的技术。第2.3节引入了智能合约的概念,本课题中的众筹平台就是一个典型的智能合约应用。2.1 区块链2.1.1 基本概念2008年,神秘人“中本聪”发布了比特币,并将比特币的底层实现技术区块链带入了

23、大众视野。从本质上讲,区块链是一个分布式的数据库,由一连串被称作区块的数据块关联组成。每个区块都包括一个时间戳,一个指向前一区块的指针,以及包含在区块主体中的一组交易。第一个区块被命名为“创世区块”,从“创世区块”往后,一个个区块不断地通过哈希指针与前一个区块相连,最终构成了区块链。区块头中存储着该区块的标识信息。区块头中包括有一个指向前一区块的指针,该指针是通过将前一区块的区块头进行哈希运算得到的。如果攻击者修改了链上任意一个区块头,那么之后所有的区块头都需要修改,而这种行为在区块链的工作机制下几乎是不可能实现的,这样就保证了区块链的不可篡改性。2.2.2 数据结构如上文所述,从创世区块开始

24、,一连串区块前后相连,从而形成一条不断延伸的区块链。每个区块由区块头和区块体组成。区块头是一个区块的标识,区块体则负责存储数据,在比特币中这些数据就是一系列的交易。为了便于验证交易的数据完整性,区块链采用了Merkle树来存储交易数据。图2.1描述了区块链的结构。Merkle树是一类基于哈希值的二叉树或多叉树,其叶子节点上的值通常为数据块的哈希值,而非叶子节点上的值是将该节点的所有子节点的组合结果的哈希值。区块链中的Merkle树是二叉树,用于存储交易信息。每个交易两两配对,构成Merkle树的叶子节点,进而生成整个Merkle树。在区块链中,通过应用Merkle树可以简化完整性验证的过程。特

25、别是在分布式环境下,Merkle树会大大减少数据的传输量以及计算的复杂度。例如,以图2.1为例,若A把交易1-8的数据传输给B后,要验证传输到B的数据完整性,只需要验证A和B上所构造的Merkle树的根节点一致即可。如果一致,表示数据在传输过程中没有发生改变。加入在传输过程中被人篡改,通过Merkle树很容易定位找到被篡改的数据。图2.1 区块链结构2.2.3 共识机制区块链是一种分布式的架构,在这种架构中,多个节点通过异步通信的方式组成网络集群。各个节点之间要进行状态复制,以保证每个节点达成一致的状态共识。为了达成共识,实现不同节点上数据的一致性和正确性,以比特币为代表的区块链应用中采用了名

26、为“工作量证明”(Proof of Work)的共识算法。工作量证明,顾名思义,就是一份确认某节点做过一定量工作的证明。在区块链中,只有持有工作量证明的节点才有资格生成下一个区块,其它节点也只会接受持有工作量证明的节点产生的区块。要想获得工作量证明,就必须解出区块链网络给出的PoW问题。目前使用较多的PoW函数是SHA256。比特币中的PoW问题,就是将包括Merkle根哈希值在内的区块头数据以及随机整数nounce作为输入,尝试进行SHA256运算,找出满足给定前多少位为0的哈希值的过程。若结果不满足,则不断变换nounce值。若满足,则解题成功,工作量证明完成。工作节点不停运算,直到找到一

27、个满足PoW问题的答案(即工作量证明)后,会把这个答案以及交易信息等数据打包进区块,发布到网络中。其他节点收到这个区块后,首先验证答案是否符合要求,交易数据是否正当有效。若验证通过,则将该区块链接到本地的区块链上,若不通过,则丢弃该区块。通过这样一个过程,可以动态地在网络中所有节点上维护一条完全相同的区块链。以上就是整个网络形成共识的过程。PoW机制的主要特点是计算的不对称性。工作节点需要做一定难度的工作得出一个结果,验证节点却很容易通过结果来检查工作节点是不是做了相应的工作。现代第一个应用工作量证明的例子是1996年由Adam Back提出的基于SHA256的“Hashcash”反垃圾邮件系

28、统。该系统要求任何邮件在发送时都必须进行高强度运算,如果未完成运算则无法发送邮件,这一设计使得发送大量垃圾邮件需要耗费极大的计算量,而正常用户却不会受到影响。2.2 以太坊2.2.1 基本概念在比特币的实现中,区块链架构主要围绕支持虚拟货币的实现,虽然它有一定的灵活性,但用来支撑虚拟货币以外的应用场景还显得非常局限。近年来,区块链逐渐引起IT业界的关注,并逐渐发展成为独立于比特币的平台架构,其重要性越来越受到重视。这类平台架构的核心理念是把区块链作为一个可编程的分布式信用基础设施,支撑智能合约应用。具体来说就是,不仅仅把区块链作为一个去中心化的虚拟货币和支付平台,而是通过增加链上的扩展性功能,

29、把区块链的技术范围扩展到支撑一个去中心化的市场,交易内容可以使房产契约、股权、债权甚至汽车、艺术品等。在这些平台中最具代表性的是以太坊平台。以太坊是一个全球性的区块链,可以管理各类智能合约的状态。基于以太坊区块链,开发者能够创建任意的基于共识的、可扩展的、标准化的、图灵完备的、易于开发和协同的应用。以太坊在全球范围内引起了商业和社会的创新潮流,为去中心化应用的发展奠定了深厚基础。在技术方面,以太坊提供了一个可靠易用的开发平台以及相应的编程语言,包括数字货币以太币(Ether),以及用来构建和发布分布式应用的以太脚本(EtherScript)。其中,以太币和比特币有许多相似之处,两者均为数字货币

30、且无法伪造,都以去中心化的方式运行来保证货币供应不被某一方所控制。以太坊另一半重要特性是提供了一个完整的编程语言环境。我们知道,编程语言是人类用来控制计算机工作的,而且计算机如何执行一段代码是没有二义性的。这种特性正是人类现行法律与合约所缺失的。在有了以太脚本之后,人们就可以制定一种严格按照代码执行,结果可预知,不会产生任何歧义的合约了。2.2.2 以太坊技术(1)以太坊虚拟机以太坊虚拟机(EVM)是以太坊中智能合约的运行环境,主要负责解释并运行智能合约代码。实际上它分布于区块链网络中的众多计算机之中。任何人都可以在区块链中发布程序,并且这些程序会被EVM自动执行,同时所有程序现在和以前的状态

31、都是公开可见的。(2)账户以太坊中有两类账户,一是外部账户,该类账户被公钥-私钥对控制,另一类是合约账户,任何智能合约程序发布后都会自动拥有合约账户,该类账户被存储在账户中的代码控制。持有外部账户私钥的人可以自由使用该账户内的以太币,执行消费、转账等操作。合约账户不受任何人控制,但其内部的代码可以与外部进行交互,允许它对内部存储进行读取、写入、调用其它合约和创建合约。(3)Gas在以太坊上发布和调用合约都会被收取一定数量的燃料Gas,设置Gas的目的是限制交易执行所需的工作量,同时为交易的执行支付费用。当EVM执行代码时,Gas将按照特定规则被逐渐消耗。无论程序执行到什么位置,一旦Gas耗尽,

32、就会触发一个out-of-gas异常,同时程序将被回滚。(4)存储、主存和栈每个账户都有一块永久的内存区域,被称为存储,其形式为key-value。相对于主存和栈,存储的读操作开销较大,修改存储甚至更多。一个合约只能对它自己的存储进行读写。第二个内存区被称为主存。合约执行每次调用时都有一块新的被清除过的主存。操作主存的开销随主存的增长而变大。栈则是EVM执行计算的区域。(5)以太坊客户端目前有四种语言实现的以太坊客户端,它们分别是Go语言实现的Geth,C+实现的Eth,Python实现的Pyethapp和用Java实现的EthereumJ。另外,以太坊官方还开发了一个专用的应用浏览器Mist

33、,用户可以在Mist上运行各种各样的去中心化应用(DApp),发布智能合约。Mist的操作门槛很低,即使是非IT业的用户也能轻松掌握,因此发布于Mist上的Dapp和智能合约能够被大量用户使用。2.3 智能合约20世纪90年代,从事数字合约和数字货币研究的计算机科学家尼克萨博(Nick Szabo)第一次提出了“智能合约”的概念,他的描述是:“智能合约是一个由计算机处理的、可执行合约条款的交易协议。其总体目标是能够满足普通的合约条件,例如支付、抵押、保密甚至强制执行,并最小化恶意或意外事件发生的可能性,以及最小化对信任中介的需求。智能合约所要达到的相关经济目标包括降低合约欺诈所造成的损失,降低

34、仲裁和强制执行所产生的成本以及其他交易成本。”但是受限于当时的技术条件,尼克萨博并没有完全实现他的想法,这一局面在比特币出现后得到很大改观。借助比特币背后的区块链技术,智能合约得到飞速发展,很多智能合约项目已得到初步实现,并吸引大量资金投入其中。在计算机科学领域,智能合约是值一种计算机协议,这类协议一旦制定和部署就能实现自我执行(self-excuting)和自我验证(self-verifying),而且不再需要人为的干预。从技术角度来说,智能合约可以被看作一种计算机程序,这种程序可以自主地执行全部或部分和合约相关的操作,并产生相应的可以被验证的证据,来说明操作的有效性。在合约部署前,合约中所

35、有的逻辑流程就已经被制定好了,一经部署就无法修改。智能合约通常都具有用户接口(interface),以供用户与已制定的合约进行交互,这些交互严格遵守此前制定的逻辑。通过应用密码学技术,交互行为都将被严格验证,从而防止出现违约行为。以太坊区块链内置图灵完备的编程语言,能够实现各种具有强大功能的应用。通过建立抽象的基础层,任何开发者都能够轻松编写智能合约和去中心化应用。以太坊的合约开发语言是其最大特性之一,目前以太坊具有4种专用语言:Serpent(类似Python),Solidity(类似JavaScript),Mutan(类似Go),和LLL(类似Lisp),都是为面向合约编程而从底层开始设计

36、的语言。其中Solidity是以太坊的首选语言,由于其类似JavaScript的特性,降低了学习门槛,易于被掌握和使用。本课题中的众筹平台就是使用Solidity语言进行开发。由于以太坊底层是基于账户,所以有一个特殊的Address类型,用于定位用户账户或者合约账户。Solidity提供了一些关键字,如payable,可以在语言层面直接支持支付。存储则是使用网络上的区块链,数据的每一个状态都能永久存储,从而实现了数据的不可篡改性。运行环境是在去中心化的网络上,合约代码将由网络中的很多个节点分布式执行。最后一个特点是Solidity的异常机制,一旦出现异常,所有的执行将会被回撤,这主要是为了保证

37、合约执行的原子性,以避免中间状态出现的数据不一致。3 需求分析3.1 可行性分析可行性分析是指在深入了解项目内容的基础上,从技术、经济和社会因素等方面对本项目进行论证研究,并预测系统建成以后可能产生的经济效益和社会影响,从而说明该软件开发项目在技术上、经济上和社会条件上的可行性,对以后的行动方针提出建议。从根本上来说,可行性分析解决的是“该不该做”的问题。下面将从三个方面研究本系统的可行性:(1) 技术可行性 本系统的智能合约部分采用Solidity语言开发。Solidity是一种智能合约高级语言,运行在以太坊虚拟机之上,它的语法类似JavaScript,因此相对容易掌握和使用。目前Solid

38、ity是国外区块链社区开发智能合约的首选语言,因此相关英文资料很多,也比较完善。国内对于区块链以及智能合约开发的关注相对较少,但也有部分技术论坛开始着手翻译一些技术文档。通过查阅国内外的资料,本人了解了智能合约的开发和部署流程,也自学了Solidity语言。因此,本系统在技术上是可行的。(2) 经济可行性 本系统实质上是一个基于以太坊区块链的智能合约项目,项目中涉及的以太坊区块链以及开发框架等都是开源项目,因此不需要支付软件许可费用。此外,在区块链上部署智能合约需要支付一定数量的以太币,而以太币是和现实货币(如美元)挂钩的,但是以太坊官方提供了开发者专用的测试链,在测试链上开发者可以免费获得大

39、量以太币。如果本系统将来发布在以太坊的正式区块链上,也可以收取交易费的形式来获得一定的经济效益。综上所述,本项目在经济上是可行的。(3) 社会条件可行性 目前互联网金融的发展可谓如日中天,不仅受到各类中小微企业的广泛欢迎,还得到了国家政策的鼓励和支持。在这样的背景下,各类众筹平台如雨后春笋般不断出现,但这些众筹平台都是基于传统的server-user形式,用户资金的安全性无法得到有效保证。本项目则基于以太坊区块链,具有去中心化,数据不可篡改,高度安全等特性,迎合了用户对众筹平台安全性的要求。因此,本项目在社会条件上是可行的。3.2 系统需求分析 需求分析是在对客户进行深入调查和研究的基础上,深

40、入描述软件的功能和性能,需求分析就目标系统提出完整、准确、清晰、具体的要求,解决的是系统“做什么”的问题,系统需求分析在系统开发中起着至关重要的作用,它对系统成败往往有着决定性作用。 本系统开发的目标是构建一个基于区块链的去中心化的众筹平台,使得融资者和投资者能够在没有第三方机构参与的情况下,完成投融资活动。本系统实现的功能主要有用户注册及登录、发起众筹项目、关注众筹项目、投资众筹项目、发起提议、对提议投票、获取项目回报等功能。本系统通过以太坊区块链发布运行。主要用户为融资者和投资者。 通过对国外的Kickstarter、Indiegogo以及国内的众筹网、淘宝众筹、京东众筹等网站的需求调查,

41、并结合区块链的技术特点,转化为系统能力实现需求,归类如下: (1)用户注册及登录 (2)融资人发起一个众筹项目,并指定融资的目标金额,截止时间等信息 (3)关注一个已发布的众筹项目,获取其具体信息 (4)选择一个已关注的众筹项目,以转账以太币的方式对其进行投资 (5)若众筹项目在截止日期时融资额达到指定目标,则众筹成功,否则众筹失败,所有已收到的以太币将返还给投资人 (6)当融资人想动用众筹项目中的资金或更改融资人时,需要发起一个提议 (7)所有投资人会对项目中的提议进行投票,若投票通过,则执行该提议,否则不执行 (8)投资获得的回报会进入众筹项目的回报账户,投资人可以从回报账户获得属于自己的

42、回报3.2.1 用户管理功能 本系统主要面向融资人和投资人两类用户。融资人可以发起众筹项目,如果众筹成功,可以在该项目中发起提议,使用项目资金,但不能对提议投票。投资人可以投资项目,如果众筹成功,可以对该项目的提议投票,但不能发起提议。融资人和投资人的权限是相对于某个特定项目而言的,一个用户可能既是A项目的融资人,又是B项目的投资人。 用户注册时,除设置账号密码外,还需要绑定以太坊账号,因为发布新的众筹项目要消费一定数量的以太币作为发布费用,投资众筹项目也要以转账以太币的形式完成。用户登录界面,输入用户密码后进行系统验证,登录成功则转入首页,否则提示错误。图3.1 用户管理用例图3.2.2 项

43、目管理功能 众筹平台的核心功能就是对于众筹项目的管理,其中包括发布新的众筹项目,关注众筹项目的动态,投资众筹项目以及从项目中获取回报。项目管理功能的用例图如图3.2所示。 (1)发布项目 融资人使用众筹的平台的目的就是通过获取投资,实现自己的创意或创业想法,并在项目成功后给予投资人一定的回报。任何有融资意愿的用户都可以在平台上创建一个新的众筹项目,然后发布到区块链上,但必须指定众筹截止时间以及众筹的目标金额。项目发布后会出现在已发布项目列表中,供投资人查看。投资人可以在项目截止前进行投资。在项目截止时,若融资金额达到目标金额,则众筹成功,否则众筹失败,该项目取消,所有已收到的投资将返还给投资人

44、。为了引起投资人的注意,融资人还可以给自己的项目添加项目描述以及回报信息等。 (2)关注项目 融资人创建了一个众筹项目后,会自动关注该项目,之后融资人就可以随时查看该项目的最新动态。投资人在浏览所有已发布项目时,也可以通过关注该项目来获知其最新动态。 (3)投资项目 投资人在浏览所有已发布项目时,如果有中意的项目,可以对该项目进行投资。投资行为以转账以太币的方式实现。投资人从绑定的以太币账户转发以太币到项目账户,项目账户会记录投资金额,并按照一定规则分配“代币”给该投资人。代币相当于投资人在该项目中占有的股份,可以用作投票以及获取回报的证明。投资人还可将自己持有的代币转让给他人。投资项目后,投

45、资人会自动关注该项目。 (4)获取项目回报 若融资人使用项目中的资金实现了自己的创意或创业想法,产生了经济收益,那么应当将这些收益转入该项目的回报账户。投资人可以在项目详情中查看到该项目回报账户的余额。若投资人申请获取回报,则项目账户会自动根据投资人持有代币的数量将部分回报转账到投资人的以太坊账户。图3.2 项目管理用例图3.2.3 提议管理功能 众筹项目在众筹成功之后,将会进入执行阶段,此时融资人可以动用项目资金来实现自己的创意或创业想法。为了保证项目资金不被随意挪用,融资人动用资金的行为必须获得该项目大多数投资人的允许。在本系统的设计中,融资人需要在项目中发起一个提议来申请动用资金,提议内

46、容应包括资金数额、转账账户、持续时间、附加信息等。其中持续时间至少为两周。提议发出后所有的投资人都能在项目动态中看到该提议,并选择投票支持或反对该提议。投票的票数按各投资人占有的股份计算。若投票截止时赞成票多于反对票,或投票截止前赞成票已大于总票数的50%,则提议通过,融资人可以执行该提议,否则不予执行。3.2.4 众筹平台主体功能 在本系统的设计中,众筹平台主体是发布在区块链上的一个智能合约。其主要功能是汇总所有已发布的项目列表以及用户的信息。这样一来,用户需要浏览平台上的所有项目时,可以只调用平台主体合约就能获取到所有的项目信息。为了维护已发布项目列表的时效性,每当有一个新的项目发布时,都

47、会通知平台主体合约,由平台主体合约将新发布的项目地址加入到列表中。如果项目众筹失败,也会通知平台主体合约将失败项目的地址从列表中移除。众筹平台主体还需实现用户注册、验证登录以及修改密码的功能。用户注册时应当把账号和密码上传到平台主体合约进行存储。区块链能够保证这些数据不会被任何人篡改。3.2.5 众筹项目主体功能 每当融资人创建一个新的众筹项目,就会有一个众筹项目的智能合约被部署到区块链中。无论是融资人发起提议,还是投资人进行投资、对提议投票以及获取回报等,都要通过与区块链上的众筹项目合约的交互完成。智能合约的角色类似于传统Web项目中的服务器端,主要负责业务逻辑的实现以及部分数据的存储。众筹

48、项目主体中应当存储提议列表、回报账户地址、项目余额,融资人账户,投资人账户列表、投资人持有代币数量等数据,应实现的功能包括初始化代币数量、接受投资、分配代币、转让代币、创建提议并发送提议给投资人、接受投票、根据投票结果决定是否执行提议、接受回报、将回报转发给投资人等。3.2.6 非功能需求 非功能性需求是对系统具有的功能以外的特性的要求,在本系统中主要包括安全性和可扩展性。 (1)安全性需求 由于涉及到用户的资金和财产,安全性对于众筹平台来说极其重要,尤其是数据的安全。本系统将所有的主要数据都存储在区块链上,杜绝了用户的财产信息被篡改的可能性。用户在与区块链交互时,通过核验用户地址和身份,确保

49、操作的安全性。 (2)可扩展性需求 系统的各功能模块之间应当具备“高内聚,低耦合”的特点,联系较紧密、相关程度较高的功能尽量要集合在同一模块中,不同模块之间的接口要清晰、规范。随着业务种类的增多或功能流程的复杂化,将来系统可能还需要添加新的功能或模块,因此旧有的模块不能影响新功能的添加。4 系统设计4.1 系统概述 根据对国内外众筹网站的调查研究,以及对众筹平台用户的需求分析,众筹平台要能够实现众筹项目的发布和投资,还要具备项目动态管理的功能。在设计功能模块时,要注意各模块负责的功能以及模块之间的结构,同时要保证各模块的功能之间的相互影响降到最低,这体现了软件工程模块化设计中“高内聚,低耦合”

50、的要求。 本系统采用迭代式开发模式,将基于区块链的众筹平台分为智能合约模块,前端模块两个主要模块,分别对两个模块进行分析、设计、实施和测试,从而尽早发现和解决问题,并在此基础上进行改进。各模块的基本功能实现完毕后,集成在一起,形成一个完整的众筹平台。迭代式开发的优点在于可以尽早展现开发成果,有利于发现和解决问题,而且由于各模块分别测试,所以对于问题的改进是局部的,降低了工作量及难度。 本系统不同于传统Web项目的B/S结构,由于没有第三方机构作为服务商,所以不存在服务器端,取而代之的是功能类似于服务器端的智能合约模块。智能合约自动运行在区块链上,前端可以通过以太坊提供的web3.js文件调用智

51、能合约提供的接口,向其传递数据,智能合约根据业务逻辑处理完数据后会返回相应结果,并呈现在前端网页上。通过此种设计,一方面保证了本系统对于用户的易用性,另一方面大大提高了本系统的安全性。4.2 系统模块设计 根据系统分析,本系统主要可划分为两个个主要模块:前端模块以及智能合约模块。其中前端模块又可细化为三个子模块:用户管理,项目管理和提议管理。智能合约模块则由众筹平台主体以及众筹项目主体两个子模块组成。如图所示。图4.1 系统功能图4.2.1 用户管理模块 本系统中提供了用户的注册及登录功能,用户的密码保存在区块链上,登录过程则通过前端与众筹平台主体模块之间的交互完成。此外,用户在进行投融资之前

52、,还必须绑定自己的以太坊账号。以项目为单位,用户被分为融资人和投资人两种角色。当用户发布一个众筹项目时,会自动成为该项目的融资人,每个项目必须有且只能有一个融资人。当用户投资一个众筹项目时,则会成为该项目的投资人,每个项目可以有多个投资人。一个项目中,不同的用户会有不同的操作权限。系统提供个人资料界面,同时在管理项目时为不同用户角色配置了不同的操作菜单。图4.2 用户管理模块4.2.2 项目管理模块 项目管理模块主要实现了浏览项目、发布项目、撤回项目、关注项目、投资项目和获取项目回报等功能。图4.3 项目管理模块 当用户注册并登陆后,可以在首页浏览所有已发布的众筹项目(不包括众筹失败的项目)。

53、有融资意愿的用户可以选择发布自己的众筹项目,在填写完目标金额、截止日期以及项目介绍后,一份作为该众筹项目主体的智能合约就会被发布到区块链中。融资人在截止日前可以选择撤回项目,之后所有已收到的投资将返还给投资人,但是融资人需要为其撤回操作支付一定的费用。有投资意愿的用户在浏览已发布项目时,可以选择关注该项目,从而获取该项目的最新动态。如果用户要投资一个项目,需要向该项目的智能合约账户转账以太币,智能合约会根据用户的投资数额分配一定量的代币。 选择一个已关注的项目后,可以查看项目详情。投资人可以看到自己持有的代币数量,项目的相关信息,提议列表以及项目的回报账户余额。若融资人将获得的收益转入了回报账

54、户,投资人可以申请获取回报。众筹项目的智能合约账户会根据投资人持有的代币数量返回部分回报。4.2.3 提议管理模块 提议管理模块关联于每一个具体的众筹项目。在项目发布并且众筹成功后,融资人才能进行决策,动用项目账户上的资金。但这并不是毫无限制的,投资人既然投资了该项目,就应当有权利过问该项目的决策过程,防止融资人滥用项目资金。通过借鉴公司董事会决策的过程,本系统在项目决策过程中引入了投资人投票的功能。当融资人试图动用项目资金时,需要在项目中发起一个提议,这个提议将由全体投资人进行审核。提议内容应包括资金数额、转账账户、持续时间、附加信息等。其中持续时间至少为两周。每个投资人单独对该提议进行投票

55、,通过选择赞成或者反对来表达自己的意见。图4.4 提议管理模块 在统计票数时,还要计算各投资人持有的代币数量。持有代币多的投资人相当于公司里的大股东,应当比小股东拥有更大的决策权。如果到投票截止时赞成票多于反对票,或者在截止前赞成票已多于总票数的50%,则该提议通过,否则提议不通过。除了动用资金外,融资人还能通过发起提议请求变更融资人。为了尽量减少出现“投票懒惰”,即很多投资人直到投票截止时都未投票的情况,投资人可以设置默认的投票选项。4.2.4 众筹平台主体模块 众筹平台主体由部署在区块链上的智能合约代码实现。在整个系统部署过程中,该部分代码只会部署一次。该模块功能较简单,主要负责维护已发布

56、的项目合约地址列表以及用户信息。每当有用户发布一个新的众筹项目时,对应的项目合约地址就会被添加到平台主体的已发布的项目合约地址列表中。如果该项目众筹失败,其地址将会从列表中删去。用户还可以通过与平台主体合约的交互,获得所有已发布的众筹项目信息。除此以外,平台主体模块还实现了新用户注册和验证登录的功能。由于用户名及密码都存储在区块链上,从而有效保证了数据的安全性。众筹平台主体记录的信息还包括每个用户发布和投资的项目。4.2.5 众筹项目主体模块 当有融资意愿的用户发布一个新的众筹项目时,一份众筹项目主体合约就会被部署到区块链中。由于以太坊的官方设计,这种部署合约的行为需要支付少量以太币作为部署费

57、用。这种设计的主要考虑是防止用户恶意部署大量合约,给区块链网络带来负担。项目部署后,合约会在区块链上自动执行。整个合约的执行过程可以大致分为两个阶段:项目众筹阶段和项目执行阶段。该模块的活动图如图4.5所示。 项目众筹阶段,即在众筹日期截止前,每当合约账户收到一笔以太币转账,就会按照一定的汇率将其换算成代币(一般是1以太币兑换1*108代币),并记录代币数和投资人地址的对应关系。众筹截止时,若收到的投资金额高于融资人设定的目标,则众筹成功,项目进入项目执行阶段,否则众筹失败,所有已收到的投资将原路返回到投资人的账户中,且该项目将从平台主体合约的已发布项目列表中移除。在投资发生后的30天内,众筹项目截止之前,投资人都可以选择撤回自己的投资。一旦投资撤回,属于该投资人的代币将被收回。 项目执行阶段,融资人可以发起提议,从项目合约

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论