APP下载

基于区块链的去中心化物品共享交易服务系统

2019-08-01范吉立何蒲李晓华聂铁铮于戈

计算机应用 2019年5期
关键词:智能合约区块链

范吉立 何蒲 李晓华 聂铁铮 于戈

摘 要:随着共享经济的发展,对于高可信的分布式交易管理具有迫切的需求, 然而,传统的中心化信息系統难以满足。区块链技术提供了一种共享账本机制,为构建可信的分布式交易管理奠定了基础。以支持智能合约的区块链2.0平台——以太坊平台作为基础框架,深入研究基于区块链技术的去中心化共享物品交易服务系统的运行机制与实现技术。设计了基于以太坊的去中心化物品共享交易服务系统框架,提出了基于智能合约机制的交易管理处理流程,详细描述了包括用户接口在内的系统实现技术,并对该系统在交易处理上的性能进行了实验测试。实验结果表明,基于以太坊的交易服务系统在保证交易数据可信性的基础上,平均交易处理速度为每秒21.7条,有索引查询速度为每秒117.6条,具有较高的运行效率。

关键词:区块链;交易管理;以太坊;智能合约;分布式数据库

中图分类号:TP315

文献标志码:A

Abstract: With the development of sharing economy, there is an urgent need for highly trusted distributed transaction management; however, traditional centralized information systems are difficult to meet it. Blockchain technology provides a shared ledger mechanism, which laid foundation for building credible distributed transaction management service. As blockchain 2.0 platform supporting smart contract, Ethereum platform was used as the basic framework to deeply study the operation mechanism and implementation technology of the decentralized shared goods transaction service system based on blockchain technology. Decentralized item sharing transaction service system framework based on Ethereum was designed, and a transaction management process based on intelligent contract mechanism was proposed. The system implementation technology including user interface was described in detail, and the performance of the system in transaction processing was tested. The experimental results indicate that the Ethereumbased transaction management system can ensure the creditability of the data and has a high operational efficiency, with average transaction processing speed of 21.7 items/s, and indexed average query speed of 117.6items/s.

With the development of sharing economy, there is an urgent need for highly trusted distributed transaction management. However, the traditional centralized information systems are unable to satisfy the requirement of creditability. The Blockchain technology provides a mechanism of sharing ledger, which laid foundation for building the credible distributed transaction management service. With blockchain 2.0 platformEthereum which supports smart contract, as the basic framework, the operating mechanism and implementation techniques of blockchainbased decentralized item sharing and transaction service system were throughly studied, the architecture of the system was designed, the processing workflow for transaction management was proposed based on smart contract, the implementation techniques of the system including Webbased user interface were detailedly described, and the performance experiments to evaluate the proposed system were conducted. The experimental results indicate that the Ethereumbased transaction management system can ensure the creditability of the data while has high operational efficiency, with average transaction processing speed of 21.7 items/s, and indexed average query speed of 117.6items/s.

英文关键词Key words: blockchain; transaction management; Ethereum; smart contract; distributed database

0 引言

共享经济模式能够极大地促进社会的进步与资源的有效利用,因此,基于互联网+的共享经济应用迅速发展;然而,支撑共享经济应用的服务系统往往需要一个由第三方创建的、以信息技术为基础的系统平台。传统的共享平台都依赖于集中式的数据存储服务,不仅存在数据整体泄露的风险和信息不对称的弊端,因安全性等问题导致数据被随意篡改的情况时有发生,数据管理方的可信性也经常饱受质疑,可见大量应用面临着严峻的安全性和可信性问题。

区块链技术也被称之为分布式账本,在过去的数年时间里获得了巨大的发展和广泛的关注,当前正迎来高速发展期。这首先要归功于应用区块链技术的比特币的成功,正是比特币系统[1]具有的去中心化、多分布节点、公平等特点使其成为热门的数字货币系统,其底层的区块链技术得到人们的关注。区块链本质上是一种由一群彼此互不信任的节点共同维护的一个公共账本,并且记录只能以追加的方式添加到系统之中[2],记录一旦被确认就不能删除、不能篡改。区块链具有分布式、去中心化、开放、匿名、不可篡改、高度冗余等特点,而参与系统的节点可以不必信任彼此。因此,区块链技术不仅实现了数据的分布式可靠共享,更提供了不依赖单一服务方的可信数据管理机制,能够有效地保障系统信息的不可篡改性和可靠性。

