符合学术规范的学术服务

众筹区块链上的智能合约设计

分类:计算机职称论文 时间:2020-03-31

  摘要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所示,合约代码生成后会被编译成字节码,通过交易存储在区块链中等待触发执行,当被触发时,由区块链提供的智能合约接口实现与管理链与合约的信息交互.

  期刊推荐:《计算机工程与应用》是一本面向计算机全行业的综合性学术刊物,覆盖面宽、信息量大、报道及时是本刊的服务宗旨。报道行业最新发展动态与最新研究成果;具有先进性和推广价值的工程方案;有独立和创新见解的学术报告;先进实用有一定广泛性的开发成果。读者对象:计算机相关专业科研开发人员、工程技术人员及大专院校师生。

获取发表周期短、审稿速度快、容易录用的期刊

* 稍后学术顾问联系您

学术顾问回访> 详细沟通需求> 确定服务项目> 支付服务金> 完成服务内容

SCI期刊

国际英文期刊

核心期刊

国外书号出书

国内纸质出书

2023最新分区查询