一种基于账户模型的高效数字资产交易方法与流程

文档序号:24068577发布日期:2021-02-26 14:05阅读:88来源:国知局
一种基于账户模型的高效数字资产交易方法与流程

[0001]
本发明涉及区块链金融技术领域,更具体地,涉及一种基于账户模型的高 效数字资产交易方法。


背景技术:

[0002]
互联网数字经济蓬勃发展,新型数字资产随处可见,此外,新型数字资产的 交易通常效率较低,如比特币交易峰值不大于每秒7笔交易,以太坊主网交易峰 值约为每秒15笔交易,这其实不能满足实际应用中大量并发交易的需求。
[0003]
近年我国央行和欧美多国的资产发行方都积极开展数字法币系统的研究, 并试点推广应用数字法币。2016年英格兰央行率先发布数字法币原型系统 rscoin,这激发全球各国政府对数字法币的研究兴趣。2018年瑞典央行启动区 块链数字法币项目e-krona(电子克朗),并于2020年3月开始投入测试。自 2014年起,央行成立专门的团队研究数字法币,并在2019年由国务院正式批 准进行数字法币研发。截至2020年4月,央行数字法币dcep已在几个城市的 商业银行启动内部测试。数字法币也属于新型数字资产的范畴。数字法币通常 有较好的效率和可监管性,但是隐私保护往往不容易实现。
[0004]
目前出现了一些论文,建议使用密码数字货币的底层技术来完善数字法币 系统对用户隐私保护的不足,同时保持法币系统的可监管性和高效的特点,例 如tian等人在2018年发表的论文《afcoin:a framework for digital fiatcurrency of central banks based on account model》,提出了基于“央行-商业银 行”二元体系架构的一套法币框架,参考了以太坊的技术体系,实现效率、隐 私、监管平衡。该框架中设计了一条央行维护的区块链,简化了收据的处理。 然而,这种设计使得其运行效率受到一条区块链运行速度的限制,不利于并行 化的处理;同时收据的处理在后续的验证环节也是缺失的,系统实现较为困难; 最后对于背书节点的选择也未给出具体方法,需要进一步完善。


技术实现要素:

[0005]
本发明为克服上述现有技术中的至少一个缺陷,提供一种基于账户模型的 高效数字资产交易方法,可实现有效监管。
[0006]
为解决上述技术问题,本发明采用的技术方案是:一种基于账户模型的高 效数字资产交易方法,包括资产发行方cb、资产承销方cmb1,

,cmbnb 以及用户du1,

,dunu,其中nb和nu是任意自然数,且随着区块链系统 的运行,nb和nu的数值可以动态变化;资产承销方cmb1,

,cmbnb分别 拥有公私钥对(bpk1,bsk1),

,(bpknb,bsknb)。用户du1,

,dunu可以在不同 的资产承销方注册真实身份,以满足金融系统的监管需求,同时用户分别拥有 公私钥对(upk1,usk1),

,(upknu,usknu),用户的公钥进一步生成用户的账户地址; 用户的数字资产交易包括以下步骤:
[0007]
s1.创建与提交交易:用户dui获取用户duj的账户地址,设置数字资产 的值v生成未签名的交易tx',并通过用户dui的私钥uski生成交易签名sigtx, 发送带签名的交易tx
到资产承销方cmbs,其中i,j∈{1,

,nu},s∈{1,

,nb};
[0008]
s2.处理交易:资产承销方cmbs接收来自用户dui的交易tx,验证交易 tx是否满足交易条件,处理满足交易条件的交易tx,并输出交易收据recpt;
[0009]
s3.交易上链:资产承销方cmbs将交易tx1,

,txn的哈希值及交易收据 recpt1,

,recptn的哈希值打包,形成未签名未背书区块blk',通过cmbs的私 钥bsks生成区块签名sigblk并与区块blk'组装得到未背书的区块blk”,之后由 负责背书的资产承销方cmbp和cmbq生成背书签名,并提交携带背书签名的 区块blk、交易tx1,