本文主要基于使用区块链和智能合约技术的以太坊平台,研究去中心化的物品共享交易服务系统的运行机制与实现技术,提供高可靠和高可信的记账服务。基于区块链技术的以太坊在项目开发上具有特殊的优势,包括不需要中心化存储机构,具有图灵完备语言用以搭建智能合约应用。其中,业务账本数据都存储在以太坊网络上,不存在集中式的服务器,避免了用户数据被随意篡改的风险,构建了不可信服务环境下的可信数据存储。对于物品共享租借服务,物品的所有者可通过智能合约在以太坊网络上进行共享物品注册,租借者也通过以太坊网络进行租借,避开了不可信的第三方服务,所有交易数据均存储于以太坊网络上,可通过授权进行有效验证。

本文的主要贡献如下:

1)提出了一种基于区块链技术的分布式交易系统的体系结构,通过结合智能合约实现自动的交易生成与处理;

2)设计了基于以太坊的物品共享交易服务系统的业务处理流程,将智能合约技术與实际应用相结合;

3)基于不同数据集的实验对系统进行测试,结果表明该系统具有较高的执行效率和实用性。

1 相关工作

1.1 共享经济

共享经济从狭义上讲是指以获得一定报酬为主要目的,基于陌生人且存在物品使用权暂时转移的一种商业模式。这里存在三大主体:物品或服务需求方、提供方和共享平台。

共享经济已经成为社会服务行业内最重要的一股力量,涉及住宿、交通、教育、生活、旅游等各个方面,尤其Uber和Airbnb作为全球共享经济产业内的龙头,有效利用资源的情况下更促进了经济的发展;但是,它们都有一个不可忽视的安全隐患——集中式共享经济平台。所有参与方都需要进行注册,用户信息由它们信任的第三方服务机构保存。这种集中式的数据管理模式,需要数据存储方具有极高的安全性和可信性以保证数据不会被篡改和随意使用,然而,可以证明即使是最严格的管理制度,这种可信性也是不可靠的,用户数据依然有被篡改的风险。区块链技术的去中心化特性,恰恰能够消除对第三方机构的依赖,实现对等的直接交易,实现真正的共享经济[3]。

1.2 区块链技术

区块链技术自2015年以来发展迅猛,虽然还没有一个统一的定义,但是在行业里却也基本达成了共识,即区块链技术是一种去中心化、去信任化的分布式数据库技术方案。该数据库由参与系统的节点共同维护,并且系统只能查询和追加,不能修改和删除,具有去中心化、安全、透明、不可篡改等特性[4]。全球最大的数字货币平台——比特币就采用了区块链技术构建。

1.3 以太坊技术

以太坊[5-6]——下一代智能合约与分布式应用平台——是比特币的一个扩展,在2013 — 2014年,由Vitalik Buterin受比特币发展的启发而提出,旨在为去中心化应用实现一个在区块链之上的图灵完备的计算平台。作为具有智能合约功能的开源公共区块链平台,它是一种非常新颖的技术,在区块链技术基础上引入以太坊虚拟机(Ethereum Virtual Machine,EVM),允许开发人员利用智能合约在其上创建基于任意数量的不受各方信任的网络节点的分布式应用。

智能合约是一段由事件驱动的、具有状态的、运行在一个复制的、分享的账本之上的、且能够保管账本上资产的程序[7],是区块链上去中心化、可信共享的程序代码[8],也是以太坊中的法律。在以太坊中,所有的交易都按照合约定义的操作有条不紊地执行,改变着区块链的状态。一旦部署在区块链上,就不能再进行修改,也实现了可再现性,多次执行能得到相同的结果。区块链上的智能合约具有原子性,即要么成功执行,要么所有状态变化都撤销,这避免了合约被部分执行的情况。

1.4 以太坊应用

近年来,学者和研究人员对区块链技术进行了大量的研究、探讨,特别是自以太坊诞生以来,各种基于区块链技术的应用程序如雨后春笋般涌现: DIGIX与COINIFY合作创建的基于以太坊平台的加密资产交易平台,将比特币的功能与实物资产如黄金结合在一起,在以太坊网络上以代币的形式购买黄金[9];Dodson等设计的去中心化众筹平台WeiFund[10],提供了多个基于以太坊平台的众筹智能合约模板,用户可以利用这些模板实现自己的众筹项目;Vogelsteller[11]提出的Whisper,是去中心化应用(Decentralized Application,DApp)之间相互通信的一种通信协议,实现了分布式通信;Davis等设计的MetaMask[12],以浏览器(目前支持Chrome)扩展的形式,让用户可以通过浏览器与以太坊进行交互,在浏览器中运行以太坊应用,而不必运行完整的以太坊节点;Nagy等提出的Swarm[13],是以太坊的一个功能扩展,使得以太坊支持分布式文件存储,其主要目标是提供一个分散的、冗余的以太坊公共记录存储。目前已经有1300多个基于以太坊智能合约开发的DApp发布在Ethercasts[14]上,然而这些DApp主要围绕虚拟货币兑换、代币众筹、虚拟游戏等应用场景,比如最受欢迎的火热游戏项目CryptoKitties,缺少与线下实体相结合的应用场景。

