CN112734410B - 一种在Fabric区块链中预执行链码的方法和装置 - Google Patents

一种在Fabric区块链中预执行链码的方法和装置 Download PDF

Info

Publication number
CN112734410B
CN112734410B CN202110339805.9A CN202110339805A CN112734410B CN 112734410 B CN112734410 B CN 112734410B CN 202110339805 A CN202110339805 A CN 202110339805A CN 112734410 B CN112734410 B CN 112734410B
Authority
CN
China
Prior art keywords
chain code
transaction
chain
proposal
transaction proposal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110339805.9A
Other languages
English (en)
Other versions
CN112734410A (zh
Inventor
余逸荣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Ant Blockchain Technology Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd, Ant Blockchain Technology Shanghai Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202110339805.9A priority Critical patent/CN112734410B/zh
Publication of CN112734410A publication Critical patent/CN112734410A/zh
Application granted granted Critical
Publication of CN112734410B publication Critical patent/CN112734410B/zh
Priority to PCT/CN2022/081722 priority patent/WO2022206433A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3823Payment protocols; Details thereof insuring higher security of transaction combining multiple encryption tools for a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Technology Law (AREA)
  • Development Economics (AREA)
  • Computer Security & Cryptography (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本说明书实施例提供了一种在Fabric区块链中预执行链码的方法和装置,所述Fabric区块链中包括客户端节点和背书节点,所述方法由所述背书节点执行,包括:从客户端节点接收第一交易的交易提案,所述交易提案中包括对第一链码的调用,所述第一链码中包括对第二链码的调用,所述第二链码中包括对预定系统链码的调用;在开始预执行所述第一交易中的第二链码之后,通过预执行所述预定系统链码,获取所述第一交易的交易提案;从所述交易提案中获取所述第一链码的名称;基于所述第一链码的名称进行相应的处理。

Description

一种在Fabric区块链中预执行链码的方法和装置
技术领域
本说明书实施例涉及区块链技术领域,更具体地,涉及一种在Fabric区块链中调用链码的方法和装置、以及一种在Fabric区块链中预执行链码的方法和装置。
背景技术
Hyperledger Fabric区块链(下文简称为Fabric区块链)是一种面向企业的联盟链。Fabric区块链中包括以下多种类型的节点:客户端节点、对等(Peer)节点、排序(orderer)节点等等。所述对等节点中又包括背书(Endorsor)节点、管理(Anchor)节点、提交(Committer)节点等。Fabric区块链中包括多个通道(channel),每个通道具有自身封闭的账本数据和链码(chaincode),所述链码即为Fabric区块链中的智能合约。对等节点可选择加入哪些通道,其在经过通道中已有的对等节点的身份验证之后可加入该通道。客户端节点可向Fabirc区块链中的某个通道发起交易提案,从而,客户端节点向该通道中的至少一个背书节点发送交易提案。通道中的背书节点具有交易提案系统接口,从而背书节点可通过调用该系统接口对从客户端节点接收的交易提案进行预执行并进行数字签名,并在预执行之后将预执行结果和数字签名返回给所述客户端节点。所述客户端节点在从各个背书节点接收到交易预执行结果和签名之后,将其发送给排序节点。排序节点用于对交易进行排序、并将经排序的交易按照固定的时间间隔打包成区块发送给管理节点。管理节点收到区块之后将区块广播给每个提交节点。提交节点收到区块之后验证区块中每个交易的执行状态,在区块的每个交易中标记其执行状态,然后将区块加入本节点的账本数据中(即,提交区块)。其中,每个对等节点都是提交节点,即,每个对等节点本地都包括通道的账本数据。
Fabric区块链中提供invokechaincode接口使得链码间可以相互调用,当第三方服务链码和客户链码部署在同一个通道时,客户链码通过链码间调用,运行第三方服务链码逻辑来影响和修改第三方服务链码的状态数据库,或者运行第三方服务链码逻辑来存储账本数据,从而使用第三方服务。作为服务提供方,第三方服务链码有必要对调用其的链码进行身份认证,当前Fabric区块链提供获取发起交易提案的用户账号身份功能,可以验证交易发起者的账号信息。具体是,第三方服务链码链码调用GetCreator接口,获取交易提案人账号信息;第三发服务链码对发起提案账号信息进行使用和处理。
因此,需要一种更有效的在Fabric区块链中调用和预执行链码的方案。
发明内容
本说明书实施例旨在提供一种更有效的在Fabric区块链中调用和预执行链码的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种在Fabric区块链中调用链码的方法,所述Fabric区块链中包括客户端节点和背书节点,所述方法由所述客户端节点执行,包括:
生成第一交易的交易提案,所述交易提案中包括对所述第一链码的调用,所述第一链码中包括对第二链码的调用,所述第二链码中包括对预定系统链码的调用,所述预定系统链码用于在执行时获取正在执行的交易的交易提案;
向所述背书节点发送所述第一交易的交易提案。
在一种实施方式中,所述方法还包括,在生成第一交易的交易提案之后,生成对所述交易提案的签名,其中,向所述背书节点发送所述第一交易的交易提案包括,向所述背书节点发送所述第一交易的交易提案和所述签名。
本说明书另一方面提供一种在Fabric区块链中预执行链码的方法,所述Fabric区块链中包括客户端节点和背书节点,所述方法由所述背书节点执行,包括:
从客户端节点接收第一交易的交易提案,所述交易提案中包括对第一链码的调用,所述第一链码中包括对第二链码的调用,所述第二链码中包括对预定系统链码的调用;
在开始预执行所述第一交易中的第二链码之后,通过预执行所述预定系统链码,获取所述第一交易的交易提案;
从所述交易提案中获取所述第一链码的名称;
基于所述第一链码的名称进行相应的处理。
在一种实施方式中,所述第二链码仅用于被预定链码调用,其中,基于所述第一链码的名称进行相应的处理包括,判断所述第一链码是否为所述预定链码,基于所述判断的结果确定是否结束对所述第二链码的预执行。
在一种实施方式中,基于所述第一链码的名称进行相应的处理包括,将所述第一链码的名称写入所述交易的读集或写集中。
在一种实施方式中,所述第二链码为用于发送跨链消息的链码。
在一种实施方式中,从客户端节点接收第一交易的交易提案包括,从客户端节点接收第一交易的交易提案和所述客户端节点对所述交易提案的签名,所述方法还包括,对所述签名进行验证。
本说明书另一方面提供一种在Fabric区块链中调用链码的装置,所述Fabric区块链中包括客户端节点和背书节点,所述装置部署于所述客户端节点,包括:
生成单元,配置为,生成第一交易的交易提案,所述交易提案中包括对所述第一链码的调用,所述第一链码中包括对第二链码的调用,所述第二链码中包括对预定系统链码的调用,所述预定系统链码用于在执行时获取正在执行的交易的交易提案;
发送单元,配置为,向所述背书节点发送所述第一交易的交易提案。
在一种实施方式中,所述装置还包括,签名单元,配置为,在生成第一交易的交易提案之后,生成对所述交易提案的签名,其中,所述发送单元还配置为,向所述背书节点发送所述第一交易的交易提案和所述签名。
本说明书另一方面提供一种在Fabric区块链中预执行链码的装置,所述Fabric区块链中包括客户端节点和背书节点,所述装置部署于所述背书节点,包括:
接收单元,配置为,从客户端节点接收第一交易的交易提案,所述交易提案中包括对第一链码的调用,所述第一链码中包括对第二链码的调用,所述第二链码中包括对预定系统链码的调用;
第一获取单元,配置为,在开始预执行所述第一交易中的第二链码之后,通过预执行所述预定系统链码,获取所述第一交易的交易提案;
第二获取单元,配置为,从所述交易提案中获取所述第一链码的名称;
处理单元,配置为,基于所述第一链码的名称进行相应的处理。
在一种实施方式中,所述第二链码仅用于被预定链码调用,其中,所述处理单元还配置为,判断所述第一链码是否为所述预定链码,基于所述判断的结果确定是否结束对所述第二链码的预执行。
在一种实施方式中,所述处理单元还配置为,将所述第一链码的名称写入所述交易的读集或写集中。
在一种实施方式中,所述接收单元还配置为,从客户端节点接收第一交易的交易提案和所述客户端节点对所述交易提案的签名,所述装置还包括,验证单元,配置为,对所述签名进行验证。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序或指令,当所述计算机程序或指令在计算机中执行时,令计算机执行上述任一种方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序或指令,所述处理器在执行所述计算机程序或指令时,实现上述任一种方法。
通过根据本说明书实施例的调用和执行链码的方案,通过在被调用链码中写入系统链码接口GetSignedProposal进行系统链码调用,获取原始提案的内容,并从中提取调用的链码的名称,从而识别调用方链码的身份,以便于基于该调用方链码的名称进行后续处理。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示出根据本说明书实施例的Fabric区块链系统的示意图;
图2示出根据本说明书实施例的一种在Fabric区块链中调用链码的方法流程图;
图3示出根据本说明书实施例的一种在Fabric区块链中预执行链码的方法流程图;
图4示出根据本说明书实施例的一种在Fabric区块链中调用链码的装置400;
图5示出根据本说明书实施例的一种在Fabric区块链中预执行链码的装置500。
具体实施方式
下面将结合附图描述本说明书实施例。
图1示出根据本说明书实施例的Fabric区块链系统的示意图。如图1中所示,所述系统中包括用户设备12和Fabric区块链中的通道11。其中,用户设备12可以为Fabric区块链的客户端节点,其可以为Fabric区块链的使用用户的设备,其它区块链的节点设备、或者用于在多个区块链之间中转消息的中继器的设备等等,在此不作限定。通道11中例如包括作为背书节点的节点设备1、节点设备2和节点设备3。如上文所述,用户设备12可通过向通道11中的至少一个背书节点发送交易提案以向通道11的账本数据中存入数据。所述交易提案例如为交易1的交易提案,该交易提案中包括对链码1的调用。链码1例如为跨链转账链码,其中调用链码2,链码2例如为用于发送跨链消息的链码,链码1通过调用链码2,而将跨链转账的消息发送给链外。如上文所述,在现有技术中,在执行链码2时,并不能获知是哪个链码调用了链码2,从而使得不能链码2无法获取链码1的名称,从而影响跨链转账的实施。在本说明书实施例中,通过在链码2中调用系统链码3(即通过系统链码接口GetSignedProposal进行调用),从而可获取交易1的交易提案,并从该交易提案中获取链码1的名称,从而便于对跨链转账的实施。
在用户设备12向节点设备1-3发送了交易1的交易提案之后,各个节点设备预执行交易1,生成预执行交易1的读写集,对该读写集进行签名,并将读写集及其签名发送回用户设备12。图1中示意示出在背书节点2中预执行交易1的过程示意图,在执行交易1的过程中,执行其中调用的链码1,之后执行链码1中的链码2。在执行链码2的过程中,通过执行其中调用的系统链码3,从而获取交易1的交易提案,从该交易提案中获取链码1的名称,并基于该链码1的名称继续执行链码2,例如,将链码1的名称写入预执行交易1的读集或写集中,从而该链码1的名称可在后续存入通道11的账本数据中。链下设备在从通道11中查询到该账本数据之后,可从其中读取到该链码1的名称,并基于该链码1的名称进行相应的处理。
可以理解,上文参考图1的描述仅仅是示意性的,而不是限制性的。下面将详细描述根据本说明书实施例的调用和执行链码的方法。
图2示出根据本说明书实施例的一种在Fabric区块链中调用链码的方法流程图,所述Fabric区块链中包括作为客户端节点的用户设备12和作为背书节点的节点设备2,所述方法由用户设备12执行,包括:
步骤S202,生成交易1的交易提案,所述交易提案中包括对所述链码1的调用,所述链码1中包括对链码2的调用,所述链码2中包括对系统链码3的调用,所述系统链码3用于在执行时获取正在执行的交易的交易提案;
步骤S204,向节点设备2发送交易1的交易提案。
首先,步骤S202,生成交易1的交易提案,所述交易提案中包括对所述链码1的调用,所述链码1中包括对链码2的调用,所述链码2中包括对系统链码3的调用,所述系统链码3用于在执行时获取正在执行的交易的交易提案。
在一种实施方式中,如上文所述,链码1例如为跨链转账链码,链码2例如为用于发送跨链消息的链码,链码1通过调用链码2,而将跨链转账的消息发送给链外。当用户设备12对应的用户1希望对另一个区块链(或该Fabric区块链的另一个通道)中的用户2进行转账时,用户1通过用户设备12生成交易1的交易提案,在该交易提案中调用链码1,对该链码1传入待转出本通道的金额数、接收转账的区块链和区块链账户(即用户2账户)作为传入参数。链码1中调用链码2,以用于向通道11的账本数据库中存入链码1的名称、所述金额、接收转账的区块链标识和区块链账户,以向链外发送该消息。链码2中预先写入了系统链码3的系统调用接口GetSignedProposal,从而链码2在被预执行时可通过该调用接口预执行系统链码3,从而获取由用户1发出的经用户1签名的交易提案,从中获取链码1的名称,并基于链码1的名称生成上述向链外发送的消息。
可以理解,在该实施方式中,在通道11中不限于仅由链码1调用链码2以向链外发送消息。如上文所述,通道11中可能包括多个客户链码,链码2为第三方服务链码,各个客户链码都可以调用链码2,以使用该链码提供的跨链发送消息的服务。
在一种实施方式中,所述链码2不限于为用于跨链业务的链码,其也可以为用于通道11内的业务的链码。例如,链码1为用于进行人民币-美元兑换的链码,链码1的账户状态中记录了各个用户的人民币账户余额,链码2为用于进行美元-人民币兑换的链码,链码2的账户状态中记录了各个用户的美元账户余额。在该实施方式中,当用户1希望进行将其人民币账户中的预定金额兑换成美元时,其生成交易1的交易提案,其中,在该交易提案中调用链码1,以将要兑换的人民币金额作为该链码1的传入参数。同样地,链码2中通过写入系统接口GetSignedProposal以调用系统链码3,从而链码2在预执行时可通过预执行系统链码3获取调用其的链码的名称,并确定该名称是否为链码1的名称,如果是链码1的名称,则可以继续执行,如果不是,则结束执行。也就是说,在该实施方式中,为了保证资金兑换的安全性,链码2只允许由链码1对其进行调用,链码2在执行时需要获取调用其链码的名称以判断该链码是否为链码1,从而,链码2通过调用系统链码3来获取调用其的链码的名称。
用户设备12在生成交易1的交易提案之后,使用其通道11的区块链账户的私钥对该交易提案进行签名。
在步骤S204,向节点设备2发送交易1的交易提案。
用户设备12在生成交易1的交易提案之后,可将该交易提案发送给至少一个背书节点(即背书节点的节点设备),例如,用户设备12向图1中的节点设备2发送交易1的交易提案。具体是,用户设备12在生成交易1的交易提案及其签名之后,将交易提案及其签名发送给至少一个背书节点。
图3示出根据本说明书实施例的一种在Fabric区块链中预执行链码的方法流程图,所述Fabric区块链中包括作为客户端节点的用户设备12和作为背书节点的节点设备2,所述方法由节点设备2执行,包括:
步骤S302,从用户设备12接收交易1的交易提案,所述交易提案中包括对链码1的调用,所述链码1中包括对链码2的调用,所述链码2中包括对系统链码3的调用;
步骤S304,在开始预执行交易1中的链码2之后,通过预执行系统链码3,获取交易1的交易提案;
步骤S306,从所述交易提案中获取所述链码1的名称;
步骤S308,基于链码1的名称进行相应的处理。
如上文所述,在Fabric区块链中,包括对交易的预执行过程和对交易的提交过程,在预执行过程中,由背书节点对交易进行预执行,获取预执行的读写集,但是并不将该读写集存入账本数据中,在提交过程中,基于交易顺序对各个交易的预执行进行验证,在验证通过的情况中,标记该交易有效,并将交易的交易提案、读写集和交易执行状态(即交易是否有效)存入账本数据中。因此,在Fabric区块链中,对交易的预执行过程也即为对交易的执行过程。
首先,在步骤S302,从用户设备12接收交易1的交易提案,所述交易提案中包括对链码1的调用,所述链码1中包括对链码2的调用,所述链码2中包括对系统链码3的调用。
在该步骤中,对交易1的具体描述可参考上文对步骤S202的描述,在此不再赘述。节点设备2除了从用户设备12接收交易1的交易提案之外,还接收用户设备12对该交易提案的签名。
步骤S304,在开始预执行交易1中的链码2之后,通过预执行系统链码3,获取交易1的交易提案。
在预执行所述交易1之前,节点设备2可使用用户设备12对应的公钥对接收的交易提案的签名进行验证,以验证该交易提案是否由用户设备12发出,该交易提案的内容是否经过篡改。
节点设备2作为背书节点在从用户设备12接收到交易1的交易提案并对其签名验证通过之后,执行相对于背书节点预设的对交易提案的处理过程,即预执行交易1,生成预执行交易1的读写集,对读写集进行签名,并将读写集和签名发送回用户设备12。
其中,如图1所示,在预执行交易1的过程中,包括预执行其中调用的链码1。如上文所述,在一种实施方式中,链码1例如为跨链转账链码,对链码1的传入参数包括待转出本通道的金额数、接收转账的区块链和区块链账户。在预执行链码1的过程中,首先读取用户设备12对应的用户1的账户余额,在预执行交易1的读集记录该读取的账户余额,对用户1的账户余额减少所述金额数,并在预执行交易1的写集中记录对用户1的账户余额的更改,然后,通过链码1中对链码2的调用,执行链码2以向链外发送转账消息。链码2例如为用于发送跨链消息的链码。其不限于被链码1调用,而可以被通道11中的多种链码进行调用。在该情况中,在跨链消息中需要标明,链码2是被通道11中的哪个链码进行调用的,不同的链码对应于链外的不同的处理过程,例如,对于链码1,在链外预设了有对应的转账处理,因此,只有确定了调用链码2的链码名称的情况中,才可以进行对该跨链消息的正确的后续的处理。在本说明书实施例中,通过在链码2中预先写入调用系统链码3的调用接口GetSignedProposal,从而对系统链码3进行调用。系统链码3用于在执行时获取正在执行的交易的交易提案。从而,在开始执行链码2之后,执行其中调用的系统链码3,从而获取经签名的交易1的交易提案。
在一种实施方式中,链码1例如为用于进行人民币-美元兑换的链码,链码2为用于进行美元-人民币兑换的链码,链码2只允许由链码1对其进行调用。因此,在预执行交易1的过程中,首先通过预执行链码1,读取用户1的人民币账户余额,在预执行交易1的读集中记录该读取的账户余额,对该账户余额减少需要兑换的金额,并在预执行交易1的写集中记录对应用户1的人民币账户余额的更改,然后通过链码1对链码2的调用,预执行链码2以更改用户1的美元账户。在开始预执行链码2之后,需要确定调用其的链码是否为链码1,以用于确定是否结束对交易1的预执行。从而,通过预执行链码2中调用的系统链码3,获取经签名的交易1的交易提案。
在步骤S306,从所述交易提案中获取所述链码1的名称。
在获取交易1的交易提案之后,由于交易提案中包括链码1的调用,因此,可基于该对链码1的调用获取链码1的名称。
在步骤S308,基于链码1的名称进行相应的处理。
在一种实施方式中,链码1例如为跨链转账链码,链码2例如为用于发送跨链消息的链码。在节点设备2中,在通过预执行系统链码3获取链码1的名称之后,在预执行交易1的读集或写集中记录:链码1的名称、转出本通道的金额数、接收转账的区块链和区块链账户,并在预执行完成之后,对获取的读写集进行签名。用户设备12在从节点设备2接收到经签名的预执行交易1的读写集之后,对交易1的交易内容进行广播,该交易内容中包括交易1的交易提案和预执行读写集。之后,如前文所述,经过通道11中各个节点的操作,最终将交易1的交易提案和预执行读写集作为账本数据存储到各个提交节点的节点设备中。从而,链下设备通过在通道11中查询交易1的内容,可获取交易1的读写集,然后基于其中记录的链码1的名称,进行与链码1相对应的跨链转账处理。
在一种实施方式中,链码1例如为用于进行人民币-美元兑换的链码,链码2为用于进行美元-人民币兑换的链码,链码2只允许由链码1对其进行调用。因此,当在预执行系统链码3并获取链码1的名称之后,确定该名称是否为链码1的名称,如果是,则继续预执行交易1,即更改用户1的美元账户余额,并在读写集中进行记录,如果不是,则在预执行的写集中记录兑换失败,结束对交易1的预执行。
图4示出根据本说明书实施例的一种在Fabric区块链中调用链码的装置400,所述Fabric区块链中包括客户端节点和背书节点,所述装置400部署于所述客户端节点,包括:
生成单元41,配置为,生成第一交易的交易提案,所述交易提案中包括对所述第一链码的调用,所述第一链码中包括对第二链码的调用,所述第二链码中包括对预定系统链码的调用,所述预定系统链码用于在执行时获取正在执行的交易的交易提案;
发送单元42,配置为,向所述背书节点发送所述第一交易的交易提案。
在一种实施方式中,所述装置400还包括,签名单元43,配置为,在生成第一交易的交易提案之后,生成对所述交易提案的签名,其中,所述发送单元42还配置为,向所述背书节点发送所述第一交易的交易提案和所述签名。
图5示出根据本说明书实施例的一种在Fabric区块链中预执行链码的装置500,所述Fabric区块链中包括客户端节点和背书节点,所述装置500部署于所述背书节点,包括:
接收单元51,配置为,从客户端节点接收第一交易的交易提案,所述交易提案中包括对第一链码的调用,所述第一链码中包括对第二链码的调用,所述第二链码中包括对预定系统链码的调用;
第一获取单元52,配置为,在开始预执行所述第一交易中的第二链码之后,通过预执行所述预定系统链码,获取所述第一交易的交易提案;
第二获取单元53,配置为,从所述交易提案中获取所述第一链码的名称;
处理单元54,配置为,基于所述第一链码的名称进行相应的处理。
在一种实施方式中,所述第二链码仅用于被预定链码调用,其中,所述处理单元54还配置为,判断所述第一链码是否为所述预定链码,基于所述判断的结果确定是否结束对所述第二链码的预执行。
在一种实施方式中,所述处理单元54还配置为,将所述第一链码的名称写入所述交易的读集或写集中。
在一种实施方式中,所述接收单元51还配置为,从客户端节点接收第一交易的交易提案和所述客户端节点对所述交易提案的签名,所述装置500还包括,验证单元55,配置为,对所述签名进行验证。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序或指令,当所述计算机程序或指令在计算机中执行时,令计算机执行上述任一种方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序或指令,所述处理器在执行所述计算机程序或指令时,实现上述任一种方法。
通过根据本说明书实施例的调用和执行链码的方案,通过在被调用链码中写入系统链码接口GetSignedProposal进行系统链码调用,获取原始提案的内容,并从中提取起始调用的链码的名称,从而识别调用方链码的身份,以便于基于该调用方链码的名称进行后续处理。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本说明书实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书实施例的具体实施方式而已,并不用于限定本说明书实施例的保护范围,凡在本说明书实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书实施例的保护范围之内。

Claims (16)

1.一种在Fabric区块链中预执行链码的方法,所述Fabric区块链中包括客户端节点和背书节点,所述方法由所述客户端节点执行,包括:
生成第一交易的交易提案,所述交易提案中包括对第一链码的调用,所述第一链码中包括对第二链码的调用,所述第二链码中包括对预定系统链码的调用,所述预定系统链码用于在执行时获取正在执行的第一交易的交易提案;
向所述背书节点发送所述第一交易的交易提案。
2.根据权利要求1所述的方法,还包括,在生成第一交易的交易提案之后,生成对所述交易提案的签名,其中,向所述背书节点发送所述第一交易的交易提案包括,向所述背书节点发送所述第一交易的交易提案和所述签名。
3.一种在Fabric区块链中预执行链码的方法,所述Fabric区块链中包括客户端节点和背书节点,所述方法由所述背书节点执行,包括:
从客户端节点接收第一交易的交易提案,所述交易提案中包括对第一链码的调用,所述第一链码中包括对第二链码的调用,所述第二链码中包括对预定系统链码的调用;
在开始预执行所述第一交易中的第二链码之后,通过预执行所述预定系统链码,获取所述第一交易的交易提案,从所述交易提案中获取所述第一链码的名称,基于所述第一链码的名称在预执行所述第一交易的过程中进行相应的处理。
4.根据权利要求3所述的方法,其中,所述第二链码仅用于被预定链码调用,其中,基于所述第一链码的名称进行相应的处理包括,判断所述第一链码是否为所述预定链码,基于所述判断的结果确定是否结束对所述第二链码的预执行。
5.根据权利要求3所述的方法,其中,基于所述第一链码的名称进行相应的处理包括,将所述第一链码的名称写入所述交易的读集或写集中。
6.根据权利要求5所述的方法,其中,所述第二链码为用于发送跨链消息的链码。
7.根据权利要求3所述的方法,其中,从客户端节点接收第一交易的交易提案包括,从客户端节点接收第一交易的交易提案和所述客户端节点对所述交易提案的签名,所述方法还包括,对所述签名进行验证。
8.一种在Fabric区块链中预执行链码的装置,所述Fabric区块链中包括客户端节点和背书节点,所述装置部署于所述客户端节点,包括:
生成单元,配置为,生成第一交易的交易提案,所述交易提案中包括对第一链码的调用,所述第一链码中包括对第二链码的调用,所述第二链码中包括对预定系统链码的调用,所述预定系统链码用于在执行时获取正在执行的第一交易的交易提案;
发送单元,配置为,向所述背书节点发送所述第一交易的交易提案。
9.根据权利要求8所述的装置,还包括,签名单元,配置为,在生成第一交易的交易提案之后,生成对所述交易提案的签名,其中,所述发送单元还配置为,向所述背书节点发送所述第一交易的交易提案和所述签名。
10.一种在Fabric区块链中预执行链码的装置,所述Fabric区块链中包括客户端节点和背书节点,所述装置部署于所述背书节点,包括:
接收单元,配置为,从客户端节点接收第一交易的交易提案,所述交易提案中包括对第一链码的调用,所述第一链码中包括对第二链码的调用,所述第二链码中包括对预定系统链码的调用;
第一获取单元,配置为,在开始预执行所述第一交易中的第二链码之后,通过预执行所述预定系统链码,获取所述第一交易的交易提案;
第二获取单元,配置为,从所述交易提案中获取所述第一链码的名称;
处理单元,配置为,基于所述第一链码的名称在预执行所述第一交易的过程中进行相应的处理。
11.根据权利要求10所述的装置,其中,所述第二链码仅用于被预定链码调用,其中,所述处理单元还配置为,判断所述第一链码是否为所述预定链码,基于所述判断的结果确定是否结束对所述第二链码的预执行。
12.根据权利要求10所述的装置,其中,所述处理单元还配置为,将所述第一链码的名称写入所述交易的读集或写集中。
13.根据权利要求12所述的装置,其中,所述第二链码为用于发送跨链消息的链码。
14.根据权利要求10所述的装置,其中,所述接收单元还配置为,从客户端节点接收第一交易的交易提案和所述客户端节点对所述交易提案的签名,所述装置还包括,验证单元,配置为,对所述签名进行验证。
15.一种计算机可读存储介质,其上存储有计算机程序或指令,当所述计算机程序或指令在计算机中执行时,令计算机执行权利要求1-7中任一项的所述的方法。
16.一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序或指令,所述处理器在执行所述计算机程序或指令时,实现权利要求1-7中任一项所述的方法。
CN202110339805.9A 2021-03-30 2021-03-30 一种在Fabric区块链中预执行链码的方法和装置 Active CN112734410B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110339805.9A CN112734410B (zh) 2021-03-30 2021-03-30 一种在Fabric区块链中预执行链码的方法和装置
PCT/CN2022/081722 WO2022206433A1 (zh) 2021-03-30 2022-03-18 一种在Fabric区块链中预执行链码的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110339805.9A CN112734410B (zh) 2021-03-30 2021-03-30 一种在Fabric区块链中预执行链码的方法和装置

Publications (2)

Publication Number Publication Date
CN112734410A CN112734410A (zh) 2021-04-30
CN112734410B true CN112734410B (zh) 2021-07-06

Family

ID=75596188

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110339805.9A Active CN112734410B (zh) 2021-03-30 2021-03-30 一种在Fabric区块链中预执行链码的方法和装置

Country Status (2)

Country Link
CN (1) CN112734410B (zh)
WO (1) WO2022206433A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112734410B (zh) * 2021-03-30 2021-07-06 支付宝(杭州)信息技术有限公司 一种在Fabric区块链中预执行链码的方法和装置
CN113672305A (zh) * 2021-09-03 2021-11-19 中国银行股份有限公司 一种链码启动方法、装置、设备和可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110033244A (zh) * 2019-03-15 2019-07-19 阿里巴巴集团控股有限公司 基于区块链的智能合约执行方法及装置和电子设备
CN110197085A (zh) * 2019-06-14 2019-09-03 福州大学 一种基于fabric联盟链的文档防篡改方法
CN110503433A (zh) * 2019-08-28 2019-11-26 北京百度网讯科技有限公司 一种区块链中背书的实现方法、装置、设备和介质
CN111191286A (zh) * 2019-12-28 2020-05-22 南京理工大学 Hyperledger Fabric区块链隐私数据存储与访问系统及其方法
CN111931236A (zh) * 2020-08-19 2020-11-13 广州大学 一种数据通信监控方法、系统及计算机可读存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9805052B2 (en) * 2013-01-28 2017-10-31 Netapp, Inc. Coalescing metadata for mirroring to a remote storage node in a cluster storage system
CN110310205B (zh) * 2019-06-28 2022-02-25 百度在线网络技术(北京)有限公司 一种区块链数据监控方法、装置、设备和介质
CN111163165A (zh) * 2019-12-28 2020-05-15 北京工业大学 一种基于Fabric联盟链的投票共识方法
CN112734410B (zh) * 2021-03-30 2021-07-06 支付宝(杭州)信息技术有限公司 一种在Fabric区块链中预执行链码的方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110033244A (zh) * 2019-03-15 2019-07-19 阿里巴巴集团控股有限公司 基于区块链的智能合约执行方法及装置和电子设备
CN110197085A (zh) * 2019-06-14 2019-09-03 福州大学 一种基于fabric联盟链的文档防篡改方法
CN110503433A (zh) * 2019-08-28 2019-11-26 北京百度网讯科技有限公司 一种区块链中背书的实现方法、装置、设备和介质
CN111191286A (zh) * 2019-12-28 2020-05-22 南京理工大学 Hyperledger Fabric区块链隐私数据存储与访问系统及其方法
CN111931236A (zh) * 2020-08-19 2020-11-13 广州大学 一种数据通信监控方法、系统及计算机可读存储介质

Also Published As

Publication number Publication date
WO2022206433A1 (zh) 2022-10-06
CN112734410A (zh) 2021-04-30

Similar Documents

Publication Publication Date Title
CN110443704B (zh) 一种跨链发送资源的方法和装置
CN110311790B (zh) 一种跨链发送可认证消息的方法和装置
CN110430162B (zh) 一种跨链发送可认证消息的方法和装置
CN109936457A (zh) 区块链多方见证方法、装置、设备及计算机可读存储介质
CN111861456A (zh) 基于区块链的5g消息转账交易验证方法、系统及装置
CN112734410B (zh) 一种在Fabric区块链中预执行链码的方法和装置
CN109993513A (zh) 支付账户绑定银行卡的方法、装置和系统
CN110430235B (zh) 跨链发送可认证消息的方法、装置、存储介质和计算设备
CN112069550B (zh) 一种基于智能合约方式的电子合同存证系统
CN109598149A (zh) 业务处理的方法和装置
CN111967061B (zh) 基于区块链的可信账户转账交易方法及装置
CN112734431B (zh) 查询Fabric区块链账本数据的方法和装置
CN111815321A (zh) 交易提案的处理方法、装置、系统、存储介质和电子装置
CN111461733A (zh) 基于区块链的账户信息查询方法、装置及系统
CN111161062A (zh) 一种跨链交易的方法及装置
CN113052587A (zh) 基于区块链的转账业务处理方法及装置
CN113112266A (zh) 基于5g消息和区块链的多卡片处理方法及系统
CN111127120B (zh) 基于区块链技术的服务数据处理系统、各相关节点及方法
CN110417742B (zh) 跨链发送、中转、接收可认证消息的方法、装置及存储介质
CN112732799B (zh) 查询Fabric区块链账本数据的方法和装置
CN112950180A (zh) 一种基于联盟链的通证方法、系统、电子设备及存储介质
CN112235110B (zh) 区块链的跨链业务处理方法、装置及电子设备
CN113487308A (zh) 基于区块链的银行终端存款系统及方法
CN113469693A (zh) 基于区块链使用移动终端提供服务的方法、系统及各节点
CN112861184A (zh) 资产证明的验证与生成方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240923

Address after: Room 803, floor 8, No. 618 Wai Road, Huangpu District, Shanghai 200010

Patentee after: Ant blockchain Technology (Shanghai) Co.,Ltd.

Country or region after: China

Address before: 310000 801-11 section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province

Patentee before: Alipay (Hangzhou) Information Technology Co.,Ltd.

Country or region before: China

Patentee before: Ant blockchain Technology (Shanghai) Co.,Ltd.