一种区块链中交易表示模型

2021-03-11 06:09朱咸军
信息安全研究 2021年3期
关键词:偏序账本切片

郭 婧 朱咸军

(金陵科技学院软件工程学院 南京 211169)

(guo_jing163@163.com)

近年来,区块链技术发展迅速,区块链作为一个公开的、去中心化的数据库,作为一个互相验证的分布式账本,记录了所有账户发生的所有交易,即在数据库中将每个账户发生每笔数额变化都记录在内.

区块链作为一个特殊的账本,首先从基本结构来看,是由区块构成的交易链条[1].区块由区块头以及区块主体组成,其中:区块头包含版本号、该区块的前一个区块的哈希值、默克尔树根数据、难度值、随机数、时间戳;区块主体包含了所有交易数据,同时,区块还有2个关键信息需要注意,即区块的高度、区块头信息生成的哈希ID.其中,区块头中的版本号可用于更新,该区块的前一个区块的哈希值用于该区块能够连接并找寻前一个区块,默克尔树根数据则将区块主体中包含的所有交易数据两两计算最后得到,难度值可以用于控制区块生成的时间,随机数用于让节点竞争区块的产生权,时间戳用于记录区块产生的时间.区块主体中记录的所有交易数据均为交互性交易数据,并且附加记录交易数据的哈希值.区块的高度为区块的序号,说明了区块的产生编号.区块头信息生成的哈希ID可以由下一个区块进行引用,从而将区块连成了一个链条[1].

事实上,区块链拥有如下几个典型的特征[2]:

1) 该账本是可以无限增加的,增加的方法通过在区块链中增加区块来实现,区块中记录了1条或多条交易信息;

2) 账本中规定了区块之间的顺序,区块就会被盖上时间戳,区块按时间戳的顺序连接形成了一个总的账本,这个总的账本是作为区块链形式存在的;

3) 区块链是由所有用户共同维护的,因此是去中心化的.

而现今区块链技术不仅作为账本技术活跃在与常用技术的结合应用[3-4]中,而其热度增加的原因之一是与金融技术的广泛融合,特别是数字货币的盛行.而数字货币的开端由2008年中本聪发表了一篇论文《比特币:一种点对点的电子现金系统》[5]开启.在该文中完整描述了一种产生了数字货币的记账系统及一个竞争记账的运行模式,数字货币则作为挖矿的奖励,最长区块链作为主链,并采用了工作量证明作为共识机制[6].接着,以太坊在比特币的概念上更进一步,不仅关注了其存储交易数据的功能,还扩展了开发功能,用户可以在以太坊上不经许可开发产品,特别是历史性地应用了虚拟机以及智能合约[7].比特币作为区块链1.0的代表,是数字货币的完整生态系统.以太坊[8]作为区块链2.0的代表,是一种可编程的并在其上生成各种代币以及开发的系统.而后,区块链3.0开始产生,不仅仅拘泥于金融以及货币领域,而是将重点放在区块链与其他技术的跨行业应用上,其中EOS[9]作为一个突出的代表,它大大提高了吞吐量,并创造性地提出了股份授权证明机制[10].这种共识证明方法与以往的共识协议[11-12]有很大的区别,即针对所有拥有代币的节点,选举出21个节点进行协作记账,为了提高区块确认的速度,提出了拜占庭容错机制以及不可逆状态,将区块进行分割确认,而超过2/3的节点确认后将进入不可逆状态.现今,区块链4.0也在紧锣密鼓地开发过程中,虽然很多代币[13-16]宣称自己为区块链4.0,但仍缺少其中的代表技术.

无论是比特币还是以太坊,都存在着记账效率低、确认速度慢、吞吐量低等突出问题,对于比特币来说,区块大小被限制在1 MB.而交易量的增加必然由于区块的大小而限制区块的出块时间以及速度.而在以太坊中,作为一个运转的网络,当用户进行操作时,必然需要支付一定的GAS费用,而GAS费用的限定间接限定了交易处理速度.因此,诸多开发者开始研究多种区块链可扩展性的解决方案,研究方案主要有以下几种:第1种扩容方案为侧链,侧链技术的做法为不仅仅是一条主链,同时增加侧链,可以让虚拟货币安全地从主链放到侧链中,并且也可以从侧链安全地返回到主链中,侧链中一个典型应用有闪电网络、RSK[17],在闪电网络中利用智能合约在链下进行零确认,而RSK侧链既是以太坊图灵机又是比特币侧链;第2种扩容方案为分片,顾名思义,将数据分为更小的数据碎片以方便处理,同时区块链网络也被分为一个个小的组件式网络,交易可以由小的组件式网络处理;第3种扩容方案为DAG,即有向无环图,其中一个典型的应用为IOTA[18],在IOTA中,节点需要验证2笔交易,验证后进行微量的工作量证明,再将自己的交易与这2笔交易绑定,再进行广播,周而复始节点确认其他的交易,自己的交易也被其他交易所确认,当到达某个设定的临界值时,交易被完全确定,而其后越来越多的技术采用了DAG技术[19-20].

