基于区块链的销售佣金结算方法

2021-09-09 07:08白海洋
江苏通信 2021年4期
关键词:账本合约共识

白海洋

中国电信股份有限公司江苏分公司

0 引言

销售佣金是企业为促进业务发展向合作伙伴支付的服务酬金。传统运营商佣金结算系统面向合作伙伴提供销售佣金按月结算的出账服务。随着业务形态和营销模式的不断发展,特别是面向个人合作伙伴的营销激励方式不断升级,合作伙伴已不仅仅满足于月度总账的准确性,更是对每笔业务的结算进度、结算依据查询提出了更高的要求。此外,防范国有资产流失、加强企业成本审计监管等方面对佣金结算系统的数据存证能力也提出了新的挑战。

在传统佣金结算体系下,由于技术架构等因素制约,存在数据可被篡改、计算结果不透明、计算轨迹难以追溯等问题。具体如下:(1)电子化的历史信息难以固定,结算规则和结果存在被篡改的可能,给问题核查和审计监管带来一定难度;(2)系统处理过程是一个黑盒,结算流程不公开透明,计算的可信度难以证明;(3)仅可提供最终结果,在不结算状态下难以给出结算轨迹和不结算原因的追溯查询。

利用区块链技术数据不可篡改、智能合约可信计算、历史信息可追溯等特性设计本方法,将结算全流程、全要素数据上链,设计结算智能合约,实现以下效果:(1)上链数据不可篡改,提升结算可信度,为审计监管提供数据存证能力;(2)智能合约自动化结算批价,提升计算可信度;(3)结算全流程可追溯,不结算原因清晰可查。

1 相关技术

2009年,中本聪发表《比特币:一种点对点的电子现金系统》,一种新型的数字货币体系就此构建。随着比特币系统的稳定运营和比特币的持续火爆,其底层区块链技术也越来越多的被关注和认可。区块链的本质是一种去中心化、防篡改的分布式数据账本技术,设计的初衷是为数字货币提供可信任的网络交易环境。随着智能合约技术的诞生,以及以太坊、超级账本等技术平台的日趋成熟,区块链技术的适用范围快速扩大到非金融领域,在多个领域逐渐形成比较成熟的应用。本方法即区块链技术在营销佣金结算领域的具体应用。

区块链技术并非一项完全新诞生的技术,而是对诸多技术的有机整合,包含P2P网络、密码学中的非对称加密技术、哈希算法、共识算法、分布式存储等。以下分别阐述与本方法密切相关的关键技术。

1.1 非对称加密技术

加密算法根据加解密的密钥是否相同分为对称加密和非对称加密。对称加密技术的加解密双方使用相同的密钥,解决了信息在不安全信道上传输安全的问题,但没有解决密钥传输的安全问题。在非对称加密技术中,加解密使用不同的密钥,分为全网可见的公钥以及仅有本节点掌握的私钥。在区块链网络中,通过公私钥体系解决了信息加密传输和数字签名两个问题。信息在区块链网络节点之间通过密文传输,并且每个节点对于其发送的交易信息是不可抵赖的。

1.2 共识算法

共识算法致力于解决去中心化的分布式网络中各个节点写入账本的信息如何达成一致的问题,是区块链技术的核心。区块链系统中主流的共识算法包括工作量证明(Proof of work,PoW)、股权证明(Proof of Stake,PoS)和权威证明(Proof of Authority,PoA)等。比特币采用PoW共识算法,要求各节点基于自身算力共同求解一个计算复杂但验证容易的数学难题,最先提交一个可行解的节点获得本次的记账权,并获得比特币的激励。在PoS系统中,持有最多数字货币而非最高算力的节点具有最大概率打包下一个区块,从而解决PoW需要耗费大量算力的问题。PoA则是一种由指定的权威节点产生区块的共识机制,所有的权威节点地位相同,可以通过投票的方式踢出或加入权威节点。以上共识算法在特定的区块链系统中有着各自的应用,但在容错性和共识效率上,难以满足商业应用。

