双链式区块链交易监管研究

2020-12-07 08:20巫光福王柯柯
计算机工程与应用 2020年23期
关键词:单链校验合约

巫光福,余 攀,王柯柯

江西理工大学 信息工程学院,江西 赣州 341000

1 引言

目前,区块链技术发展迅速,已引起全球关注。区块链是一个出色的P2P支付系统,用户可以通过区块链将比特币直接发送到另一方的地址,能够实现跨地区跨国界的交易。智能合约的概念是由密码学家Szabo N在1994年提出的[1],受到自动售货机的启发:“智能合约是一系列以数字形式定义的承诺,包括合同参与者可以达成的协议履行这些承诺”[1]。然而,直到区块链技术出现,智能合约才找到合适的应用场景。每笔交易均忠实记录在区块链中。不需要传统的中介机构来负责两方之间的交易安全。但是区块链也存在一定的问题。许多不法分子使用比特币的匿名特性隐藏自己的身份,借助区块链进行勒索软件攻击并经营黑暗的市场以交换非法商品和服务[2]。链中的节点存在非法交易,不法分子可以通过区块链进行非法的交易。由于区块链的匿名性,导致交易方身份无法确认,可能存在洗钱的现象。一旦发生非法交易,则无法挽回损失。对于单链式结构建块时,需要全网投票,所以交易速度非常慢[3]。对于区块链的智能合约,由于智能合约关联着资产,智能合约一旦部署到区块中,则无法修改。所以一旦执行过程中出现漏洞,无法终止合约的执行,对合约的拥有者将会导致巨大的损失。

对于区块链中缺乏有效的监管,许多专家和监管机构开始关注这一问题。但是一直没有形成一个统一的监管方式去应对这一问题[2]。国际上对区块链监管主要有以下3种模式。(1)以发展科技创新为主要目标的“创新中心”模式,即支持和引导机构理解金融监管的框架,识别创新中的监管政策和法律事项。(2)政府部门或监管部门与业界建立合作机制的“创新加速模式”。(3)“监管沙盒”。其特点是:包括金融机构在内的任何机构都可以申请进入监管沙盒;监管部门需要对申请者提出的创新产品或服务进行个性化的建议或指导;社会监管注重保护消费者的合法权益。国内对区块链监管主要是态度上开放,行为上对区块链技术的跟踪和研究进行加强。Yin H H S等人[4]提出了一种基于监督机器学习的比特币区块链去符号化方法。使用了957 个实体(约3.85 亿笔交易)作为样本,这些实体的身份和类型已经被揭示,作为训练集数据。实验证明该方案确实可以预测一个尚未确定的实体的类型。采用带默认参数的梯度增强算法,交叉验证的平均正确率为80.42%。Chen P W等人[5]提出并部署了基于区块链技术和客户和商品商店的云数据库的称为BPCSS 的比特币收集监管系统。通过著名的Testnet 比特币无处不在的数字钱包进行的初步实验结果表明,所提出的BPCSS 可以经济高效地收集付款并监督运行已实现NFC 功能的Android Apps的客户与商品商店之间的交易。

针对国内外的监管态度和监管方案,本文提出了监管链的概念,监管链由各大监管机构组成。并在监管链的概念上,提出了交易区块链(Transaction Blockchain,TBC)和监管区块链(Regulatory Blockchain,RBC)并行的双链结构,其中监管链对交易链可以进行有效的监管。这种双链式的结构在一定程度上可以提高交易的速度和增强系统的可扩展性。同时考虑到交易的灵活性,故考虑在监管链中建立智能合约市场,去满足交易的要求。对于智能合约可能存在漏洞的问题,为了降低漏洞风险,监管链中部署零知识证明算法[6],利用零知识证明去验证智能合约结果的正确性,确保其实际功能和描述功能的一致性,为交易链交易参与者提供安全合适的智能合约。

2 双链式架构分析

