基于区块链的交易验证方法及装置、电子设备与流程

    专利查询2022-07-08  147



    1.本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于区块链的交易验证方法及装置、电子设备。


    背景技术:

    2.现有的区块链中,记账节点在将交易打包进区块之前,需要对交易进行合法性的验证,只有在交易合法的情况下才可以将其打包进区块。
    3.合法性的验证主要是基于区块链账本中的状态数据来进行的。因此,参与交易共识的每个节点设备在本地都需要维护区块链账本中全量的状态数据。
    4.然而,随着业务的增加,区块链账本中会不断增加状态数据,而状态数据的增加不仅会持续占用存储空间,而且会降低参与共识的节点设备的验证效率。


    技术实现要素:

    5.本说明书实施例提供的一种提高信息安全的方法及装置、电子设备。
    6.根据本说明书实施例的第一方面,提供一种基于区块链的交易验证方法,所述方法应用于区块链中参与共识的节点设备,所述区块链的区块链账本存储在所述区块链中不参与共识的节点设备处;所述方法包括:
    7.接收客户端发送的交易;其中,所述交易包括所述客户端从所述区块链中不参与共识的节点设备处获取的,用于证明与所述交易相关的目标账户和所述目标账户的状态数据包含在所述区块链的区块链账本中的密码学证明;
    8.针对所述交易进行合法性校验;其中,所述合法性校验包括基于密码学算法对所述密码学证明进行校验;
    9.如果所述合法性校验通过,执行所述交易,并在与所述区块链中参与共识的其它节点对所述交易的执行结果达成共识之后,将所述交易以及所述交易的执行结果发送至所述区块链中不参与共识的节点设备处,在所述区块链账本中进行存储。
    10.根据本说明书实施例的第二方面,提供一种基于区块链的交易验证装置,所述装置应用于区块链中参与共识的节点设备,所述区块链的区块链账本存储在所述区块链中不参与共识的节点设备处;所述装置包括:
    11.接收单元,接收客户端发送的交易;其中,所述交易包括所述客户端从所述区块链中不参与共识的节点设备处获取的,用于证明与所述交易相关的目标账户和所述目标账户的状态数据包含在所述区块链的区块链账本中的密码学证明;
    12.校验单元,针对所述交易进行合法性校验;其中,所述合法性校验包括基于密码学算法对所述密码学证明进行校验;
    13.处理单元,如果所述合法性校验通过,执行所述交易,并在与所述区块链中参与共识的其它节点对所述交易的执行结果达成共识之后,将所述交易以及所述交易的执行结果发送至所述区块链中不参与共识的节点设备处,在所述区块链账本中进行存储。
    14.根据本说明书实施例的第三方面,提供一种电子设备,包括:
    15.处理器;
    16.用于存储处理器可执行指令的存储器;
    17.其中,所述处理器被配置为上述任一项基于区块链的交易验证方法。
    18.本说明书实施例,提供了一种基于区块链的交易验证方案,通过与区块链账本对应的密码学承诺和密码学证明来验证交易的合法性。由于密码学证明不是基于账户的账户状态,因此区块链中参与共识的节点设备无需存储区块链账本中全量账户的账户状态,从而解决由于账户状态数据过多导致参与共识的节点设备的验证效率低的问题。
    附图说明
    19.图1是一示例性实施例提供的区块链系统的架构示意图;
    20.图2是一示例性实施例提供的多方交互的示意图;
    21.图3是一示例性实施例提供的基于区块链的交易验证方法流程图;
    22.图4是一示例性实施例提供的一种电子设备的结构示意图;
    23.图5是一示例性实施例提供的一种基于区块链的交易验证装置的框图。
    具体实施方式
    24.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实现方式并不代表与本说明书一个或多个实施例相一致的所有实现方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
    25.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
    26.区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
    27.一般的,区块链一般可以被划分为三种类型:公有链(public blockchain),私有链(private blockchain)和联盟链(consortium blockchain)。此外,还可以有上述多种类型的结合,比如私有链 联盟链、联盟链 公有链等。
    28.其中,去中心化程度最高的是公有链。加入公有链的参与者(也可称为区块链中的节点)可以读取链上的数据记录、参与交易、以及竞争新区块的记账权等。而且,各节点可自由加入或者退出网络,并进行相关操作。
    29.私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,其对节点具有严格限制且节点数量较
    少。这种类型的区块链更适合于特定机构内部使用。
    30.联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
    31.基于区块链的基本特性,区块链通常是由若干个区块构成。在这些区块中分别记录有与该区块的创建时刻对应的时间戳,所有的区块严格按照区块中记录的时间戳,构成一条在时间上有序的数据链条。
    32.现有的区块链在对交易进行共识时需要依赖由区块链中所有账户的状态(state)数据(以下称为账户状态)构成的merkle树(称为状态树或者状态数据库)。
    33.每个参与共识的节点设备(以下称为共识节点)在共识时都会进行交易的模拟执行,这里的模拟执行是指共识节点执行交易但不将执行后的账户状态记录到状态树。也就是说,模拟执行不影响世界状态。
    34.交易模拟执行过程中会产生读写集;其中读集中包含共识节点从本地读取到的交易执行所需的最新的账户状态,写集包含模拟执行过程中更新的账户状态。
    35.共识节点之间通过读集可以验证交易所需的账户状态是否一致,写集用于校验执行后的账户状态是否一致。当读写集都一致时,记账节点才可以将交易打包进区块,并基于写集更新世界状态。
    36.基于上述验证过程可知,现有基于状态数据的交易验证方式中,每个共识节点本地都需要维护区块链账本中全量的状态数据,而这需要占用大量的存储空间。尤其是针对多版本状态(历史状态数据 最新状态数据),即使存量的区块链账户没有变化,存储空间也将持续上升(大量历史状态数据造成状态数据膨胀)。而不断增加的状态数据不仅会持续占用存储空间,而且会降低共识节点的验证效率。
    37.基于上述问题,本说明书旨在提供一种无状态(stateless)的交易验证方案。不再基于状态数据来验证交易的合法性,而是基于密码学承诺和密码学证明来验证交易的合法性。由于无需状态数据参与验证,因此参与共识的节点设备本地就不需要存储区块链账本中全量的状态数据;从而可以轻量化参与共识的节点设备以释放存储空间,提高参与共识的节点设备的验证效率。
    38.请参见图1,图1是一示例性实施例提供的区块链系统的架构示意图。该区块链系统可以包括由至少一个不参与共识的节点设备(图1中示出的非共识节点),若干参与共识的节点设备(图1中示出的4个共识节点)构成的区块链,以及与区块链对应的客户端。
    39.其中,所述非共识节点中存储有区块链的区块链账本中全量的状态数据(以下将全量的状态数据简称为状态数据库)。所述状态数据库用于记录区块链中所有账户以及账户最新的状态数据。所述非共识节点可以为客户端提供交易所需的最新的状态数据和密码学证明。
    40.客户端在发布交易之前需要先从非共识节点处获取交易所需的最新的状态数据和密码学证明;进而将交易、交易涉及的最新的状态数据和密码学证明发送给区块链的共识节点。
    41.如果非共识节点存在多个,那么可以根据预设的策略(例如负载均衡策略、时延最低策略),为客户端路由最优的非共识节点,以使客户端从最优的非共识节点获取数据。
    42.其中,接收并响应客户端发送的交易的共识节点可以基于本地的密码学承诺对客户端提供的密码学证明进行验证,以确定最新的状态数据是否为真。
    43.而其它的共识节点用于对该响应交易的共识节点同步的交易以及交易结果进行共识。
    44.本说明书中,所述共识节点中不再存储区块链的区块链账本,即共识节点本地不再存储区块链的状态数据库,而是由专门的非共识节点维护区块链的区块链账本中全量的状态数据库。通过轻量化共识节点以提高验证效率。
    45.本说明书中的密码学算法可以包括向量承诺(vector commitment)算法、多项式算法等。
    46.在密码学算法为vector commitment算法时,所述密码学承诺包括基于vector commitment算法针对全量的区块链账本中记录的所有区块链账户以及与所述所有区块链账户对应的账户状态进行密码学计算得到的承诺值;相应的,所述密码学证明包括基于vector commitment算法针对全量的区块链账本中记录的所述目标账户以及所述目标账户对应的状态数据进行密码学计算得到的证明值。
    47.以下结合图2-图4进一步介绍本说明书提供的无状态(stateless)的交易验证方案,该方案适用于图1的区块链系统。
    48.请参见图2所述的多方交互的示意图,所述多方对应了图1中的客户端、非共识节点、共识节点。所述示意图中的步骤至少包括:
    49.步骤310:客户端将待发布的交易发送给区块链的非共识节点。
    50.步骤320:所述非共识节点接收客户端发送的交易。
    51.步骤322:所述非共识节点从本地存储的区块链账本中查询与所述交易相关的目标账户的账户状态。
    52.在本说明书中,所区块链账本记录了区块链中所有账户以及账户最新的账户状态。
    53.在一实施例中,所述账户状态可以是指用户账户的balance字段的值。
    54.步骤324:所述非共识节点获取本地存储的密码学承诺。
    55.其中,所述密码学承诺为区块链的共识节点同步的最新的密码学承诺(后续步骤中详细介绍);密码学承诺是对所述区块链的区块链账本中记录的所有区块链账户以及与所述区块链账户对应的账户状态的真实性的承诺。
    56.步骤326:所述非共识节点基于密码学算法对所查询到的账户状态和密码学承诺进行计算,得到密码学证明。
    57.基于密码学算法对所查询到的目标账户的账户状态和密码学承诺进行计算,得到用于证明与所述交易相关的目标账户和所述目标账户的账户状态包含在所述区块链的区块链账本中的密码学证明。
    58.步骤328:所述非共识节点将所述交易相关的目标账户的账户状态、密码学证明返回给所述客户端。
    59.步骤330:所述客户端接收所述非共识节点返回的目标账户的账户状态、密码学证明。
    60.步骤332:所述客户端将所述交易、所述交易相关的目标账户的账户状态、密码学
    证明以区块链交易的形式发送给区块链。
    61.也就是说,本说明书中客户端在将交易发送给区块链之前,需要先从区块链的非共识节点获取与交易相关的目标账户的账户状态进和密码学证明。
    62.步骤340:所述共识节点接收客户端发送的交易;其中,所述交易包括所述客户端从所述区块链中非共识节点(即不参与共识的节点设备)处获取的,用于证明与所述交易相关的目标账户和所述目标账户的账户状态包含在所述区块链的区块链账本中的密码学证明。
    63.步骤342:所述共识节点针对所述交易进行合法性校验。
    64.其中,所述合法性校验可以包括基于密码学算法对所述密码学证明进行校验;也可以包括对所述交易的数据格式进行合法性校验,还可以对所述交易相关的账户状态进行合法性校验等等。
    65.在一示例性的实施例中,所述共识节点维护有与所述区块链账本对应的密码学承诺;其中,所述密码学承诺是对所述区块链的区块链账本中记录的所有区块链账户以及与所述所有区块链账户对应的账户状态的真实性的承诺。
    66.相应地,所述基于密码学算法对所述密码学证明进行校验,包括:
    67.基于密码学算法对所述密码学证明进行计算得到密码学承诺;
    68.确定计算出的密码学承诺,是否与所述参与共识的节点设备本地维护的与所述区块链账本对应的密码学承诺相同;
    69.如果相同,确定针对所述交易的合法性校验通过。
    70.该示例中,基于密码学算法对客户端发送的密码学证明进行计算,确定计算得到的密码学承诺是否与共识节点维护的密码学承诺一致。
    71.这里共识节点、非共识节点采用的是相同的密码学算法。
    72.由于密码学证明是基于密码学算法对密码学承诺和目标账户的账户状态计算得到的;即密码学算法(密码学承诺 账户状态)

    密码学证明。
    73.而共识节点在获取到客户端发送的目标账户的账户状态和密码学证明的情况下,采用相同的密码学算法,就可以反推出非共识节点生成该密码学证明时的密码学承诺;即密码学承诺算法(密码学证明 账户状态)

    密码学承诺。
    74.通过比较本地存储的密码学承诺与计算结果(该反推出的密码学承诺),可以确定客户端发送的目标账户的账户状态是否为真。
    75.由于共识节点本地存储的密码学承诺与非共识节点本地存储的密码学承诺是完全相同,如果密码学承诺与计算结果一致,则说明密码学证明和账户状态是可信的。如果不一致,则说明客户端发送的密码学证明和目标账户的账户状态是被篡改过的。
    76.应用该示例可以确定客户端发送的密码学证明和目标账户的账户状态是否被篡改过,只有未被篡改时,才可以确定针对所述交易的合法性校验通过。
    77.在一示例性的实施例中,所述交易还包括所述客户端从所述区块链中不参与共识的节点设备处获取到的所述目标账户的最新账户状态;
    78.所述合法性校验还包括:
    79.校验所述目标账户对应的最新账户状态是否与所述区块链中非共识节点(即不参与共识的节点设备)维护的所述目标账户对应的最新账户状态是否相同;
    80.如果相同,确定针对所述交易的合法性校验通过。
    81.该示例中,共识节点可以与非共识节点进行交互,以确定对客户端发送的目标账户对应的最新账户状态,是否与非共识节点维护的目标账户对应的最新账户状态相同。
    82.由于客户端发送的最新账户状态是从非共识节点获取的,因此在正常情况下,目标账户的最新账户状态应该是一致相同的;如果不一致,则说明客户端发送的最新账户状态是被篡改过的。
    83.应用该示例可以确定客户端发送的目标账户的最新账户状态是否被篡改过,只有未被篡改时,才可以确定针对所述交易的合法性校验通过。
    84.在一示例性的实施例中,所述合法性校验还包括:
    85.将所述交易中的所述目标账户的最新账户状态同步至所述区块链中非共识节点处,以由所述非共识节点基于密码学算法针对所述目标账户以及所述目标账户的最新账户状态进行计算得到密码学证明;
    86.获取所述非共识节点计算出的所述密码学证明,并确定该密码学证明与所述交易中的密码学证明是否相同;
    87.如果相同,确定针对所述交易的合法性校验通过。
    88.该示例中,基于密码学算法对客户端发送的目标账户的最新账户状态进行计算,确定计算得到的密码学证明是否与客户端发送的密码学证明一致。
    89.由于密码学证明是基于密码学算法对密码学承诺和目标账户的最新账户状态计算得到的;即密码学算法(密码学承诺 账户状态)

    密码学证明。
    90.而共识节点在获取到客户端发送的目标账户的最新账户状态和密码学证明的情况下,由非共识节点再次基于密码学算法对非共识节点本地维护的密码学承诺和客户端发送的目标账户的最新账户状态计算得到计算结果即密码学证明。
    91.通过比较客户端发送的密码学证明与计算结果(非共识节点计算得到密码学承诺),可以确定客户端发送的最新账户状态和密码学证明是否为真。
    92.如果客户端发送的密码学证明与计算结果一致,则说明密码学证明和最新账户状态是可信的。如果不一致,则说明客户端发送的密码学证明和最新账户状态是被篡改过的。
    93.应用该示例可以确定客户端发送的密码学证明和最新账户状态是否被篡改过,只有未被篡改时,才可以确定针对所述交易的合法性校验通过。
    94.步骤344:所述共识节点在合法性校验通过的情况下,执行所述交易。
    95.由于合法性校验通过了,因此可以执行该交易,并将本轮记账的交易打包为最新区块;并将该最新区块追加到原有的区块链末尾,从而完成区块链的记账过程。
    96.在一示例性的实施例中,所述执行所述交易,可以包括:
    97.基于所述目标账户的最新账户状态计算所述目标账户的更新后的账户状态;以及,
    98.基于所述更新后的账户状态和本地维护的与所述区块链账本对应的密码学承诺计算更新后的密码学承诺;
    99.相应的,所述交易的执行结果包括所述更新后的账户状态和所述更新后的密码学承诺。
    100.该示例中,由于共识节点执行了客户端发送的交易,导致交易涉及的目标账户的
    账户状态发生了改变,以及由于账户状态改变,导致区块链账本也发生了改变;因此对区块链的区块链账本中记录的所有区块链账户以及与所述所有区块链账户对应的账户状态的真实性承诺的密码学承诺也需要更新。
    101.具体地,基于密码学算法,对所述更新的账户状态和本地维护的密码学承诺进行计算,得到更新的密码学承诺;即密码学算法(密码学承诺(旧) 最新的账户状态)=最新的密码学承诺。
    102.步骤346:所述共识节点在与所述区块链中其它共识节点对所述交易的执行结果达成共识之后,将所述交易以及所述交易的执行结果发送至所述区块链中非共识节点处,以在所述区块链账本中进行存储。
    103.由于共识节点并不存储账户状态,而是由非共识节点进行存储,因此共识节点需要将最新的账户状态同步给非共识节点。即所述共识节点将所述更新的密码学承诺和所述更新的账户状态同步给所述非共识节点。
    104.步骤352:所述非共识节点接收共识节点同步的交易的执行结果。其中,所述执行结果包括所述更新后的账户状态和所述更新后的密码学承诺。
    105.步骤354:所述非共识节点在与其它共识节点对所述交易的执行结果达成共识之后,基于所述更新后的密码学承诺对维护的所述密码学承诺进行更新。
    106.非共识节点将本地存储的密码学承诺修改为所述更新的向量承诺;将本地区块链账本中目标账户的账户状态修改为所述更新的账户状态。
    107.这样,非共识节点才可以更新本地维护的区块链账本中目标账户最新的账户状态,以及更新最新的密码学承诺。
    108.通过上述步骤,在确定所述交易合法后可以执行交易,并在交易执行后更新非共识节点存储的密码学承诺和账户状态,以为下一轮验证做准备。
    109.在该示例中,不再基于账户状态数据来验证交易的合法性,而是通过与区块链账本对应的密码学承诺和密码学证明来验证交易的合法性。由于密码学证明不是基于账户的账户状态,因此区块链中参与共识的节点设备无需存储区块链账本中全量账户的账户状态,从而解决由于账户状态数据过多导致参与共识的节点设备的验证效率低的问题。
    110.以下结合图3介绍本说明书以参与共识的节点设备为主体的方法实施例,所述区块链的区块链账本存储在所述区块链中不参与共识的节点设备处,该方法包括:
    111.步骤410:接收客户端发送的交易;其中,所述交易包括所述客户端从所述区块链中不参与共识的节点设备处获取的,用于证明与所述交易相关的目标账户和所述目标账户的状态数据包含在所述区块链的区块链账本中的密码学证明。
    112.步骤420:针对所述交易进行合法性校验;其中,所述合法性校验包括基于密码学算法对所述密码学证明进行校验。
    113.步骤430:如果所述合法性校验通过,执行所述交易,并在与所述区块链中参与共识的其它节点对所述交易的执行结果达成共识之后,将所述交易以及所述交易的执行结果发送至所述区块链中不参与共识的节点设备处,在所述区块链账本中进行存储。
    114.该实施例可以对应于前述图2,具体步骤细节也可以参考前述图2的实施例。
    115.在一示例性的实施例中,所述参与共识的节点设备维护了与所述区块链账本对应的密码学承诺;其中,所述密码学承诺是对所述区块链的区块链账本中记录的所有区块链
    账户以及与所述所有区块链账户对应的账户状态的真实性的承诺;
    116.所述基于密码学算法对所述密码学证明进行校验,包括:
    117.基于密码学算法对所述密码学证明进行计算得到密码学承诺;
    118.确定计算出的密码学承诺,是否与所述参与共识的节点设备本地维护的与所述区块链账本对应的密码学承诺相同;
    119.如果相同,确定针对所述交易的合法性校验通过。
    120.应用该示例可以确定客户端发送的密码学证明和目标账户的账户状态是否被篡改过,只有未被篡改时,才可以确定针对所述交易的合法性校验通过。
    121.在一示例性的实施例中,所述交易还包括所述客户端从所述区块链中不参与共识的节点设备处获取到的所述目标账户的最新账户状态;
    122.所述合法性校验还包括:
    123.校验所述目标账户对应的最新账户状态是否与所述区块链中不参与共识的其它节点设备维护的所述目标账户对应的最新账户状态是否相同;
    124.如果相同,确定针对所述交易的合法性校验通过。
    125.应用该示例可以确定客户端发送的目标账户的最新账户状态是否被篡改过,只有未被篡改时,才可以确定针对所述交易的合法性校验通过。
    126.在一示例性的实施例中,所述合法性校验还包括:
    127.将所述交易中的所述目标账户的最新账户状态数据同步至所述区块链中不参与共识的其它节点设备处,以由所述其它节点设备基于密码学算法针对所述目标账户以及所述目标账户的最新账户状态数据进行计算得到密码学证明;
    128.获取所述其它节点设备计算出的所述密码学证明,并确定该密码学证明与所述交易中的密码学证明是否相同;
    129.如果相同,确定针对所述交易的合法性校验通过。
    130.应用该示例可以确定客户端发送的密码学证明和最新账户状态是否被篡改过,只有未被篡改时,才可以确定针对所述交易的合法性校验通过。
    131.在一示例性的实施例中,前述执行所述交易,包括:
    132.基于所述目标账户的最新账户状态计算所述目标账户的更新后的账户状态;以及,
    133.基于所述更新后的账户状态和本地维护的与所述区块链账本对应的密码学承诺计算更新后的密码学承诺;
    134.相应的,所述交易的执行结果包括所述更新后的账户状态和所述更新后的密码学承诺。
    135.该示例中,由于共识节点执行了客户端发送的交易,导致交易涉及的目标账户的账户状态发生了改变,以及由于账户状态改变,导致区块链账本也发生了改变;因此对区块链的区块链账本中记录的所有区块链账户以及与所述所有区块链账户对应的账户状态的真实性承诺的密码学承诺也需要更新。
    136.在一示例性的实施例中,所述方法还包括:
    137.在与所述区块链中参与共识的其它节点对所述交易的执行结果达成共识之后,基于所述更新后的密码学承诺对维护的所述密码学承诺进行更新。
    138.该实施例中,需要在参与共识的其它节点对所述交易的执行结果达成共识之后,非共识节点才可以基于所述更新后的密码学承诺对维护的所述密码学承诺进行更新。
    139.在一示例性的实施例中,所述密码学算法包括vector commitment算法;
    140.所述密码学承诺包括基于vector commitment算法针对全量的区块链账本中记录的所有区块链账户以及与所述所有区块链账户对应的账户状态进行密码学计算得到的承诺值;相应的,所述密码学证明包括基于vector commitment算法针对全量的区块链账本中记录的所述目标账户以及所述目标账户对应的状态数据进行密码学计算得到的证明值。
    141.在一示例性的实施例中,所述区块链包括联盟链。
    142.本说明书实施例,提供了一种基于区块链的交易验证方案,实现一个无状态的联盟链架构设计。通过与区块链账本对应的密码学承诺和密码学证明来验证交易的合法性。由于密码学证明不是基于账户的账户状态,因此区块链中参与共识的节点设备无需存储区块链账本中全量账户的账户状态,从而解决由于账户状态数据过多导致参与共识的节点设备的验证效率低的问题。
    143.与上述方法实施例相对应,本说明书还提供了一种基于区块链的交易验证装置的实施例。
    144.本说明书的基于区块链的交易验证装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
    145.从硬件层面而言,如图4所示,为本说明书的基于区块链的交易验证装置所在电子设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
    146.图5是本说明书一示例性实施例示出的一种基于区块链的交易验证装置的框图。所述基于区块链的交易验证装置可以应用在前述图4所示的电子设备中,并与前述图3所示方法实施例对应,所述装置包括:
    147.所述装置应用于区块链中参与共识的节点设备,所述区块链的区块链账本存储在所述区块链中不参与共识的节点设备处;所述装置包括:
    148.接收单元510,接收客户端发送的交易;其中,所述交易包括所述客户端从所述区块链中不参与共识的节点设备处获取的,用于证明与所述交易相关的目标账户和所述目标账户的状态数据包含在所述区块链的区块链账本中的密码学证明;
    149.校验单元520,针对所述交易进行合法性校验;其中,所述合法性校验包括基于密码学算法对所述密码学证明进行校验;
    150.处理单元530,如果所述合法性校验通过,执行所述交易,并在与所述区块链中参与共识的其它节点对所述交易的执行结果达成共识之后,将所述交易以及所述交易的执行结果发送至所述区块链中不参与共识的节点设备处,在所述区块链账本中进行存储。
    151.在一示例性的实施例中,所述共识节点维护了与所述区块链账本对应的密码学承诺;其中,所述密码学承诺是对所述区块链的区块链账本中记录的所有区块链账户以及与所述所有区块链账户对应的账户状态的真实性的承诺;
    152.所述基于密码学算法对所述密码学证明进行校验,包括:
    153.基于密码学算法对所述密码学证明进行计算得到密码学承诺;
    154.确定计算出的密码学承诺,是否与所述共识节点本地维护的与所述区块链账本对应的密码学承诺相同;
    155.如果相同,确定针对所述交易的合法性校验通过。
    156.在一示例性的实施例中,所述交易还包括所述客户端从所述区块链中不参与共识的节点设备处获取到的所述目标账户的最新账户状态;
    157.所述合法性校验还包括:
    158.校验所述目标账户对应的最新账户状态是否与所述区块链中不参与共识的其它节点设备维护的所述目标账户对应的最新账户状态是否相同;
    159.如果相同,确定针对所述交易的合法性校验通过。
    160.在一示例性的实施例中,所述合法性校验还包括:
    161.将所述交易中的所述目标账户的最新账户状态同步至所述区块链中不参与共识的其它节点设备处,以由所述其它节点设备基于密码学算法针对所述目标账户以及所述目标账户的最新账户状态进行计算得到密码学证明;
    162.获取所述其它节点设备计算出的所述密码学证明,并确定该密码学证明与所述交易中的密码学证明是否相同;
    163.如果相同,确定针对所述交易的合法性校验通过。
    164.在一示例性的实施例中,所述处理单元530中的执行所述交易,包括:
    165.基于所述目标账户的最新账户状态计算所述目标账户的更新后的账户状态;以及,
    166.基于所述更新后的账户状态和本地维护的与所述区块链账本对应的密码学承诺计算更新后的密码学承诺;
    167.相应的,所述交易的执行结果包括所述更新后的账户状态和所述更新后的密码学承诺。
    168.在一示例性的实施例中,所述装置还包括:
    169.更新单元,在与所述区块链中参与共识的其它节点对所述交易的执行结果达成共识之后,基于所述更新后的密码学承诺对维护的所述密码学承诺进行更新。
    170.在一示例性的实施例中,所述密码学算法包括vector commitment算法;
    171.所述密码学承诺包括基于vector commitment算法针对全量的区块链账本中记录的所有区块链账户以及与所述所有区块链账户对应的账户状态进行密码学计算得到的承诺值;相应的,所述密码学证明包括基于vector commitment算法针对全量的区块链账本中记录的所述目标账户以及所述目标账户对应的状态数据进行密码学计算得到的证明值。
    172.在一示例性的实施例中,所述区块链包括联盟链。
    173.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
    174.在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
    175.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
    176.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
    177.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
    ……”
    限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
    178.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实现方式中,多任务处理和并行处理也是可以的或者可能是有利的。
    179.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
    180.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
    ……
    时”或“当
    ……
    时”或“响应于确定”。
    181.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
    转载请注明原文地址:https://tc.8miu.com/read-2408.html

    最新回复(0)