实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)基于消息传递一致性算法,在异步系统中实现信息一致性同步的效率较高,每秒处理交易速度可达上千笔,同时实现1/3节点的容错性。

本文使用的鲁棒拜占庭容错算法(Robust Byzantine Fault Tolerance,RBFT)在PBFT基础上加入主节点的重新选举机制和节点监控机制,大大提升了系统的健壮性。

1.3 智能合约

智能合约可以理解为现实合同的链上数字化体现,是运行在区块链上的程序代码。当满足合约规定的条件时,约定的结果必然执行,从而达到公正执行和自动追偿等目的。

智能合约通常被视为是区块链技术2.0的标志,极大扩展了区块链的应用范畴。区块链上数据分布式一致、不可篡改等特性保证了基础数据的公正性,智能合约的引入让程序的执行变得同样公开透明,提高了计算的可信度。

2 方法总体设计

2.1 区块链底层平台

本方法基于中国电信自主研发BaaS(Block chain as a service,区块链即服务)平台,提供数据账本、共识、P2P网络等区块链核心服务,并在以太坊基础上提供高级语言的接口封装,对上层应用屏蔽底层区块链技术差异。区块链底层平台的基础框架如图1所示。数据层提供分布式账本的管理能力,非对称加密算法以及Merkle树为区块节点打包提供校验。上层P2P网络提供各个节点间数据传输的网络环境。共识层运行本方法设计的RBFT共识算法。合约层集成以太坊虚拟机,支持Solidity智能合约语言。管理层提供各个节点的成员管理以及公私钥的创建和分发管理功能。接口层封装了Java等高级语言的API,提供友好的业务平台交互,屏蔽底层区块链平台的实现差异。

图1 本方法基于的区块链底层平台架构

2.2 区块数据模型设计

本方法使用的区块结构如图2所示。区块的头部包含区块编号BlockNum、上一个区块的哈希值PreviousHash、时间戳TimeStamp、默克尔树根的结果MekleTree,及其它辅助头部信息。区块的交易体中保存着经过共识的业务相关交易数据。本方法中交易数据包含三类:销售业务订单的基础资料信息、结算规则信息、结算轨迹和结果信息。三类信息通过不同的智能合约打包成区块,写入区块链分布式数据账本。

图2 本方法的区块数据模型

2.3 总体方法流程

本方法基于区块链技术提供一种通用的销售佣金结算方法。通过共识算法保证数据的分布式一致和不可篡改,实现关键数据的链上存证,并提供结算过程的追溯查询。通过智能合约实现区块链上的可信计算。

本方法利用区块链中联盟链技术,加入的计算节点由认证中心CA进行授权,并颁布数字证书。任一节点可接收客户端发送的请求,通过冗余拜占庭共识算法(RBFT),将结算规则、结算依据、结算过程、结算结果等结算全流程、全要素数据在区块链各节点间达成共识,并记录到各节点的数据账本中,保证了各账本的一致性和不可篡改,实现数据的上链存证。上链的数据具有严格的时间排序,根据交易流水可进行结算过程的追溯查询。

本方法利用区块链的智能合约技术,组织关键数据写入区块链并通过智能合约执行自动化结算,步骤如图3所示。

图3 本方法核心处理流程

步骤1:数据采集和预处理。在各个相关源系统侧建立区块链节点,采集结算所需的规则数据、店员(即合作营销人)基础资料数据、报单(提交销量信息称之为报单)基础资料数据、销售产品的相关订购和状态数据等,并进行格式、阈值等必要的预处理操作。

步骤2:数据共识上链。区块链平台通过共识算法将结算资料写入区块链各个节点的数据账本。在各节点的数据账本中,将保留全网一致的完整的结算基础资料数据,不可篡改的基础数据一方面对数据进行了固定,达到存证效果,另一方面为后续批价计算提供了数据输入。

