摘 要:新兴的区块链和智能合约技术提供了解决资产交易问题的新途径。作为分布式账本数据库的区块链,记录了不可变更的数据资产。区块链上的智能合约直接控制资产交易,构造了基于智能合约的可信税收业务计算环境,为完全数字化资产的记录和转移奠定了基础。因此,基于HyperledgerFabric区块链平台研究智能合约,给出了智能合约的税收场景设计,包括智能合约的执行模型、税收区块链的总体架构、Go语言的合约实现及说明,分析了税收场景设计距离工程应用的距离、优缺点、可能的法律、监管问题及展望,为企业、政府开发基于区块链技术的智能合约提供参考。
关键词:智能合约;区块链;税收;法律;联盟链
0引 言
区块链技术[1]是国内外企业、金融和政府关注的重点。智能合约作为区块链的重要组成,是区块链被称为颠覆性技术的主要原因。智能合约(SmartContract)在区块链中可以概括为一段代码,运行在去中心化的、复制的账本上,能保持自己数据的状态,控制数字资产,对收到的外界信息和资产回应。
从用户看,智能合约是一个自动执行账户,满足预设条件就会释放转移资金。从开发人员看智能合约则是网络服务器,这些服务器不是被架在互联网上使用IP地址,而是架在区块链上。因此,区块链及其智能合约被认为是实现价值互联网的重要手段,最终实现人们在网络上像传递信息一样方便、快捷、低成本的传递价值。
1智能合约的发展
早在20世纪90年代,密码学家NickSzabo[2]就提出了智能合约的概念,用程序代码实现人们约定的合同条款。程序从外界获取信息识别并判断,满足条件则触发程序完成相应的操作,如资产转移、交易等。但是,由于缺乏支持可编程合约的数字系统和技术,Szabo的理论迟迟没有实现,只有一些原始粗糙的应用,如刷卡机(PoS)、自动售货机等。
在生产产品和提供服务的过程中,要把人和物、人和人整合,才能创造更大的价值。比如,汽车发动机的几千个零件涉及多方面专业,需要不同工厂协作完成。所以,建立合约将某个部件生产外包给别人,别人也许会继续外包,形成一个合约网络。在双方约定的过程中,大家希望交易利于自己,所以要创建共赢的交易。如果用程序代码实现合约网络,则能更好地保障参与方的权益。区块链的出现解决了平台问题,如去中心化、不可篡改、过程透明和可追踪等特点,天然适应于智能合约,也使智能合约被企业、金融机构所关注。
区块链1.0以比特币为代表,在去中心化的网络中支付加密货币。区块链2.0则要实现更宏观的目标,对市场去中心化,使网络中不仅交易货币,还包括其他数字资产,如房产、汽车等。区块链3.0则转向社会治理,如身份管理、公证、仲裁审计何投票等领域[3]。
当前,区块链和智能合约技术的结合成为解决方案的研究热点,如Hyperledger[4]、以太坊[5-6]和Codius[7]等,都通过建立在可执行基础设施上的可编程合约语言实现智能合约。智能合约作为区块链上的脚本,在节点间以分布式形式执行,类比法律法规在交易、合同中的应用。智能合约按照双方事先约定的条件,保证合约安全、可信、按需以及可监管的执行。表1展示了典型的智能合约项目平台。
不同的区块链平台针对不同类型的应用场景。公有链平台以比特币为代表,任何人都可参与记账;私有链平台通常用于金融机构或公司、政府的内部审计;设计的税收智能合约场景跨联盟和组织,通常多个机构组织具有记账权,属于典型的联盟链应用。因此,本文选择最具代表性的HyperledgerFabric区块链平台进行设计。
2智能合约的工作原理
智能合约[8-9]一般包括以下内容:交易(Transaction)处理,保存机制,一个完备的状态机用于接收和处理各种智能合约,事务保存和状态处理则在区块链上完成。
调用智能合约[10]需要满足触发条件,一旦符合条件,就从合约代码传出预设的数据资源。它最重要的特点是,输入智能合约的是一组事务,处理后的输出也是一组事务。类似于生活中的合同,使一组复杂、有触发条件的数字承诺按照参与方的意志自动执行。通用的智能合约模型如图1所示。
智能合约系统HyperledgerFabric是一个开源区块链底层系统,像安卓一样提供了丰富的API接口,可以使人在上面开发各种区块链应用场景。主要较成熟的平台中,HyperledgerFabric是面向企业联盟的区块链应用,也是此次应用设计选择的主要原因。它的智能合约又被称为Chaincode,选用docker容器作为沙盒环境,容器中有被签名的磁盘映像和Go语言运行的SDK。上层应用通过gRPC或REST,与运行在HyperledgerFabric节点上的智能合约进行通信。
3税收交易区块链的总体架构
区块链从比特币发展到引入智能合约的以太坊,再到联盟链HyperledgerFabric,尽管各应用实现上有所差别,但体系架构上有一定的相似度。图2给出了税收区块链的体系架构及相关软件模块。最底层的网络层包括了P2P组网机制、数据传播机制和数据验证机制,使得区块链具有自动组网功能,可以适应网络变化而查询到完整的结果集,也方便数字资产交易类应用。HyperledgerFabric的P2P协议基于HTTP/2协议实现,节点时刻监听网络中广播的数据。当收到邻居节点发来的新区块交易时,根据预先设定的背书策略,验证这些交易和区块是否有效,验证内容包括数字签名、工作量证明等。只有通过验证的交易,才会被加入正在构建的区块。通过验证的区块,才会接入区块链并转发。其中,加入正在构建的区块,还涉及排序节点(Orderer)。
共识层使用先进的PBFT(PracticalByzantineFaultTolerance)算法解决分布式一致性问题,在n≥3f+1的条件下解决拜占庭将军问题(n是网络中总节点数,f是最多可容忍的恶意节点个数),并在异步通信中使拜占庭协议的复杂度从指数级别降低到多项式级别。在税收智能合约设计中,共识流程如下:在网络中设定一个主节点orderer(排序节点,如图3所示),负责把网络中收集的交易排序后生成列表,并向其他节点扩散;其他各节点收到交易列表后,根据列表中交易排序模拟交易;模拟完排序的交易后,生成交易结果的哈希摘要,并向其他节点广播。每个节点如果收到2f个节点的摘要与自己相同,就向全网广播commit消息;如果某节点收到2f+1条commit消息,就可以生成新区块,并把交易提交到区块链和状态数据库。该共识流程设计的拓扑结构,如图3所示。值得一提的是,org1和org2的锚节点设置(本案例设置图中0和2号节点分别代表org1和org2的锚节点)体现了联盟链特征,可防止单点失败。Org1的peer节点与Org2的peer节点加入通道,通过对方组织的锚节点来发现对方所有加入通道的节点。
数据层在数据结构方面如图4所示,设计上基于文档时间戳证明各类文档的创建时间,并提供数字公证服务。时间戳服务器对文档、时间和指向之前文档的hash指针签名,后续文档重复该操作,形成基于时间的证书链,无法篡改。每个区块都包含类似图4中所示的区块头和区块体。块头存放Merkle根、时间戳和前块哈希等。块体存放批量交易数据。一个块内所有交易不断两两哈希生成最终的Merkle根,实现了交易的不可篡改性和支付的可验证性。每个区块通过前一区块的哈希把所有块连接在一起。块头包含难度值、nonce等数据。在数据模型方面,HyperledgerFabric采用了基于账户的模型,可根据账户快速查询当前状态,支持功能丰富的通用应用。在存储方面,按照日志文件格式存储,通过哈希键值检索数据(通过交易哈希检索交易数据,通过区块哈希检索区块数据),索引和状态数据一般存储在Key-Value数据库。HyperledgerFabric目前支持LevelDB和CouchDB数据库存储和索引。
智能合约层扩展了区块链功能,用算法程序实现预设场景,编制合同条款。Fabric平台中的智能合约称为Chaincode(链码),选用Docker作为沙盒,运行机制如图5所示。按预设场景编写完合约代码后,将其安装并实例化到区块链的网络节点上。部署后的合约被打包为Docker镜像,各节点基于该镜像启动一个新Docker容器并执行合约中的实例化方法,然后等待调用。应用层通过调用智能合约实现各种交易场景。如果是转账等数据修改类调用,要在网络中的所有节点达成共识,然后修改会被记在区块链,结果会存储在状态数据库。在本用例中,转账的金额和税收的金额被记入区块链,而账户余额包括税收账户存储在状态数据库中。如果是查询,则不需节点共识。
4税收智能合约的设计
市场交易中,常常出现偷税漏税的情况。比如,饭店老板常常以赠送小礼品的方式拒绝开发票,大型企业在交易时使用银行转账存在虚假报账偷税漏税的情况。小数额交易太过琐碎,税务局追查不便;大数额交易即使追查,也会耗费巨大人力物力。在支付宝、微信等电子支付手段越来越普遍的情况下,提出以智能合约的方式实现对偷税漏税的零容忍。
在税收区块链中,针对交易数额进行设计。图6是交易中的税收过程。当区块链收到代码的触发交易时,从区块链读取代码,基于交易数额、合约状态与外界信息执行代码,并通过Fabric区块链平台提供的智能合约接口查询区块链信息,把结果返回链上。应用中涉及的接口如表2所示。
在交易场景中,对每笔转账设置几种交易金额的税收比例,以合约方式自动完成交易场景中的税收过程。HyperledgerFabric平台的智能合约也称chaincode(链码),是应用层与区块链交互的渠道和交易的来源。编写合约的实质是实现链码接口的Init、Invoke和Query函数,分别对应部署合约、执行交易和查询状态。
Go程序在运行前会对所有对象加载,生成相应的节点和组织的证书和每个节点的公私钥。该智能合约主要实现以下场景:初始化3个角色A、B、C,A客户向B商家付款,总金额的税率比例自动转入税务局的C账户;可以查询A、B、C三个账户的金额,确认交易成功,也可以删除账户。可以根据法律、税率,不同交易金额设定分段函数执行每笔交易的税收功能。
合约代码的可信是通过把代码部署在区块链上实现的。交易触发时,网络中的节点会读取链上的代码并执行,触发机制如图7所示,通过Go实现说明。在Go语言运行前,会将代码安装在区块链节点上并实例化。该过程也可理解为对象的加载,这样在运行中可以知道所有属性和方法。通过shell可执行文件或手动输入,可以使合约动态获取对象信息和调用对象的方法。智能合约被实例化后会被编译为字节码,等待触发执行。当触发时,通过Fabric区块链平台提供的接口与合约信息交互。
税收智能合约的全生命周期如图8所示,主要包括:创建点对点交易的沙盒环境、在节点对智能合约的信息进行注册登记和节点传递参数进行场景初始化。此三者为合约部署流程。链码部署成功后,会创建连接到部署它的VP节点的gRPC通道,以接受后续Invoke或Query指令。节点传递transaction(交易)或query信息给接口,以调用相关函数执行税收场景,其中图8中的步骤4~步骤7都属于代码执行阶段。智能合约类比社会中的法律法规,维护网络环境中事先约定的秩序,可以根据不同场景和约定调整。
5优势及劣势分析
5.1优势分析
设计基于区块链的税收应用场景,借助了区块链作为分布式数据库的优势。
5.1.1可信信息共享
数据库通过去中心化的架构,由多方共同管理维护,任何一方不能完全操作数据。区块链依靠每个区块头的哈希指针和块体的Merkle树实现不可篡改,而共识机制则加固了数据的安全性,促进了公平公正。5.1.2可追溯还原区块链上存储了运行以来的所有数据,对交易纠纷、税收公正都有益处,方便追溯还原所有历史,提高监管、审计和执法的效率。
5.1.3高可用可信
税收合约自动执行所有电子交易的税收功能。为相关的报账、审计工作提供方便,网络中无需参与人相互信任,审计监察也无需担心偷税漏税事件。每个事务都要发送者签名,且全网共识后才记录在区块中。多节点备份降低了原有数据库的建设和维护成本。
5.2劣势分析及发展方向
本次借助HyperledgerFabric平台设计税收应用场景,本身也存在很多不足需要克服。
5.2.1交易量低
当前,主流区块链架构吞吐量不大,主要原因是它们采用的共识算法系统开销巨大。不管是比特币区块链采用的PoW,还是HyperledgerFabric采用的PBFT算法,都是以牺牲电力或带宽性能确保安全的。例如,比特币吞吐量为7TPS,以太坊为20~30TPS,HyperledgerFabric平台虽有进步,但也不过2000TPS。基于智能合约的税务场景虽然设计可行,但工程角度远不能满足当前巨大的电子交易量。
从以上数据可以看到,各区块链平台系统性能的关键瓶颈受制于共识算法。典型代表Fabric平台采用的PBFT共识算法虽然理论证明完备,但大规模应用面临广播带来的网络开销过大问题。在以后的发展中,包括选取部分主节点共识的算法、基于特定场景减少网络广播的共识算法、融合PoW与PBFT共识算法的优势等都会受到关注。
期刊推荐:《通信技术》杂志由信息产业部主管、中国电子科技集团第三十研究所主办。16开本,每月10日出版,国内外公开发行的月刊。杂志1967年创 刊,是国内创办时间长、影响大的计算机专业媒体,2004版中文核心期刊。主要报道信源处理、传输、业务与系统、网络、移动通信、信息安全等方面的先进技 术、理论研究成果和最新动态。
* 稍后学术顾问联系您