双链式结构中,RBC 如何有效地对TBC 进行监管。RBC 和TBC 之间需要进行数据的交互,RBC 使用神经网络去预测分析交易数据,利用训练识别出的特征去识别出可疑的非法交易,发现非法交易则对账户进行冻结,防止出现更大的损失。对于RBC 和TBC 如何交互,采用文献[7]所提出的区块链路由协议。该协议中有四个不同的参与者:验证者、连接器、监视者和提名者。验证者是区块链路由器网络中最重要的参与者。负责验证,连接并转发块到正确的目的地。区块链路由器不可能同步所有子链的块,因此希望将块收集任务分配给第三方,这称为连接器。提名者通过向验证者贡献自己的资金而获得奖励。提名者不承担任何其他功能。验证者负责代表提名者维护网络状态。提名人根据捐款金额获得相应的收益。如果验证者受到惩罚,其支持提名人也将受到相应惩罚。监视者的任务不是验证区块信息的真实性,而是监视区块链路由器的行为。文献[8-9]利用机器学习图形分析技术去分析大量的区块链交易数据,得出实验结论,机器学习图形化技术可以揭示比特币交易用户的身份。文献[9]利用图卷积神经网络(Graph Convolutional Networks,GCN)和可视化技术对交易数据进行预测生成交易图,并可以根据交易数据映射到交易实体。在对非法交易进行识别的过程中,将交易实体划分为合法交易实体(交易所、钱包提供商、矿工、合法服务等)与非法交易实体(诈骗、恶意软件、恐怖组织、勒索软件、庞氏骗局等),并不断地建立完善非法交易实体这样一个黑名单。如果发起交易的实体(即控制与特定交易的输入地址相关联的私钥的实体)属于合法(非法)类别,则该交易被视为合法(相对于非法)。同时,通过对区块链非法交易具有的特征(投入/产出的数量、交易费用、产出量和汇总数字,例如投入/产出收到(花费)的平均BTC 以及与投入/产出相关的传入(传出交易)的平均数量等)进行分析,得出可疑的非法交易。进一步提高TBC 的执行效率,在RBC 中建立了一个智能合约市场,为TBC 提供智能合约的服务。在提供的过程中如何去保证智能合约结果的正确性,部署了零知识证明去验证智能合约的正确性。双链的总体架构如图1所示。

图1 双链式整体结构

2.1 双链式架构原理说明

Leng K等人[10]提出在供应链中使用双链结构-交易链和用户信息链,但无法实现对用户交易的实时监管。姜浩等人[11]提出了主链和辅助链的双链结构,以减少交易的确认时间。Leng Kaijun等人[12]提出了一种基于双链架构的农业供应链系统公共区块链,主要研究了双链结构及其存储方式,资源寻租与匹配机制以及共识算法。但是对于非法交易都缺乏有效的监管。本文提出了一种新的双链式结构,其中所有交易数据均由相关监管部门和法律部门节点对交易数据进行机器学习模型分析,映射交易实体,并结合交易数据的特征对节点的交易进行有效的监管。在双链式结构中有多个TBC和RBC,一条RBC可以监管多个TBC,RBC中的各个节点也进行相互的监管。双链结构如图2所示。

图2 双链式结构

监管区块链(RBC),监管区块链分为监管节点和校验节点。监管节点主要由各种监管部分和法律部门组成,校验节点主要由专业审计人员组成。监管节点负责和交易区块链进行交互,并对交易数据进行实时的分析,得出可疑的非法交易;校验节点负责利用链中的零知识证明去校验智能合约结果的正确性和存储交易区块链的隐私数据。监管链监管节点主要由相关监管部门和法律部门组成。这些节点根据实时的分析交易数据或交易的特征判断交易中是否存在非法交易。如果监管节点发现交易节点之间存在非法交易,则相应的节点将被冻结,节点将无法继续交易,防止造成进一步的损失。交易链节点可以使用监管链中的相应智能合约。在监管链中,其主要作用是对交易数据进行分析,对非法交易进行有效的监管和处罚,为交易链中的交易参与者提供安全可靠的智能合约。

