基于区块链的支持高并发场景的账户智能合约方法和系统转让专利
申请号 : CN202011160714.0
文献号 : CN112017050B
文献日 : 2021-04-23
发明人 : 顾惠波 , 岳晓兰 , 王帅
申请人 : 浙江甲骨文超级码科技股份有限公司
摘要 :
权利要求 :
1.一种基于区块链的支持高并发场景的账户智能合约方法,其特征在于,包括:获取用户的身份信息;
对所述身份信息进行计算得到所述身份信息的哈希值;
根据所述哈希值得到转出主账户的地址,对所述转出主账户进行初始化;
获取资产转出方的转出主账户,为所述转出主账户创建多个转出子账户,其中,所述转出主账户和所述转出子账户通过智能合约得到,所述智能合约用于Fabric区块链,为所述转出主账户创建多个转出子账户包括资产转出方通过将账户中的资产分配至多个地址,从而得到多个转出子账户,所有的转出子账户同时存在,同时失效;
获取所述转出子账户的地址和交易参数,获取资产转入方的转入账户的地址,其中,所述资产转入方的转入账户的地址通过调用所述智能合约传入;
根据所述转出子账户的地址、所述交易参数和所述转入账户的地址,将资产从所述转出子账户转入至所述转入账户。
2.根据权利要求1所述的基于区块链的支持高并发场景的账户智能合约方法,其特征在于,所述转入账户包括转入主账户,所述方法还包括:为所述转入主账户创建转入子账户。
3.根据权利要求2所述的基于区块链的支持高并发场景的账户智能合约方法,其特征在于,所述将资产从所述转出子账户转入至所述转入账户包括:将所述资产转入至所述转入主账户,或者,将所述资产转入至所述转入账户的转入子账户。
4.根据权利要求3所述的基于区块链的支持高并发场景的账户智能合约方法,其特征在于,所述将所述资产转入至所述转入账户的转入子账户包括:对所述交易参数和所述转出主账户进行验证;
在所述交易参数和所述转出主账户均验证通过,且所述转出子账户有效的情况下,获取所述转出子账户的地址,其中,所述转出子账户有效为所述转出子账户中存在资产;
在所述转入子账户有效的情况下,获取所述转入子账户的地址;
在所述转出子账户的资产大于或者等于预设交易阈值的情况下,根据所述转出子账户的地址、所述转入子账户的地址和所述交易参数,进行资产交易。
5.根据权利要求4所述的基于区块链的支持高并发场景的账户智能合约方法,其特征在于,通过路由算法选择所述转出子账户和所述转入子账户。
6.根据权利要求1所述的基于区块链的支持高并发场景的账户智能合约方法,其特征在于,还包括:
对子账户存入参数和所述转出主账户进行验证;
在所述子账户存入参数和所述转出主账户均验证通过的情况下,获取所述转出主账户的资产状态;
在所述资产状态为未存入,且所述转出主账户的资产大于或者等于预设资产阈值的情况下,将所述转出主账户的资产信息、所述转出子账户的资产信息和所述转出主账户的资产状态进行修正。
7.根据权利要求1所述的基于区块链的支持高并发场景的账户智能合约方法,其特征在于,还包括:
对主账户存入参数进行验证;
在所述主账户存入参数验证通过的情况下,获取资产存入账户地址;
在所述资产存入账户地址为管理员账户地址的情况下,将资产存入所述转出主账户。
8.根据权利要求1所述的基于区块链的支持高并发场景的账户智能合约方法,其特征在于,还包括:
将所述转出子账户中的资产转移至所述转出主账户,并将所有的所述转出子账户删除,修改所述转出主账户的资产状态;
将所述转出主账户中的资产进行提出。
9.根据权利要求1所述的基于区块链的支持高并发场景的账户智能合约方法,其特征在于,还包括:
获取用户的账户查询指令,根据所述用户的身份信息生成账户查询地址;
根据所述账户查询地址查询所述用户的主账户信息和子账户信息。
10.一种基于区块链的支持高并发场景的账户智能合约系统,其特征在于,包括账户获取模块、地址确定模块和资产交易模块:所述账户获取模块,用于获取用户的身份信息;对所述身份信息进行计算得到所述身份信息的哈希值;根据所述哈希值得到转出主账户的地址,对所述转出主账户进行初始化;
获取资产转出方的转出主账户,为所述转出主账户创建多个转出子账户,其中,所述转出主账户和所述转出子账户通过智能合约得到,所述智能合约用于Fabric区块链;
所述地址确定模块,用于获取所述转出子账户的地址和交易参数,获取资产转入方的转入账户的地址,其中,所述资产转入方的转入账户的地址通过调用所述智能合约传入,为所述转出主账户创建多个转出子账户包括资产转出方通过将账户中的资产分配至多个地址,从而得到多个转出子账户,所有的转出子账户同时存在,同时失效;
所述资产交易模块,用于根据所述转出子账户的地址、所述交易参数和所述转入账户的地址,将资产从所述转出子账户转入至所述转入账户。
说明书 :
基于区块链的支持高并发场景的账户智能合约方法和系统
技术领域
背景技术
易输出(Unspent Transaction Output,简称UTXO)模型和账户模型,会受到Fabric区块链
的多版本并发控制(Multi‑Version Concurrent Control,简称为MVCC)的机制限制,无法
应用于高并发场景,例如,在同一个区块内不存在两笔或两笔以上的资产交易对于同一个
账户的修改同时生效。进一步地,目前的Fabric区块链的资产交易功能受到MVCC机制的限
制,无法满足对于并发量较大的区块链联盟成员的业务需求。
发明内容
足对于并发量较大的区块链联盟成员的业务需求的问题。
产;
的资产状态进行修正。
现如上述第一方面所述的基于区块链的支持高并发场景的账户智能合约方法。
方法。
出子账户的地址和交易参数,获取资产转入方的转入账户的地址;根据转出子账户的地址、
交易参数和转入账户的地址,将资产从转出子账户转入至转入账户,解决了Fabric区块链
的资产交易功能受到MVCC机制的限制,无法满足对于并发量较大的区块链联盟成员的业务
需求的问题,实现了一种支持高并发场景的转账智能合约,可以满足高并发场景下的转账
需求。
附图说明
具体实施方式
于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的
前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然
这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关
的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造
或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显
式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相
结合。
等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、
“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单
元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有
列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单
元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连
接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于
或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或
B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第
一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
户,根据该主账户的地址和用户需要的子账户数量,生成子账户的地址,从而创建子账户,
在通过智能合约进行交易时,交易双方分别为资产转出方和资产转入方,资产转出方和资
产转入方的身份随实际交易过程变化,例如,在一个交易中,资产从A方转移至B方,此时A方
为资产转出方,B方为资产转入方,在另外一个交易中,资产从C方转移至A方,此时,C方为资
产转出方,A方为资产转入方。因此本申请中对转出主账户和转出子账户进行的各种操作和
处理分别适用于转入主账户和转入子账户。
由于本申请中的基于区块链的支持高并发场景的账户智能合约方法在智能合约中实现,因
此考虑到智能合约的安全性,需要对转出子账户数量进行限制,例如,转出子账户数量的默
认最大值不可超过10000,具体数值可根据联盟链中成员的实际需求做进一步的限制,而且
由于转出主账户将资产存入至转出子账户是较重的操作,为避免某些恶意用户频繁地进行
此操作,本实施例引入手续费机制,手续费为手续费单价与子账户数量的乘积,手续费单价
可以由联盟链内的成员进行设置,手续费会被转入至管理员账户,且对转出主账户进行充
值或者提现的操作只能通过管理员账户进行。
发场景的账户智能合约方法的流程图,如图1所示,该方法包括如下步骤:
地址,从而得到多个转出子账户。
子账户地址进行匹配来确定交易过程使用的转出子账户,以保证转出子账户选取的随机
性。交易参数可以包括多个与资产交易有关的参数,例如,资产交易的金额,选择通过转出
主账户还是转出子账户进行交易。
易功能受到MVCC机制的限制,无法满足对于并发量较大的区块链联盟成员的业务需求的问
题,通过为转出主账户创建多个转出子账户,实现了一种支持高并发场景的转账智能合约,
可以满足高并发场景下的转账需求。
方将转入主账户中的资产分配至不同的多个地址,即可得到多个转入子账户,以满足资产
转入方在交易过程中对高并发的需求,本实施例中的方法可以用在基于Fabric技术的区块
链中。
交易频率较低的大额转账适用于使用主账户之间进行交易,交易频率较高的小额转账适用
于子账户之间进行交易。资产转出方可以根据需求灵活选择资产交易的方式,因此本实施
例中的方法可以提高场景适应性。
所示,该方法包括如下步骤:
表示是否转入对方子账户。在参数验证的过程中,需要验证转出金额是否大于0和资产状态
的具体情况,并且在使用转出子账户的情况下,还需要校验转出子账户的数量是否大于0,
其中,资产状态包括转出主账户已经为转出子账户进行充值的状态和转出子账户中的余额
已经被提出的状态。
希值,再根据哈希值得到该用户的地址,在该地址存在于区块链的状态数据库中的情况下,
认为该用户的地址存在且有效,验证通过。
开始,步长为1递增的固定长度后缀,该固定长度为转出子账户数量减1后以十进制表示的
数值位数,然后Value为子账户的余额序列化后的值。
转入子账户中的资产进行验证,在转入主账户已经对转入子账户进行充值的情况下,转入
子账户为有效账户,才能进行资产交易。
阈值为资产交易过程中需要交易的资产数值,在转出子账户的资产满足交易条件的情况
下,同时修改转出子账户和转入至转入子账户的资产。
有多个子账户,因此可以满足交易双方对高并发的需求,有效提高交易效率。
算法获取到资产交易过程中的交易哈希值(Hash),使用循环冗余校验(Cyclic Redundancy
Check,简称为CRC)算法,例如CRC32算法,对交易哈希值(Hash)进行计算得到一个整数值,
该整数值对转入子账户的数量取余数,将余数作为固定长度的后缀,拼接到转入主账户的
地址,从而得到转入子账户的地址,该固定长度可以为转出子账户数量减1后以十进制表示
的数值位数。本实施例中通过路由算法计算交易路径,可以提高对转入子账户进行选择的
随机性,更好地满足用户对高并发的需求,进一步地,本实施例中的方法可以用在基于
Fabric技术的区块链中。
满足大于1,且小于或者等于智能合约初始化时指定的最大转出子账户数量,对转出子账户
的充值金额需要大于0。
书信息,然后根据身份信息进行哈希计算得到哈希值,再根据哈希值得到该用户的地址,在
该地址存在于区块链的状态数据库中的情况下,认为该用户的地址存在且有效,验证通过。
True和False表示,True表示转出主账户已经将资产存入转出子账户,即已经执行过转出子
账户充值操作,此时不能再次执行转出子账户充值操作,False表示转出主账户未为转出子
账户进行充值,或者转出子账户中的资产已经被提出,此时不能再次将转出子账户中的资
产提出,即不能再次执行转出子账户提现操作。
户中的余额为0,属于无效账户。在需要通过转出子账户进行交易时,必须先通过转出主账
户对转出子账户进行充值。
进行修正。
资产大于或者等于预设资产阈值的条件下,转出主账户才可以对转出子账户进行充值,本
实施例中,预设资产阈值为手续费与转出子账户充值总额的和,其中手续费为手续费单价
与转出子账户数量乘积,手续费单价与转出子账户数量均可以由用户进行设置,转出子账
户充值总额为每个转出子账户的充值金额与转出子账户数量的乘积。本实施例中,手续费
单价可以为0,转出主账户为转出子账户的充值金额必须大于0。
息具体为修正转出主账户的账户余额,同时将转出主账户的资产状态设置为True,表示转
出主账户已经为转出子账户进行充值且充值成功。进一步地,转出子账户在Fabric区块链
状态数据库中以Key‑Value的键值对形式进行存储,Key为转出主账户的地址加上一个后
缀,该后缀为从0开始,步长为1递增的固定长度后缀,该固定长度为转出子账户数量减1后
以十进制表示的数值位数,Value为子账户的余额序列化后的值。
值操作的过程中,需要获取主账户存入参数,该转出主账户存入参数可以为转出主账户的
地址和资产存入的数值,即充值金额,本实施例中资产存入的数值需大于0。
行哈希计算得到哈希值,再根据哈希值得到该用户的地址,记为资产存入账户地址。
管理员账户的地址,在资产存入账户地址为管理员账户的地址的情况下,还要判断转出主
账户地址是否存在,在转出主账户地址存在的情况下,可以为转出主账户的余额增加相应
的充值金额,成功将资产存入至转出主账户。其中,转出主账户存在具体为智能合约获取到
的转出主账户存在于区块链的状态数据库中。
书信息。
据的格式固定下来,哈希值通常用一个短的随机字母和数字组成的字符串来代表。通过哈
希值的计算,可以将用户的身份信息与用户的转出主账户地址之间进行对应,便于在众多
地址中查找与用户的身份信息对应的主账户地址。本实施例中,可以对身份信息进行
SHA256计算得到哈希值,SHA256是安全散列算法2(Secure Hash Algorithm 2,简称为SHA‑
2)下细分出的一种加密算法,属于SHA的算法之一。对于任意长度的身份信息,SHA256都会
产生一个256字节长的哈希值。
出主账户的地址,RIPEMD算法共有4个标准,分别为128、160、256和320,每个标准对应输出
的长度分别为16字节、20字节、32字节和40字节。
段:1、uint64类型的Balance字段,表示转出主账户的余额,该余额不包含转出子账户的余
额;2、uint32类型的Count字段,表示转出子账户数量;3、bool类型的RechargeStatus字段,
表示转出主账户的资产状态,包括True和False。在本实施例中,将资产存入转出子账户和
将资产从转出子账户中提出只能交替进行。初始化过程中,Balance字段和Count字段均设
置为0,RechargeStatus字段设置为False。然后以转出主账户地址作为Key,以序列化之后
的账户变量作为Value存储到Fabric区块链的状态数据库中。
将转出主账户的资产状态设置为False。进一步地,管理员账户可以将转出主账户中的资产
进行提出。可选地,智能合约中将资产从转出主账户提出的方法,仅管理员账户有权限操
作,也只有管理员有权限为所有用户的转出主账户提供主账户提现服务,并且智能合约仅
支持转出主账户提现,用户如要将转出子账户的资产提出,需先由用户自己执行转出子账
户提现操作,将转出子账户中的资产提现到转出主账户,之后由管理员执行转出主账户的
提现操作。本实施例提供的资产提出的方法,可以用在基于Fabric技术的区块链中,便于用
户将资产在转出主账户和转出子账户之间进行转移,提高资产交易的场景适应性。
账户查询地址查询用户的主账户信息和子账户信息。具体地,在用户发起一笔账户查询交
易的情况下,交易调用智能合约,智能合约根据发起交易的用户的身份信息生成账户查询
地址,然后根据该账户查询地址查询状态数据库,在状态数据库中存在与该账户查询地址
匹配的账户记录的情况下,则返回账户记录,否则返回空值。本实施例提供的主账户信息和
子账户信息的查询方法,可以用在基于Fabric技术的区块链中,便于查询到Fabric区块链
状态数据库中最新的主账户信息和子账户信息,为资产交易提供便利。
骤:
交易失败;
败;
转出子账户无效的情况下,交易失败;
入主账户的地址存在于区块链的状态数据库中的情况下,验证通过,否则交易失败;
资产信息,或者,如果交易双方选择转入主账户进行交易,直接对转出子账户和转入主账户
的资产信息进行修改。
路由算法路由到特定的子账户,通过子账户实现与转入账户之间的转账。进一步地,智能合
约可以提供创建主账户、对主账户充值、对子账户充值、交易、子账户提现、主账户提现、账
户信息查询的功能,其中,主账户包括转出主账户和转入主账户,子账户包括转出子账户和
转入主账户。
账户可为主账户进行充值,启用并发转账的用户可使用主账户为子账户充值。同时管理员
账户可为各主账户执行提现操作,每个用户可查询自己的主账户信息和子账户信息,且可
对将子账户中的资产提现到主账户。
法的硬件结构框图。如图7所示,终端70可以包括一个或多个(图7中仅示出一个)处理器702
(处理器702可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于
存储数据的存储器704,可选地,上述终端还可以包括用于通信功能的传输设备706以及输
入输出设备708。本领域普通技术人员可以理解,图7所示的结构仅为示意,其并不对上述终
端的结构造成限定。例如,终端70还可包括比图7中所示更多或者更少的组件,或者具有与
图7所示不同的配置。
器702通过运行存储在存储器704内的计算机程序,从而执行各种功能应用以及数据处理,
即实现上述的方法。存储器704可包括高速随机存储器,还可包括非易失性存储器,如一个
或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器704可
进一步包括相对于处理器702远程设置的存储器,这些远程存储器可以通过网络连接至终
端70。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可
与互联网进行通讯。在一个实例中,传输设备706可以为射频(Radio Frequency,简称为RF)
模块,其用于通过无线方式与互联网进行通讯。
情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预
定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是
硬件,或者软件和硬件的组合的实现也是可能并被构想的。
模块81、地址确定模块82和资产交易模块83:
再受MVCC机制的限制,解决了Fabric区块链的资产交易功能受到MVCC机制的限制,无法满
足对于并发量较大的区块链联盟成员的业务需求的问题,通过为转出主账户创建多个转出
子账户,实现了一种支持高并发场景的转账智能合约,可以满足高并发场景下的转账需求。
于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器
中。
序被处理器执行时实现上述实施例中的任意一种基于区块链的支持高并发场景的账户智
能合约方法。
在矛盾,都应当认为是本说明书记载的范围。
说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护
范围。因此,本申请专利的保护范围应以所附权利要求为准。