步骤3:智能合约批价计算。报单触发结算智能合约的计算,根据结算规则逐条匹配结算资料,结算出清单或错单,将结算结果和结算轨迹输出到区块链账本中。

步骤4:计算轨迹追溯查询。通过读链的智能合约获取区块上的历史版本的数据,提供奖励结算的追溯查询。

2.4 结算数据流程

结算系统及其它源系统节点根据店员报单,采集结算规则和结算所需基础资料,通过上链合约UploadContract,经过共识算法写入区块链分布式账本。活动规则计算合约SettleContract以报单为维度,实现规则和资料的匹配计算,并详实地将每条计算轨迹记录上链。当满足结算条件时,输出该报单的结算结果;当未匹配到任何规则,可完整追溯查询本报单的计算轨迹,定位到具体不符合条件的结算因子(结算规则的基础单元),提供不结算原因查询。链上数据查询合约QueryContract根据交易哈希定位到具体区块,并获取区块体中的交易数据,作为链上数据的输出。业务系统将根据报单ID等信息串联起一个报单在链上的全生命周期,提供追溯查询功能。

2.5 结算处理过程的状态转移

本方法以订单和规则两个维度组织资料上链以及提供智能合约计算。报单提交动作和规则变更动作均可触发系统状态转移。如图4所示。

图4 结算处理过程中的状态转移

详细步骤描述如下:(1)报单提交进入初始状态S1;(2)S1->S3完成了报单及相关资料的解析上链;(3)对于需要匹配产品激活信息以及终端激活信息的报单,需完成S4、S5状态,才会进行下一步状态转移;(4)当活动或规则信息变更,状态位为S2;(5)S2->S6完成了活动或规则数据的解析上链;(6)当S3、S6均处于就位状态时,订单的处理可前进到S7状态;(7)对于有延迟匹配条件的活动,智能合约会循环匹配,S7->S8循环匹配直至所有条件匹配完成或达到最大匹配次数;(8)S7->S9,结算结果输出至区块链;(9)S9->S10,进入终止态,该报单的所有结算流程状态结束。

3 共识算法设计

3.1 共识机制和执行步骤

定义一个五元组〈Action,Source,Info,Dest〉σi,各元素作用描述如表1所示。其中,信息可以在本步骤中仅产生计算而不产生传播,故Dest为非必要元素。

表1 RBFT共识算法五元组的含义说明

如图5所示,分区节点间共识及写入区块的步骤如下:

图5 本方法采用的共识算法信息计算和传播步骤

步骤1:由认证管理中心CA为准入的区块链节点颁发数字证书:〈Authentication,CA,ca,i〉σ,并广播公钥给其他节点:〈Broadcast,i,ca,all〉σi。

步骤2:〈Transcation,c,rid,any〉σc,客户端client向任一准入节点发送数据请求,请求消息编码为rid,以client的私钥加密。接收节点s对接收到的信息使用client的公钥进行MAC(Message Authentication Code,消息认证码)认证,确保数据没有被篡改,且通过私钥加密——公钥解密的认证实现了数字签名,即数据由client节点产生是不可否认的。通过MAC认证才执行下一环节。

步骤3:〈Broadcast,s,rid,all〉σs,接收节点s将数据广播给其他所有节点,并以s节点的私钥加密。

步骤4:〈Sort,pr,rid〉,主节点Primary对s节点广播的数据进行MAC校验通过后,对数据进行打包排序操作,形成Prepare消息,并发送给其他所有节点,〈PrePrepare,pr,Prerid,all〉σpr。

步骤5:其他节点i接收到主节点的打包排序结果后,利用步骤3获得的rid的消息,打包排序并与主节点发送的Prepare消息做比对。校验通过形成本节点的Prepare消息,向其他所有节点广播校验结果〈Prepare,i,Prerid,all〉σi。

