基于区块链技术的C2C交易系统

来源 :软件 | 被引量 : 0次 | 上传用户:suzhenzsyf
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘  要: 区块链和智能合约是近几年最热门的技术,区块链技术具有去中心化、匿名化、可溯源等特性,智能合约是存储在区块链上的公开可执行代码,允许在没有第三方参与的情况下进行可信交易,这些交易可追踪且不可逆转,因此,将其应用在最不可信的C2C交易业务中具有较高的研究价值和实用价值。本文利用以太坊区块链平台和智能合约实现了C2C交易系统,利用该系统可以实现匿名且安全的交易,解决了信任问题、降低了信任成本。
  关键词: 区块链;智能合约;以太坊;C2C交易
  中图分类号: TP311.52    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.05.034
  本文著录格式:韩港成,康晓风,刘禹,等. 基于区块链技术的C2C交易系统[J]. 软件,2019,40(5):175178
  【Abstract】: Blockchain and smart contracts are the hottest technologies in recent years. Blockchain technology has the characteristics of decentralization, anonymization, traceability, etc. Smart contracts are public executable code stored on the blockchain, allowing trusted transactions without third party involvement. These transactions are traceable and irreversible. Therefore, applying them to the most untrustworthy C2C transaction business has high research value and practical value. This paper uses the Ethereum blockchain platform and smart contracts to implement the C2C trading system, which can realize anonymous and secure transactions, solve the trust problem and reduce the trust cost.
  【Key words】: Blockchain; Smart contract; Ethereum; C2C trading
  0  引言
  作为一种分布式的数据库,区块链是由密码学生成的一串数据块,每个数据块都包含网络交易信息,这些区块用来验证信息的有效性并生成下一个区块。区块链去中心化、开放性、不可撤销、不可篡改,并且具有很高的加密安全性。利用区块链的这些特点能够解决信任问题、降低信任成本。
  本系统以现有的Consumer To Consumer(以下简称C2C)交易业务为背景,将以太坊作为平台,使用智能合约设计并且实现基于的C2C交易系统,用户之间互相交易商品来验证智能合约以及系统的可靠性。本系统使用分布式节点一致性算法来产生和更新数据、使用了块链式的数据结构来验证与保存数据、使用智能合约来编程和操作数据的一种新的分布式基础架构与计算方式。并在数据传输上使用密码学相关技术确保数据和访问的安全性,使用该系统可以实现匿名且安全的交易。
  1  以太坊介绍
  作为一个提供可以执行图灵完备语言的虚拟机,开发人员能够在以太坊平台上开发分布式应用。位于以太坊的最上层称为Dapp,利用Web3.js提供的接口和智能合约层进行交互;负责在区块链平台上使用智能合约实现各种去中心化应用的称为应用层;以太坊特有的结构是合约层,提供了可以执行图灵完备语言的虚拟机,通过部署到区块链上的智能合约,从而实现去中心化功能;激励层的主要功能是对成功产生区块的节点进行奖励;封装网络节点的各种共识算法主要是共识层,当下主流的共识机制有PBFT、POS、POW等;以太坊使用的共识机制则是基于工作量证明,区块链上的每一个节点都会使用消耗算力的方法来竞争式地产生区块,用来确保安全运行整个以太坊网络;数据层由以太坊交易和区块等数据结构以及数据加密算法组成;网络层由P2P网络组成,实现了数据传播功能以及验证功能等主要机制。所有部署的智能合约都会运行在以太坊虚拟机(EVM)上,并且会调用RPC。位于EVM和RPC下面的四大内容分别是:BlockChain,共识算法,挖矿以及网络层[1-3]。
  2  智能合約介绍
  学者Nick Szabo在1994年最早提出智能合约概念,此概念诞生时被设计成一个使用数字形式定义的协议,所有合约的参与者都可以执行这些约定好的协议。该设计的初衷是通过将智能合约的构建为物理实体创建各种灵活且可控的数字资产。但是因为计算方法的落后性,并缺乏实际应用场景,智能合约的概念并没有得到研究人员的广泛关注[4]。
  然而,智能合约由于区块链的诞生而被重新定义。智能合约是区块链的重要核心构成要素。作为由业务驱动的、具有状态的、公开透明运行在区块链上的计算机代码,能够主动或者被动处理接收数据和管理区块链上的资产。作为嵌入式的合约,可以内置在任何区块链的业务处理上,形成编程控制且可复制的一种实用且创新的解决方案,能够在各类交易管理,合同管理等各类业务中发挥出重要作用[5-6]。
  在区块链上运行的智能合约部署流程如图1所示。智能合约在部署完成后会产生相对应的账户,存储着余额、私钥、地址等内容。区块链的每一个节点中执行智能合约,在执行结果上达成共识就会由矿工打包生成区块并更新智能合约的状态。智能合约可以根据合约代码自动完成资产的转移以及发送或接收消息[7]。   在EVM中运行智能合约必须需要消耗Gas,规定了上限,从而避免无限循环。假设整个网络状态为以合约运算剩余的Gas为g,区块链运行环境中的重要信息保存在元组I(当前合约地址,合约发起者地址,本次交易的Gas价格,交易输入数据,执行合约的账户地址,合约账户余额,当前区块头,当前CALL操作和CREATE操作数)内,系统状态转移函数记为ψ,σ为系统运行后状态,g为运行后剩余Gas,s为执行终止操作的合约列表,l为记录序列,r为运行后返还的Gas,ο为合约产生的输出,则整个状态转换可表示为:(σ,g,s,l,r,o)=ψ(σ,g,l)在大多数情况下,ψ被定义为不断迭代系统临时状态和虚拟机临时状态的过程,迭代的终止由以下两个条件决定:(1)系统状态出现异常使得EVM停止工作,例如Gas不足、指令无效、虚拟机堆栈不足等情况;(2)EVM执行完所有指令并返回结果,正常停止。在每一次迭代过程中,智能合约的指令被压入堆栈,EVM按堆栈索引执行指令.每执行一条指令就支付相应的Gas,直到所有指令执行完毕,堆栈被清空;若遇到异常,EVM则停止工作并逐层向上返回[8-9]。
  3  智能合约设计
  以太坊提供了各种编写智能合约的语言,其中最受开发人员欢迎的是Solidity,Solidity是一种脚本语言,类似JavaScript。本系统使用的智能合约基于Solidity编写。考虑到智能合约本身是一个牺牲时间换取安全性的语言,设计时候应遵循以下原则:(1)避免复杂嵌套,减少出现逻辑漏洞的可能性,使得安全性降低。(2)数据与逻辑相分离,存储与处理合约分离编写,便于后于升级以及减少复杂度。(3)涉及到资产转移时严格检查变量类型,避免出现溢出等漏洞导致难以挽回的损失[10]。
  根据以上智能合约的设计原则和思路,结合实际C2C交易业务中的交易流程,设计了本智能合约。C2C交易系统中各个类型合约接口的主要功能如下:
  (1)注册接口:该合约接口负责处理用户的注册请求,根据用户的注册信息自动生成一个钱包地址,并返回私钥给用户存储,系统不存储此数据,保障了用户的安全性。
  (2)交易接口:该合约接口负责处理用户之间的交易,根据用户需要交易的商品价格进行资产的转移,商品ID作为标签记录在区块链上。
  (3)余额接口:该合约接口负责处理用户在个人中心查询自己的钱包余额。
  4  C2C交易系统设计与实现
  本系统是基于以太坊区块链平台,用智能合约实现C2C交易业务,用MySQL数据库存储非隐私数据。首先介绍了C2C交易系统的总体结构,并设计和实现了其中的关键模块,然后编写C2C交易功能的主要算法,最后部署智能合约代码,实现C2C交易系统。
  基于智能合约的应用在以太坊中称为Dapp,即去中心化应用,其不仅要编写后端智能合约的逻辑代码,而且还要编写前端与其交互。以太坊中已经包含了后端智能合约与前端交互的接口,为开发的本系统奠定了基础。C2C交易系统中的层次架构主要包括四层:应用层、合约层、平台层以及节点层[11]。
  (1)应用层:该层主要负责用户与区块链进行交互,基于express框架开发,通过Web3接口中提供的方法,实现新建钱包自动化,资产转移自动化。用户自己的钱包由自己保管,不存储在服务器上,相较于传统模式极大地保证了用户密钥地私密性和安全性。
  (2)合约层:合约层主要调用已经编写好的合约代码实现C2C交易业务需要的各种逻辑,如资产交易,节点管理等。
  (3)平台层:主要基于以太坊平台进行开发,邓庄了各类数据的结构,并保证各个节点之间的信息交流。
  (4)节点层:各个物理节点是区块链的底层基础,如OSI中物理层所提供的功能一样。
  根据C2C交易系统的实际业务,结合Solidity语言的特性,将交易金额,交易商品ID,目标地址,订单状态等信息定义为结构体,并存储这些数据的Map,便于查看订单时进行遍历。根据定义的结构体类型,实现C2C交易业务。首先,用户通过浏览商品列表,确定需要购买的商品,然后绑定JavaScript事件将购买的ID作为参数传入智能合约,然后调用封装好的orderMake接口,从而实现订单的生成以及商品拥有权的转移。
  本系统使用truffle框架开发智能合约,truffle框架作为Solidity语言中最受开发者欢迎的框架,几行命令即可完成智能合约的整个部署流程,并提供了友好的交互。truffle部署后界面如图2所示。使用的客户端是ganache,ganache页面如图3所示。truffle部署成功后会在客户端(ganache)产生合約地址。本系统一切交易基于合约地址完成。部署完成后,用户即可通过前端的登录注册购买等功能与链上数据进行交互。
  用户交互选择了基于Node.js平台的web应用开发框架Express,既利用了高并发的优点保证了用户的使用体验,又利用了其与web3良好的兼容性降低了后续开发的难度。在用户注册之后,后端会调用web3的新建钱包接口,返回用户的钱包地址以及私钥,并提醒用户自行保存私钥,服务器不对私钥进行存储,如图4所示。MySQL数据库仅仅会记录账户的基础信息与用户钱包地址绑定,不会记录真正的私钥。用户既可以选择上传商品,也可以选择浏览商品列表进行购买,选择上传商品会提醒用户输入名称,价格以及商品描述,如图5所示。点击确认后自动返回商品列表,可以看到自己上传的商品以及其他用户上传的商品,如图6所示。点击购买按钮出出现模态框向用户进行确认,如图7所示,以及要求用户输入密码,点击确认后,用户在消耗Gas(类似于区块链上交易的手续费)后,等待区块生成,对应商品即可属于该用户,区块的hash对应订单ID供用户查询。该笔交易将会永久的记录在链上,交易信息公开透明且匿名化,任何人无法篡改。   5  结语
  作为目前最有潜力的互联网技术之一,区块链技术的应用场景正由加密货币延申至金融领域等各行各业。区块链技术具有去中心化、匿名化、可溯源等特性,是智能合约诞生的前提。作为存储在区块链上的公开可执行代码,智能合约允许在没有第三方参与的情况下进行可信交易,这些交易可追踪且不可逆转,因此,将其应用在最不可信的C2C交易业务中具有较高的研究价值和实用价值。传统的中心化交易不仅需要调用第三方支付,还存在着一定的安全隐患。本文在对以太坊区块链技术研究以及对C2C交易业务逻辑分析的基础上,完成了C2C交易系统的智能合约编写以及完整的交互逻辑,利用该系统可以实现匿名且安全的交易,解决了信任问题、降低了信任成本。
  参考文献
  [1] Omohundro S.Cryptocurrencie, smart contracts, and artificial intelligence[J]. AI matters, 2014, 1(2): 19-21.
  [2] 陈亚飞.基于区块链智能合约的仓单交易平台研究与实现[J].郑州大学硕士论文, 2018, 1: 1.
  [3] Karthikeyan Bhargavan, Antoine Delignat—Lavaud, Cedric Foumet, et a1. Shon Paper: Formal Verification of Smart Contracts[J]. Proceedings of the 20 16 ACM Workshop on Programming Languages andAnalysis for Security, 2016: 91-96.
  [4] 邵奇峰, 金澈清, 钱卫宁, 等. 区块链技术: 架构及进展[J]. 计算机学报, 2017: 1-20.
  [5] Zyskind G, Nathan O, Pentland AS. Decentralizing privacy: using blockchain to protect personal data. 2015 IEEE Security and Privacy Workshops. San Jose, CA, USA. 2015: 180-184.
  [6] 邹均, 张海宁, 唐屹等. 区块链技术指南. 北京: 机械工业出版社, 2016: 102-103
  [7] 蔡维德, 郁莲, 王荣, 等. 基于区块链的应用系统开发方法研究[J]. 软件学报, 2017, 28 (06): 1474-1487.
  [8] 黄洁华, 高灵超, 胡凯, 等. 众筹区块链上的智能合约设计[J]. 信息安全研究, 2017, 3(03): 211-219.
  [9] 安庆文. 基于区块链的去中心化交易关键技术研究及应用[D]. 东华大学, 2017: 39-45.
  [10] Watanabe H. Fujimura S. Nakadaira A. et a1. Blockchain contract: Securing a blockchain applied to smart contracts. 20l6 IEEE International Conference on Consumer Electron-ics. Las Vegas, NV, USA. 2016: 467-468.
  [11] 魯静, 宋斌, 向万红, et al. 基于区块链的电力市场交易结算智能合约[J]. 计算机系统应用, 2017, 26(12): 43-50.