,txn和收据recpt1,

,recptn至资产发行方cb,资产发 行方cb验证区块blk的有效性并发布有效的区块至区块链森林中cmbs的区 块链chains上,其中p,q∈{1,

,nb},n是自然数。、
[0010]
在本发明中,针对现有的afcoin技术框架,引入区块链森林和背书节点 选择方法,融入收据处理过程,给出该框架的完整实现步骤,并将其应用在数 字资产交易的领域,进而获得了一种基于账户模型的高效数字资产交易方法。 在afcoin的语义框架下,区块链森林是央行维护的多个区块链结构,不同的 商业银行具有不同的区块链,但是由央行统一发布;背书节点选择方法是确保 商业银行无法选择特定的负责背书的商业银行,防止商业银行间作弊问题的出 现。当把央行作为数字资产的发行方,商业银行看作数字资产的承销方,用户 看成数字资产的持有人之后,我们就可以获得一个高效的数字资产交易方法。
[0011]
本发明的目的在于设计一种基于账户模型的高效数字资产交易方法。基于 账户模型表明按照本方法实现的系统,用户体验类似以太坊的用户体验,具有 公私钥对和公钥生成的账户地址,同时按照afcoin框架公开哈希值,保密交 易内容的思路,通过公开帐本可以保护用户的交易隐私,通过私有帐本可以实 现监管。
[0012]
进一步的,所述的步骤s1具体包括:
[0013]
s11.用户dui根据数字资产的值v、用户dui的交易序列号noncei、用户 duj的账户地址addrj和交易产生时间t,组装得到未签名的交易tx';
[0014]
s12.更新用户dui本地客户端的交易序列号为noncei+1;
[0015]
s13.根据用户dui所持的私钥uski,为交易tx'生成数字签名sigtx,数 字签名sigtx与未签名的交易tx'组装得到交易tx;
[0016]
s14.向用户dui的资产承销方cmbs提交交易tx。
[0017]
进一步的,所述的步骤s2体包括:
[0018]
s21.资产承销方cmbs接收交易tx,解析为数字资产的值v、用户dui 的交易序列号noncei、用户duj的账户地址addrj、交易产生时间t和数字签 名sigtx;
[0019]
s22.资产承销方cmbs获取所述交易tx的数字签名sigtx,计算用户dui 的账户地址addri,验证所述账户地址addri和addrj是否已在所述资产承销方 cmbs注册,并拒绝未注册账户的交易;
[0020]
s23.从资产承销方cmbs的区块链状态中获取用户dui的链上交易序列 号noncei'、dui的账户余额bali和用户duj的账户余额balj,验证所述交易 tx的交易执行条件,并拒绝不符合交易执行条件的交易;
[0021]
s24.资产承销方cmbs计算用户dui和用户duj新的状态值;
[0022]
s25.资产承销方cmbs计算交易tx的散列值 htx=hash(addrj||noncei||v||t||sigtx);
[0023]
s26.根据所述交易tx的散列值htx、交易后新的账户余额和交易执行时 间t2分别为用户dui和用户duj生成未签名的交易收据recpt1'和recpt2';
[0024]
s27.根据资产承销方cmbs所持的私钥bsks,为所述未签名的交易收据 recpt1'和recpt2'分别生成数字签名sigrecpt1和sigrecpt2;
[0025]
s28.所述数字签名sigrecpt1与sigrecpt2和所述未签名的交易收据 recpt1'与recpt2'组装得到交易收据recpt1和recpt2;
[0026]
s29.资产承销方cmbs提交所述交易tx、交易收据recpt1和recpt2和该 交易所涉及的状态的键名与前后值至交易上链队列,并通知用户dui交易已处 理并等待上链。
[0027]
进一步的,计算用户dui和用户duj新的状态值,包括:用户dui新的 链上交易序列号noncei”=noncei+1、用户dui新的账户余额bali'=bali-v和用 户duj新的账户余额balj'=balj+v,并更新所述新的状态值至所述资产承销方 cmbs的区块链状态中;
[0028]
进一步的,所述的交易执行条件包括:所述交易tx的交易序列号noncei 是否大于等于所述用户dui的链上交易序列号noncei'、所述交易发起时间t是 否超时、用户duj的账户地址addrj是否存在、所述用户dui的账户余额bali 是否大于等于所述数字资产的值v。
[0029]
进一步的,所述的步骤s3具体包括:
[0030]
s31.资产承销方cmbs收集交易tx1,