交易区块链(TBC):交易区块链用作交易。链中生成的新块可以存储交易生成的数据。监管区块链提供的智能合约,以确保交易链可以根据智能合约的预定规则执行交易。在交易链中,可以根据实际交易和智能合约组合,从而更高效地去执行交易。

对于交易区块链,交易链的数目可根据实际的需求而建立。对于单链而言,有更好的扩展性。监管区块链,单链中监管节点和校验节点的数量都至少为三个,因为监管链中的节点可能存在不诚信的行为。因此,节点之间应相互监管。如果发现节点是欺诈性的,则各个节点进行投票,欺诈性节点将通过投票机制[13]被清除。双链结构允许并行操作,可以提高链中交易的效率。这种结构不仅可以发挥区块链的现有优势,而且可以进一步提高交易的速度和可扩展性,使更多的用户可以加入双链结构,进一步提高交易信息的安全性。

2.2 机器学习算法检测非法交易

在实验阶段,交易数据是来自Elliptic[14]提供的公开的数据集。数据集由203 769个节点交易、234 355个有向边支付流和节点特征组成。每个节点具有166 个特征,前94个特征代表有关交易的本地信息,包括时间步长、投入/产出的数量、交易费用、产出量以及汇总数字,例如投入/产出收到(花费)的平均BTC以及传入(传出)的平均数量(传出))与输入/输出相关的交易。其余72个称为聚合特征,聚合特征是通过从中心节点向后/向前单跳聚合交易信息而获得的,例如相同信息数据(输入数量)的相邻交易的最大、最小、标准差和相关系数/输出、交易费等。数据集将比特币交易分为非法交易、合法交易和未知交易。对交易数据分析得出,利用交易数据的特征可以有效地去识别非法交易。文中利用机器学习算法模型对数据进行分类,分类的准确率可以达到90%以上,尝试通过神经网络对非法交易进行预测,预测的准确率可以达到95%以上。

首先对交易数据进行可视化分析,去看看特征与交易之间是否存在某种联系,是否能够从特征中去识别出非法交易。图3所示的是随着时间步长(区块链中时间戳与每个节点相关联,表示比特币网络确认交易的时间估计。根据时间设置了49 个不同的时间步长,平均间隔约两周。每个时间步长都包含彼此之间少于三个小时的交易的单个关联组件。没有连接不同时间步长的边)非法交易、合法交易和未知交易的数量。可以看出交易量基本稳定在2 000~8 000之间。

图3 交易量

对交易数据的特征进行可视化分析,发现在特征数据集中,对于部分特征中,非法交易的交易量比合法交易量和未知交易量较稳定,故有部分特征能够凸显出交易是否是非法交易。如图4 所示,0 代表未知交易,1 代表非法交易,2代表合法交易。

通过可视化非法交易之间的交易和合法交易之间的交易,可以看出非法交易者一般交易的账户都是非法交易账户,且可以清楚地看到,一些非法分子单独工作,有些则集体工作。合法交易者一般交易的账户都是合法交易账户。如图5 和图6 所示,图中两个节点有连线表示他们之间存在交易。

对数据集70%用来训练模型进行分类时,将数据集按7∶3分割为训练数据集和测试数据集。也就是说,前面的70%行用来训练模型,剩下的30%用来测试模型。先使用三种标准分类模型对交易数据进行测试分类,也就是Logistic 回归[15]、随机森林[16]和多层感知器这三种标准分类模型。通过4个评价指标(准确率、召回率、综合评价指标(F1分数)和微平均)对各个模型进行分析,具体的如表1 所示。对表1 数据对比分析,可以看出随机森林模型对交易数据分类的效果相对于其他两种模型的分类效果要好。

