基于区块链的交易处理方法及装置、电子设备
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于区块链的交易处理方法及装置、电子设备。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,利用区块链技术来搭建去中心化系统,并在区块链的分布式数据库中收录各种执行程序进行自动执行,已在众多的领域中广泛的进行应用。
发明内容
本说明书提出一种基于区块链的交易处理方法,包括:
接收区块链中的成员节点设备发起的目标交易;其中,所述目标交易中包括参考时间参数;所述参考时间参数用于确定所述目标交易是否为交易有效期内的有效交易;
基于所述参考时间参数确定所述目标交易是否为所述交易有效期内的有效交易;
如果确定出所述目标交易为交易有效期内的有效交易,将所述目标交易收录至生成的候选区块。
可选的,所述参考时间参数为创建所述目标交易时生成的参考时间戳;所述交易有效期对应由第一数值和第二数值构成的数值区间;所述第一数值为所述候选区块的创建时间戳与第一阈值的差值;所述第二数值为所述候选区块的创建时间戳与第二阈值的和;
所述基于所述参考时间参数确定所述目标交易是否为交易有效期内的有效交易,包括:
将所述参考时间戳与所述第一数值和第二数值分别进行比较;
如果所述参考时间戳大于所述第一数值,并且小于所述第二数值,确定所述目标交易为所述交易有效期内的有效交易。
可选的,所述将所述参考时间戳与所述第一数值和第二数值分别进行比较之前,还包括:
检查所述候选区块的创建时间戳是否大于所述区块链中最新区块的创建时间戳;如果是,进一步将所述参考时间戳与所述第一数值和第二数值分别进行比较。
可选的,所述参考时间戳为创建所述目标交易时的系统时间戳;或者,由交易创建者指定的参考时间戳。
可选的,所述第一阈值大于所述第二阈值。
可选的,所述参考时间参数为创建所述目标交易时生成的参考区块高度数;所述交易有效期对应由第三数值与所述候选区块在区块链上的区块高度数构成的数值区间;所述第三数值为所述候选区块在区块链上的区块高度数与第三阈值的差值;
所述基于所述参考时间参数确定所述目标交易是否为交易有效期内的有效交易,包括:
将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较;
如果所述参考区块高度数大于所述第三数值,并且小于所述候选区块在区块链上的区块高度数,确定所述目标交易为所述交易有效期内的有效交易。
可选的,所述将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较之前,还包括:
检查所述候选区块的区块号是否大于所述区块链中最新区块的区块号;如果是,进一步将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较。
可选的,所述参考区块高度数为创建所述目标交易时所述区块链中的最大区块高度数;或者,由交易创建者指定的参考区块高度数。
可选的,所述目标交易中还包括所述目标交易的唯一标识;
所述如果确定出所述目标交易为交易有效期内的有效交易,将所述目标交易收录至生成的候选区块包括:
如果确定出所述目标交易为交易有效期内的有效交易,查询预设的交易幂等表中是否存储了与所述目标交易的唯一标识对应的交易幂等记录;其中,所述交易幂等表用于存储所述交易有效期内的有效交易对应的交易幂等记录;如果所述交易幂等表中未存储与所述目标交易的唯一标识对应的交易幂等记录,将所述目标交易收录至所述候选区块。
可选的,所述交易幂等记录指示与所述交易幂等记录对应的交易,已被成功收录至所述区块链的分布式数据库;
还包括:
如果所述目标交易被收录至所述候选区块,并且所述候选区块共识通过被成功存储至所述区块链的分布式数据库,生成与所述目标交易的唯一标识对应的交易幂等记录,并将所述交易幂等记录插入所述交易幂等表。
可选的,还包括:
周期性清除所述交易幂等表中处于所述交易有效期以外的交易的交易幂等记录。
本说明书还提出一种基于区块链的交易处理装置,包括:
接收模块,接收区块链中的成员节点设备发起的目标交易;其中,所述目标交易中包括参考时间参数;所述参考时间参数用于确定所述目标交易是否为交易有效期内的有效交易;
确定模块,基于所述参考时间参数确定所述目标交易是否为所述交易有效期内的有效交易;
收录模块,如果确定出所述目标交易为交易有效期内的有效交易,将所述目标交易收录至生成的候选区块。
可选的,所述参考时间参数为创建所述目标交易时生成的参考时间戳;所述交易有效期对应由第一数值和第二数值构成的数值区间;所述第一数值为所述候选区块的创建时间戳与第一阈值的差值;所述第二数值为所述候选区块的创建时间戳与第二阈值的和;
所述确定模块
将所述参考时间戳与所述第一数值和第二数值分别进行比较;
如果所述参考时间戳大于所述第一数值,并且小于所述第二数值,确定所述目标交易为所述交易有效期内的有效交易。
可选的,所述确认模块进一步:
在将所述参考时间戳与所述第一数值和第二数值分别进行比较之前,检查所述候选区块的创建时间戳是否大于所述区块链中最新区块的创建时间戳;如果是,进一步将所述参考时间戳与所述第一数值和第二数值分别进行比较。
可选的,所述参考时间戳为创建所述目标交易时的系统时间戳;或者,由交易创建者指定的参考时间戳。
可选的,所述第一阈值大于所述第二阈值。
可选的,所述参考时间参数为创建所述目标交易时生成的参考区块高度数;所述交易有效期对应由第三数值与所述候选区块在区块链上的区块高度数构成的数值区间;所述第三数值为所述候选区块在区块链上的区块高度数与第三阈值的差值;
所述确定模块:
将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较;
如果所述参考区块高度数大于所述第三数值,并且小于所述候选区块在区块链上的区块高度数,确定所述目标交易为所述交易有效期内的有效交易。
可选的,所述确定模块进一步:
在将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较之前,检查所述候选区块的区块号是否大于所述区块链中最新区块的区块号;如果是,进一步将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较。
可选的,所述参考区块高度数为创建所述目标交易时所述区块链中的最大区块高度数;或者,由交易创建者指定的参考区块高度数。
可选的,所述目标交易中还包括所述目标交易的唯一标识;
所述收录模块进一步:
如果确定出所述目标交易为交易有效期内的有效交易,查询预设的交易幂等表中是否存储了与所述目标交易的唯一标识对应的交易幂等记录;其中,所述交易幂等表用于存储所述交易有效期内的有效交易对应的交易幂等记录;
如果所述交易幂等表中未存储与所述目标交易的唯一标识对应的交易幂等记录,将所述目标交易收录至所述候选区块。
可选的,所述交易幂等记录指示与所述交易幂等记录对应的交易,已被成功收录至所述区块链的分布式数据库;
所述收录模块303进一步:
如果所述目标交易被收录至所述候选区块,并且所述候选区块共识通过被成功存储至所述区块链的分布式数据库,生成与所述目标交易的唯一标识对应的交易幂等记录,并将所述交易幂等记录插入所述交易幂等表。
可选的,所述收录模块303进一步:
周期性清除所述交易幂等表中处于所述交易有效期以外的交易的交易幂等记录。
本说明书还提出一种电子设备,包括:
处理器;
用于存储机器可执行指令的存储器;
其中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收区块链中的成员节点设备发起的目标交易;其中,所述目标交易中包括参考时间参数;所述参考时间参数用于确定所述目标交易是否为交易有效期内的有效交易;
基于所述参考时间参数确定所述目标交易是否为所述交易有效期内的有效交易;
如果确定出所述目标交易为交易有效期内的有效交易,将所述目标交易收录至生成的候选区块。
附图说明
图1是一示例性实施例提供的一种基于区块链的交易处理方法的流程图。
图2是一示例性实施例提供的一种电子设备的结构示意图。
图3是一示例性实施例提供的一种基于区块链的交易处理装置的框图。
具体实施方式
本说明书中,旨在提出一种为发布至区块链的交易设置交易有效期,来确保区块链中的节点设备,可以仅将交易有效期内的交易收录至候选区块的技术方案。
在实现时,区块链的运营方可以为在区块链中发布的交易,统一设置一个交易有效期;
例如,在实际应用中,上述交易有效期,具体可以是区块链中的节点设备(比如充当“记账节点”的节点设备)在当前的记账周期内创建的候选区块的创建时刻之前的一段时间,或者在候选区块的创建时刻前后的一段时间。
而用户在通过客户端创建交易时,可以在交易中添加一个用于确定该交易是否为上述交易有效期内的有效交易的参考时间参数,然后通过该客户端接入的节点设备将该交易发布至区块链。
当区块链中的其它节点设备收到该交易后,在对该交易进行验证的阶段,可以基于该交易中携带的参考时间参数,来验证该交易是否为上述交易有效期内的有效交易;如果经过验证确认该交易为上述交易有效期内的有效交易,则可以将该交易收录至候选区块。
通过以上技术方案,由于只有处于上述交易有效期内的有效交易,才能够作为合法交易收录至候选区块,进而可以避免区块链中的非法节点设备利用截获的将较长时间之前的过期交易,在区块链上发起重放攻击,可以提升区块链的交易安全等级。
下面通过具体实施例并结合具体的应用场景对本说明书进行描述。
请参考图1,图1是本说明书一实施例提供的一种基于区块链的交易处理方法,应用于区块链中的任一节点设备,执行以下步骤:
步骤102,接收区块链中的成员节点设备发起的目标交易;其中,所述目标交易中包括参考时间参数;所述参考时间参数用于确定所述目标交易是否为交易有效期内的有效交易;
步骤104,基于所述参考时间参数确定所述目标交易是否为所述交易有效期内的有效交易;
步骤106,如果确定出所述目标交易为交易有效期内的有效交易,将所述目标交易收录至生成的候选区块。
在本说明书所描述的区块链,具体可以包括私有链、共有链以及联盟链等,在本说明书中不进行特别限定。
例如,在一个场景中,上述区块链具体可以是由第三方支付平台的服务器、境内银行服务器、境外银行服务器、以及若干用户节点设备作为成员设备组成的一个联盟链。该联盟链的运营方可以依托于该联盟链,来在线部署诸如基于联盟链的跨境转账、资产转移等在线业务。
在本说明书中所描述的交易(transfer),是指用户通过区块链的客户端创建,并需要最终发布至区块链的分布式数据库中的一笔数据。
其中,区块链中的交易,存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块链发布的一笔具有业务意图的业务数据;例如,运营方可以基于实际的业务需求搭建一个联盟链,依托于联盟链部署一些与价值转移无关的其它类型的在线业务(比如,租房业务、车辆调度业务、保险理赔业务、信用服务、医疗服务等),而在这类联盟链中,交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求。
而上述目标交易,则是指由区块链中作为记账节点的节点设备,从收集到的由其它成员节点设备发布,且通过了合法验证的交易中挑选出的,需要打包收录至候选区块的候选交易。
上述交易有效期,是指区块链的运营方为在区块链发布的交易,统一设置的有效期限。在该有效期限内的交易被视为可以作为合法交易加入候选区块的有效交易;反之,超出有效期限内的交易被视为无法加入候选区块的无效交易。
其中,上述交易有效期,具体可以是以区块链中的记账节点设备在当前的记账周期内创建的候选区块的创建时刻为基准,设置的一个时间区间;比如,上述交易有效期具体可以是上述候选区块的创建时刻之前的一段时间;或者,在候选区块的创建时刻前后的一段时间。对于记账节点来说,在收集到由区块链中的其它节点设备发布的众多交易时,可以通过上述交易有效期,来决策到底哪些交易可以作为合法交易加入生成的候选区块。
上述参考时间参数,具体可以是添加在交易中的,用于确定该交易是否为上述交易有效期内的有效交易的时间参数。区块链中的记账节点在对收集到的交易进行验证的阶段,可以参考交易中携带的参考时间参数所指示的时刻,来确定该交易是否为交易有效期限内的有效交易。
其中,上述参考时间参数,具体可以是一个物理时钟,也可以是一个逻辑时钟。
所谓物理时钟,是指从系统中,或者从第三方的时钟服务器中读取到的系统时间戳。而逻辑时钟,是指逻辑意义上的时间戳。在分布式系统中,任意能够指示事件(比如交易)发生顺序的自增的数值,都可以作为逻辑时钟。
在一种实施方式中,以上述参考时间参数为物理时钟为例,上述参考时间参数,具体可以是一个添加在交易中的参考时间戳。相应的,在这种情况下,上述交易有效期,具体可以是一个由上述候选区块的创建时刻对应的创建时间戳与第一阈值的差值(第一数值),与上述候选区块的创建时间戳与第二阈值的和(第二数值),构成的一个数值区间。
例如,假设上述候选区块的创建时间戳记为Bts;上述第一阈值记为K1,上述第二阈值记为K2。那么,上述交易有效期则可以用数值区间[Bts-K1,Bts+K2]来表示。
其中,上述第一阈值,表示的是在设置上述交易有效期时,预留出的交易有效时长。而上述第二阈值,表示的是发布交易的节点设备的系统时间戳,与创建候选区块的节点设备的系统时间戳之间的时钟偏移。由于在实际应用中,区块链网络中所能容忍的时钟偏移通常较小,因此在设置上述交易有效期时,可以将上述第二阈值设置为一个在数量级上小于第一阈值的阈值;
例如,在一个例子中,上述第一阈值可以设置为5天,上述第二阈值可以设置为5分钟。在这种情况下,表示在创建候选区块的时刻之前的5天之内,以及在创建候选区块的时刻之后的5分钟之内发布至区块链的交易,都是交易有效期内的有效交易。
其中,需要说明的是,上述参考时间戳,具体可以由用户在通过客户端创建交易时手动指定,也可以由客户端自动添加;
例如,在一种情况下,用户在通过客户端创建交易时,该客户端可以从系统中读取该交易的创建时刻,然后将该创建时刻对应的时间戳,作为上述参考时间戳,自动添加至创建完成的交易中。而在另一种情况下,用户可以在上述交易有效期内基于需求指定出一个时刻,然后将该时刻对应的时间戳作为上述参考时间戳,手动添加至创建完成的交易中。
当然,在实际应用中,在设置上述交易有效期时,也可以不考虑发布交易的节点设备的系统时间戳,与创建候选区块的节点设备的系统时间戳之间的时钟偏移,在这种情况下,上述交易有效期具体可以是一个由上述候选区块的创建时刻对应的创建时间戳与第一阈值的差值(第一数值),与上述候选区块的创建时间戳,构成的一个数值区间。
例如,仍假设上述候选区块的创建时间戳记为Bts;上述第一阈值记为K1。那么,上述交易有效期则可以用数值区间[Bts-K1,Bts]来表示。
在另一种实施方式中,以上述参考时间参数为逻辑时钟为例,在区块链对应的P2P网络中,具体可以采用区块在区块链中的区块高度,来作为逻辑时钟。在这种情况下,上述参考时间参数,具体可以是一个添加在交易中的参考区块高度数。上述交易有效期,具体可以是一个由上述候选区块在区块链上的区块高度数,与上述候选区块在区块链上的区块高度数与第三阈值的差值(第三数值),构成的一个数值区间。
例如,假设上述候选区块在区块链上的区块高度数记为Bh;上述第三阈值记为K3。那么,上述交易有效期则可以用数值区间[Bh-K3,Bh]来表示。
其中,上述第三阈值与上述第一阈值含义相同,表示的是在设置上述交易有效期时,预留出的交易有效时长。而在以区块高度数作为逻辑时钟来表示交易有效期的场景下,则可以不考虑发布交易的节点设备的系统时间戳,与创建候选区块的节点设备的系统时间戳之间的时钟偏移,因此上述表达式右半部分的增区间可以不与用于表示上述时钟偏移的阈值进行相加。
其中,需要说明的是,上述参考区块高度数,具体可以由用户在通过客户端创建交易时手动指定,也可以由客户端自动添加;
例如,在一种情况下,用户在通过客户端创建交易时,该客户端可以从系统中读取该交易的创建时刻,然后进一步查询在该创建时刻,上述区块链上的最大区块高度数,然后自动添加至创建完成的交易中。而在另一种情况下,用户可以在上述交易有效期内基于需求指定出一个区块高度,然后将区块高度对应的数值作为上述参考区块高度数,手动添加至创建完成的交易中。
当然,除了将区块在区块链中的区块高度,来作为逻辑时钟的实施方式以外,在实际应用中,也可以将其它类型的,能够用于描述交易的发生顺序的递增的数值,作为上述逻辑时钟,在本说明书中不再进行一一列举。
在本说明书中,用户通过客户端创建的交易,可以基于用户持有的私钥进行签名后,通过客户端接入的节点设备在区块链的P2P网络中进行广播发布。而作为记账节点的节点设备,可以收集由其它节点设备广播发布的交易,将收集到的交易作为未确认交易,在本地的交易池(也称之为内存池)中进行存储。
进一步的,作为记账节点的节点设备,可以在当前的记账周期内创建一个候选区块,并对交易池中的交易进行合法性验证,进而可以将通过合法性验证的交易,作为候选交易收录至创建的候选区块中。
在实际应用中,对交易池中的交易进行验证,具体可以包括对该交易的发布者的身份验证,以及交易内容的验证;其中,对上述交易内容的验证,又进一步可以包括对上述交易内容的完整性验证。
在实现时,在对上述交易进行签名时,通常可以对该交易进行计算得到内容摘要(比如hash值),然后基于持有的私钥对该内容摘要进行加密得到数字签名。而作为记账节点的节点设备在接收到签名后的交易后,可以基于对该交易进行签名时所使用的私钥对上述数字签名进行解密;如果成功解密,则表示发布该交易的用户的身份验证通过,该笔交易为由该用户发布的合法交易。
其次,作为记账节点的节点设备还可以进一步对该交易重新进行计算得到一个内容摘要,然后将重新计算出的内容摘要,与通过解密数字签名得到的原始内容摘要进行匹配;如果二者匹配,表示对交易内容的完整性验证通过,该交易的交易内容在交易传输过程中未被非法篡改。
在本说明书中,可以在对交易池中的交易进行发布者的身份验证,以及交易内容的验证的基础上,进一步引入基于交易中携带的参考时间参数,来验证交易池中的交易是否为交易有效期内的有效交易的验证。对于交易池中通过发布者的身份验证以及通过交易内容的验证的交易,可以进一步基于这类交易中携带的参考时间参数,来验证交易池中的交易是否为交易有效期内的有效交易。
在示出的一种实施方式中,假设上述参考时间参数,为添加在交易中的参考时间戳,记为Tts;上述交易有效期,是一个由上述候选区块的创建时刻对应的创建时间戳Bts与第一阈值K1的差值,与上述候选区块的创建时间戳Bts与第二阈值K2的和,构成的一个数值区间[Bts-K1,Bts+K2]。
在这种情况下,作为记账节点的节点设备,首先可以对创建的候选区块的创建时间戳进行单调递增检查,检查创建的该候选区块中的创建时间戳Bts,是否大于区块链中最新区块的创建时间戳;如果是,表明该候选区块满足区块链上的区块的创建时间戳单调递增的这一特性,该候选区块为合法区块。
当上述候选区块通过了上述单调递增检查后,作为记账节点的节点设备,可以从交易中进一步读取出参考时间戳Tts,并将读取出的参考时间戳Tts与Bts-K1和Bts+K2分别进行比较;如果Tts大于Bts-K1,并且小于Bts+K2,则可以确定该交易为上述交易有效期内的有效交易。
在示出的一种实施方式中,假设上述参考时间参数,为添加在交易中的参考区块高度数,记为Th;上述交易有效期,是一个由上述候选区块在区块链上的区块高度数Bh与第三阈值K3的差值,与上述候选区块在区块链上的区块高度数Bh,构成的一个数值区间[Bh-K3,Bh]。
在这种情况下,作为记账节点的节点设备,首先可以对创建的候选区块的区块号进行单调递增检查,检查创建的该候选区块中的区块号,是否大于区块链中最新区块的区块号;如果是,表明该候选区块满足区块链上的区块的区块号单调递增的这一特性,该候选区块为合法区块。
当上述候选区块通过了上述单调递增检查后,作为记账节点的节点设备可以从交易中进一步读取出参考区块高度数Th,并将读取出的参考区块高度数Th与Bh-K3和Bh分别进行比较;如果Th大于Bh-K3,并且小于Bh,则可以确定该交易为上述交易有效期内的有效交易。
在本说明书中,对于交易池中通过了以上示出的发布者的身份验证、交易内容的验证的交易,以及交易的有效性验证等合法性校验的交易,将可以作为候选交易打包收录至创建的候选区块中。
例如,作为记账节点的节点设备,可以将所有通过合法性校验的交易,或者基于一定的原则(比如基于交易的优先级),从所有通过合法性校验的交易中筛选出部分交易,作为候选交易添加录至候选区块。
通过这种方式,由于只有处于上述交易有效期内的有效交易,才能够作为合法交易收录至候选区块,对于一些较长时间之前的过期交易,将无法被收录至候选区块进行后续的交易执行,进而可以避免区块链中的非法节点设备利用截获的将较长时间之前的过期交易,在区块链上发起重放攻击,可以提升区块链的交易安全等级。
在本说明书中,由于作为记账节点的节点设备的交易执行环境,可能是一个多实例的执行环境(比如同一个交易客户端启用了可以同时发起交易的多个线程),而在多实例的执行环境下,同一交易则可能被隶属于同一节点设备的不同实例重复提交,因此可能会导致区块链中的交易执行,存在“幂等性”问题。所谓“幂等性”问题,是指同一交易被重复执行后,对用户造成了负面影响;
例如,在比特币网络中的“双花”(double spending)问题,就是一种较为典型的“幂等性”问题。一笔转账交易在经过用户私钥的签名许可后,被非法节点截获,该非法节点可以在该笔交易执行完毕后,基于截获的该笔交易,发起重放攻击,在区块链中重复执行该笔交易,造成同一资金完成了多笔转账,对用户造成资金损失。
基于此,为了避免在多实例的执行环境下交易的重复执行,区块链中可以作为记账节点的节点设备,可以共同维护一张交易幂等表。例如,各个作为结账节点的节点设备,可以通过区块链已有的共识机制,来共同维护一张经过共识的交易幂等表。
其中,该交易幂等表,具体是一张基于上述交易有效期内的有效交易,被成功收录至区块链的分布式数据的存储记录(即成块记录)创建的索引记录表,用于存储被成功收录至区块链的分布式数据库的所有有效交易对应的交易幂等记录。
即上述交易幂等表中存储的交易幂等记录,用于指示与该交易幂等记录对应的交易,已经被成功打包至候选区块,并且该候选区块共识通过最终作为区块链上的最新区块,成功添加至区块链的分布式数据库(即分布式账本)。
而作为记账节点的节点设备在将一笔有效的交易收录至候选区块之前,还可以基于上述交易幂等表对该交易进行幂等检查,确认该交易是否为一笔已经成功收录至区块链的分布式数据库的重复交易。
在示出的一种实施方式中,用户通过客户端创建的交易中,除了可以携带以上描述的参考时间参数以外,还可以携带一个由上述客户端为该交易创建的唯一标识。
例如,在实际应用中,区块链中的节点设备可能是一台配置多个实例的节点设备,每一个实例都具有唯一的实例ID,在这种情况下,上述交易流水号具体可以是由实例ID和一个生成的随机数构成的具有唯一性的交易流水号。
又如,如果区块链中的节点设备是一台包含多台设备的分布式设备,每一台设备都具有唯一的设备标识(比如设备ID,或者设备的IP地址等等),在这种情况下,上述交易流水号具体可以是由设备标识和一个生成的随机数构成的具有唯一性的交易流水号。
而作为记账节点的节点设备,在确定收集到的一笔交易,为交易有效期内的有效交易后,可以进一步查询上述交易幂等表中是否存储了与该交易的唯一标识对应的交易幂等记录;
一方面,如果该交易幂等记录中存储了与该交易的唯一标识对应的交易幂等记录,表明该交易在此之前已经被成功收录至区块链的分布式数据库,该交易为重复发起的交易,此时可以将该交易直接进行丢弃处理;
另一方面,如果该交易幂等记录中未存储与该交易的唯一标识对应的交易幂等记录,表明该交易在此之前并没有被成功收录至区块链的分布式数据库,此时上述节点设备可以将该交易收录至候选区块。
在本说明书中,作为记账节点的节点设备,在生成了候选区块后,可以进一步将生成的候选区块在区块链中进行广播发布,基于区块链所支持的共识算法,在区块链中发起对该候选区块中所收录的交易进行共识处理,来“竞争”记账权限。
其中,上述区块链中所支持的共识算法的具体类型,在本说明书中不进行限定限定,在实际应用中,可以采用诸如工作量证明算法、PBFT算法等标准的共识算法,也可以由区块链的运营方基于实际的业务需求进行定制。
当上述候选区块共识通过,作为记账节点的节点设备取得了记账权限后:
一方面,可以将该候选区块作为区块链上的最新区块,添加至区块链的分布式数据库(即分布式账本)。此时,该候选区块将作为区块链上的区块,在区块链上永久存储。
另一方面,该节点设备可以基于交易中携带的交易内容,在该节点设备的交易执行环境中,触发执行该候选区块中收录的共识通过的交易。例如,可以将这些交易作为已经发布至区块链上的智能合约的输入,通过执行智能合约中声明的交易执行程序代码(比如一些与交易执行相关的函数调用),在节点设备的交易执行环境中完成交易的执行。
在示出的一种实施方式中,当上述目标交易被成功收录至上述候选区块,并且上述候选区块共识通过并最终被作为区块链中最新的区块,成功存储至区块链的分布式数据库后,此时上述目标交易已经被成功存储至区块链的分布式数据库(即该笔交易成功上链),在这种情况下,还可以生成一条与该目标交易的唯一标识对应的交易幂等记录,然后将该交易幂等记录插入至该交易幂等表。
其中,上述交易幂等记录的具体格式,在本说明书中不进行特别限定;例如,在一种方式中,上述交易幂等记录具体可以是一条包含交易的唯一标识的数据记录;或者,在另一种方式中,可以直接将该交易的唯一标识作为交易幂等记录插入到上述交易幂等表中。
通过这种方式,由于该交易幂等表中的交易幂等记录,只涵盖上述交易有效期内的所有“有效交易”的交易幂等记录,并不需要存储交易有效期之前的历史交易的交易幂等记录,因此对于该交易幂等表而言,存储空间消耗不会过大,不会存在由于该交易幂等表存储空间消耗过大而面临的查询性能问题。
例如,对于任一可以作为记账节点的节点设备而言,由于该交易幂等表占用的存储空间较小,因此可以直接将该交易幂等表在设备的内存中进行加载和维护,而不需要借助第三方的存储磁盘来存储交易幂等表,可以直接在内存中运行针对交易幂等表的查询动作,进而可以显著提升查询性能。
另外,由于对于所有有效交易而言,只有那些在上述交易幂等记录表中不存在交易幂等记录的交易,才能被成功收录至候选区块,因此可以避免区块链中的交易执行所面临的“幂等性”问题,可以有效防止一些非法节点利用截获的交易有效期内的有效交易发起重放攻击,导致同一有效交易被重复执行。
而且,在区块链中的节点设备配置了多个实例,或者该节点设备为分布式设备的场景下,也可以有效的避免由于同一有效交易被不同的实例,或者分布式设备中的不同子设备并行发布,而导致的同一有效交易被重复执行的问题。
在本说明书中,由于上述交易幂等表是用于维护上述交易有效期内的“有效交易”对应的交易幂等记录,因此在实际应用中,可以由共同维护该交易幂等表的各个成员节点设备,周期性的进行清除处理,以及时的清楚掉上述交易幂等表中处于上述交易有效期以外的交易的交易幂等记录;
例如,以上述交易有效期为区块链中的记账节点设备在当前的记账周期内创建的候选区块的创建时刻为基准,设置的一个时间区间为例,由于候选区块的创建是周期性的,因而导致上述交易有效期也是一个周期性的动态时间周期;在这种情况下,节点设备可以在下一记账周期来临创建出一个新的候选区块时,可以重新确定上述交易有效期,然后主动查找上述交易幂等表中处于重新确定出的交易有效期以外的交易的交易幂等记录;比如,仍然可以通过基于交易中的参考时间参数,来判定该交易是否处于重新确定出的交易有效期以外,具体的实施过程不再赘述。
进一步,可以删除这些查找到的交易幂等记录,以对上述交易幂等表中维护的交易幂等记录进行动态更新和维护,确保交易幂等表中的交易幂等记录,都是处于基于当前的交易有效期内的有效交易对应的交易幂等记录。
与上述方法实施例相对应,本说明书还提供了一种基于区块链的交易处理装置的实施例。本说明书的基于区块链的交易处理装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本说明书的基于区块链的交易处理装置所在电子设备的一种硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
图3是本说明书一示例性实施例示出的一种基于区块链的交易处理装置的框图。
请参考图3,所述基于区块链的交易处理装置30可以应用在前述图2所示的电子设备中,包括有:接收模块301、确定模块302和收录模块303。
接收模块301,接收区块链中的成员节点设备发起的目标交易;其中,所述目标交易中包括参考时间参数;所述参考时间参数用于确定所述目标交易是否为交易有效期内的有效交易;
确定模块302,基于所述参考时间参数确定所述目标交易是否为所述交易有效期内的有效交易;
收录模块303,如果确定出所述目标交易为交易有效期内的有效交易,将所述目标交易收录至生成的候选区块。
在本实施例中,所述参考时间参数为创建所述目标交易时生成的参考时间戳;所述交易有效期对应由第一数值和第二数值构成的数值区间;所述第一数值为所述候选区块的创建时间戳与第一阈值的差值;所述第二数值为所述候选区块的创建时间戳与第二阈值的和;
所述确定模块302:
将所述参考时间戳与所述第一数值和第二数值分别进行比较;
如果所述参考时间戳大于所述第一数值,并且小于所述第二数值,确定所述目标交易为所述交易有效期内的有效交易。
在本实施例中,所述确认模块302进一步:
在将所述参考时间戳与所述第一数值和第二数值分别进行比较之前,检查所述候选区块的创建时间戳是否大于所述区块链中最新区块的创建时间戳;如果是,进一步将所述参考时间戳与所述第一数值和第二数值分别进行比较。
在本实施例中,所述参考时间戳为创建所述目标交易时的系统时间戳;或者,由交易创建者指定的参考时间戳。
在本实施例中,所述第一阈值大于所述第二阈值。
在本实施例中,所述参考时间参数为创建所述目标交易时生成的参考区块高度数;所述交易有效期对应由第三数值与所述候选区块在区块链上的区块高度数构成的数值区间;所述第三数值为所述候选区块在区块链上的区块高度数与第三阈值的差值;
所述确定模块302:
将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较;
如果所述参考区块高度数大于所述第三数值,并且小于所述候选区块在区块链上的区块高度数,确定所述目标交易为所述交易有效期内的有效交易。
在本实施例中,所述确定模块302进一步:
在将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较之前,检查所述候选区块的区块号是否大于所述区块链中最新区块的区块号;如果是,进一步将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较。
在本实施例中,所述参考区块高度数为创建所述目标交易时所述区块链中的最大区块高度数;或者,由交易创建者指定的参考区块高度数。
在本实施例中,所述目标交易中还包括所述目标交易的唯一标识;
所述收录模块303进一步:
如果确定出所述目标交易为交易有效期内的有效交易,查询预设的交易幂等表中是否存储了与所述目标交易的唯一标识对应的交易幂等记录;其中,所述交易幂等表用于存储所述交易有效期内的有效交易对应的交易幂等记录;
如果所述交易幂等表中未存储与所述目标交易的唯一标识对应的交易幂等记录,将所述目标交易收录至所述候选区块。
在本实施例中,所述交易幂等记录指示与所述交易幂等记录对应的交易,已被成功收录至所述区块链的分布式数据库;
所述收录模块303进一步:
如果所述目标交易被收录至所述候选区块,并且所述候选区块共识通过被成功存储至所述区块链的分布式数据库,生成与所述目标交易的唯一标识对应的交易幂等记录,并将所述交易幂等记录插入所述交易幂等表。
在本实施例中,所述收录模块303进一步:
周期性清除所述交易幂等表中处于所述交易有效期以外的交易的交易幂等记录。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
与上述方法实施例相对应,本说明书还提供了一种电子设备的实施例。该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收区块链中的成员节点设备发起的目标交易;其中,所述目标交易中包括参考时间参数;所述参考时间参数用于确定所述目标交易是否为交易有效期内的有效交易;
基于所述参考时间参数确定所述目标交易是否为所述交易有效期内的有效交易;
如果确定出所述目标交易为交易有效期内的有效交易,将所述目标交易收录至生成的候选区块。
在本实施例中,所述参考时间参数为创建所述目标交易时生成的参考时间戳;所述交易有效期对应由第一数值和第二数值构成的数值区间;所述第一数值为所述候选区块的创建时间戳与第一阈值的差值;所述第二数值为所述候选区块的创建时间戳与第二阈值的和;
通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
将所述参考时间戳与所述第一数值和第二数值分别进行比较;
如果所述参考时间戳大于所述第一数值,并且小于所述第二数值,确定所述目标交易为所述交易有效期内的有效交易。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
在将所述参考时间戳与所述第一数值和第二数值分别进行比较之前,检查所述候选区块的创建时间戳是否大于所述区块链中最新区块的创建时间戳;如果是,进一步将所述参考时间戳与所述第一数值和第二数值分别进行比较。
在本实施例中,所述参考时间参数为创建所述目标交易时生成的参考区块高度数;所述交易有效期对应由第三数值与所述候选区块在区块链上的区块高度数构成的数值区间;所述第三数值为所述候选区块在区块链上的区块高度数与第三阈值的差值;
通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较;
如果所述参考区块高度数大于所述第三数值,并且小于所述候选区块在区块链上的区块高度数,确定所述目标交易为所述交易有效期内的有效交易。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
在将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较之前,检查所述候选区块的区块号是否大于所述区块链中最新区块的区块号;如果是,进一步将所述参考区块高度数与所述候选区块在区块链上的区块高度数和所述第三数值分别进行比较。
在本实施例中,所述目标交易中还包括所述目标交易的唯一标识;
通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
如果确定出所述目标交易为交易有效期内的有效交易,查询预设的交易幂等表中是否存储了与所述目标交易的唯一标识对应的交易幂等记录;其中,所述交易幂等表用于存储所述交易有效期内的有效交易对应的交易幂等记录;
如果所述交易幂等表中未存储与所述目标交易的唯一标识对应的交易幂等记录,将所述目标交易收录至所述候选区块。
在本实施例中,所述交易幂等记录指示与所述交易幂等记录对应的交易,已被成功收录至所述区块链的分布式数据库;
通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
如果所述目标交易被收录至所述候选区块,并且所述候选区块共识通过被成功存储至所述区块链的分布式数据库,生成与所述目标交易的唯一标识对应的交易幂等记录,并将所述交易幂等记录插入所述交易幂等表。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
周期性清除所述交易幂等表中处于所述交易有效期以外的交易的交易幂等记录。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。