,txn,交易收据recpt1,

, recptn和每笔交易所涉及的状态的键名与前后值,交易按照交易执行时间顺序 排列;
[0031]
s32.资产承销方cmbs根据交易tx1,

,txn和交易收据recpt1,

, recptn,通过mpt树算法分别构成交易树和收据树,并计算得到所述交易树的 树根的散列值htxtrie和所述收据树的树根的散列值hrecpttrie;
[0032]
s33.资产承销方cmbs获取所述资产承销方cmbs的上一区块的状态树 statetrie',根据交易tx1,

,txn所涉及的状态的键名与前后值、通过状态树 更新算法更新所述状态树statetrie',通过可验状态树生成方法生成可验状态树, 得到新的状态树statetrie和可验状态树statetriev,计算得到所述状态树 statetrie的树根的散列值hstatetrie;
[0033]
s34.资产承销方cmbs从所述资产承销方cmbs的区块链中查询上一区块 的区块头,并计算所述上一区块的区块头的散列值hblkprev;
[0034]
s35.资产承销方cmbs根据所述上一区块的区块头的散列值hblkprev、 所述交易树的树根的散列值htxtrie、所述收据树的树根的散列值hrecpttrie、 所述状态树statetrie的树根的散列值hstatetrie和区块生成时间t3组装得到未 签名未背书的区块blk';
[0035]
s36.根据资产承销方cmbs所持的私钥bsks,所述资产承销方cmbs为所 述未签名未背书的区块blk'生成数字签名sigblk',并将所述未签名未背书的区 块blk'与数字签名sigblk'组装得到未背书的区块blk”;
[0036]
s37.资产承销方cmbs计算上一区块的区块头散列值hblkprev,并根据所 述散列值hblkprev通过选择背书资产承销方的方法计算得到所述区块blk”对 应的负责背书的资产承销方cmbp和cmbq;
[0037]
s38.资产承销方cmbs将所述区块blk”、交易tx1,

,txn,交易收据 recpt1,

,recptn和每笔交易所涉及的状态的键名与前后值和所述资产承销 方cmbs的关于上一区块
的可验状态树statetriev发送至所述区块blk”对应的 负责背书的资产承销方cmbp和cmbq,所述资产承销方cmbp和cmbq验 证区块和区块中的交易与交易收据的有效性,区块验证通过后所述资产承销方 cmbp和cmbq分别出具并回送背书签名sigendorse1和sigendorse2;
[0038]
s39.资产承销方cmbs根据所述区块blk”和背书签名sigendorse1与 sigendorse2构造得到新的区块blk;
[0039]
s310.资产承销方cmbs将交易tx1,

,txn,交易收据recpt1,

,recptn, 每笔交易所涉及的状态的键名与最终值和所述区块blk等新区块的信息发送至 资产发行方cb;
[0040]
s311.资产发行方cb接收新区块blk的信息,验证所述区块blk的有效性, 并更新有效的区块至资产承销方cmbs的区块链chains中。
[0041]
进一步的,所述的步骤s33中验状态树的生成具体包括:
[0042]
s331.输入状态树statetrie'和交易tx1,

,txn所有涉及的状态的键名与 前后值,合并相同键名的状态,使其前值为上一区块的状态树的后值,使其后 值为当前交易tx1,