2 基于区块链的交易系统结构设计

本文主要研究基于以太坊技术的共享交易系统的业务处理机制和实现技术。为此,本文首先设计了物品共享交易系统ShareApp的体系结构,如图1所示。ShareApp系统的体系结构主要由三个部分组成:基于以太坊网络的数据层、基于智能合约和Web3[15]的中间件层和提供用户操作接口的应用层。

2.1 数据层

共享交易系统的数据层采用由区块链系统构建的分布式P2P数据存储环境。本系统基于开源区块链系统以太坊进行搭建,使用以太坊客户端构建一个去中心化的网络,用以支持智能合约交互操作和信息的存储。以太坊网络是一个公共的区块链平台,并通过专用加密货币以太币来提供去中心化的记账机制并执行点对点合约。基于以太坊系统具有很高的可扩展性,很容易就能够扩展到大规模节点运行。在系统使用中,由应用层产生的交易将被广播到以太坊网络中,并由以太坊节点负责挖矿和记录交易信息。以太坊中的节点基于工作量证明(Proof of Work, PoW)的共识过程,竞争解决一个难度可动态调整的数学问题以获得记账权,将自上一个区块之后的交易打包记入新区块,其他节点对其验证,共同维护交易数据的真实性,保障数据不可被篡改。

2.2 中间件层

系统的中间件层主要由智能合约和Web3组成。与传统的基于Web服务的HTTP API中间件不同,智能合约是一个部署在以太坊网络上的协议,规定了用户能够执行的操作以及操作规范,用户的操作全都按照合约内容进行,合约一旦部署就不可修改。本文选择使用Solidity[16]编写的智能合约,从而实现物品租借业务的处理流程定义。本系统采用Web3实现上层应用与以太坊区块链和智能合约间的沟通与连接。

2.3 应用层

在应用层,系统将通过Web界面为用户提供可视化操作接口,使用户能够与智能合约进行交互。系统的应用层可以看作是一个分布式应用,可以部署在分布式的内容分发网络(Content Delivery Network,CDN)上,来提供用户访问。本系统的功能在应用层上的开发将主要基于JavaScript进行实现。

3 物品共享交易系统的业务功能与算法设计

基于所提出的基于区块链的交易系统体系结构,本文进一步設计了物品共享交易服务应用系统,其目的在于使用智能合约技术实现物品租借交易的可信记账平台。

3.1 系统需求分析

物品共享交易服务系统为用户创建了两种身份:物品所有者和租借者。

作为物品所有者时,用户可以在基于Web的用户接口上填写物品相关信息,然后把信息发送到以太坊网络,形成智能合约交易。一旦以太坊的挖矿节点将交易写入区块,则表明合约交易创建成功。作为租借者身份时,用户可以搜索要租借的共享物品,并在对象显示列表上找到想租借的物品,利用Web提供的接口直接提交租借交易。

本系统的应用层将基于Truffle[17]进行开发,Truffle是以太坊中最受欢迎的框架,可以实现从智能合约编译、部署到发布的整个流程。同时为了提高用户体验,采用的是Bootstrap前端框架开发用户页面。

基于区块链的物品共享交易服务支持的主要用户操作如下。

1)共享物品创建:共享物品创建功能就是向系统注册新的提供共享的物品。共享物品的相关信息结构如表1所示。

2)共享物品查询:提供按物品ID号或物品名称查询物品功能,并在查询后显示物品的相关信息。

3)物品租借:物品租借是系统实现共享物品租借交易的主要手段,也是智能合约程序处理的主体业务。用户需要提供租借者地址,发起物品租借请求后需要对物品状态和租借人资金情况进行验证,以保证租借流程的安全性,并确定租借结果。其中租借者的信息结构如表2所示。

4)物品归还:用户通过调用物品归还接口实现交易中的物品归还功能。

3.3.3 智能合约安全性分析

1)业务流程安全性。