图4 交易量波动图

图5 非法交易图

图6 合法交易图

表1 交易分类结果

根据机器学习模型对交易数据进行分类,分类的结果达到一定的期望。然后,尝试通过构建神经网络对交易数据中的非法交易进行预测。实验中,构建了四层神经网络,每一次进行了10次的模型训练和测试,并进行反复的训练和测试。训练和测试中,对所有特征和本地特征分开进行。测试的结果如图7 和图8 所示,图7 所示的是根据所有特征训练和测试的结果,图8所示的是根据本地特征训练和测试的结果。

图7 所有特征预测结果

图8 本地特征预测结果

2.3 零知识证明校验智能合约

智能合约应用范围广泛,但并不是完全安全的,且出现问题后,暂时没有完善的风险管理措施去处理。因此,智能合约被部署在区块前,校验过程十分重要。对于智能合约可以通过形式化验证[17]的方式、反编译[18]、审计工具等提高其安全性,但是准确性还有待验证。故智能合约需要进行一个统一的市场化的管理,来制定统一的开发和监管标准,提高安全性。需要对其增加法律监管力度,在智能合约正式投入使用前,需要对其功能进行多轮校验,以降低交易风险。利用监管链中的监管节点监管和管理这个智能合约市场。在监管链中,一个智能合约从创建到投入市场使用需要经过的流程如图9所示。

假设有n个验证节点,每一个验证节点生成一个待求和的值Vi,i=1,2,…,n,每一个节点都仅知道自己的值Vi,不知道其他节点的值。节点将生成的待求和值发送给智能合约,智能合约的功能是求和,即:

图9 智能合约校验过程

Vm为求得的和值。验证过程如图10所示。

图10 零知识证明校验智能合约

步骤1智能合约所有者A 通过公式(1)得到和值Vm,并生成一个随机数P(P≠0),该随机数是秘密的,可丢弃不可泄露。再生成一个随机数q(q>3 且随机数P和q互素,q<max(Vi))计算:

其中,Vm是待验证数,是保密的。随机数P也是秘密的。随机数q和计算结果E1(Vm)是公开的。智能合约所有者将计算得值E1(Vm)发送给验证节点。

步骤2验证节点生成一个秘密随机数R,由节点1先进行计算:

节点1将计算结果发送给节点2,当节点数i>1 时,依次进行迭代计算:

因为计算结果是均匀分布的,所以后续节点Vi无法通过计算得知前面Vi-1的具体值。当计算到第n个节点时,得到结果:

步骤3第n个验证节点将计算结果E2(Vn)发送给智能合约所有者。

步骤4智能合约所有者计算:

将E3(Vm)的值发送给验证节点。

步骤5验证节点计算:

步骤6验证节点比较E3(Vm)和E4(Vn)的值,若相等,则证明智能合约计算结果Vm可能正确。

步骤7返回第一步,重新生成随机数进行T次验证,若E3(Vm)和E4(Vn)的值每一次都相等,则证明智能合约计算结果Vm正确。

总结:本文所提出的的双链架构可以达到监管所有单位的效果,在监管链中部署零知识证明算法可以达到校验智能合约执行结果正确性的效果。

3 公双链架构的评估分析

(1)安全性分析

双链式架构具有P2P 结构,避免了单点攻击,并通过联合所有节点来维护系统的稳定性。在监管链中,监管节点对交易数据进行图形化分析,可以有效地发现非法交易,校验节点校验智能合约的结果正确性,提高智能合约的安全性,并可以存储交易节点的隐私信息,起到保护隐私的重要。监管链节点之间设置投票机制,有效地避免不可信作弊的行为出现。

(2)效率和可扩展性分析

以具体的例子去分析单链和双链在效率和可扩展方面的区别。

