(19)国家知识产权局
(12)发明 专利
(10)授权公告 号
(45)授权公告日
(21)申请 号 202210942282.1
(22)申请日 2022.08.08
(65)同一申请的已公布的文献号
申请公布号 CN 115021945 A
(43)申请公布日 2022.09.06
(73)专利权人 四块科技 (深圳) 有限公司
地址 518000 广东省深圳市前海深港合作
区南山街道桂湾五路128号前海深港
基金小镇B8栋101
(72)发明人 冯国东 徐超
(51)Int.Cl.
H04L 9/32(2006.01)
G06Q 40/04(2012.01)
(56)对比文件
WO 2022148390 A1,202 2.07.14WO 2022027531 A1,202 2.02.10
WO 2022152114 A1,202 2.07.21
US 2021119778 A1,2021.04.2 2
WO 20210 68728 A1,2021.04.15
US 2020358619 A1,2020.1 1.12
US 20202 28318 A1,2020.07.16
WO 20190190 56 A1,2019.01.31
顾欣等.区块链技 术的安全问题研究综述.
《信息安全研究》 .2018,第4卷(第1 1期),
审查员 何德超
(54)发明名称
区块链交易处 理方法和系统
(57)摘要
本发明公开了一种区块链交易处理方法和
系统, 该方法包括: 客户端 生成一笔交易, 并对交
易进行私钥签名、 序列化以及广播, 当交易发送
方或者交易接收方的账户第一次在 链上激活时,
以所述交易所在的区块高度和所述交易在区块
中的位置索引来标识一个所述账户, 在所述交易
进行序列化时, 采用压缩的变长编码进一步表示
所述账户; 节点对交易进行防重放攻击检查; 在
防重放攻击检查通过之后, 节点对交易进行校
验, 校验包括验签; 在通过校验之后, 节点将交易
打包进新区块, 并将新区块进行广播; 节点达成
共识之后, 将包含交易的新区块添加到最长链
上, 并持久化到状态数据库。 该方法能够快速地
提高处理交易的速度。
权利要求书3页 说明书7页 附图7页
CN 115021945 B
2022.11.08
CN 115021945 B
1.一种区块链交易处 理方法, 其特 征在于, 包括:
客户端生成一笔交易, 并对所述交易进行私钥签名、 序列化以及广播, 其中, 所述交易
的数据结构包括如下多个属 性: 交易版本号、 交易创建时的区块高度、 交易发送方账户、 交
易接收方账户、 转账金额、 交易费用、 交易备注、 交易签名、 以及交易哈希, 当所述交易发送
方或者交易接收方的账户第一次在链上激活 时, 以所述交易所在的区块高度和所述交易在
区块中的位置索引来标识一个所述账户, 在所述交易进行序列化时, 采用压缩的变长编码
进一步表示所述账户;
节点对所述交易进行防重放攻击检查, 所述节点对所述交易进行防重放攻击检查, 包
括: 在所述交易的数据结构中还设置一个属性: 攻击交易 失效的区块高度, 将所述交易创建
时的区块高度记作x, 将攻击交易失效的区块高度记作n, 将所述交易被所述节点打包进区
块时的区块高度记作X; 如果X在区间[x ‑n, x+n]范围之外, 则判定所述交易无效, 否则, 进入
下一步; 在内存中查找所述交易, 如果能查找到所述交易, 则判定所述交易无效, 反之, 则判
定所述交易有效; 其中, 所述内存中维护着最新的n个区块包括的所有交易的键值对映射,
并随着节点的最长链的变化实时更新所述键值对映射, 其中, 以标识唯一的区块的区块哈
希作为映射的键, 以所述区块包 含的所有交易哈希组成的无序集 合作为映射的键值;
在防重放 攻击检查 通过之后, 所述节点对所述交易进行 校验, 所述校验 包括验签;
在通过校验之后, 所述节点将所述交易打包进新区块, 并将所述 新区块进行广播;
节点之间采用委任权益证明机制达成共识之后, 将包含所述交易的新 区块添加到最长
链上, 并持久化到状态数据库;
其中, 采用椭圆曲线数字签名算法对所述交易进行签名和验签。
2.根据权利要求1所述的方法, 其特 征在于,
其中, 所述 客户端对所述交易进行签名, 包括:
所述客户端随机生成一个私钥privK ey, 并计算公钥pubK ey=privK ey*G, 所述G为基点;
所述客户端使用哈希算法对所述交易的明文计算哈希值, 得到哈希值 为h;
所述客户端生成一个随机数k, 计算 点R=k*G, 取点R的x轴值: r=R.x;
所述客户端计算签名: s = k^‑1(mod n) * (h + r * privKey), n为G的阶;
所述客户端将所述交易明文和签名{r, s}发送给节点;
其中, 所述节点对所述交易进行验签, 包括:
所述节点读取所述交易的明文数据, 从区块链系统合约中找到所述客户端的公钥
pubKey, 使用同样的哈希算法对所述明文数据进行计算哈希值, 得到哈希值h1;
所述节点计算签名的模 逆元s1: s1 = s^‑1 (mod n);
所述节点计算签名生成过程中的随机数对应的点R': R' = (h1 * s1) * G + (r *
s1) * pubKey;
所述节点计算R'的X轴值r' : r' = R'.x;
所述节点对比r'是否等于签名中r, 如果相等, 则验证通过。
3.根据权利要求1所述的方法, 其特征在于, 所述节点的数量为十个以上, 所述节点之
间的网络采用局域网或者专线。
4.根据权利要求1至3任意一项所述的方法, 其特征在于, 所述将包含所述交易的新区
块添加到最长链上, 并持久化到状态数据库, 包括:权 利 要 求 书 1/3 页
2
CN 115021945 B
2设置允许分叉的阈值区块数量;
当分叉链与节点的最长链的分叉点所在高度不超过所述阈值区块数量, 所述分叉链被
确认为正常分叉链, 反 之, 则所述分叉链被丢弃。
5.根据权利要求 4所述的方法, 其特征在于, 所述将包含所述交易的新区块添加到最
长链上, 并持久化到状态数据库, 还 包括:
在出现临时分叉时 回滚区块;
在添加新 区块或回滚区块 时, 通过依次执行或者 回滚区块中包含的所有交易来更新状
态数据库。
6.根据权利要求5所述的方法, 其特征在于, 所述节点采用多级缓存机制更新状态数据
库, 所述多级缓存机制包括: 全局缓存、 局部缓存以及Lev elDB; 每级缓存中存储的数据为状
态数据, 所述状态数据的类型包括: 区块数据、 账户数据、 交易收据数据以及交易回滚数据,
所述更新状态数据库, 包括:
从局部缓存查找状态数据, 如果未查找到, 进入下一 步;
从全局缓存中查找状态数据, 如果查找到, 从全局缓存中将状态数据复制到局部缓存,
否则, 进入下一 步;
从LevelDB查找状态数据, 如果查找到, 从LevelDB中将状态数据复制到局部缓存, 否
则, 表示出现异常;
查找到状态数据之后, 通过执行交易对所述状态数据进行修改, 然后同步所述状态数
据到全局缓存内, 最后将所述状态数据持久化到LevelDB; 如果交易执行失败, 则放弃当前
局部缓存, 不会改变全局缓存的状态数据。
7.一种区块链 交易处理系统, 其特征在于, 包括多个客户端和多个节点; 所述客户端用
于生成一笔交易, 并对所述交易进行私钥签名、 序列化以及广播, 其中, 所述交易的数据结
构包括如下多个属性: 交易版本号、 交易创建时的区块高度、 交易发送方账户、 交易接 收方
账户、 转账金额、 交易费用、 交易备注、 交易签名、 以及交易哈希, 当所述交易发送方或者交
易接收方的账户第一次在链上激活时, 以所述交易所在的区块高度和所述交易在区块中的
位置索引来标识一个账户, 在所述交易进行序列化时, 采用压缩的变长编码来表示所述一
个账户;
所述节点包括:
防重放攻击检查模块, 用于对所述交易进行防重放攻击检查, 所述防重放攻击检查模
块包括: 交易属性设置单元, 用于在所述交易的数据结构中还设置一个属性: 攻击交易 失效
的区块高度, 将所述交易创建时的区块高度 记作x, 将攻击交易 失效的区块高度 记作n, 将所
述交易被所述节点打包进区块时的区块高度记作X; 第一交易有效判断单元, 用于如果X在
区间[x‑n, x+n]范围之外, 则判定所述交易无效, 否则, 进入下一步; 第二交易有效判断单
元, 用于在内存中查找所述交易, 如果能查找到所述交易, 则判定所述交易无效, 反之, 则判
定所述交易有效; 其中, 所述内存中维护着最新的n个区块包括的所有交易的键值对映射,
并随着节点的最长链的变化实时更新所述键值对映射, 其中, 以标识唯一的区块的区块哈
希作为映射的键, 以所述区块包 含的所有交易哈希组成的无序集 合作为映射的键值;
校验模块, 用于在防重放攻击检查通过之后, 对所述交易进行校验, 所述校验包括验
签;权 利 要 求 书 2/3 页
3
CN 115021945 B
3
专利 区块链交易处理方法和系统
文档预览
中文文档
18 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共18页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-03-03 12:16:20上传分享