业务流程设计中,充分考虑到物品共享系统各个流程环节的逻辑安全性,针对重要操作作了条件判断和权限限制。例如,上一节所述物品租借流程发起时,需同时满足物品未被租借、押金大于租金、发起者不为创建者三个条件。同样,归还物品过程设计中,物品租借状态必须正确,归还流程发起者必须为租借者才能启动流程。以上严格的检验条件保证了租借流程的逻辑正确性和执行的安全性。

2)编程语言安全性。

本文所使用的以太坊平台开发语言Solidity,对变量和操作符越界缺乏相应的安全限制,容易导致合约产生一些安全漏洞[18]。本文后续的代码版本更新中,引入SafeMath[19]库,做到对数学运算进行安全检查,防止因uint256数值类型变量溢出导致的漏洞攻击。

3)平台安全性。

以太坊系统是应用最广泛的智能合约平台,得到社区大量开发者的支持,因此具备快速问题反馈和版本更新迭代的基础,能够保障平台层面的安全问题得到及时解决。智能合约方面,一旦部署便不可修改的特性,使得智能合约一旦实现了预期的功能,便能得到预期的运行结果,具有可再现性,因为这是以共识协议为基础的。但如果智能合约包含错误,则没有直接的修补方法,程序员必须在实现智能合约时设计终止合约的方法[20],或者事件发生后采用硬分叉的对策,但这与以太坊“代码即是法律”的原则相悖。同时,这种解决方案也不会得到整个以太坊社区的同意,部分矿工会拒绝分叉,形成另一条区块链。智能合约的安全性需要以太坊在后续的版本中提出合理的解决方案。

3.4 智能合约功能模块设计

3.4.1 物品创建

物品的创建操作指用户向以太坊系统提交一个记账交易,其交易的信息为共享物品的相关信息。为此,智能合约将按照记账的处理逻辑处理物品创建交易。以太坊中,为了防止代码的指数型爆炸和无限循环,每笔交易需要对执行代码所引发的计算步骤作出限制,引入交易费用Gas[4],并通过GasPrice与以太币兑换。因此创建新的共享物品时,创建者账户里面要有一定的以太币余额,否则将会创建失败。

3.4.2 物品查询

本系统提供了按物品编号和物品名字两种查询功能。为了提高对于物品的查询效率,我们将物品的信息使用外部数据库进行存储,并使用倒排索引对用户创建的物品进行索引。

倒排索引将物品名称与物品编号集合进行映射,通过名称能够快速定位到物品编号,从而进一步查询物品的详细信息。索引结构如图5所示。

4 实验结果

4.1 实验设置

本系统基于以太坊网络进行搭建,实验测试中操作系统采用Ubuntu14.04,智能合约基于Solidity编写。测试的硬件环境为16台以太坊go语言客户端(Goethereum,Geth)节点,每台主机为8核3.0GHz CPU,8GB内存。Geth节点之间相互同步和验证区块信息,组成一个以太坊私有链网络。

实验测试中数据采用人工生成数据,编写脚本语言通过系统用户接口提交到系统中。

实验针对上述物品交易共享服务系统,对物品登记创建、物品租借、物品查询三个功能的实际效率进行测试。其中,物品创建、物品租借的过程对区块链上数据有更改,均产生交易,需要以太坊节点挖矿来对交易进行打包,从而将数据变化写入区块,而物品查询无需修改数据,只产生调用消息,无交易,因而无需挖矿。同时,实验也对比了有索引查询和无索引查询的效率,效果明显。

4.2 实验结果

实验一 不同节点数量下创建物品交易处理效率。

本实验主要测试物品共享交易系统在不同以太坊节点数量下,对于智能合约创建物品信息交易的打包处理效率。测试中以100条交易为基准,测试节点数量从2~16台的情况下处理交易所花费的时间,每个测试点取三次结果得到平均值,结果如图7所示。从图中可以看出,交易处理效率与以太坊网络中节点数量有一定关系。当节点从2台增加到4台时,处理效率有明显提升。随着节点数量增加,处理时间随之缩短,但效率提升速度减缓,可见节点间网络通信对交易处理效率也有一定影响。

5 结语

本文所开发的ShareApp是基于以太坊设计的一个去中心化共享交易服务系统,利用区块链技术的特性,实现了用户信息隐藏、无中心节点、抗攻擊、零宕机、交易无法修改等特性,解决了物品租借环节中的低信任关系,保证了系统可靠性。该系统实现了基于区块链的可信分布式交易管理,具有重要的实际应用价值。目前,本平台还处于开发与完善阶段,接下来的工作还将继续完善智能合约功能,并进一步探索如何实现区块链与数据库管理系统结合方式,实现大规模交易数据的区块链存储管理。

