[发明专利]一种基于区块链账户模型的无序交易控制方法有效
申请号: | 201710198966.4 | 申请日: | 2017-03-29 |
公开(公告)号: | CN106991607B | 公开(公告)日: | 2020-04-10 |
发明(设计)人: | 谢晗剑;岳利鹏 | 申请(专利权)人: | 杭州溪塔科技有限公司 |
主分类号: | G06Q40/04 | 分类号: | G06Q40/04 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 邱启旺 |
地址: | 310012 浙江省杭州市西湖区*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 区块 账户 模型 无序 交易 控制 方法 | ||
技术领域
本发明涉及一种基于区块链账户模型的无序交易控制方法,改进了现有基于账户模型的区块链中关于有序交易的规则,添加了无序交易相关的控制规则,以及防止双重花费相关的策略。
背景技术
区块链是一种新的分布式技术,由一个个顺序排列而成的交易组成块,再由一个个顺序排列而成的块组成链,每个块包含一个自增的高度作为编号,还有一个时间戳用于记载打包时间。用户使用私钥签名发出的交易,广播后由记账节点打包进入区块链存储,记账节点再广播给其他只读节点进行验证。交易的合法性由用户的签名决定,用户需要对不同的交易生成不同的签名。
区块链一般分为未花费交易输出(UTXO)模型和账户(Account)模型,为了防止双重花费,UTXO模型的方法是:一个未花费的货币或者状态只允许被用作交易输入一次。账户模型的方法是:为每个交易指定一个自增的数字编号,数字编号决定了交易的按序执行,中间不能跳序,相同的编号不能使用多于一次。
账户模型的自增数字编号方法目前还只能适应低频的交易场景,如果用户需要短时间内发送多笔交易,需要在客户端自己维护多笔交易的自增交易编号,然后发送到节点后等待打包入块。但由于区块链网络的分布式特性,交易广播的过程中会出现乱序或丢失的情况,导致记账节点如果发现交易不是按序增加的,会被认为是非法交易丢弃或暂缓打包。最严重的情况是中间某一个编号的交易丢失,则会导致后续所有交易均被丢弃或暂缓打包,客户端又不能很快得到反馈结果,只能等待随机的时间后重新发起丢失的交易。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于区块链账户模型的无序交易控制方法。
本发明的目的是通过以下技术方案实现的:一种基于区块链账户模型的无序交易控制方法,其特征在于,包括以下步骤:
步骤1:用户按照区块链协议的账户规则,生成地址user。
步骤2:用户在本地客户端生成自身已经上链存储的交易ID列表user_onchain_ids,置为空,生成发送中的交易ID列表user_pending_ids,也置为空。
步骤3:记账节点和同步节点在本地生成已上链存储交易ID列表node_onchain_ids,结构为map(user=>ID列表)。记账节点和同步节点每同步一个块,就遍历区块中所有的交易,将交易对应的user和交易ID,添加入node_onchain_ids中。记账节点生成入块中交易ID列表node_adding_ids,结构为map(user=>ID列表)。
步骤4:用户按照区块链协议的交易ID格式,为每一笔交易生成ID,需确保该交易ID不在user_onchain_ids和user_pending_ids中,并广播交易,同时将该交易ID添加入user_pending_ids中。
步骤5:记账节点在出块时,接收用户广播的交易,判断交易ID是否存在于node_onchain_ids或node_adding_ids中,如果都不存在,则为合法交易,并添加该交易到node_adding_ids中,继续后续操作,否则为双重花费交易,做非法交易处理。
步骤6:记账节点在完成区块打包并广播区块后,将node_adding_ids中所有的交易ID分别加入到node_onchain_ids中,并清空当前块的node_adding_ids。
步骤7:用户实时同步区块链,接收到新块后,执行其中的交易,如果存在自己的交易,则将该交易ID从user_pending_ids中去除,并加入到user_onchain_ids中。
进一步地,所述区块链协议的交易ID格式区块链协议制定者设定,包括长度length和类型type。
进一步地,用户在交易丢失或希望覆盖user_pending_ids列表中的交易时,重复使用user_pending_ids列表中的交易ID,但仍然不能与user_onchain_ids列表中的ID重复。
进一步地,所述步骤7中,若区块链分叉,需回退区块。回退区块时,遍历待回退区块中的所有交易,将交易对应的user和交易ID,从node_onchain_ids中删除。
本发明有益效果在于:本发明采用唯一性的ID来防止双重花费和重放攻击,使交易不再依赖固定顺序,可以采用无序的方式直接入的链,满足了客户端单账户高并发交易的场景需求,避免了以往丢失交易后引起其他交易被暂缓的情况。
附图说明
图1为总体架构示意图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州溪塔科技有限公司,未经杭州溪塔科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710198966.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:交易数据处理方法及装置
- 下一篇:用户账户的管理方法、系统及服务器