对于单链,假设单链中存在200 个节点,一般的交易200 个节点足够。区块链中确定新的块,需要进行6次确认,即6 次交换信息,所以每次建块确认需要2.4×105(6×200×200)次交换消息。假设块的产生时间为1 min,每天工作24 h,则每天可以建0.144×104(60×24) 块,则每天需要 3.456×108(240 000×1 440) 次建块交换消息,则平均每秒需要4 000((3.456×108)/(60×60×24))次建块交换消息。假设单链24 h需要处理108笔交易,则平均每秒需要1 160(1×108/(24×60×60))次交易。假设单链中每个节点有107个账户,则每个节点每天需要1015(10 000 000×100 000 000)次查询计算,则每个节点每秒平均需要1.16×1010次查询计算。综上所述,单链结构中每个节点平均每秒需要处理6 万次建块交换消息、1 160次/s交易、1.16×1010次/s交易查询计算。

在双链式结构中,每条RBC 链可以对多条TBC 链进行监管,但是并不需要对所有TBC 链进行监管。因此,TBC数量和账户是可以变动的。假设存在10条TBC链,每条TBC 链有30 个节点,每个节点有1 000 个账户(对于存在违法交易的账户可以继续留在TBC链中,但是不能进行交易)。TBC链每次建块需要5 400(30×30×6)次建块交换消息。这远少于单链结构中单个节点的工作量。对于单条TBC链,每天可以建0.144×104(60×24)块,所有节点要处理7.776×106(60×24×5 400)次建块交换消息,则平均每秒需要90(7.776×106/(60×60×24))次建块交换消息,所有每条TBC 链所有节点的工作量稍远小于单链的一个节点的工作量。同样的,TBC 链24 h 需处理亿笔交易,每条TBC 链每天平均要处理107(108/10)次交易消息,平均每个节点每秒处理111((1×107)/(60×60×24))次交易。交易量少于单链结构中单个节点的工作量。假设单链中每个节点有50 个账户,则每个节点每天需要5×109(50×100 000 000)次查询计算,则每个节点每秒平均需要5.79×104((5×109)/(60×60×24))次查询计算,所以每个TBC交易查询工作量少过单链结构的交易查询工作量。

在双链式结构中,每条RBC 链可以对多条TBC 链进行监管。假设有 10 条 RBC 链,每条 RBC 链有 6 个节点,每个节点有20 个账户。每条RBC 链每个节点每秒需要216(6×6×6)次建块交换消息,对于单条RBC 链,每天可以建0.144×104(60×24) 块,所有节点要处理3.11×105(60×24×216)次建块交换消息。每条RBC 链每秒共需要处理4(3.11×105/(60×60×24))次建块交换消息,单条RBC 链所有节点的工作量远少过于TBC 链和单链单节点的工作量。每条RBC链每天平均要处理107(108/10)次交易(每笔交易至少要2个账户,假设复杂情况下有更多账户,如4 个账户,所有交易平均分在10条RBC 链),每秒每个节点平均处理111((1×107)/(60×60×24))次交易,所以单条RBC链所有节点的工作量远少过于单链单个节点的工作量.。每个节点每秒需要查询2×109(20×100 000 000)次交易查询计算,每条RBC链每秒所有节点一共要处理1.16×104((2×109)/(60×60×24))次交易查询计算,单条RBC链所有节点的工作量远少过于单链中单个节点的工作量。具体的如表2所示。

(3)算法分析

对上述零知识证明进行分析:

①完备性

如果智能合约求得正确的和值Vm,且校验双方均诚实的话,因为PVmmodq有唯一确定解,那么根据交换律E3(Vm)和E4(Vn)的值一定相等。

表2 效率的总体比较结果

②健壮性

假设智能合约未能求值正确,求得和值为Qm,那么E1(Vm)=PQmmodq,则:

E3(Vm)和E4(Vn)的值仅有1/q的可能相等,当验证重复T轮后,每一轮E3(Vm)和E4(Vn)的值相等的可能性为1/qT,因此,在有限域内,随机素数q的值选取得越大,重复的次数T越多,则校验的健壮性越强。使用多个节点进行校验,还可以预防中间人攻击(MITM)[19],在未知验证节点个数的情况下,想要偷听到所有的验证节点发送的数据Vi,几乎是不可能的事,尤其是在T轮验证的情况下,持续监听代价极大,且攻击者并不能确定监听是否有遗漏,从而无法确定监听结果的正确性。

③零知识性

对于模运算AmodB=C,已知A和B的值,可以确定唯一的值C,但是已知B和C的值,并不能确定唯一值A,因此在验证过程中,每个节点虽然都知道上一个节点的求值结果E2(Vi-1),但并不能确定具体的Vi-1的值,同理,也不能确定Vm的值,在未知随机数P值的情况下,验证节点对Vm的值一无所知。

验证过程中计算简单,因此验证速度快,需要的存储空间小,可以大量节省算力资源和存储资源。

以实例演示验证过程,如图11所示。

图11 零知识证明验证过程

假设有4个验证节点,分别取随机数V1=3,V2=4,V3=7,V4=8,节点间互相不知道其他节点的值。智能合约可根据公式(1)求得Vm=22。生成随机数P=4(P保密),q=5。智能合约按照公式(2)得E1(Vm)=(4 ×22) mod 5=3。节点生成随机数R=3(R保密)。根据公式(3)和(4)依次得E2(V1)=4,E2(V2)=1,E2(V3)=2,E2(V4)=1。因为n=4,所以根据公式(5)得E2(Vn)=1,节点将E2(Vn)的值发送给智能合约。智能合约所有者根据公式(6)得E3(Vm)=(4 ×1) mod 5=4,将计算结果发送给验证节点,验证节点根据公式(7)计算得E4(Vn)=(3 ×3 )mod 5=4。E3(Vm)和E4(Vn)结果相等,所以本次验证通过,为了避免偶然性,继续依上述步骤执行多次,直到验证节点确信智能合约确实可以求和。

本次验证过程中,智能合约仅知道随机数P、q和值Vm,验证节点仅知道自己的随机数Vi和随机数R、q,无法确定其他节点的随机数,更无法求得和值。让验证节点在不能得知任何秘密信息的情况下,相信智能合约正确地实施了功能,求得了和值。满足零知识证明的条件,并且计算方法简单,性能要求不高。求和是最基本的计算方法,在智能合约程序中有着广泛应用,因此这种校验方法实用性较强。

在验证的过程中,并不能保证验证节点不是恶意或者是诚实的。验证节点被认为是不诚实的。验证的过程中容易受到两种威胁。首先是所提供数据的质量。不诚实的验证者可能会向请求者提供有偏见和不准确的结果,从而使得验证过程失败。第二是数据权限管理。原始数据共享后,数据所有者将失去对这些数据的控制权,不诚实的验证者可能会将数据共享给其他未授权实体。

4 结束语

监管链中的监管节点对非法交易能够进行有效的监管,校验节点能保护交易节点的隐私安全和检验智能合约结果的正确性。监管链和交易链并行运行,可以进一步提高交易的效率和系统的可扩展性。交易链交易参与者可以从监管链中调用零知识证明校验的智能合约,高效地实现交易。交易的安全性和合法性得到有效的保护。双链式的结构为电子政务和电子商务等领域提供一定的参考,并为监管机构对非法交易监管提供一定的参考,其实现形式等待进一步的学习和研究。

猜你喜欢
单链校验合约
使用Excel朗读功能校验工作表中的数据
逐步添加法制备单链环状DNA的影响因素探究*
单链抗体的开发与应用
炉温均匀性校验在铸锻企业的应用
电子式互感器校验方式研究
盐酸克伦特罗生物素化单链抗体在大肠埃希氏菌中的表达
急性淋巴细胞白血病单链抗体(scFv)的筛选与鉴定
浅谈微电子故障校验
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望