在上述3种主要扩容方案中,第1种方法除了主链还增加了能够存储交易的空间,而第2种方法倾向于处理交易组而不是全网集中来处理单个交易,第3种方法同时处理多条交易链条,做到高并发.本文针对区块链中的交易表示问题,充分考虑了3种扩充方案的可行性.首先,从交易本身出发,将交易以交易事件的形式呈现.将交易事件定义为改变区块链状态机中状态使之发生变迁的事件,将交易事件之间的偏序关系分类.其次,主要对时间的先后关系进行考察,在区块链中时间先后发生的关系限定在指定时间或者指定的时间范围内.同时对交易事件进行拆分,拆分的目的是将交易事件分配到账户上,并且在交易事件上附加转账信息或消息.最后,将交易事件、偏序关系、附加的转账信息或消息进行图形化表示,并且根据依赖关系构成新的结构——类与切片,以切片的形式加入根链中,实际上既可以并行处理交易事件和整体查找交易事件,也可以以账户为单位查找属于自己的交易事件链条,切片以及类的构成也同时使交易的分块处理成为可能.

1 相关定义

1.1 区块链的状态机

从形式化的角度来看,将整个区块链看作一个整体的状态机,每一个状态都作为区块链的整体状态,而区块链的整体状态由所有区块链上账户的个体状态构成,个体状态也被称为账户状态,交易可以改变账户状态,在本文中,账户状态写作SB,其中,B为账户.

定义1.区块链的状态机[21].区块链的状态机为一个四元组〈T,S,s0,δ〉,其中T为区块链中所有的交易集合,S为区块链的整体状态集合,s0∈S为整体状态集合中的初始状态,δ:S×T→S表示状态的变迁由交易集合T中的交易触发.如果将交易集合看作交易事件集合,即将交易以事件的形式来表示,ET表示交易事件集合,因此,区块链的状态机也可以写作〈ET,S,s0,δ〉.

从区块链的状态机的结构来看,对状态机的记录存在2种方向:

1.2 交易与账本的表示

常用的记账方式是基于账本记账的,账户转账的过程为:如果账户A需要向账户B付20元,由账户系统检查账户B是否存在,接着再检查账户A中是否存在20元,如果存在,从账户A中减少20元,在账户B中增加20元.UTXO模式为比特币中经典的记账模式,表示未被花费的输出,即交易的输入为其他交易没有被花费使用完毕的输出,并且这笔交易来自于其他交易的输出,其他交易的输出必须有相应账户的私钥签名,并且,交易的输入总数与输出总数持平.UTXO模式避免了交易的追溯,所有交易在无形中形成了1条链,在链中将所有交易的输入与输出连接在一起,如果当前交易没有被交易的用户花费,而被其他用户花费,可以增加1条记录转账给自己的账户.

在交易的基础上定义账本,账本为交易的集合,更确切地说,为在区块链中按照一定的顺序排序的交易,所有的交易都存在着一个顺序的概念.T为所有的交易集合,从交易集合中选取交易记录在账本上,并且按照时间的顺序,将账本L使用Lt来表示,Lt∈2T表示从交易集合T中选取交易加在账本Lt上,并且按照时间t来排序.如果2个账本合成,表示为L=L1+L2,L1,L2为2个不同的账本.

2 交易与状态之间的约束

上述单个交易改变单个状态一般不会发生,一般1个交易都要涉及2个以上的账户.将交易集合T分为转账交易集合以及合约交易集合,将转账交易集合拆分为发送交易集合与接收交易集合,相应地,转账交易事件集合拆分为发送交易事件集合以及接收交易事件集合.可以看出,转账交易为发送以及接收2个过程,一定金额从1个账户发出,而另一个账户负责接收这些金额.因此,当转账交易被拆分后,单个转账交易涉及的账户可能只有1个.

另一方面,在区块链中还涉及一类交易事件,该类事件被称为合约事件集合H,为区块链中的用户执行合约时需要传递消息的过程,转账交易涉及的是具体金额,可能以代币的形式存在,而合约事件为了执行合约,涉及的是消息,而在区块链中,随着智能合约使用率的提高,当某一条件触发自动执行设计好的合约,自动执行智能合约的代码.合约事件集合可以进一步被拆分为合约请求事件集合以及合约响应事件,如果从合约请求事件集合以及合约响应事件中各选取1个事件,当恰好该合约请求事件的响应为另一个合约响应事件,那么这2个事件为1对合约事件.交易事件存在交叉关系以及平行关系:如果交易事件为转账事件,并且该转账事件与另一个转账事件存在转账关系,例如转账事件的输入为另一个转账事件的输出,称2个转账事件存在交叉关系;如果交易事件涉及的账户为不同的账户,那么称2个交易事件具有平行关系.