参考文献 (References)

[1] SATOSHI N. Bitcoin: a peertopeer electronic cash system[EB/OL]. [2018-03-10]. https://bitcoin.org/bitcoin.pdf.

[2] DINH T T A, LIU R, ZHANG M, et al. Untangling blockchain: a data processing view of blockchain systems[J]. IEEE Transactions on Knowledge and Data Engineering, 2018, 30(7): 1366-1385.

[3] 邵奇峰, 金澈清, 张召, 等. 区块链技术:架构及进展[J]. 计算机学报, 2017, 41(5): 969-988.(SHAO Q F, JIN C Q, ZHANG Z, et al. Blockchain: architecture and research progress[J]. Chinese Journal of Computers, 2017, 41(5): 969-988.)

[4] 何蒲, 于戈, 张岩峰, 等. 区块链技术与应用前瞻综述[J]. 计算机科学, 2016, 44(4): 1-7,15. (HE P, YU G, ZHANG Y F, et al. Survey on blockchain technology and its application prospects[J]. Computer Science, 2016, 44(4): 1-7,15.)

[5] JAMES R. A nextgeneration smart contract and decentralized application platform[EB/OL]. [2018-03-10]. https://cryptorating.eu/whitepapers/Ethereum/Ethereum_white_paper.pdf.

[6] WOOD G. Ethereum: a secure decentralised generalised transaction ledger[EB/OL].[2018-03-10]. http://gavwood.com/paper.pdf.

[7] BROWN R G. A simple model for smart contracts[EB/OL]. [2018-03-12]. https://gendal.me/2015/02/10/asimplemodelforsmartcontracts/.

[8] 袁勇, 王飞跃. 区块链技术发展现状与展望[J]. 自动化学报, 2016, 42(4): 481-494. (YUAN Y, WANG F Y. Blockchain: the state of the art and future trends[J]. Acta Automatica Sinica, 2016, 42(4): 481-494.)

[9] IAN A. Digix and Coinify marry Bitcoin and Ethereum for goldbased digital assets[EB/OL]. [2018-03-10]. http://www.ibtimes.co.uk/digixcoinifymarrybitcoinethereumgoldbaseddigitalassets1525790.

[10] WeiFund: a decentralized crowdfunding platform[EB/OL]. [2018-03-10]. http://weifund.readthedocs.io/en/latest/.

[11] VOGELSTELLER F. Whisper[EB/OL]. [2018-03-11]. https://github.com/ethereum/wiki/wiki/Whisper.

[12] Metamask. Brings Ethereum to your browser[EB/OL]. [2018-03-11]. https://metamask.io/.

[13] Swarm. Serverless hosting incentivized peertopeer storage and content distribution[EB/OL]. [2018-03-10]. http://swarmgateways.net/bzz:/theswarm.eth/.

[14] Ethercasts. State of the DApps[EB/OL].[2018-03-11]. https://dapps.ethercasts.com/.

[15] Ethereum. Web3.jsEthereum JavaScript API[EB/OL]. [2018-12-15]. https://web3js.readthedocs.io/en/1.0/.

[16] Ethereum. Solidity[EB/OL]. [2018-12-15]. http://solidity.readthedocs.io/en/latest/.

[17] Truffle Suite. Truffle overview[EB/OL]. [2018-12-15]. https://truffleframework.com/docs/truffle/overview.

[18] ATZEI N, BARTOLETTI M, CIMOLI T. A survey of attacks on Ethereum smart contracts (SoK)[C]// POST 2017: Proceedings of the 2017 International Conference on Principles of Security and Trust. Berlin: Springer, 2017: 164-186.

[19] OpenZeppelin. Library SafeMath[EB/OL]. [2019-01-03]. https://openzeppelin.org/api/docs/math_SafeMath.html.

[20] MARINO B, JUELS A. Setting standards for altering and undoing smart contracts[C]// RuleML 2016: Proceedings of the 2016 International Symposium on Rules and Rule Markup Languages for the Semantic Web. Berlin: Springer, 2016: 151-166.

猜你喜欢

智能合约区块链
农产品供应链金融信用体系框架设计
基于区块链技术的去中心化数字出版平台研究
区块链技术在互联网保险行业的应用探讨
智能合约的特点及其在债券市场的应用
保险企业的区块链技术应用方向选择研究
区块链技术在金融领域的应用与前景研究
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
基于区块链技术的数字货币与传统货币辨析
区块链技术在会计中的应用展望