基于区块链技术的商品交易智能合约设计

2020-12-05 09:04樊郁徽
怀化学院学报 2020年5期
关键词:以太比特合约

徐 宁, 樊郁徽

(淮南师范学院计算机学院,安徽淮南 232038)

2019年6月,比特币市值突破11 000美元,再一次让比特币成为热点,而各种基于区块链技术的代币借着这股热度如雨后春笋般拔地而出.虽然比特币以及市场中一些类似的代币在货币领域的应用还存在一定的争议,但作为比特币的核心技术——区块链技术逐渐被人们接受和认可.从比特币到可编程金融,再到未来的可编程社会,一个无中心的区块链网络在争议声中不断快速发展.

区块链是一种基于网络的、通过去中心化和去信任化的方式集体维护的一套分布式账本的技术方案.其发展可以划分为三个阶段:区块链1.0阶段以比特币为代表,提供了非图灵完备的脚本语言;区块链2.0则是以以太坊为代表的可编程金融[1],智能合约是其代表性应用,并提供了图灵完备的可编程语言Solidity,拓展了区块链的应用范围;未来的区块链3.0将会是可编程世界,包括各种去中心化的应用和组织[2,3].

智能合约是区块链从1.0阶段向2.0阶段过渡的最有代表性的应用,在构建去中心化应用中发挥着重要作用.智能合约是Szabo于1994年提出的一个概念[4],是想通过计算机的协议和接口来自动执行两个或多个交易方之间订立的合同,从而消除对合同条款的争议.

1 区块链研究现状

区块链的概念产生于2008年.中本聪(Satoshi Nakamoto)在网站metzdowd.com的密码学邮件列表中发表的一篇名为Bitcoin:A Peer-to-Peer Electronic Cash System的论文中首次提到了区块链技术[5],他将区块链技术作为构建比特币(bitcoin)的数据结构与交易信息加密传输的基础技术.虽然比特币的合法性没有在国内获得肯定,但作为比特币的核心技术——区块链引起了国内外的广泛关注.2016年1月,英国政府发布区块链专题研究报告[6];同年12月,中国政府将区块链技术列入《“十三五”国家信息化规划》[7].2016年10月,工信部发布《中国区块链技术和应用发展白皮书》,这是首个落地的区块链官方指导文件[8].此外,中国人民银行也开展了基于区块链的数字票据交易的研究,并进行了相关测试[9].

近年来,区块链技术快速发展,吸引了众多机构的参与.在国外,银行和证券等金融机构成为研究主力,政府、监管机构、传统大型企业和新兴初创公司也都如火如荼地参与其中.

在金融领域,美国纳斯达克,美国存管信托和结算公司,澳大利亚股票交易所,欧洲清算银行、高盛银行、瑞银集团等都开展了区块链技术的探索,成立了相关的区块链金融实验室,对区块链在线支付、电子货币和结算等领域的应用进行了研究.

在国家层面,英国、俄罗斯、欧洲央行等从2016年开始对区块链技术在电子货币、证劵和支付结算领域的应用开展了研究.

在科技公司方面,IBM、微软在2015年就开始了分布式账本技术的研究,为区块链的应用进行了技术层面的设计,提供了可供使用的应用场景和生态系统.

一些国际合作组织也建立了相关的区块链联盟,如R3 CEV联盟、Hyperledger等.这些联盟有全球多家金融机构加盟,通过对银行业间的区块链技术进行开发,探索建立银行业的区块链组织,用于国际金融支付和清算领域,以及构建企业级的开源分布式账本框架.

在国内,区块链技术从2015年开始兴起,越来越多的企业开始研究区块链在本行业的应用,其中以金融企业为主.国内出现了研究区块链应用的企业联盟,也诞生了如万向、小蚁、布比等区块链实验室和企业.我国政府机构在保持谨慎态度的同时,也开始关注区块链研究的发展.中国平安、招商银行、微众银行等金融公司进行了区块链清算系统的应用研究.中国分布式总账基础协议联盟(ChinaLedger)、金链盟等区块链联盟结合国内政策法规、国家标准等搭建了具体的应用场景.

从国内和国际的发展情况来看,区块链技术得到了越来越多的国家及国际机构的认可.他们在该领域开展了大量的研究与探索,为区块链的未来发展提供了强大的技术及政策支持.

2 区块链技术的发展

区块链通过分布式共识机制保持内部的一致性,交易的内容记录在区块中,每个区块通过散列值链接上一个区块,形成一个链式结构,矿工通过计算,获得下一个区块的地址,在拥有记账权限的同时获得一定的代币奖励.通过支付一定的代币作为成本,用户可以拥有记账的权限,将发生的交易写在指定的区块地址中,并同步到网络中的各个节点上.当有人试图修改已发生交易的结果时,需要将所有节点中的交易信息都进行修改,否则不能通过一致性检测,不能成为合法的记录存在,而要实现对所有节点记录信息的修改需要大量的计算,这往往难以实现.基于区块链的这一特性,可以保证记录数据的不可篡改,这也是区块链在金融领域用于账目记录的一项重要应用.