步骤6:当节点收到quorum(quorum=(N+1)/2,N为节点总个数)个节点的Prepare消息,开始验证区块,并将验证结果与步骤4主节点发送的Prepare信息进行比对,均通过则进入提交环节。

步骤7:提交环节,当节点接收到quorum个节点的确认应答信息,即quorum节点之间已经达成共识,则认为客户端发送的消息得到了多数节点的认可,将其写入本节点的账本:〈Commit,i,rid〉σi。

步骤8:节点记账完成,分别给客户端做应答,〈Reply,i,Rprid,c〉σi。

通过以上步骤,客户端的发送数据在区块链的各个节点间达成交易共识,并记录在所有节点的账本上。

3.2 算法鲁棒性设计

当3.1节步骤4中的主节点失效或性能产生较大劣化时,监控节点会发起主节点重新选举,指定新的主节点,从而提高系统整体的鲁棒性。如图6所示。

图6 主节点重新选取选用的时延段示意图

主节点PrimaryNode重新选举的执行算法描述如下:

步骤1:监控节点MonitorNode的产 生,Monitor Node=(PremaryNode+1)%N。

MonitorNode为监控节点编号,N为总活跃节点数,PrimaryNode为当前主节点编号。各个活跃节点的编号从1开始。

步骤2:采集PrimaryNode到MonitorNode的时延Δp。

步骤3:判断Δp是否超安全时延阈值threshold,Check(Δp)>threshold

其中threshold阈值可根据网络状况不同配置调节,建议值为500ms。

步骤4:当条件3满足时,进行主节点选举。

步骤5:节点恢复和重新产生MonitorNode。

当监控节点重新选举出主节点,通过广播形式通知其它各个节点,重新建立P2P连接。连接恢复后,按照步骤1中的MonitorNode节点产生方法,重新确认监控节点行使监控职责。

被监控节点剔除的PrimaryNode原则上不重新加入区块链网络,发送告警由运维人员对其性能和网络状况进行分析。此外,根据各个节点Δo的统计平均值,MonitorNode还承担着对非PrimaryNode的心跳探测功能,当某节点Δo的近c次平均值超过设定的门限值,主动触发告警。

该算法可动态监控区块链网络中各节点的工作情况,当主节点计算能力和网络时延劣化到一定程度,由监控节点重新选举出新的主节点。当非主节点的心跳探测超过阈值,也将触发告警。对提升基于拜占庭算法的区块链网络的鲁棒性提供了解决方法。

4 方法实现

本方法已在“江苏电信区块链一线激励结算平台”上应用实现,为合作伙伴提供基于区块链的实时结算服务和友好的查询界面,并实现了全省一线激励佣金数据的存证监管。经压力测试,本系统的区块链交易速率可超过3000TPS,满足应用推广需求。

5 结束语

利用区块链技术数据不可篡改、智能合约可信计算、历史可追溯等特点,基于区块链技术设计了通用的销售佣金结算方法。该方法实现结算全流程、全要素数据通过共识算法写入区块链分布式账本,设计结算批价智能合约实现关键的链上结算批价功能,通过历史追溯查询提供结算计算流程和不结算原因的清晰查询,解决了结算过程不透明、历史信息存证难等问题。在实用拜占庭容错算法(PBFT)的基础上,该方法的共识算法对其鲁棒性进行了改进,加入了主节点主动监控恢复等机制,提升系统的可用性。

基于本方法实现的江苏电信区块链一线激励结算平台在江苏全省落地应用,为全省店员提供清晰明了的实时结算服务,并在加强数据存证监管方面起到了较好效果。

猜你喜欢
账本合约共识
共识 共进 共情 共学:让“沟通之花”绽放
论思想共识凝聚的文化向度
商量出共识
数说:重庆70年“账本”展示
丢失的红色账本
大树爷爷的账本
丢失的红色账本
“慢养孩子”应成社会普遍共识
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望