,txn执行完成后形成的值;
[0043]
s332.遍历所有被涉及的状态,在状态树statetrie'中标记每个状态的节点 及其父节点,直至父节点已被标记或父节点为根节点;
[0044]
s333.从根节点开始向下深度遍历状态树statetrie',当节点为分支节点且 未被标记时继续向下遍历该节点,否则将该节点的键和散列值加入数组中,最 终得到由标记节点的键和散列值组成的可验状态树statetriev。
[0045]
进一步的,所述的步骤s37中cmbs选择背书资产承销方的步骤具体包括:
[0046]
s371.输入上一区块的区块头散列值hblkprev和当前资产承销方的集合 {cmb1,

,cmbnb};
[0047]
s372.使用伪随机数生成算法,将上一区块的区块头散列值hblkprev作为 随机数种子,生成数r,并计算index=r%nb+1,当index与s相同时继续执行所 述伪随机数生成算法,生成新的数r及index,否则得到第一个负责背书的资产 承销方下标p;
[0048]
s373.继续执行s372步骤的伪随机数生成算法,按照相同的过程,得到第 二个负责背书的资产承销方下标q,其中p≠q。
[0049]
进一步的,所述的步骤s38中资产承销方cmbp和cmbq验证区块和区块 中的交易与交易收据的有效性的方法,具体包括以下步骤:
[0050]
s381.查询资产承销方cmbs上一区块的区块头,计算所述上一区块的区 块头散列值hblkprev',并提取所述上一区块区块头中状态树的树根的散列值, 记为hstatetrieprev;
[0051]
s382.根据可验状态树statetriev,通过mpt树算法构成上一区块的状态 树statetrie',计算上一区块的状态树的树根散列值hstatetrieprev',并验证 hstatetrieprev是否与hstatetrieprev'一致,如不一致则区块无效;
[0052]
s383.根据交易tx1,

,txn和交易收据recpt1,

,recptn,通过mpt 树算法分别构成交易树和收据树,并计算得到所述交易树的树根的散列值 htxtrie'和所述收据树的树根的散列值hrecpttrie';
[0053]
s384.从所述区块blk”提取上一区块的区块头的散列值hblkprev、当前区 块交易
树的树根的散列值htxtrie、收据树的树根的散列值htxtrie和状态树 的树根的散列值hstatetrie,验证hblkprev是否与hblkprev'一致、htxtrie是 否与htxtrie'一致和hrecpttrie是否与hrecpttrie'一致,如其中任意一组数据 不一致则区块无效;
[0054]
s385.根据状态树statetrie',对交易tx1,

,txn执行b3至b6的计算 和检查步骤,得到新的状态树statetrie,计算树根散列值hstatetrie',并验证 hstatetrie是否与hstatetrie'一致,如不一致则区块无效。
[0055]
进一步的,所述的步骤s311中资产发行方cb验证所述区块blk的有效性 的方法具体包括:
[0056]
s3111.查询资产承销方cmbs上一区块的区块头,计算所述上一区块的区 块头的散列值hblkprev;
[0057]
s3112.根据交易tx1,

,txn和交易收据recpt1,