3 交易事件的偏序关系

在区块链中运用了时间戳的概念,在区块上打上时间戳,可以看出,区块链与时间息息相关,时间的运用不仅涉及区块链中各种信息的排序问题[22]以及信息之间的时间关系,还涉及了区块链中相关条款的实行.例如在记账的过程中,涉及首先计算出难度值的那个用户,获得记账权.而时间的判定主要取决于2个方面:第1个方面是事件发生的确切时间点,如果用统一的全局时钟进行计时,必然存在时钟的延迟问题以及怎么样将计时的时间同步,如果用各自的局部时钟计时,必然存在时间之间的判定关系.第2个方面是事件之间发生时间的先后关系怎样划定,确定了事件发生的时间先后关系,才能划定事件之间的偏序关系,将事件之间有效地组织起来.

3.1 交易事件的严格时间偏序关系

3.2 交易事件之间的宽松时间偏序关系

时间区间I1与I2之间的并集与交集可写作:

图1 交易事件之间的时间区间比较关系

3.3 交易事件的分类以及性质

当交易事件为合约事件时,合约事件eH被分为请求合约请求事件eask以及合约响应事件ereq,必须将传递消息的时间纳入考虑的范围内,以此对时间进行更新[24].2个请求合约请求事件集合eask以及合约响应事件ereq之间存在先后关系,设eask发生的时间为task,并且发送请求信息m给合约响应事件ereq,并且设合约响应事件ereq接收到请求信息m的时间为treceive,合约响应事件ereq发生的时间为treq,取treceive,treq两者之中较大的值,将合约响应事件ereq实际发生的时间更新为treq.当eask发生的时间task与合约响应事件ereq发生的时间treq存在task

交易事件偏序的性质:

3.4 交易事件之间偏序关系的图形化表示

当交易事件之间的偏序关系判定完毕后,将交易事件的偏序关系使用图形进行表示,如图2所示:

图2 交易事件的严格时间偏序关系

图3 交易事件的宽松时间偏序关系

图4 交易事件的并行关系

图5 交易事件的可能并行关系

图6 交易事件带有转账信息的时间偏序关系

所有交易事件进行分解后,即转账交易事件被分为发送交易事件与接收交易事件,合约事件被分为请求合约请求事件以及合约响应事件后,以方便图形化整体表示,并将交易事件分配到相关账户之上.进行交易事件分解的原因为交易事件一般涉及2个以上账户,无法分配到单一账户之上,交易的整体化图形化表示如图7所示:

图7 交易事件的偏序账本表示

4 交易的区块链表示框架

如果以切片为单位验证其中的交易,投票选用验证者来验证切片中的交易,选用需要随机抽取用户进行验证.用户可以是在区块链上的所有用户,也可以是申请验证的用户,同时可以对用户的权限进行限制,如限制申请验证用户的代币数量,并且为了公平,可以将参与切片交易的用户排除在外,当23的验证者验证了切片中的交易,切片中的交易被确认.在对切片进行隐私处理时,可以设置隐私权限,切片中的交易事件只有同一个切片中的交易事件涉及的账户在时间段才能有权查看,而被验证后切片中的交易事件被封装不可见.

最后,可以以切片为单位,将其加入根链中,在加入前必须确认切片中交易事件的完整性、验证的完整性、验证者的有效性,切片的先后连接关系以切片中的切片的结束时间或者切片的起始时间连接切片.

5 结束语

在区块链中,由于记录了用户的所有交易,所以交易的数量在不断增加,而不能减少,区块链账本会越来越庞大,所以迫切需要提高交易的处理速度以及可扩展性.本文以此为出发点,描述了一种区块链中交易表示模型,不仅围绕交易事件并将其周围的理论完善,从而完善了交易事件的偏序账本,增加了能够并行处理交易以及根据账户查看交易两大优势,并且在该偏序账本之上定义类以及切片,以达到将交易事件分批处理的目的,大大增加交易事件处理的效率.

下一步工作主要有:第一,完善交易的批量确认机制,如果高速地、并行地处理大批量的交易,并且进行交易确认,如何将确认的任务分配给节点,并给予奖励的机制;第二,如何在保障性能、扩展性、安全性的基础上,定义共识协议,并且保证从交易到共识、节点的权限等一个整体框架的统一性.

猜你喜欢
偏序账本切片
基于偏序集的省际碳排放效率评价
新局势下5G网络切片技术的强化思考
数说:重庆70年“账本”展示
网络切片标准分析与发展现状
丢失的红色账本
大树爷爷的账本
相对连续偏序集及其应用
偏序半群的偏序和商序满同态的若干重要性质
丢失的红色账本
可消偏序半群的可消偏序扩张与商序同态