2.1 区块链的架构

区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式.区块链的架构主要由6个层级构成[10],如图1所示.

图1 区块链架构

2.2 代表性的区块链应用

基于区块链技术的应用从最初的比特币到以太坊再到EOS(Enterprise Operation System,即为商用分布式应用设计的一款区块链操作系统),发展日新月异,新技术也在不断产生.

2.2.1 比特币

比特币是最早的区块链应用.它通过设计一个无中心的网络,利用POW(工作量证明共识算法)进行挖矿和产生新区块,矿工们通过双重的SHA256加密算法不断地对区块头和一个随机数字进行哈希计算,直到出现一个和预设值相匹配的解,第一个运算出结果的矿工将这个解广播到网络中,由其他矿工进行验证确认,验证通过后,作为新区块加入到链中,矿工在获得挖矿奖励的同时,也获得了将交易记录打包到新区块的权限,并可以收取打包交易的手续费.为了适应算力的提升,确保每10分钟才会计算出新的地址,比特币网络会不断调整计算的难度,当所有的2 100万个比特币全部发行结束后,矿工就靠打包交易的手续费来维持挖矿的动力.

比特币网络在交易记录上所花的时间较长,每秒的交易笔数只有7笔,不可能满足现有应用的需求,且交易的确认时间也要等到后续的6个区块建立,也就是1个小时之后.比特币网络的主要应用形式还是局限在加密货币上,但其协议也可用于创建智能合约.比特币提供了一种编程语言,允许自定义智能合约,如多重签名帐户、支付渠道、托管和时间锁,特别是在比特币的区块链上建立了一个名为RootStock的独立智能合约平台.

2.2.2 以太坊

以太坊是区块链2.0的产物.它采用了POS(股权证明共识算法)来代替比特币网络的POW,通过拥有的以太币数量来代替算力的权重,在一个POS系统中,区块链的新区块生成是通过该系统中的持币人,或者是一个有影响力的持币机构参与达成的.这比POW的挖矿具有更高的效率,不需要高性能的硬件,也不需要花费更多的电力.

以太坊与比特币之间最大的不同在于:以太坊可以支持更加强大的脚本语言(图灵完备的脚本语言),允许开发者在上面开发任意应用,实现任意智能合约.以太坊就像苹果的应用商店,任何开发者都可以在上面开发应用,并出售给用户.目前以太坊每个区块大约能容纳200笔交易,以平均出块时间为15秒来计算,以太坊的交易处理速度可达13笔/秒.

2.2.3 EOS

EOS是一种新的区块链架构,旨在实现分布式应用的性能扩展,被称为区块链3.0.

EOS通过并行链和DPOS(委托股权证明共识算法)的方式解决了比特币和以太坊所面临的延迟和数据吞吐量的难题.EOS每秒可以执行上千级别的处理量,在EOS上转账交易与运行智能合约并不需要消耗系统代币.EOS网络的带宽和算力的分配是由代币持有的份额来决定的.这意味着如果某人拥有1%的EOS代币,那么他就永远只能获得1%的网络带宽,而不论网络剩余部分的负载情况.

与比特币、以太坊相比,EOS更侧重于应用,比特币和以太坊分别代表着区块链1.0、区块链2.0,重心分别是货币、智能合约,EOS则是借鉴与延续之前的思路重新开发,代表了以应用为主的区块链3.0.

通过对区块链不同发展阶段的三种代表性应用的介绍,我们可以从所属阶段、功能、共识机制、区块产生、交易性能、编程语言等几个方面来进行比较,如表1所示.

表1 比特币、以太坊和EOS比较

图2 以太坊智能合约的部署和执行步骤

3 智能合约

智能合约最早可以追溯到20世纪90年代中期,当时Nick Szabo预测数字革命将彻底改变人类订立合约的方式[11].智能合约的订立可以通过将协商一致的条款以计算机代码实现而非日常语言或法律语言来记录,其工作的基本原理类似于计算机程序的if-then语句,在预先设定的条件达成时,就自动执行相应的合同条款.智能合约是自我执行、自我强制的.只有智能合约才能修改(追加)帐本数据.简单地说,智能合约就是根据事先制订的规则来自动转移数字资产的系统.

智能合约是一套以数字形式定义的约定,包括合约参与方可以在上面执行这些约定的协议.智能合约的基本思想是,各种各样的合约条款可以嵌入到人们使用的硬件和软件中,从而使得攻击者攻击时需要付出很大的代价.