其他文献
摘要:文章分析了贺州学院计算机专业转型发展过程中面临的挑战,从职业生涯规划、课程体系、“双师型”师资队伍和校企合作四个方面与国外应用技术大学进行了对比研究,提出了以校企合作为基础,校企双方功能需求和资源相互嵌入的“嵌入式”创新思路,并对“嵌入式”人才培养模式进行了理论研究,为全面向应用技术大学转型莫定了良好基础。  关键词:计算机专业;嵌入式;人才培养模式;转型发展  中图分类号:G642 文献标
期刊
摘要:遥感图像已经是人类生活离不开的一类图像,由于其强大的应用性导致了对其质量要求非常高,所以本文对遥感图像去噪融合算法进行了研究,将ICA应用于遥感图像的去噪和融合中,并与传统图像去噪和融合算法进行了比较。实验结果证明,该算法适用于高斯白噪声背景下遥感图像的去噪,也能兼顾分辨率及光谱信息实现遥感图像的像素级融合。  关键词:遥感图像;ICA;图像去噪;图像融合  中图分类号:TP391.41  
期刊
摘要:应急通信体系在城市运转遭到突发灾害或事故时,承担着及时、准确、畅通地传递第一手信息的“急先锋”角色,是决策者正确指挥抢险救灾的中枢神经。目前,我国已经认识到应急通信系统的重要性,因此我国各个部门已经配置了不少应急通信系统和设备,并且积累了相当的使用经验。但是,对于应急通信的功能需求和系统建设目前仍存在不少值得讨论的问题。本文重点探讨了一种改进的应急通信系统的原型设计和构想,为后续应急通信网络
期刊
摘要:航空发动机维修是一个具有高动态性和高复杂度的商业领域。本文采用多Agent方法对航空发动机维修进行调度仿真。本系统可对等待维修的飞机数量、周转时间和维修生产线利用率等关键指标进行分析,从而为航空发动机维修提供可靠的决策支持。同时,本系统以动态脚本的方式支持多种发动机可靠度估计算法,增加系统的可扩展度。最后,通过多个案例验证本系统的有效性。  关键词:计算机软件与理论;航空发动机维修调度;仿真
期刊
摘要:本文基于Roku流媒体播放器,设计开发了IPTV接入应用。分析了IPTV的体系架构,和业务流程;详细介绍了基于Roku的IPTV应用系统的接入应用开发:包括Roku与web服务器的数据通信,数据解析,Roku开发平台及编程语言BrightScript的介绍,Roku程序界面的设计,测试了Roku程序的可操作性,业务能力的可操作性,基本直播点播功能的可操作性,给出了该系统的运行结果,结果显示:
期刊
摘要:伴随随着互联网技术的发展,020餐饮领域发展迅速,然而平台同质化严重,个性化推荐已经成为提升用户体验和提高运营水平的一种主要方式。而传统的协同过滤方法在数据稀疏的情况下,用户推荐准确率不高。本文研究基于020餐饮行业背景,研究用户的行为对购买意向的影响,综合考虑购买行为、评价行,为等多种用户行为,判断用户的兴趣点,从而确定用户的购买意向,提出一种基于多种用户行为的购买意向模型。基于此提出基于
期刊
摘 要: 用糖尿病患者患病记录作为实例详细阐述了基于Apriori算法的关联规则问题。探讨了Apriori算法在关联规则中求解频繁项集的基本思想,并用实例描述了算法的执行过程。  关键词: Apriori;关联分析;数据挖掘;医学信息学  中图分类号: TP393.4 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.02.005  【Abstract】:
期刊
摘 要: 目前包车市场极其火爆,其中了解用户满意度对市场竞争尤为重要。以大学生包车服务平台为主体,构建用户满意度评价体系,并用层次分析法计算各指标权重,根据指标体系设计用户满意度调查问卷,采用SPSS软件对问卷进行有效性分析并构建结构方程,依据各指标用户满意度分析平台存在的问题,并提出改进方案。  关键词: 包车服务;用户满意度;AHP;SPSS  【Abstract】: At present,
期刊
摘 要: 机关事业单位人事管理制度错综复杂,加之人员不断增加、信息密度不断提高,对人力资源管理工作的要求更高。随着信息技术的快速发展,传统人力资源管理方式已经无法适应时代的进步和发展。本研究在对我单位人力资源管理现状和业务流程进行详细分析的基础上,整合现有资源,结合实际工作需求,构建了基于Web Service的人力资源管理信息系统,使人力资源管理更加科学、规范、高效,实现对人力资源信息的系统化、
期刊
摘 要: 随着工业社会的发展,空气质量问题已经成为环保任务的主要焦点。BP神经网络作为深度学习的一种,已经在大部分领域被广泛使用。为了让广大市民更好的了解空气质量情况,本文以云南省昆明市为例,收集当地近6年的空气质量数据,并基于Python语言,在Anaconda环境下的Numpy包建立了三层神经网络数学模型,对空气质量等级进行分类预测。通过训练样本对神经网络模型的训练以及相关参数的调试,得到較好
期刊