,recptn通过mpt 树算法分别构成交易树和收据树,并计算得到所述交易树的树根的散列值 htxtrie'和所述收据树的树根的散列值hrecpttrie';
[0058]
s3113.从所述区块blk提取上一区块的区块头的散列值hblkprev、当前区 块交易树的树根的散列值htxtrie、收据树的树根的散列值htxtrie、状态树的 树根的散列值hstatetrie、数字签名sigblk、背书签名sigendorse1和sigendorse2, 验证hblkprev是否与hblkprev'一致、htxtrie是否与htxtrie'一致、hrecpttrie 是否与hrecpttrie'一致和通过数字签名sigblk还原的公钥是否与bpks一致, 如其中一组数据不一致则区块无效;
[0059]
s3114.输入上一区块的区块头散列值hblkprev和当前资产承销方的集合 {cmb1,

,cmbnb},执行步骤s37中选择背书资产承销方的子步骤,获取 被选择的背书资产承销方的公钥bpkp和bpkq,通过背书签名sigendorse1和 sigendorse2分别还原公钥bpkp'和bpkq',并验证bpkp是否和bpkp'一致,bpkq 是否和bpkq'一致,如其中一组数据不一致则背书签名无效,否则验证背书签名 sigendorse1和sigendorse2,如任意一个背书签名验证错误,则背书签名无效, 继续执行;否则确认区块blk有效,停止检查;
[0060]
s3115.当背书签名无效时,执行步骤s385检查当前区块的交易和交易收 据是否合法,如果合法则根据所述每笔交易所修改的状态的键名与值得到新的 状态树statetrie,计算其树根散列值hstatetrie',并验证hstatetrie是否与 hstatetrie'一致,如不一致则区块无效。
[0061]
与现有技术相比,有益效果是:本发明提供的一种基于账户模型的高效数 字资产交易方法,基于afcoin框架,引入区块链森林和随机选择方法,融入 了收据处理环节,实现了多个资产承销方区块链的并行处理,完善了afcoin 技术框架,并以单个资产承销方内部用户的交易为例,展示了一种基于账户模 型的高效数字资产交易方法。当涉及多个资产承销方的用户交易时,可以参照 afcoin的技术框架,采用本发明的技术细节,对本发明的内容进行扩展。
附图说明
[0062]
图1是本发明的方法流程示意图。
具体实施方式
[0063]
实施例1
[0064]
本实施例采用ecdsa算法作为数字签名算法,椭圆曲线为secp256k1,采 用sha-256算法作为安全的散列函数,采用以太坊的钱包地址生成算法生成用 户的钱包地址,采用nist sp800-90中的hmac-drbg算法作为伪随机数生 成算法。
[0065]
设资产发行方cb、资产承销方cmb1,

,cmb
nb
和区块链用户du1,

, du
nu
,设nb=7,nu=10000,且随着系统的运行,nb和nu的数值可以动态变化, 所有实体机构的公私钥对通过ecdsa的密钥生成算法生成,资产承销方 cmb1,

,cmb
nb
分别拥有公私钥对(bpk1,bsk1),

,(bpk
nb
,bsk
nb
),du1,

, du
nu
属于相同的资产承销方cmb
s
,并分别拥有公私钥对 (upk1,usk1),

,(upk
nu
,usk
nu
)。
[0066]
主要包括以下实施步骤:
[0067]
步骤1.创建与提交交易:在任意时刻t,du1通过du2的账户地址、数字 资产的值v=100等交易参数生成未签名的交易tx',并通过du1的私钥usk1生 成交易签名sig
tx
,发送带签名的交易tx到资产承销方cmb4,包括以下子步 骤:
[0068]
s11.du1根据v=100、du1的交易序列号nonce1=12345、du2的账户地址 addr2和交易产生时间t,组装得到未签名的交易tx'=t||addr2||v||nonce1,其中
ꢀ“
||”表示该比特串串接操作,各个字段在组装前应该转化为比特串;
[0069]
s12.更新du1本地客户端的交易序列号nonce1=12345+1=12346;
[0070]
s13.根据du1所持的ecdsa私钥usk1,通过ecdsa算法为所述交易tx' 生成数字签名sig
tx
,所述数字签名sig
tx
与所述未签名的交易tx'组装得到交易 tx=tx'||sig
tx

[0071]
s14.du1向其所属的资产承销方cmb4提交交易tx。
[0072]
步骤2.处理交易:资产承销方cmb4接收来自du1的交易tx,验证交易 tx是否满足交易条件,执行满足交易要求的交易tx,并输出交易收据recpt, 包括以下子步骤:
[0073]
s21.资产承销方cmb4接收交易tx,解析tx=t||addr2||v||nonce1||sig
tx
, 分别是交易时间t,用户du2的账户地址addr2,数字资产的值v、用户du1的 交易序列号nonce1和数字签名sig
tx