区块链技术出现后,其多方存储、多方计算、规则透明、不可篡改等特性,恰好为智能合约提供了安全可靠的记录载体和执行环境[12].智能合约像是一个活在区块链系统里的自动代理人,他有一个自己的区块链地址,当用户向合约地址里发送一笔交易后,该合约就被激活,然后根据设定确立交易双方合约的每一个细节,并会按照事先编写好的程序,在特定条件发生时正确执行合约里的条款,合约会运行自身的代码,最后返回一个结果,这个结果可能是从合约地址发出的另外一笔交易.

现阶段,以以太坊(Ethereum)为代表的智能合约技术成为各界关注的热点,以太坊通过支持图灵完备的开发语言,允许用户在以太坊中发布各种智能合约,以太坊提供的虚拟机(EVM)是智能合约的运行环境,EVM以沙箱的形式提供一个隔离的运行环境来执行智能合约[13].使用推荐编程语言开发的智能合约通过EVM将合约代码解释成EVM字节码,然后经过以太坊网络节点验证后部署到区块链上.智能合约的部署和执行如图2所示.

4 基于以太坊的商品交易智能合约的设计

作为商品交易平台,淘宝、京东、亚马逊等都已经成功地开展了相关业务,并取得了丰硕的成果.作为中心化的电商平台虽然向商家和消费者提供了可信的资金交易环境,但相应地也会出现一些问题.中心化的电商平台需要在商家和消费者间起到调解和仲裁的作用,这样不可避免地会出现一些争议,并需要消耗平台的资源.去中心化的商品交易平台利用智能合约约定商户和消费者间的交易行为,交易双方认可智能合约的执行条件,当执行条件满足时,由平台自动执行合约约定的结果,以避免交易中产生争议.由于智能合约是部署在区块链中,并通过共识算法为全网所确认的,是无法修改的,这也避免了一些由于合同内容的篡改所导致的纠纷.

4.1 商品交易智能合约模型设计

结合传统电商的交易流程,设计出商品交易智能合约的模型,如图3所示.

图3 商品交易智能合约模型

图4 商品交易智能合约算法示意图

商家与消费者注册成为区块链的用户后,区块链将会为每一个用户分发公钥和私钥,公钥为用户在区块链上的账户地址,私钥为用户加密的密钥.然后交易双方根据需求协定一份智能合约,交易双方用各自私钥签名确认合约信息,以确保合约的真实性,避免合约被恶意篡改.合约内容通过P2P网络传入区块链中,并由认证节点对此合约验证,共识完成后,将合法合约存入数据区块中并自动执行.此交易模型实现了系统的去中心化,交易和合约信息公开、透明、不可篡改,合约自动存储和执行.

4.2 算法设计

根据商品交易智能合约模型,结合传统商品交易流程,提出商品交易智能合约算法,算法流程如图4所示.

算法具体步骤如下:

开始:

Step1:消费者查询商家的商品信息;

Step2:消费者确认购买商品,发送交易信息给商家;

Step3:交易双方确认合约信息,生成合约;

Step4:合约生成,并在链中完成共识,将执行函数导入区块,并根据结束条件完成清算;

完成合约执行.

5 智能合约的执行

本智能合约的发布与执行是在以太坊私有链上实现,通过Chrome浏览器的轻量级钱包插件Metamask来执行以太币的转账、付款功能.其中,商家填写相关商品信息数据并提交后弹出Metamask支付交易费用,然后填写的数据将提交到服务器端的MySQL数据库中存储;消费者根据商家发布的智能合约的ID查询相关商品信息,并通过Metamask进行转账付款,智能合约通过调用物流的签收信息或者消费者的确认收货信息完成交易.

在测试网络中对智能合约的执行进行测试,以支付Gas的形式完成智能合约的运行.Gas作为以太坊中执行交易的计算工作量度,与以太币之间存在换算关系,每笔合约执行时支付的Gas越多,被优先打包存储的机会越高.

智能合约的发布和执行需要支付一定的Gas,并且随着以太坊网络越来越拥堵,执行智能合约的代价会越来越大,这将给智能合约的拥有者带来经济压力.

以太坊作为真正支持智能合约并得到广泛认可的区块链,在共识算法上较比特币时代有了很大进步,在执行合约的速度上也较比特币时代有了进步,但相对于中心化网络每秒百万级的TPS(每秒事务处理量Transaction Per Second)还有很长路要走.在未来的区块链3.0中,这种情况会大大改善,以EOS网络为例,交易的费用已不再收取,交易的确认也不需要全网的51%节点认可,而是由投票选出的超级节点来完成区块的产生和记账,这样一来,交易的速度会大大提升,逐渐达到中心化网络的性能,并通过提供企业级的区块链操作系统,使应用的开发和部署更加简便.

猜你喜欢
以太比特合约
基于活跃节点库的以太坊加密流量识别方法
以太万物理论概述
车易链:做汽车业的“以太坊”
比特币还能投资吗
比特币分裂
比特币一年涨135%重回5530元
A Study on the Contract Research Organization
神秘的比特币