WO2022206438A1 - 提供跨链消息的方法和装置 - Google Patents
提供跨链消息的方法和装置 Download PDFInfo
- Publication number
- WO2022206438A1 WO2022206438A1 PCT/CN2022/081748 CN2022081748W WO2022206438A1 WO 2022206438 A1 WO2022206438 A1 WO 2022206438A1 CN 2022081748 W CN2022081748 W CN 2022081748W WO 2022206438 A1 WO2022206438 A1 WO 2022206438A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- cross
- transaction
- function
- chain
- contract
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000006870 function Effects 0.000 claims description 292
- 238000004590 computer program Methods 0.000 claims description 17
- 238000012546 transfer Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 239000004744 fabric Substances 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000010354 integration Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1059—Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Definitions
- the embodiments of this specification relate to the field of blockchain technology, and more particularly, to a method and apparatus for providing cross-chain messages, a method and apparatus for transferring cross-chain messages, and a method and apparatus for obtaining cross-chain messages.
- Blockchain technology also known as distributed ledger technology, is a decentralized distributed database technology characterized by decentralization, openness, transparency, immutability, and trustworthiness. Each data of the blockchain will be broadcast to the blockchain nodes of the entire network, and each full node has a full amount of consistent data.
- many different types of chains have emerged, which are applied in the fields of finance, health care, supply chain, asset management and traceability. At present, how to make different types of chains cooperate and realize the circulation of value is an important exploration direction.
- cross-chain messages are usually provided outside the chain by calling the contract for sending cross-chain messages in the business contract.
- Cross-chain messages are passed to business contracts by invoking the contract for receiving cross-chain messages in the transaction.
- the embodiments of the present specification aim to provide a more effective solution for transmitting messages across chains, so as to solve the deficiencies in the prior art.
- one aspect of this specification provides a method for providing cross-chain messages, the method being executed by a node device of a first blockchain, including: acquiring a first transaction from the first blockchain, the first A transaction calls a first contract, the first contract includes a cross-chain function library, the cross-chain function library includes a sending function, the first transaction includes a call to the sending function, and the first A transaction provides a first cross-chain message to the sending function when executed; the first transaction is executed to store the first cross-chain message in the first blockchain.
- executing the first transaction to deposit the first cross-chain message in the first blockchain includes executing the first transaction to store the first contract in the account state the first cross-chain message is recorded in the message queue in query function; execute a second transaction to read the first cross-chain message from the message queue; generate first data corresponding to the second transaction, and the first data includes the first cross-chain message; store the first data in the blockchain.
- the first data is a receipt for the second transaction.
- executing the first transaction to deposit the first cross-chain message in the first blockchain includes executing the first transaction; generating a receipt for the first transaction , the receipt of the first transaction includes the first cross-chain message; and the receipt of the first transaction is stored in the first blockchain.
- the first contract further includes a first business function
- the first transaction calls the first business function of the first contract
- the first business function calls the sending function
- Another aspect of this specification provides a method for relaying cross-chain messages, the method is executed by a relay device, and the relay device is pre-registered with a first contract in the first blockchain and a first contract in the second blockchain.
- the second contract of the It includes: obtaining the first cross-chain message from the first blockchain through the first contract; determining that the receiving contract of the first cross-chain message is the second contract; sending a third contract to the second blockchain transaction, the third transaction calls the receiving function in the second contract, and the third transaction provides the first cross-chain message to the receiving function, and the receiving function is in the cross-chain function library Included functions.
- obtaining the first cross-chain message from the first blockchain through the first contract includes: sending a second transaction to the first blockchain, in which the first contract is invoked in the second transaction
- the query function in the account status of the first contract includes a message queue of cross-chain messages
- the query function is a function included in the cross-chain function library, and the query function is used to read the message queue
- the cross-chain message in obtain first data corresponding to the second transaction from the first blockchain, where the first data includes the first cross-chain message in the message queue.
- obtaining the first cross-chain message from the first blockchain through the first contract includes obtaining a receipt of the first transaction from the first blockchain based on the first contract account, the first The transaction includes a call to the sending function in the first contract, the sending function is a function included in the cross-chain function library, and the first transaction is stored in the first blockchain when executed Include a receipt for the first cross-chain message.
- Another aspect of the present specification provides a method for receiving a cross-chain message, the method being executed by a node device of a second blockchain, comprising: acquiring a third transaction from the second blockchain, the third transaction being After the device sends, the third transaction calls the receiving function in the second contract, and the third transaction provides the first cross-chain message to the receiving function, and the second contract includes the cross-chain function library, the receiving function is a function included in the cross-chain function library; and the third transaction is executed to obtain the first cross-chain message.
- the second contract includes a business function
- the receiving function includes a call to the business function
- executing the third transaction further includes, after acquiring the first cross-chain message , execute the business function, and provide the first cross-chain message to the business function.
- Another aspect of this specification provides an apparatus for providing cross-chain messages, the apparatus is deployed on a node device of a first blockchain, and includes: a first obtaining unit configured to obtain a first transaction from the first blockchain , the first transaction calls a first contract, the first contract includes a cross-chain function library, the cross-chain function library includes a sending function, the first transaction includes a call to the sending function, and , the first transaction provides a first cross-chain message to the sending function during execution; a first execution unit is configured to execute the first transaction to store the first transaction in the first blockchain The first cross-chain message.
- the first execution unit is further configured to execute the first transaction to record the first cross-chain message in a message queue in the account state of the first contract, the cross-chain message
- the function library further includes a query function
- the device further includes: a second acquisition unit configured to acquire a second transaction, in which the query function in the first contract is invoked; a second execution unit configured to in order to execute the second transaction to read the first cross-chain message from the message queue; the generating unit is configured to generate first data corresponding to the second transaction, the first data includes the first cross-chain message; a storage unit configured to store the first data in the blockchain.
- the first execution unit includes an execution subunit configured to execute the first transaction; a generation subunit configured to generate a receipt for the first transaction, the first transaction
- the receipt of the first transaction includes the first cross-chain message;
- the storage subunit is configured to store the receipt of the first transaction in the first blockchain.
- Another aspect of this specification provides an apparatus for relaying cross-chain messages, the apparatus is deployed in a relay device, and the relay device is pre-registered with a first contract in a first blockchain and a second blockchain in The second contract of , wherein the first contract is used to send cross-chain messages, the second contract is used to receive cross-chain messages, both the first contract and the second contract include cross-chain function libraries, the device It includes: an acquiring unit, configured to acquire a first cross-chain message from a first blockchain through the first contract; a determining unit, configured to determine that the contract for receiving the first cross-chain message is the second contract ; a sending unit, configured to send a third transaction to the second blockchain, the third transaction calls the receiving function in the second contract, and the third transaction provides the receiving function with the For the first cross-chain message, the receiving function is a function included in the cross-chain function library.
- the obtaining unit includes: a sending subunit, configured to send a second transaction to the first blockchain, in which the query function in the first contract is called in the second transaction, and the The account state of the first contract includes a message queue of cross-chain messages, the query function is a function included in the cross-chain function library, and the query function is used to read the cross-chain messages in the message queue; obtain The subunit is configured to acquire first data corresponding to the second transaction from the first blockchain, where the first data includes the first cross-chain message in the message queue.
- the obtaining unit is further configured to obtain a receipt of a first transaction from the first blockchain based on the first contract account, where the first transaction includes sending a transaction to the first contract.
- the sending function is a function included in the cross-chain function library, and when the first transaction is executed, a receipt including the first cross-chain message is stored in the first blockchain.
- Another aspect of this specification provides an apparatus for receiving a cross-chain message, the apparatus is deployed on a node device of a second blockchain, and includes: an obtaining unit configured to obtain a third transaction from the second blockchain, The third transaction is sent by the relay device, the receiving function in the second contract is called in the third transaction, and the third transaction provides the first cross-chain message to the receiving function, the second
- the contract includes a cross-chain function library, and the receiving function is a function included in the cross-chain function library; an execution unit is configured to execute the third transaction to obtain the first cross-chain message.
- the second contract includes a business function
- the receiving function includes a call to the business function
- the execution unit is further configured to, after acquiring the first cross-chain message, The business function is executed, and the first cross-chain message is provided to the business function.
- Another aspect of this specification provides a computer-readable storage medium on which a computer program is stored, and when the computer program is executed in a computer, the computer is made to execute any of the above-mentioned methods executed by the first blockchain node device .
- Another aspect of the present specification provides a computing device, including a memory and a processor, wherein executable code is stored in the memory, and when the processor executes the executable code, any one of the above is implemented by the first blockchain The method executed by the node device.
- Another aspect of the present specification provides a computer-readable storage medium on which a computer program is stored, when the computer program is executed in a computer, the computer is caused to execute any one of the above-mentioned methods executed by a relay device.
- Another aspect of the present specification provides a computing device, including a memory and a processor, where executable code is stored in the memory, and when the processor executes the executable code, any one of the above-mentioned operations executed by the relay device is implemented. method.
- Another aspect of this specification provides a computer-readable storage medium on which a computer program is stored, and when the computer program is executed in a computer, the computer is made to execute any of the above-mentioned methods executed by the second blockchain node device .
- Another aspect of the present specification provides a computing device, including a memory and a processor, where executable code is stored in the memory, and when the processor executes the executable code, any one of the above is implemented by a second blockchain The method executed by the node device.
- the cross-chain function library is included in the cross-chain business contract, and the cross-chain business contract is registered in the relay device, so that the cross-chain function in the cross-chain business contract can be called by calling the cross-chain function.
- FIG. 1 shows a schematic diagram of a cross-chain system according to an embodiment of the present specification
- FIG. 2 shows a flowchart of a method for sending a cross-chain message according to an embodiment of the present specification
- Figure 3 shows a schematic diagram of the content of the cross-chain function library
- Figure 4 shows a schematic diagram of transaction 2
- FIG. 5 shows an apparatus 500 for providing a cross-chain message according to an embodiment of the present specification
- FIG. 6 shows an apparatus 600 for relaying cross-chain messages according to an embodiment of the present specification
- FIG. 7 shows an apparatus 700 for receiving a cross-chain message according to an embodiment of the present specification.
- FIG. 1 shows a schematic diagram of a cross-chain system according to an embodiment of the present specification.
- the cross-chain system includes a first blockchain 11 , a relay device 12 and a second blockchain 13 .
- a first contract is deployed in the first blockchain 11.
- the first contract is, for example, a cross-chain transfer contract, which includes a first business function and a cross-chain function library. Send a call to the function.
- a second contract is deployed in the second blockchain 12, and the second contract is, for example, a contract for receiving cross-chain transfers, which includes a second business function and a cross-chain function library, wherein the second contract calls cross-chain transfers.
- a receiving function in the function library where the receiving function includes a call to the second business contract.
- the relay device 12 is used for relaying cross-chain messages between the first blockchain and the second blockchain, and the business party responsible for the cross-chain transfer deploys the first contract in the first blockchain 11, and in the second blockchain
- the second contract is deployed in the chain 13, and a first contract for sending cross-chain messages and a corresponding second contract for receiving cross-chain messages are registered in the contract registry in the relay device 12.
- a transaction 1 (not shown in FIG. 1 ) can be sent to the first blockchain 11 through their device, and the first contract is called in the transaction 1
- the first business function in the first business function and pass the parameters related to the transfer to the first business function, such as the blockchain identifier for receiving the transfer, the account for receiving the transfer, the receiving contract account, the transfer amount, and so on.
- each node device in the first blockchain 11 executes transaction 1, it executes the first business function, reduces the account balance that initiates transaction 1 by the transfer amount, and generates a cross-chain message to be sent (the message in FIG. 1 ).
- message 1 for example, includes the message 1's sending blockchain identifier, receiving blockchain identifier, receiving contract account, sending account, receiving account, and adding the amount to the balance of the receiving account, and then execute the cross-chain function library. and provide message 1 to the send function.
- message 1 is stored in the ledger of the first blockchain 11, for example, message 1 is put into the receipt of transaction 1 and the receipt is stored in the first blockchain 11, or , and record message 1 into the account status data of the first contract.
- the relay device 12 is used to transfer messages between the first blockchain 11 and other blockchains (eg, the second blockchain 13 ).
- the relay device 12 can actively obtain the stored message 1 from the first blockchain 11 .
- the relay device 12 may obtain the cross-chain message by sending transaction 2 (not shown in FIG. 1 ) to the first blockchain 11 .
- the query function in the first contract is called to query the above message queue, and the query function is a function included in the cross-chain function library.
- the relay device 12 can determine that the message 1 should be received by the second contract in the second blockchain 13 based on the content included in the message 1 (eg, the sending contract account) and the records in the contract registry. Therefore, the relay device 13 can send a transaction 3 (not shown in FIG. 1 ) to the node in the second blockchain 13 .
- the second business function is called in the receiving function.
- the node in the second blockchain 13 executes the transaction 3, it first executes the receiving function to verify the message 1, and after the verification is passed, the second business function is called with the message 1 as the incoming parameter.
- the node executes the second business function, it determines whether the predetermined trigger condition is met based on the content of the message 1, for example, whether the message 1 is sent by the first contract in the first blockchain 11, and when it is determined that the predetermined trigger condition is met, The transfer process is completed based on the content of the message 1, that is, the account receiving the transfer in the message 1 is increased by an amount corresponding to the transfer amount.
- FIG. 1 is only illustrative, and is not used to limit the embodiments of the present specification.
- the method for providing messages across chains according to embodiments of the present specification will be described in detail below.
- FIG. 2 shows a flowchart of a method for sending a cross-chain message according to an embodiment of the present specification. As shown in Figure 2, the method is jointly executed by the node device of the first blockchain 11, the relay device 12, and the node device of the second blockchain 13.
- step S201 the node device of the first blockchain 11 acquires transaction 1.
- the user can send transaction 1 to any node of the first blockchain 11 through his device, thereby transferring the transaction 1 is broadcast into the first blockchain 11.
- the first business function of the first contract is called, and the parameters related to the transfer are passed to the first business function, such as the blockchain identifier for receiving the transfer, the account for receiving the transfer, the identifier for the receiving contract, the transfer amount, etc. .
- the first contract is a contract pre-deployed by the business party of the cross-chain transfer business in the first blockchain 11 for cross-chain transfer, and the first contract includes the first business function and the cross-chain transfer.
- the function library, and the first business function calls the sending function in the cross-chain function library with message 1 as the incoming parameter during execution, that is, the first business function includes an interface for calling the sending function, so that the When the interface is executed, the send function is executed, and the interface includes, for example, the function name and the value of the incoming parameter.
- FIG. 3 shows a schematic diagram of the content of the cross-chain function library.
- the cross-chain function library is a collection of multiple functions used to transmit cross-chain messages between blockchains.
- the cross-chain function library integrates functions such as sending functions, receiving functions, and query functions.
- each function corresponds to a piece of code for executing the corresponding function
- the sending function is used to send cross-chain messages on the sending blockchain side
- the receiving function is used to receive cross-chain messages on the receiving blockchain side
- the query function is used to be initiated by the relay device and query the cross-chain message on the first blockchain 11 side.
- the cross-chain function library is made by library developers and distributed to contract developers, so that when a business contract (such as a cross-chain transfer contract) needs to use cross-chain functions, contract developers can directly add cross-chain functions to the contract. Integrate the library and call the functions in the cross-chain integration library, so there is no need to separately write cross-chain related code in the contract. Moreover, when each business contract implements cross-chain functions through a unified cross-chain integration library, the relay device used to transmit messages between blockchains can perform cross-chain messages based on the interface of the unified cross-chain integration library. query and transfer, thus simplifying the operation on the relay device side.
- each node in the first blockchain 11 will acquire and execute transaction 1 .
- the accounting node in the first blockchain 11 will receive transaction 1 from other nodes, package transaction 1 into a block, and execute the transaction 1 in the block.
- the block is stored locally and sent to other nodes in the blockchain.
- other nodes in the blockchain can obtain transaction 1 and execute transaction 1, and store the block locally after executing each transaction in the blockchain.
- step S202 the node device of the first blockchain 11 executes transaction 1, and records message 1 in the account state of the first contract.
- the node device of the first blockchain 11 starts to execute the transaction 1 after acquiring the transaction 1 as described above.
- the first contract is, for example, a cross-chain transfer contract.
- the node device executes the first business function in the first contract with the parameters related to transfer as the incoming parameters. For example, it includes the blockchain identifier for receiving the transfer, the account for receiving the transfer, the account for receiving the contract, the transfer amount, etc., so that the node device reduces the balance of the account that sends transaction 1 by the transfer amount, and generates a value based on the incoming parameters. message 1.
- Message 1 has a predetermined data structure, which includes, for example, the identity of the sending blockchain, the identity of the receiving blockchain, the receiving contract account, the sending account, the receiving account, and the amount added to the balance of the receiving account of the message 1.
- the node device executes the sending function with message 1 as an incoming parameter according to the call of the first service function to the sending function in the cross-chain function library.
- the message queue may be a first-in, first-out message queue, that is, when reading the message queue, the message recorded earlier is read first, and then the message recorded later is read.
- the message queue may be a first-in-last-out message queue, which is not limited.
- step S203 the relay device 12 sends transaction 2 to the node device of the first blockchain 11.
- the query function in the first contract is called in transaction 2.
- the query function is a function included in the cross-chain function library.
- Figure 4 shows a schematic diagram of Transaction 2.
- TX 2 transaction 2
- "0x215e" in the "From” field is the account used by the relay device 12 to send transaction 2 to the first blockchain 11, indicating that the transaction 2 is sent by the relay device 12
- "Transfer” in the "To” field is, for example, the contract name of the first contract
- "0x29a0" is the contract account of the first contract, indicating that the transaction 2 calls the first contract
- "Data" "Query()" in the field is the query function in the first contract, indicating that transaction 2 calls the query function in the first contract.
- no parameters are passed to Query(), as described below, under different settings for the Query() function, the parameters for querying can also be passed to the Query() function.
- step S204 the node device of the first blockchain 11 executes transaction 2 and reads message 1.
- the first blockchain 11 is an Ethereum chain
- the relay device 12 sends transaction 2 to any node in the first blockchain 11
- the node broadcasts transaction 2 to the first blockchain 11
- Transaction 2 is executed by the accounting node in the first blockchain 11
- the world state is updated to incorporate the block, after which the accounting node sends the block including transaction 2 to the first blockchain 11, so that the first
- Each node in the blockchain 11 executes the transaction 2, updates the world state and updates the block, so that finally the ledger data of each node in the first blockchain 11 is consistent.
- the query function in the message sending contract in the transaction 2 is executed, and the query function can be preset to allow the query account to verify whether the sending account of the transaction 2 is allowed. Check account. Therefore, when executing the query function, the sending account of transaction 2 is first verified. If the verification fails, the query failure is returned. If the verification succeeds, the cross-chain message is read from the message queue in the account status of the message sending contract. It can be understood that in the case where the query account does not need to be verified, when the query function is executed, the cross-chain message can be directly read from the message queue in the account state of the message sending contract.
- the query function includes, for example, the GetProposer interface. Call GetProposer to obtain the proposer's certificate, which includes the proposer's account, public key and other information, so that it can be verified whether the proposer is allowed to query based on the account or public key preset in the query function.
- the query function includes, for example, the GetCreator interface. When the query function is executed, the proposer's account is first obtained by calling GetCreator, and then whether the proposer's account is verified based on the allowable account preset in the query function for allowed accounts.
- the reading method of cross-chain messages in the query function can be set according to requirements. For example, it can be preset that each time the query function is executed, the oldest message is read from the message queue, assuming that the message queue includes message 1. -Message 5, where the current message 1 is the earliest recorded message, and the messages 2 to 5 are all messages recorded after the message 1. Therefore, when the query function is executed this time, message 1 in the message queue is read.
- the query function is not limited to reading the oldest message, but can be preset to read the oldest predetermined number (for example, 5, etc.) messages in the message queue, or can be preset to read The latest predetermined number of messages in the message queue, or it can be preset to read the message with the specified sequence number, and the specified sequence number can be passed to the query function as an incoming parameter when calling the query function, or it can be preset to read the specified sequence number.
- the specified content is the content included in the message, such as the receiving blockchain identifier, the receiving account, etc.
- the specified content can also be passed to the query function as an incoming parameter when the query function is called.
- the query function can also be preset to modify the state of the message sending contract (that is, modify the world state) after reading the cross-chain message. Specifically, in one embodiment, after reading the message 1 in the message queue, for example, the message 1 can be deleted in the message queue, so that the message 1 will not be read repeatedly when the query function is executed next time. In one embodiment, after message 1 is read, message 1 may be marked to indicate that message 1 has been read by relay device 12, in which case relay device 12 may read message 1 repeatedly.
- step S205 the node device of the first blockchain 11 generates and deposits the receipt 2 of the transaction 2.
- the node device of the first blockchain 11 uses the read cross-chain message (for example, message 1) as the return data for executing the query function, so that the node device generates a transaction after executing transaction 2. Receipt 2 of 2, and store receipt 2 of transaction 2 in the blockchain, and the receipt 2 includes the return data (ie, message 1) of executing the query function.
- the first blockchain 11 is described as an example of an Ethereum chain, the first blockchain 11 is not limited to an Ethereum chain, but can be any other type of blockchain.
- the first blockchain 11 can also be a Fabric chain.
- the node device of the endorsing node in the first blockchain 11 pre-executes the transaction 2, after reading the message 1, it writes the message 1 After verifying the read-write set of transaction 2, the submitting node in the first blockchain 11 stores the read-write set in the first blockchain 11.
- steps S202-S206 describe that the message 1 is stored in the message queue of the account status of the first contract, and when the relay device 12 initiates an active query, the message 1 is obtained from the message queue and stored in the form of a receipt. into the blockchain, the embodiments of this specification are not limited to this.
- the node of the first blockchain 11 executes the transaction 1, it can directly use the message 1 as the return parameter of the first contract, so as to include the message 1 in the receipt 1 of the transaction 1, and store the receipt 1 in the first area.
- step S206 the relay device 12 obtains the message 1 from the node device of the first blockchain 11.
- a contract registry is stored in the relay device 12, and each blockchain is relaying after deploying a cross-chain related contract (that is, the contract includes a cross-chain function library and calls functions in the cross-chain function library).
- the device 12 performs registration, so that the relay device 12 records the contract account (ie, the contract address) of the contract for sending cross-chain messages and the contract for receiving cross-chain messages of each blockchain in the contract registry.
- Table 1 schematically shows one form of the contract registry.
- the contracts used to send cross-chain messages in the first blockchain 11 include the first contract and the fourth contract
- the first blockchain 11 is used to receive cross-chain messages.
- the contracts for chain messages include the third contract and the fifth contract
- the contracts for sending cross-chain messages in the second blockchain 13 include the second contract and the seventh contract
- the contracts include the sixth contract and the eighth contract and so on.
- the relay device 12 can search or search for the relevant data of the first contract in the first blockchain 11 . Subscribe to get this data. For example, as described above, in the case where the receipt 2 including the message 1 is stored in the first blockchain 11, and the receipt 2 includes, for example, the contract account of the first contract, the relay device 12 can connect the first block Any node device in the chain 11, and search for the contract account of the first contract from the node device, so that the receipt 2 can be obtained and remotely read. In one embodiment, after reading the receipt 2, the relay device 12 can also read the Spv proof of the receipt 2 from the node of the blockchain 11. In one embodiment, any node device in the first blockchain 11 can actively push the receipt 2 to the relay device 12 after depositing the receipt 2 including the first contract account.
- the relay device 12 can similarly obtain the receipt 1 or the receipt 1 and its Spv proof.
- the relay device 12 can obtain the transaction read-write set including message 1 and the signature of the endorsement node on the read-write set from the node device of the endorsing node.
- step S207 the relay device 12 determines a contract for receiving the message 1.
- the relay device 12 after obtaining the above-mentioned receipt 2 and its Spv certificate, the relay device 12 first uses the Spv certificate to verify the receipt 2, and after the verification is passed, it can obtain the message 1 from the data field of the receipt 2, By parsing the message 1, the receiving blockchain identifier and the receiving contract account (ie, the second contract account) of the message 1 can be obtained.
- the contract registry records that the first contract account in the first blockchain 11 corresponds to the second contract account in the second blockchain 13, in this case, in the message 1 only needs to include the receiving blockchain identifier, but does not need to include the receiving contract account, so that the receiving contract account of message 1 can be determined as the second contract account based on the contract registry.
- step S208 the relay device 12 sends transaction 3 to the node device of the second blockchain 13 .
- the relay device 12 After obtaining the receiving blockchain identifier and the second contract account from the message 1, the relay device 12 determines, based on the above-mentioned contract registry, whether the second contract account is a registered contract for receiving cross-chain messages, or whether it is a relay device.
- the device 12 directly determines from the contract registry that the receiving contract account of message 1 is the second contract account, so that the relay device 12 can generate transaction 3 according to a predetermined method of providing cross-chain messages to the second blockchain 13 .
- transaction 3 calls the receive function of the second contract, and provides message 1 to the receive function.
- the relay device 12 sends the transaction 3 to the node device of any node in the second blockchain 13 after generating the transaction 3, so that the transaction 3 is broadcast into the second blockchain 13.
- the receive function may be called in transaction 3 with receipt 2 including message 1 and the Spv proof of receipt 2 together as incoming parameters.
- the relay device 12 includes, for example, a TEE (Trusted Execution Environment), and after the relay device 12 obtains the receipt 2 and its Spv proof from the first blockchain 11 , the relay device 12 uses the Spv to verify the receipt 2 in the TEE. Verify, and after the verification is passed, obtain message 1 from receipt 2, and use TEE's hardware private key to sign message 1, so that relay device 12 uses message 1 and TEE signature as incoming parameters in transaction 3 Call the receiving function.
- TEE Trusted Execution Environment
- step S209 the node device of the second blockchain 13 executes transaction 3 and acquires message 1.
- each node device of the second blockchain 13 will execute the transaction 3, update the world state, and put the transaction 3 into the block.
- the node device of the second blockchain 13 executes transaction 3, it first executes the receive function, obtains receipt 2 and its Spv proof (or message 1 and its TEE signature, etc.) from the incoming parameters, and uses the Spv proof to verify receipt 2 (Or verify the TEE signature), in the case of passing the verification, obtain the message 1 from the receipt 2.
- the node device of the second blockchain 13 After acquiring the message 1, the node device of the second blockchain 13 calls the second business function in the second contract with the message 1 as the incoming parameter based on the program in the receiving function, so that the node device of the second blockchain 13 executes Second business function.
- Second business function it may be first determined whether message 1 satisfies a preset trigger condition, for example, the sending contract account in message 1 is an account of a specific contract (such as the first contract), etc.
- business logic is executed, for example, a balance change operation on the receiving account is performed.
- FIG. 5 shows an apparatus 500 for providing a cross-chain message according to an embodiment of the present specification.
- the apparatus 500 is deployed on a node device of the first blockchain, and includes: a first obtaining unit 51 configured to obtain information from the first area
- the first transaction is obtained in the block chain, the first transaction calls the first contract, the first contract includes a cross-chain function library, the cross-chain function library includes a sending function, and the first transaction includes The sending function is called, and the first transaction provides the first cross-chain message to the sending function during execution; the first execution unit 52 is configured to execute the first transaction to execute the first transaction in the first transaction.
- the first cross-chain message is stored in the blockchain.
- the first execution unit 52 is further configured to execute the first transaction to record the first cross-chain message in the message queue in the account state of the first contract, the cross-chain message
- the chain function library further includes a query function
- the apparatus 500 further includes: a second obtaining unit 53 configured to obtain a second transaction, in which the query function in the first contract is called; the second execution The unit 54 is configured to execute a second transaction to read the first cross-chain message from the message queue; the generating unit 55 is configured to generate first data corresponding to the second transaction, the The first data includes the first cross-chain message; the storage unit 56 is configured to store the first data in the blockchain.
- the first execution unit 52 includes an execution subunit 521 configured to execute the first transaction; and a generation subunit 522 configured to generate a receipt for the first transaction, the The receipt of the first transaction includes the first cross-chain message; the storage subunit 523 is configured to store the receipt of the first transaction in the first blockchain.
- FIG. 6 shows an apparatus 600 for relaying cross-chain messages according to an embodiment of the present specification.
- the apparatus 600 is deployed in a relay device, and the relay device is pre-registered with the first contract and the first contract in the first blockchain.
- a second contract in the second blockchain wherein the first contract is used to send cross-chain messages, the second contract is used to receive cross-chain messages, and both the first contract and the second contract include cross-chain messages function library
- the apparatus 600 includes: an obtaining unit 61, configured to obtain a first cross-chain message from a first blockchain through the first contract; a determining unit 62, configured to determine the first cross-chain message
- the receiving contract is the second contract;
- the sending unit 63 is configured to send a third transaction to the second blockchain, the third transaction calls the receiving function in the second contract, and the third transaction
- the third transaction provides the first cross-chain message to the receiving function, and the receiving function is a function included in the cross-chain function library.
- the obtaining unit 61 includes: a sending subunit 611, configured to send a second transaction to the first blockchain, in which the query function in the first contract is called in the second transaction,
- the account status of the first contract includes a message queue of cross-chain messages
- the query function is a function included in the cross-chain function library, and the query function is used to read the cross-chain messages in the message queue
- the obtaining subunit 612 is configured to obtain first data corresponding to the second transaction from the first blockchain, where the first data includes the first cross-chain message in the message queue.
- the obtaining unit 61 is further configured to obtain a receipt of the first transaction from the first blockchain based on the first contract account, where the first transaction includes Invocation of a sending function, where the sending function is a function included in the cross-chain function library, and the first transaction stores a receipt including the first cross-chain message into the first blockchain when the first transaction is executed.
- FIG. 7 shows an apparatus 700 for receiving a cross-chain message according to an embodiment of the present specification.
- the apparatus 700 is deployed on a node device of the second blockchain, and includes: an obtaining unit 71 configured to obtain information from the second blockchain.
- the third transaction is sent by the relay device, the receiving function in the second contract is called in the third transaction, and the third transaction provides the receiving function with the first span chain message, the second contract includes a cross-chain function library, and the receiving function is a function included in the cross-chain function library; the execution unit 72 is configured to execute the third transaction to obtain the first transaction.
- a cross-chain message is configured to obtain information from the second blockchain.
- the second contract includes a business function
- the receiving function includes a call to the business function
- the execution unit 72 is further configured to, after acquiring the first cross-chain message , execute the business function, and provide the first cross-chain message to the business function.
- Another aspect of this specification provides a computer-readable storage medium on which a computer program is stored, and when the computer program is executed in a computer, the computer is made to execute any of the above-mentioned methods executed by the first blockchain node device .
- Another aspect of the present specification provides a computing device, including a memory and a processor, wherein executable code is stored in the memory, and when the processor executes the executable code, any one of the above is implemented by the first blockchain The method executed by the node device.
- Another aspect of the present specification provides a computer-readable storage medium on which a computer program is stored, when the computer program is executed in a computer, the computer is caused to execute any one of the above-mentioned methods executed by a relay device.
- Another aspect of the present specification provides a computing device, including a memory and a processor, where executable code is stored in the memory, and when the processor executes the executable code, any one of the above-mentioned operations executed by the relay device is implemented. method.
- Another aspect of this specification provides a computer-readable storage medium on which a computer program is stored, and when the computer program is executed in a computer, the computer is made to execute any of the above-mentioned methods executed by the second blockchain node device .
- Another aspect of the present specification provides a computing device, including a memory and a processor, where executable code is stored in the memory, and when the processor executes the executable code, any one of the above is implemented by a second blockchain The method executed by the node device.
- the cross-chain function library is included in the cross-chain business contract, and the cross-chain business contract is registered in the relay device, so that the cross-chain function in the cross-chain business contract can be called by calling the cross-chain function.
- the software module can be placed in random access memory (RAM), internal memory, read only memory (ROM), electrically programmable ROM, electrically erasable programmable ROM, registers, hard disks, removable disks, CD-ROMs, or technical fields in any other form of storage medium known in the art.
- RAM random access memory
- ROM read only memory
- electrically programmable ROM electrically erasable programmable ROM
- registers hard disks, removable disks, CD-ROMs, or technical fields in any other form of storage medium known in the art.
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Marketing (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本说明书实施例提供了一种提供跨链消息的方法和装置,所述方法由第一区块链的节点设备执行,包括:从第一区块链中获取第一交易,所述第一交易调用第一合约,所述第一合约中包括跨链函数库,所述跨链函数库中包括发送函数,所述第一交易中包括对所述发送函数的调用,并且,所述第一交易在执行时向所述发送函数提供第一跨链消息;执行所述第一交易,以在所述第一区块链中存入所述第一跨链消息。
Description
本说明书实施例涉及区块链技术领域,更具体地,涉及一种提供跨链消息的方法和装置、中转跨链消息的方法和装置、以及获取跨链消息的方法和装置。
区块链技术也被称之为分布式账本技术,是一种去中心化的分布式数据库技术,其特点是去中心化、公开透明、不可篡改、可信任。区块链的每笔数据,都会广播到全网的区块链节点,每个全节点都有全量的、一致的数据。随着区块链技术的火热,出现了许多不同类型的链,应用在金融、健康医疗、供应链、资产管理和溯源等领域。当前,如何能让不同类型的链协同合作实现价值的流通是一个重要的探索方向。在已有的跨链技术中,在消息发送区块链中,通常通过在业务合约中调用用于发送跨链消息的合约来向链外提供跨链消息,在消息接收区块链中,通常通过在交易中调用用于接收跨链消息的合约来将跨链消息传递给业务合约。
因此,需要一种更有效的跨链传递消息的方案。
发明内容
本说明书实施例旨在提供一种更有效的跨链传递消息的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种提供跨链消息的方法,所述方法由第一区块链的节点设备执行,包括:从第一区块链中获取第一交易,所述第一交易调用第一合约,所述第一合约中包括跨链函数库,所述跨链函数库中包括发送函数,所述第一交易中包括对所述发送函数的调用,并且,所述第一交易在执行时向所述发送函数提供第一跨链消息;执行所述第一交易,以在所述第一区块链中存入所述第一跨链消息。
在一种实施方式中,执行所述第一交易,以在所述第一区块链中存入所述第一跨链消息包括,执行所述第一交易,以在第一合约的账户状态中的消息队列中记录所述第一跨链消息,所述跨链函数库中还包括查询函数,所述方法还包括:获取第二交易,所述第二交易中调用所述第一合约中的查询函数;执行第二交易,以从所述消息队列中读取 所述第一跨链消息;生成与所述第二交易对应的第一数据,所述第一数据中包括所述第一跨链消息;将所述第一数据存储到所述区块链中。
在一种实施方式中,所述第一数据为所述第二交易的收据。
在一种实施方式中,执行所述第一交易,以在所述第一区块链中存入所述第一跨链消息包括,执行所述第一交易;生成所述第一交易的收据,所述第一交易的收据中包括所述第一跨链消息;将所述第一交易的收据存入所述第一区块链中。
在一种实施方式中,所述第一合约中还包括第一业务函数,所述第一交易调用所述第一合约的所述第一业务函数,所述第一业务函数中调用所述发送函数。
本说明书另一方面提供一种中转跨链消息的方法,所述方法由中继设备执行,所述中继设备中预先注册有第一区块链中的第一合约和第二区块链中的第二合约,其中所述第一合约用于发送跨链消息,所述第二合约用于接收跨链消息,所述第一合约和第二合约中都包括跨链函数库,所述方法包括:通过所述第一合约从第一区块链获取第一跨链消息;确定所述第一跨链消息的接收合约为所述第二合约;向所述第二区块链发送第三交易,所述第三交易中调用第二合约中的接收函数,并且,所述第三交易向所述接收函数提供所述第一跨链消息,所述接收函数为所述跨链函数库中包括的函数。
在一种实施方式中,通过所述第一合约从第一区块链获取第一跨链消息包括:向所述第一区块链发送第二交易,所述第二交易中调用第一合约中的查询函数,所述第一合约的账户状态中包括跨链消息的消息队列,所述查询函数为所述跨链函数库中包括的函数,所述查询函数用于读取所述消息队列中的跨链消息;从所述第一区块链中获取与所述第二交易对应的第一数据,所述第一数据中包括所述消息队列中的第一跨链消息。
在一种实施方式中,通过所述第一合约从第一区块链获取第一跨链消息包括,基于第一合约账户从第一区块链中获取第一交易的收据,所述第一交易中包括对所述第一合约中的发送函数的调用,所述发送函数为所述跨链函数库中包括的函数,所述第一交易在执行时向所述第一区块链存入包括第一跨链消息的收据。
本说明书另一方面提供一种接收跨链消息的方法,所述方法由第二区块链的节点设备执行,包括:从第二区块链中获取第三交易,所述第三交易由中继设备发送,所述第三交易中调用第二合约中的接收函数,并且,所述第三交易向所述接收函数提供所述第一跨链消息,所述第二合约中包括跨链函数库,所述接收函数为所述跨链函数库中包括的函数;执行所述第三交易,以获取所述第一跨链消息。
在一种实施方式中,所述第二合约中包括业务函数,所述接收函数中包括对所述业务函数的调用,执行所述第三交易还包括,在获取所述第一跨链消息之后,执行所述业务函数,并向所述业务函数提供所述第一跨链消息。
本说明书另一方面提供一种提供跨链消息的装置,所述装置部署于第一区块链的节点设备,包括:第一获取单元,配置为,从第一区块链中获取第一交易,所述第一交易调用第一合约,所述第一合约中包括跨链函数库,所述跨链函数库中包括发送函数,所述第一交易中包括对所述发送函数的调用,并且,所述第一交易在执行时向所述发送函数提供第一跨链消息;第一执行单元,配置为,执行所述第一交易,以在所述第一区块链中存入所述第一跨链消息。
在一种实施方式中,所述第一执行单元还配置为,执行所述第一交易,以在第一合约的账户状态中的消息队列中记录所述第一跨链消息,所述跨链函数库中还包括查询函数,所述装置还包括:第二获取单元,配置为,获取第二交易,所述第二交易中调用所述第一合约中的查询函数;第二执行单元,配置为,执行第二交易,以从所述消息队列中读取所述第一跨链消息;生成单元,配置为,生成与所述第二交易对应的第一数据,所述第一数据中包括所述第一跨链消息;存储单元,配置为,将所述第一数据存储到所述区块链中。
在一种实施方式中,所述第一执行单元包括,执行子单元,配置为,执行所述第一交易;生成子单元,配置为,生成所述第一交易的收据,所述第一交易的收据中包括所述第一跨链消息;存储子单元,配置为,将所述第一交易的收据存入所述第一区块链中。
本说明书另一方面提供一种中转跨链消息的装置,所述装置部署于中继设备,所述中继设备中预先注册有第一区块链中的第一合约和第二区块链中的第二合约,其中所述第一合约用于发送跨链消息,所述第二合约用于接收跨链消息,所述第一合约和第二合约中都包括跨链函数库,所述装置包括:获取单元,配置为,通过所述第一合约从第一区块链获取第一跨链消息;确定单元,配置为,确定所述第一跨链消息的接收合约为所述第二合约;发送单元,配置为,向所述第二区块链发送第三交易,所述第三交易中调用第二合约中的接收函数,并且,所述第三交易向所述接收函数提供所述第一跨链消息,所述接收函数为所述跨链函数库中包括的函数。
在一种实施方式中,所述获取单元包括:发送子单元,配置为,向所述第一区块链发送第二交易,所述第二交易中调用第一合约中的查询函数,所述第一合约的账户状态中包括跨链消息的消息队列,所述查询函数为所述跨链函数库中包括的函数,所述查询 函数用于读取所述消息队列中的跨链消息;获取子单元,配置为,从所述第一区块链中获取与所述第二交易对应的第一数据,所述第一数据中包括所述消息队列中的第一跨链消息。
在一种实施方式中,所述获取单元还配置为,基于第一合约账户从第一区块链中获取第一交易的收据,所述第一交易中包括对所述第一合约中的发送函数的调用,所述发送函数为所述跨链函数库中包括的函数,所述第一交易在执行时向所述第一区块链存入包括第一跨链消息的收据。
本说明书另一方面提供一种接收跨链消息的装置,所述装置部署于第二区块链的节点设备,包括:获取单元,配置为,从第二区块链中获取第三交易,所述第三交易由中继设备发送,所述第三交易中调用第二合约中的接收函数,并且,所述第三交易向所述接收函数提供所述第一跨链消息,所述第二合约中包括跨链函数库,所述接收函数为所述跨链函数库中包括的函数;执行单元,配置为,执行所述第三交易,以获取所述第一跨链消息。
在一种实施方式中,所述第二合约中包括业务函数,所述接收函数中包括对所述业务函数的调用,所述执行单元还配置为,在获取所述第一跨链消息之后,执行所述业务函数,并向所述业务函数提供所述第一跨链消息。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项由第一区块链节点设备执行的方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项由第一区块链节点设备执行的方法。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项由中继设备执行的方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项由中继设备执行的方法。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项由第二区块链节点设备执行的 方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项由第二区块链节点设备执行的方法。
通过根据本说明书实施例的发送跨链消息的方案,在跨链业务合约中包括跨链函数库,在中继设备中注册跨链业务合约,从而可通过调用跨链业务合约中的跨链函数实现对业务合约中的跨链消息的跨链发送,而不需要在业务合约中另外调用用于跨链发送或接收消息的合约,使得简化了调用跨链业务合约的交易的执行过程,节约、减少了交易执行时间,提高了区块链的效率。
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示出根据本说明书实施例的跨链系统的示意图;
图2示出根据本说明书实施例的发送跨链消息的方法流程图;
图3示出跨链函数库的内容示意图;
图4示出交易2的示意图;
图5示出根据本说明书实施例的一种提供跨链消息的装置500;
图6示出根据本说明书实施例的一种中转跨链消息的装置600;
图7示出根据本说明书实施例的一种接收跨链消息的装置700。
下面将结合附图描述本说明书实施例。
图1示出根据本说明书实施例的跨链系统的示意图。如图1所示,所述跨链系统中包括第一区块链11、中继设备12和第二区块链13。第一区块链11中部署有第一合约,所述第一合约例如为跨链转账合约,其中包括第一业务函数和跨链函数库,第一业务函数中包括对跨链函数库中的发送函数的调用。第二区块链12中部署有第二合约,所述第二合约例如为用于接收跨链转账的合约,其中包括第二业务函数和跨链函数库,其中,第二合约中调用跨链函数库中的接收函数,接收函数中包括对第二业务合约的调用。中 继设备12用于在第一区块链和第二区块链之间中转跨链消息,负责跨链转账的业务方在第一区块链11中部署第一合约,在第二区块链13中部署所述第二合约,并在中继设备12中的合约注册表中注册用于发送跨链消息的第一合约和对应的用于接收跨链消息的第二合约。
当第一区块链11中的用户希望进行跨链转账时,可通过其设备向第一区块链11中发送交易1(图1中未示出),所述交易1中调用第一合约中的第一业务函数,并向第一业务函数传入与转账相关的参数,如接收转账的区块链标识、接收转账的账户、接收合约账户、转账金额等等。当第一区块链11中的各个节点设备执行交易1时,执行第一业务函数,将发起交易1的账户余额减少所述转账金额,并生成待发送的跨链消息(图1中的消息1),消息1中例如包括该消息1的发送区块链标识、接收区块链标识、接收合约账户、发送账户、接收账户及对接收账户的余额增加金额等内容,然后执行跨链函数库中的发送函数,并将消息1提供给发送函数。通过执行交易1中的发送函数,将消息1存储到第一区块链11的账本中,例如将消息1放入交易1的收据中并将该收据存入第一区块链11中,或者,将消息1记录到第一合约的账户状态数据中。
中继设备12用于在第一区块链11与其它区块链(例如第二区块链13)之间传递消息。中继设备12可主动从第一区块链11获取存入的消息1。例如,中继设备12可通过向第一区块链11发送交易2(图1中未示出)以获取跨链消息。交易2中调用第一合约中的查询函数,以进行对上述消息队列的查询,所述查询函数为所述跨链函数库中包括的函数。中继设备12在获取消息1之后,基于消息1中包括的内容(例如发送合约账户)和合约注册表中的记录可确定该消息1应由第二区块链13中的第二合约接收。从而,中继设备13可向第二区块链13中的节点发送交易3(图1中未示出),该交易3中以消息1为传入参数调用第二合约中的接收函数,该接收函数中调用第二业务函数。
第二区块链13中的节点在执行交易3时,首先执行接收函数,以进行对消息1的验证,在验证通过之后,以消息1为传入参数调用第二业务函数。所述节点在执行第二业务函数时,基于消息1的内容确定是否满足预定触发条件,例如确定消息1是否由第一区块链11中的第一合约发出,当确定满足预定触发条件时,基于消息1的内容完成转账过程,即将消息1中的接收转账的账户增加与转账金额对应的金额。
可以理解,上述参考图1的描述只是示意性的,而不是用于限制本说明书实施例。下文将详细描述根据本说明书实施例的跨链提供消息的方法。
图2示出根据本说明书实施例的发送跨链消息的方法流程图。如图2所示,该方法 由第一区块链11的节点设备、中继设备12、第二区块链13的节点设备共同执行。
首先,在步骤S201,第一区块链11的节点设备获取交易1。
如上文所述,当第一区块链11的用户或者节点用户希望进行例如跨链转账业务时,该用户可通过其设备向第一区块链11的任一节点发送交易1,从而将交易1广播到第一区块链11中。交易1中调用第一合约的第一业务函数,并向第一业务函数传入与转账相关的参数,如接收转账的区块链标识、接收转账的账户、接收合约的标识、转账金额等等。如图1中所示,第一合约为跨链转账业务的业务方在第一区块链11中预先部署的用于进行跨链转账的合约,第一合约中包括第一业务函数和跨链函数库,并且第一业务函数在执行时以消息1为传入参数调用跨链函数库中的发送函数,也就是说,在第一业务函数中包括用于调用发送函数的接口,从而使得在执行到该接口时执行发送函数,所述接口例如包括函数名称和传入参数的值。
图3示出跨链函数库的内容示意图。跨链函数库为用于在区块链之间传递跨链消息的多个函数的集合,例如,如图3所示,跨链函数库中集成了发送函数、接收函数、查询函数等函数。其中,每个函数都对应于一段用于执行相应功能的代码,发送函数用于在发送区块链侧进行跨链消息的发送,接收函数用于在接收区块链侧进行跨链消息的接收,查询函数用于由中继设备发起并在第一区块链11侧进行对跨链消息的查询。跨链函数库由库开发者制成并分发给合约开发者,从而合约开发者在某个业务合约(例如跨链转账合约)需要用到跨链功能时,可直接在该合约中添加跨链集成库,并调用该跨链集成库中的函数,从而不需要在合约中另外单独编写跨链相关的代码。并且,当各个业务合约都通过统一的跨链集成库来实现跨链功能,用于在区块链之间传递消息的中继设备可基于该统一的跨链集成库的接口进行对跨链消息的查询和中转,从而简化了中继设备侧的操作。
在上述用户的设备向第一区块链11的节点设备发送交易1之后,第一区块链11中的每个节点将获取到交易1并执行交易1。具体是,例如,第一区块链11为以太坊链,第一区块链11中的记账节点将从其它节点接收到交易1,将交易1打包到区块中,执行区块中的各个交易,之后将该区块存入本地并发送给区块链中的其它节点。区块链中的其它节点在接收到该区块之后,从而可获取交易1并执行交易1,并在执行该区块链中的各个交易之后将该区块存储到本地。
在步骤S202,第一区块链11的节点设备执行交易1,在第一合约的账户状态中记录消息1。
第一区块链11的节点设备在如上文所述获取到交易1之后开始执行交易1。具体是,如上文所述,所述第一合约例如为跨链转账合约,首先,所述节点设备以与转账相关的参数为传入参数执行第一合约中的第一业务函数,所述参数例如包括接收转账的区块链标识、接收转账的账户、接收合约的账户、转账金额等等,从而所述节点设备将发送交易1的账户的余额减少所述转账金额,并基于传入参数生成消息1。消息1具有预定数据结构,其中例如包括消息1的发送区块链标识、接收区块链标识、接收合约账户、发送账户、接收账户及对接收账户的余额增加金额等内容。之后,该节点设备根据第一业务函数对跨链函数库中的发送函数的调用,以消息1为传入参数执行发送函数。
在如上文所述执行发送函数时,使得节点设备在第一合约的账户状态中的消息队列中记录消息1,从而在第一区块链11中存入消息1。该消息队列可以为先进先出的消息队列,即在对该消息队列进行读取时,先读取较早记录的消息,再读取较晚记录的消息。或者,该消息队列可以为先进后出的消息队列,对此不作限定。
在步骤S203,中继设备12向第一区块链11的节点设备发送交易2。
交易2中调用第一合约中的查询函数。如图3所示,所述查询函数为跨链函数库中包括的函数。图4示出交易2的示意图。如图4所示,在交易2(TX 2)中,“From”字段中的“0x215e...”为中继设备12用于向第一区块链11发送交易2的账户,表示该交易2由中继设备12发出,“To”字段中的“Transfer”例如为第一合约的合约名称,“0x29a0…”为第一合约的合约账户,表示该交易2调用第一合约,“Data”字段中的“Qurery()”为第一合约中的查询函数,表示交易2调用第一合约中的查询函数。这里对于Qurery()未传入任何参数,如下文中所述,在对Qurery()函数不同的设定下,也可以对Qurery()函数传入用于进行查询的参数。
在步骤S204,第一区块链11的节点设备执行交易2,读取消息1。
假设第一区块链11为以太坊链,在中继设备12向第一区块链11中的任一节点发送交易2之后,该节点将交易2广播到第一区块链11中,并由第一区块链11中的记账节点执行交易2、更新世界状态并入块,之后,记账节点将该包括交易2的区块发送到第一区块链11中,以使得第一区块链11中的每个节点执行交易2、更新世界状态并更新区块,从而最终第一区块链11中的每个节点的账本数据都是一致的。
当第一区块链11的节点设备执行交易2时,执行交易2中的消息发送合约中的查询函数,该查询函数中可预设允许查询账户,以验证交易2的发送账户是否为允许的查询 账户。因此,在执行查询函数时,首先对交易2的发送账户进行验证,如果验证失败,则返回查询失败,如果验证成功,则从消息发送合约的账户状态中的消息队列中读取跨链消息。可以理解,在不需要对查询账户进行验证的情况中,在执行查询函数时,可直接从消息发送合约的账户状态中的消息队列中读取跨链消息。
在第一区块链11为Hyperledger Fabric区块链(下文中简称为Fabric链)的情况中,在一种实施方式中,所述查询函数中例如包括GetProposer接口,在执行查询函数时,首先通过调用GetProposer获取提案者的证书,该证书中包括提案者的账户、公钥等信息,从而可基于查询函数中预设的账户或公钥验证该提案者是否被允许进行查询。在一种实施方式中,所述查询函数中例如包括GetCreator接口,在执行查询函数时,首先通过调用GetCreator获取提案者的账户,然后基于查询函数中预设的允许账户验证该提案者的账户是否为允许账户。
所述查询函数中对跨链消息的读取方式可根据需求进行设置,例如,可预设,在每次执行查询函数时,从消息队列中读取最早的消息,假设消息队列中包括消息1-消息5,其中,当前消息1为最早记录的消息,消息2-消息5都是在消息1之后记录的消息。因此,在该次执行查询函数时,读取消息队列中的消息1。可以理解,所述查询函数不限于读取最老的1个消息,而可以预设为读取消息队列中最老的预定数目个(例如5个等等)消息,或者可以预设为读取消息队列中最新的预定数目个消息,或者可以预设为读取指定序号的消息,所述指定序号可在调用查询函数时作为传入参数传入给查询函数,或者可以预设为读取指定内容的消息,所述指定内容为所述消息中包括的内容,如接收区块链标识、接收账户等等,所述指定内容也可以在调用查询函数时作为传入参数传入给查询函数。
查询函数中还可以预设在进行对跨链消息的读取之后修改消息发送合约的状态(即修改世界状态)。具体是,在一种实施方式中,在例如读取消息队列中的消息1之后,可在消息队列中删除消息1,从而使得在下一次执行查询函数时不会重复读取消息1。在一种实施方式中,在读取消息1之后,可对消息1进行标记,以指示中继设备12已读取消息1,在该实施方式中,中继设备12可重复读取消息1。
在步骤S205,第一区块链11的节点设备生成并存入交易2的收据2。
第一区块链11的节点设备在执行完成上述查询函数之后,以读取到的跨链消息(例如消息1)作为执行查询函数的返回数据,从而该节点设备在执行交易2之后,生成交易2的收据2,并在区块链中存入交易2的收据2,该收据2中包括执行查询函数的返 回数据(即消息1)。
可以理解,上文虽然以第一区块链11为以太坊链为例进行了描述,第一区块链11不限于为以太坊链,而可以为其它任意类型的区块链。例如,第一区块链11也可以为Fabric链,在该情况中,第一区块链11中的背书节点的节点设备在预执行交易2时,在读取消息1之后,将消息1写入与交易2对应的读写集中,第一区块链11中的提交节点在验证交易2的读写集之后,将该读写集存入第一区块链11中。
另外,虽然在上述步骤S202-S206中描述了将消息1存入第一合约的账户状态的消息队列中、并在中继设备12发起主动查询时从消息队列获取消息1并以收据的形式存入区块链中,本说明书实施例不限于此。例如,第一区块链11的节点在执行交易1时,可直接将消息1作为第一合约的返回参数,从而在交易1的收据1中包括消息1,并将收据1存入第一区块链11中。
在步骤S206,中继设备12从第一区块链11的节点设备获取消息1。
中继设备12中存储有合约注册表,各个区块链在部署了跨链相关的合约(即该合约中包括有跨链函数库并且调用跨链函数库中的函数)之后,都在中继设备12中进行注册,从而中继设备12在该合约注册表中记录各个区块链的用于发送跨链消息的合约和用于接收跨链消息的合约的合约账户(即合约地址)。表1示意示出合约注册表的一种形式。
表1
如表1所示,在该合约注册表中记录了,第一区块链11中用于发送跨链消息的合约有第一合约和第四合约,第一区块链11中用于接收跨链消息的合约有第三合约和第五合约,第二区块链13中用于发送跨链消息的合约有第二合约和第七合约,第三区块链13中用于接收跨链消息的合约有第六合约和第八合约等等。通过在合约注册表中记录各 个使用跨链函数库的合约,中继设备12可获知各个区块链中使用跨链函数库的合约,从而可通过统一的处理方式进行对这些合约的处理,如读取合约的收据、查询合约的状态、向合约提供跨链消息等等。
具体是,中继设备12基于合约注册表中的第一区块链11中的作为发送合约的第一合约账户,可在第一区块链11中进行对第一合约的相关数据的搜索或订阅,以获取该数据。例如,如上文所述,在第一区块链11中存储有包括消息1的收据2的情况中,该收据2中例如包括第一合约的合约账户,中继设备12可连接第一区块链11中的任一节点设备,并从该节点设备进行对第一合约的合约账户的搜索,从而可获取收据2并远程读取收据2。在一种实施方式中,中继设备12在读取收据2之后,还可以从区块链11的节点中读取收据2的Spv证明。在一种实施方式中,第一区块链11中的任一节点设备可在存入包括第一合约账户的收据2之后主动向中继设备12推送所述收据2。
在第一区块链11中存储有与第一合约账户相关的包括消息1的收据1的情况中,中继设备12可类似地获取收据1或者收据1及其Spv证明。
在第一区块链11为Fabric链的情况中,中继设备12可从背书节点的节点设备获取包括消息1的交易读写集及背书节点对该读写集的签名。
在步骤S207,中继设备12确定用于接收消息1的合约。
在一种实施方式中,例如,中继设备12在获取上述收据2及其Spv证明之后,首先使用Spv证明对收据2进行验证,在验证通过之后,可从收据2的数据字段获取消息1,通过解析消息1可获取消息1的接收区块链标识和接收合约账户(即第二合约账户)。
在一种实施方式中,所述合约注册表中记录了第一区块链11中的第一合约账户与第二区块链13中的第二合约账户相对应,在该情况中,在消息1中只需要包括接收区块链标识,而不需要包括接收合约账户,从而可基于合约注册表确定消息1的接收合约账户为第二合约账户。
在步骤S208,中继设备12向第二区块链13的节点设备发送交易3。
中继设备12在从消息1中获取接收区块链标识和第二合约账户之后,基于上述合约注册表确定该第二合约账户是否为已注册的用于接收跨链消息的合约,或者中继设备12直接从合约注册表确定消息1的接收合约账户为第二合约账户,从而,中继设备12可按照预定的向第二区块链13提供跨链消息的方法生成交易3。具体是,如图1中所示,交易3中调用第二合约的接收函数,并将消息1提供给接收函数。中继设备12在生成 交易3之后将交易3发送给第二区块链13中的任一节点的节点设备,从而使得将交易3广播到第二区块链13中。
为了将消息1提供给接收函数,在一种实施方式中,在交易3中可将包括消息1的收据2及收据2的Spv证明一起作为传入参数调用接收函数。在一种实施方式中,中继设备12例如包括TEE(可信执行环境),中继设备12在从第一区块链11获取收据2及其Spv证明之后,在TEE中使用Spv对收据2进行验证,并在验证通过之后,从收据2中获取消息1,并使用TEE的硬件私钥对消息1进行签名,从而,中继设备12在交易3中以消息1及TEE签名作为传入参数调用接收函数。
在步骤S209,第二区块链13的节点设备执行交易3,获取消息1。
当中继设备12将交易3发送给第二区块链13的任一节点设备之后,第二区块链13的每个节点设备都将执行交易3,更新世界状态,并将交易3入块。第二区块链13的节点设备在执行交易3时,首先执行接收函数,从传入参数获取收据2及其Spv证明(或者消息1及其TEE签名等),使用Spv证明对收据2进行验证(或者对TEE签名进行验证),在验证通过的情况中,从收据2中获取消息1。
在获取消息1之后,第二区块链13的节点设备基于接收函数中的程序以消息1为传入参数调用第二合约中的第二业务函数,从而第二区块链13的节点设备执行第二业务函数。在执行第二业务函数时,可首先确定消息1是否满足预设触发条件,所述预设触发条件例如为消息1中的发送合约账户为特定合约(例如第一合约)的账户等等,在确定消息1满足预定触发条件的情况下,执行业务逻辑,例如进行对接收账户的余额更改操作等。
图5示出根据本说明书实施例的一种提供跨链消息的装置500,所述装置500部署于第一区块链的节点设备,包括:第一获取单元51,配置为,从第一区块链中获取第一交易,所述第一交易调用第一合约,所述第一合约中包括跨链函数库,所述跨链函数库中包括发送函数,所述第一交易中包括对所述发送函数的调用,并且,所述第一交易在执行时向所述发送函数提供第一跨链消息;第一执行单元52,配置为,执行所述第一交易,以在所述第一区块链中存入所述第一跨链消息。
在一种实施方式中,所述第一执行单元52还配置为,执行所述第一交易,以在第一合约的账户状态中的消息队列中记录所述第一跨链消息,所述跨链函数库中还包括查询函数,所述装置500还包括:第二获取单元53,配置为,获取第二交易,所述第二交易 中调用所述第一合约中的查询函数;第二执行单元54,配置为,执行第二交易,以从所述消息队列中读取所述第一跨链消息;生成单元55,配置为,生成与所述第二交易对应的第一数据,所述第一数据中包括所述第一跨链消息;存储单元56,配置为,将所述第一数据存储到所述区块链中。
在一种实施方式中,所述第一执行单元52包括,执行子单元521,配置为,执行所述第一交易;生成子单元522,配置为,生成所述第一交易的收据,所述第一交易的收据中包括所述第一跨链消息;存储子单元523,配置为,将所述第一交易的收据存入所述第一区块链中。
图6示出根据本说明书实施例的一种中转跨链消息的装置600,所述装置600部署于中继设备,所述中继设备中预先注册有第一区块链中的第一合约和第二区块链中的第二合约,其中所述第一合约用于发送跨链消息,所述第二合约用于接收跨链消息,所述第一合约和第二合约中都包括跨链函数库,所述装置600包括:获取单元61,配置为,通过所述第一合约从第一区块链获取第一跨链消息;确定单元62,配置为,确定所述第一跨链消息的接收合约为所述第二合约;发送单元63,配置为,向所述第二区块链发送第三交易,所述第三交易中调用第二合约中的接收函数,并且,所述第三交易向所述接收函数提供所述第一跨链消息,所述接收函数为所述跨链函数库中包括的函数。
在一种实施方式中,所述获取单元61包括:发送子单元611,配置为,向所述第一区块链发送第二交易,所述第二交易中调用第一合约中的查询函数,所述第一合约的账户状态中包括跨链消息的消息队列,所述查询函数为所述跨链函数库中包括的函数,所述查询函数用于读取所述消息队列中的跨链消息;获取子单元612,配置为,从所述第一区块链中获取与所述第二交易对应的第一数据,所述第一数据中包括所述消息队列中的第一跨链消息。
在一种实施方式中,所述获取单元61还配置为,基于第一合约账户从第一区块链中获取第一交易的收据,所述第一交易中包括对所述第一合约中的发送函数的调用,所述发送函数为所述跨链函数库中包括的函数,所述第一交易在执行时向所述第一区块链存入包括第一跨链消息的收据。
图7示出根据本说明书实施例的一种接收跨链消息的装置700,所述装置700部署于第二区块链的节点设备,包括:获取单元71,配置为,从第二区块链中获取第三交易,所述第三交易由中继设备发送,所述第三交易中调用第二合约中的接收函数,并且,所述第三交易向所述接收函数提供所述第一跨链消息,所述第二合约中包括跨链函数库, 所述接收函数为所述跨链函数库中包括的函数;执行单元72,配置为,执行所述第三交易,以获取所述第一跨链消息。
在一种实施方式中,所述第二合约中包括业务函数,所述接收函数中包括对所述业务函数的调用,所述执行单元72还配置为,在获取所述第一跨链消息之后,执行所述业务函数,并向所述业务函数提供所述第一跨链消息。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项由第一区块链节点设备执行的方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项由第一区块链节点设备执行的方法。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项由中继设备执行的方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项由中继设备执行的方法。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项由第二区块链节点设备执行的方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项由第二区块链节点设备执行的方法。
通过根据本说明书实施例的发送跨链消息的方案,在跨链业务合约中包括跨链函数库,在中继设备中注册跨链业务合约,从而可通过调用跨链业务合约中的跨链函数实现对业务合约中的跨链消息的跨链发送,而不需要在业务合约中另外调用用于跨链发送或接收消息的合约,使得简化了调用跨链业务合约的交易的执行过程,节少了交易执行时间,提高了区块链的效率。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (26)
- 一种提供跨链消息的方法,所述方法由第一区块链的节点设备执行,包括:从第一区块链中获取第一交易,所述第一交易调用第一合约,所述第一合约中包括跨链函数库,所述跨链函数库中包括发送函数,所述第一交易中包括对所述发送函数的调用,并且,所述第一交易在执行时向所述发送函数提供第一跨链消息;执行所述第一交易,以在所述第一区块链中存入所述第一跨链消息。
- 根据权利要求1所述的方法,其中,执行所述第一交易,以在所述第一区块链中存入所述第一跨链消息包括,执行所述第一交易,以在第一合约的账户状态中的消息队列中记录所述第一跨链消息,所述跨链函数库中还包括查询函数,所述方法还包括:获取第二交易,所述第二交易中调用所述第一合约中的查询函数;执行第二交易,以从所述消息队列中读取所述第一跨链消息;生成与所述第二交易对应的第一数据,所述第一数据中包括所述第一跨链消息;将所述第一数据存储到所述区块链中。
- 根据权利要求2所述的方法,其中,所述第一数据为所述第二交易的收据。
- 根据权利要求1所述的方法,其中,执行所述第一交易,以在所述第一区块链中存入所述第一跨链消息包括,执行所述第一交易;生成所述第一交易的收据,所述第一交易的收据中包括所述第一跨链消息;将所述第一交易的收据存入所述第一区块链中。
- 根据权利要求1至4中任一项所述的方法,其中,所述第一合约中还包括第一业务函数,所述第一交易调用所述第一合约的所述第一业务函数,所述第一业务函数中调用所述发送函数。
- 一种中转跨链消息的方法,所述方法由中继设备执行,所述中继设备中预先注册有第一区块链中的第一合约和第二区块链中的第二合约,其中所述第一合约用于发送跨链消息,所述第二合约用于接收跨链消息,所述第一合约和第二合约中都包括跨链函数库,所述方法包括:通过所述第一合约从第一区块链获取第一跨链消息;确定所述第一跨链消息的接收合约为所述第二合约;向所述第二区块链发送第三交易,所述第三交易中调用第二合约中的接收函数,并且,所述第三交易向所述接收函数提供所述第一跨链消息,所述接收函数为所述跨链函数库中包括的函数。
- 根据权利要求6所述的方法,其中,通过所述第一合约从第一区块链获取第一跨链消息包括:向所述第一区块链发送第二交易,所述第二交易中调用第一合约中的查询函数,所述第一合约的账户状态中包括跨链消息的消息队列,所述查询函数为所述跨链函数库中包括的函数,所述查询函数用于读取所述消息队列中的跨链消息;从所述第一区块链中获取与所述第二交易对应的第一数据,所述第一数据中包括所述消息队列中的第一跨链消息。
- 根据权利要求6或7所述的方法,其中,通过所述第一合约从第一区块链获取第一跨链消息包括,基于第一合约账户从第一区块链中获取第一交易的收据,所述第一交易中包括对所述第一合约中的发送函数的调用,所述发送函数为所述跨链函数库中包括的函数,所述第一交易在执行时向所述第一区块链存入包括第一跨链消息的收据。
- 一种接收跨链消息的方法,所述方法由第二区块链的节点设备执行,包括:从第二区块链中获取第三交易,所述第三交易由中继设备发送,所述第三交易中调用第二合约中的接收函数,并且,所述第三交易向所述接收函数提供所述第一跨链消息,所述第二合约中包括跨链函数库,所述接收函数为所述跨链函数库中包括的函数;执行所述第三交易,以获取所述第一跨链消息。
- 根据权利要求9所述的方法,其中,所述第二合约中包括业务函数,所述接收函数中包括对所述业务函数的调用,执行所述第三交易还包括,在获取所述第一跨链消息之后,执行所述业务函数,并向所述业务函数提供所述第一跨链消息。
- 一种提供跨链消息的装置,所述装置部署于第一区块链的节点设备,包括:第一获取单元,配置为,从第一区块链中获取第一交易,所述第一交易调用第一合约,所述第一合约中包括跨链函数库,所述跨链函数库中包括发送函数,所述第一交易中包括对所述发送函数的调用,并且,所述第一交易在执行时向所述发送函数提供第一跨链消息;第一执行单元,配置为,执行所述第一交易,以在所述第一区块链中存入所述第一跨链消息。
- 根据权利要求11所述的装置,其中,所述第一执行单元还配置为,执行所述第一交易,以在第一合约的账户状态中的消息队列中记录所述第一跨链消息,所述跨链函数库中还包括查询函数,所述装置还包括:第二获取单元,配置为,获取第二交易,所述第二交易中调用所述第一合约中的查询函数;第二执行单元,配置为,执行第二交易,以从所述消息队列中读取所述第一跨链消息;生成单元,配置为,生成与所述第二交易对应的第一数据,所述第一数据中包括所述第一跨链消息;存储单元,配置为,将所述第一数据存储到所述区块链中。
- 根据权利要求12所述的装置,其中,所述第一数据为所述第二交易的收据。
- 根据权利要求11所述的装置,其中,所述第一执行单元包括,执行子单元,配置为,执行所述第一交易;生成子单元,配置为,生成所述第一交易的收据,所述第一交易的收据中包括所述第一跨链消息;存储子单元,配置为,将所述第一交易的收据存入所述第一区块链中。
- 根据权利要求11至14任一项所述的装置,其中,所述第一合约中还包括第一业务函数,所述第一交易调用所述第一合约的所述第一业务函数,所述第一业务函数中调用所述发送函数。
- 一种中转跨链消息的装置,所述装置部署于中继设备,所述中继设备中预先注册有第一区块链中的第一合约和第二区块链中的第二合约,其中所述第一合约用于发送跨链消息,所述第二合约用于接收跨链消息,所述第一合约和第二合约中都包括跨链函数库,所述装置包括:获取单元,配置为,通过所述第一合约从第一区块链获取第一跨链消息;确定单元,配置为,确定所述第一跨链消息的接收合约为所述第二合约;发送单元,配置为,向所述第二区块链发送第三交易,所述第三交易中调用第二合约中的接收函数,并且,所述第三交易向所述接收函数提供所述第一跨链消息,所述接收函数为所述跨链函数库中包括的函数。
- 根据权利要求16所述的装置,其中,所述获取单元包括:发送子单元,配置为,向所述第一区块链发送第二交易,所述第二交易中调用第一合约中的查询函数,所述第一合约的账户状态中包括跨链消息的消息队列,所述查询函数为所述跨链函数库中包括的函数,所述查询函数用于读取所述消息队列中的跨链消息;获取子单元,配置为,从所述第一区块链中获取与所述第二交易对应的第一数据,所述第一数据中包括所述消息队列中的第一跨链消息。
- 根据权利要求16或17所述的装置,其中,所述获取单元还配置为,基于第一合约账户从第一区块链中获取第一交易的收据,所述第一交易中包括对所述第一合约中的发送函数的调用,所述发送函数为所述跨链函数库中包括的函数,所述第一交易在执行时向所述第一区块链存入包括第一跨链消息的收据。
- 一种接收跨链消息的装置,所述装置部署于第二区块链的节点设备,包括:获取单元,配置为,从第二区块链中获取第三交易,所述第三交易由中继设备发送,所述第三交易中调用第二合约中的接收函数,并且,所述第三交易向所述接收函数提供所述第一跨链消息,所述第二合约中包括跨链函数库,所述接收函数为所述跨链函数库中包括的函数;执行单元,配置为,执行所述第三交易,以获取所述第一跨链消息。
- 根据权利要求19所述的装置,其中,所述第二合约中包括业务函数,所述接收函数中包括对所述业务函数的调用,所述执行单元还配置为,在获取所述第一跨链消息之后,执行所述业务函数,并向所述业务函数提供所述第一跨链消息。
- 一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1至5中任一项的所述的方法。
- 一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1至5中任一项所述的方法。
- 一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求6至8中任一项的所述的方法。
- 一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求6至8中任一项所述的方法。
- 一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求9至10中任一项的所述的方法。
- 一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求9至10中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110339826.0 | 2021-03-30 | ||
CN202110339826.0A CN112804359B (zh) | 2021-03-30 | 2021-03-30 | 提供跨链消息的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022206438A1 true WO2022206438A1 (zh) | 2022-10-06 |
Family
ID=75815983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2022/081748 WO2022206438A1 (zh) | 2021-03-30 | 2022-03-18 | 提供跨链消息的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112804359B (zh) |
WO (1) | WO2022206438A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804359B (zh) * | 2021-03-30 | 2021-07-06 | 支付宝(杭州)信息技术有限公司 | 提供跨链消息的方法和装置 |
CN113259478B (zh) * | 2021-06-17 | 2021-11-02 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行交易的方法、装置及区块链系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108881187A (zh) * | 2018-05-31 | 2018-11-23 | 杭州秘猿科技有限公司 | 一种适用于许可链场景的跨链数据传递方法及设备 |
US20190340267A1 (en) * | 2018-05-01 | 2019-11-07 | International Business Machines Corporation | Blockchain implementing cross-chain transactions |
CN110430162A (zh) * | 2019-06-28 | 2019-11-08 | 阿里巴巴集团控股有限公司 | 一种跨链发送可认证消息的方法和装置 |
CN110443704A (zh) * | 2019-06-28 | 2019-11-12 | 阿里巴巴集团控股有限公司 | 一种跨链发送资源的方法和装置 |
CN112804359A (zh) * | 2021-03-30 | 2021-05-14 | 支付宝(杭州)信息技术有限公司 | 提供跨链消息的方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11188883B2 (en) * | 2016-09-23 | 2021-11-30 | International Business Machines Corporation | Using ledger sensors to enable contextual contracts across various enterprise blockchain applications |
KR102193533B1 (ko) * | 2018-11-27 | 2020-12-23 | 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. | 블록체인 네트워크에서의 FaaS 플랫폼 |
CN110033244B (zh) * | 2019-03-15 | 2021-10-22 | 创新先进技术有限公司 | 基于区块链的智能合约执行方法及装置和电子设备 |
CN110266655B (zh) * | 2019-05-30 | 2021-11-12 | 中国工商银行股份有限公司 | 一种基于区块链的跨链互联方法、设备以及系统 |
CN111800463B (zh) * | 2020-05-29 | 2023-04-07 | 易联众信息技术股份有限公司 | 区块链间跨链信息交互方法、系统、介质、设备及应用 |
CN111769957B (zh) * | 2020-09-02 | 2020-12-15 | 百度在线网络技术(北京)有限公司 | 区块链跨链查询方法、装置、设备和存储介质 |
-
2021
- 2021-03-30 CN CN202110339826.0A patent/CN112804359B/zh active Active
-
2022
- 2022-03-18 WO PCT/CN2022/081748 patent/WO2022206438A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190340267A1 (en) * | 2018-05-01 | 2019-11-07 | International Business Machines Corporation | Blockchain implementing cross-chain transactions |
CN108881187A (zh) * | 2018-05-31 | 2018-11-23 | 杭州秘猿科技有限公司 | 一种适用于许可链场景的跨链数据传递方法及设备 |
CN110430162A (zh) * | 2019-06-28 | 2019-11-08 | 阿里巴巴集团控股有限公司 | 一种跨链发送可认证消息的方法和装置 |
CN110443704A (zh) * | 2019-06-28 | 2019-11-12 | 阿里巴巴集团控股有限公司 | 一种跨链发送资源的方法和装置 |
CN112804359A (zh) * | 2021-03-30 | 2021-05-14 | 支付宝(杭州)信息技术有限公司 | 提供跨链消息的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112804359A (zh) | 2021-05-14 |
CN112804359B (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11978024B2 (en) | Protocol flow for notarizing a transaction | |
CN110471986B (zh) | 基于区块链的票据实名领取方法、装置及电子设备 | |
WO2020119287A1 (zh) | 基于区块链的发票创建方法及装置、电子设备 | |
TW202101440A (zh) | 跨鏈發送資源的方法和裝置 | |
WO2020258846A1 (zh) | 一种跨链发送可认证消息的方法和装置 | |
US11343103B2 (en) | Sending cross-chain authenticatable messages | |
US11924360B2 (en) | Blockchain timestamp agreement | |
WO2020119286A1 (zh) | 基于区块链的发票创建方法及装置、电子设备 | |
WO2022206438A1 (zh) | 提供跨链消息的方法和装置 | |
US20190354614A1 (en) | Configuration drift prevention across multiple systems using blockchain | |
JP2019160312A (ja) | ブロックチェーン・ノード、ブロックチェーン・ノードの方法、およびブロックチェーン・ノードのコンピュータ・プログラム | |
WO2019001139A1 (zh) | 运行智能合约的方法和装置 | |
CN111461723A (zh) | 基于区块链的数据处理系统及方法、装置 | |
TW202025045A (zh) | 基於區塊鏈的發票報銷方法及裝置、電子設備 | |
US11720545B2 (en) | Optimization of chaincode statements | |
WO2020211483A1 (zh) | 区块链中智能合约的存储、执行方法及装置和电子设备 | |
US20190378069A1 (en) | Maximizing retention of transaction results for blockchain block creation | |
EP3864817A1 (en) | Blockchain timestamp agreement | |
US20190378134A1 (en) | Annotations for protocol flow implementing transactions of a distributed ledger system | |
CN108717466A (zh) | 征信数据存储方法、装置、计算机设备及存储介质 | |
WO2022206454A1 (zh) | 提供跨链消息的方法和装置 | |
WO2022206439A1 (zh) | 提供跨链消息的方法和装置 | |
CN111368330A (zh) | 一种基于区块链的以太坊智能合约审计系统及方法 | |
US11196543B2 (en) | Minimum evidence calculation in blockchain transactions | |
CN113469815A (zh) | 数据管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 22778621 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 22778621 Country of ref document: EP Kind code of ref document: A1 |