[0074]
s22.资产承销方cmb4获取所述交易tx的数字签名sig
tx
,计算用户du1的账户地址addr1,验证所述账户地址addr1和addr2是否已在所述资产承销方 cmb4中注册,并拒绝未注册账户的交易;
[0075]
s23.从资产承销方cmb4的区块链状态中获取用户du1的链上交易序列号 nonce1'、账户余额bal1,和用户du2的账户余额bal2,验证所述交易tx的交 易执行条件,并拒绝不符合所述交易执行条件的交易,所述交易执行条件包括: 所述交易tx的交易序列号nonce1是否大于等于所述du1的交易序列号nonce1'、 所述交易发起时间t是否超时、用户du2的账户地址addr2是否存在、用户du1的账户余额bal1是否大于等于所述数字资产的值v;
[0076]
s24.资产承销方cmb4计算用户du1和du2新的状态值,包括:du1新 的链上交易序列号nonce
1”=nonce1+1、du1新的账户余额bal1'=bal
1-v和du2新的账户余额bal2'=bal2+v。并记录所述新的状态值至所述资产承销方cmb4的区块链状态中;
[0077]
s25.资产承销方cmb4通过sha-256算法计算所述交易tx的散列值 h
tx
=sha-256(addr2||nonce1||v||t||sig
tx
);
[0078]
s26.根据所述交易tx的散列值h
tx
、交易后新的账户余额和交易执行时 间t2分别为用户du1和用户du2生成未签名的交易收据recpt1'和recpt2';
[0079]
s26.根据资产承销方cmb4所持的ecdsa私钥bsk4,通过ecdsa算法 为所述未签名的交易收据recpt1'和recpt2'分别生成数字签名sig
recpt1
和sig
recpt2

[0080]
s27.所述数字签名sig
recpt1
与sig
recpt2
和所述未签名的交易收据recpt1'和 recpt2'组装得到交易收据recpt1和recpt2;
[0081]
s28.资产承销方cmb4提交所述交易tx、交易收据recpt1和recpt2和每 笔交易所涉及的状态的键名与前后值至交易上链队列,并通知du1交易已处理 并等待上链。
[0082]
步骤3.交易上链:资产承销方cmb4将交易tx1,

,tx
n
的哈希值及交易收据 recpt1,

,recpt
n
的哈希值打包,形成未签名未背书区块blk',通过cmb4的私钥 bsk4生成区块签名sig
blk
并与所述区块blk'组装得到未背书的区块blk”,之后由 负责背书的资产承销方cmb
p
和cmb
q
生成背书签名,并提交携带背书签名的 区块blk、交易tx1,

,tx
n
和收据recpt1,

,recpt
n
至资产发行方cb,资产发行 方cb验证区块blk的有效性并发布有效的区块至区块链森林中cmb4的区块 链chain4上,其中p,q∈{1,

,7},n=100,具体步骤包括:
[0083]
s31.资产承销方cmb4收集交易tx1,

,tx
100
,交易收据recpt1,

, recpt
100
和每笔交易所涉及的状态的键名与前后值,交易按照交易执行时间顺序 排列;
[0084]
s32.资产承销方cmb4根据交易tx1,

,tx
100
和交易收据recpt1,

, recpt
100
,通过mpt树算法分别构成交易树和收据树,并通过sha-256算法计 算得到所述交易树的树根的散列值h
txtrie
和所述收据树的树根的散列值 h
recpttrie

[0085]
s33.资产承销方cmb4获取所述资产承销方cmb4的上一区块的状态树 statetrie',根据所述交易tx1,

,tx
100
所涉及的状态的键名与前后值、通过 状态树更新算法更新所述状态树statetrie',通过可验状态树生成方法生成可验 状态树,得到新的状态树statetrie和可验状态树statetrie
v
,通过sha-256算 法计算得到所述状态树statetrie的树根的散列值h
statetrie
;其中可验状态树的生 成的具体步骤如下:
[0086]
s331.输入状态树statetrie'和交易tx1,

,tx
100
所有涉及的状态的键名与 前后值,合并相同键名的状态,使其前值为上一区块的状态树的后值,使其后 值为当前交易tx1,

,tx
100
执行完成后形成的值;
[0087]
s332.遍历所有被涉及的状态,在状态树statetrie'中标记每个状态的节点及 其父节点,直至父节点已被标记或父节点为根节点;
[0088]
s333.从根节点开始向下深度遍历状态树statetrie',当节点为分支节点且未 被标记时继续向下遍历该节点,否则将该节点的键和散列值加入数组中,最终 得到由标记节点的键和散列值组成的可验状态树statetrie
v

[0089]
s34.资产承销方cmb4从所述资产承销方cmb4的区块链中查询上一区块 的区块头,并并通过sha-256算法计算所述上一区块的区块头的散列值h
blkprev

[0090]
s35.资产承销方cmb4根据所述上一区块的区块头的散列值h
blkprev
、所述 交易树的树根的散列值h
txtrie
、所述收据树的树根的散列值h
recpttrie
、所述状态 树statetrie的树根的散列值h
statetrie
和区块生成时间t3组装得到未签名未背书 的区块blk';
[0091]
s36.根据资产承销方cmb4所持的私钥bsk4,所述资产承销方cmb4为所 述未签名未背书的区块blk'生成数字签名sig
blk'
,并将所述未签名未背书的区块 blk'与数字签名
sig
blk'
组装得到未背书的区块blk”;
[0092]
s37.资产承销方cmb4通过sha-256算法计算上一区块的区块头散列值 h
blkprev
,并根据所述散列值h
blkprev
通过选择背书资产承销方的方法计算得到所 述区块blk”对应的负责背书的资产承销方cmb
p
和cmb
q
,其中p和q是自然 数,p≠q≠4,1≤p≤7,1≤q≤7,其中选择背书资产承销方的具体步骤 如下:
[0093]
s371.输入上一区块的区块头散列值h
blkprev
和当前资产承销方的集合 {cmb1,

,cmb7};
[0094]
s372.使用hmac-drbg伪随机数生成算法,将上一区块的区块头散列值 h
blkprev
作为随机数种子,生成数r=123,并计算index=r%nb+1=123%7+1=5,当 index与s继续执行所述伪随机数生成算法,生成新的数r及index,否则得到 第一个负责背书的资产承销方下标p=5;
[0095]
s373.继续执行s372步骤的伪随机数生成算法,按照相同的过程,得到 r=456,计算index=2,得到第二个负责背书的资产承销方下标q=2,其中p≠q;
[0096]
s38.资产承销方cmb4将所述区块blk”、交易tx1,

,tx
100
,交易收据 recpt1,

,recpt
100
和每笔交易所涉及的状态的键名与前后值和所述资产承销 方cmb4的关于上一区块的可验状态树statetrie
v
发送至所述区块blk”对应的负 责背书的资产承销方cmb5和cmb2,所述资产承销方cmb5和cmb2验证区 块和区块中的交易与交易收据的有效性,区块验证通过后所述资产承销方 cmb5和cmb2分别出具并回送背书签名sig
endorse1
和sig
endorse2
,其中cmb5和 cmb2验证区块和区块中的交易与交易收据的有效性的具体步骤如下:
[0097]
s381.查询资产承销方cmb4上一区块的区块头,通过sha-256算法计算所 述上一区块的区块头散列值h
blkprev'
,并提取所述上一区块区块头中状态树的树 根的散列值,记为h
statetrieprev

[0098]
s382.根据可验状态树statetrie
v
,通过mpt树算法构成上一区块的状态树 statetrie',通过sha-256算法计算上一区块的状态树的树根散列值h
statetrieprev'
, 并验证h
statetrieprev
是否与h
statetrieprev'
一致,如不一致则区块无效;
[0099]
s383.根据交易tx1,

,tx
100
和交易收据recpt1,

,recpt
100
,通过mpt 树算法分别构成交易树和收据树,并通过sha-256算法计算得到所述交易树的 树根的散列值h
txtrie'
和所述收据树的树根的散列值h
recpttrie'

[0100]
s384.从所述区块blk”提取上一区块的区块头的散列值h
blkprev
、当前区块交 易树的树根的散列值h
txtrie
、收据树的树根的散列值h
txtrie
和状态树的树根的 散列值h
statetrie
,验证h
blkprev
是否与h
blkprev'
一致、h
txtrie
是否与h
txtrie'
一致和 h
recpttrie
是否与h
recpttrie'
一致,如其中任意一组数据不一致则区块无效;
[0101]
s385.根据状态树statetrie',对交易tx1,

,tx
100
执行s23至s26的计算 和检查步骤,得到新的状态树statetrie,通过sha-256算法计算树根散列值 h
statetrie'
,并验证h
statetrie
是否与h
statetrie'
一致,如不一致则区块无效。
[0102]
s39.资产承销方cmb4根据所述区块blk”和背书签名sig
endorse1
与 sig
endorse2
构造得到新的区块blk;
[0103]
s310.资产承销方cmb
s
将交易tx1,

,tx
100
,交易收据recpt1,

,recpt
100
, 每笔交易所涉及的状态的键名与最终值和所述区块blk等新区块的信息发送至 资产发行方cb;
[0104]
s311.资产发行方cb接收新区块blk的信息,验证所述区块blk的有效性, 并更新有效的区块至资产承销方cmb4的区块链chain4中,其中cb验证所述 区块blk的有效性的具体步骤如下:
[0105]
s3111.查询资产承销方cmb4上一区块的区块头,通过sha-256算法计算 所述上一区块的区块头的散列值h
blkprev

[0106]
s3112.根据交易tx1,

,tx
100
和交易收据recpt1,

,recpt
100
通过mpt 树算法分别构成交易树和收据树,并通过sha-256算法计算得到所述交易树的 树根的散列值h
txtrie'
和所述收据树的树根的散列值h
recpttrie'

[0107]
s3113.从所述区块blk提取上一区块的区块头的散列值h
blkprev
、当前区块 交易树的树根的散列值h
txtrie
、收据树的树根的散列值h
txtrie
、状态树的树根的 散列值h
statetrie
、数字签名sig
blk
、背书签名sig
endorse1
和sig
endorse2
,验证h
blkprev
是否与h
blkprev'
一致、h
txtrie
是否与h
txtrie'
一致、h
recpttrie
是否与h
recpttrie'
一致和 通过数字签名sig
blk
还原的公钥是否与bpk
s
一致,如其中一组数据不一致则区 块无效;
[0108]
s3114.输入上一区块的区块头散列值h
blkprev
和当前资产承销方的集合{cmb1,

,cmb7},执行步骤s37中选择背书资产承销方的子步骤,获取被 选择的背书资产承销方的公钥bpk2和bpk5,通过背书签名sig
endorse1
和sig
endorse2
分别还原公钥bpk
2'
和bpk
5'
,并验证bpk2是否和bpk
2'
一致,bpk5是否和bpk
5'
一 致,如其中一组数据不一致则背书签名无效,否则验证背书签名sig
endorse1
和 sig
endorse2
,如任意一个背书签名验证错误,则背书签名无效,继续执行;否则 确认区块blk有效,停止检查;
[0109]
s3115.当背书签名无效时,执行步骤说s385检查当前区块的交易和交易收 据是否合法,如果合法则根据所述每笔交易所修改的状态的键名与值得到新的 状态树statetrie,通过sha-256算法计算其树根散列值h
statetrie'
,并验证h
statetrie
是否与h
statetrie'
一致,如不一致则区块无效。
[0110]
实施例2
[0111]
实施例2与实施例1其他部分类似,不同之处在于区块链系统采用了 hash_drbg、sha-3、dsa、sm4、sm2等不同的伪随机数生成算法、哈希算 法和数字签名算法。
[0112]
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例 是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的 范围内可以对上述实施例进行变化、修改、替换和变型。
[0113]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并 非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述 说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有 的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替 换和改进等,均应包含在本发明权利要求的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1