WO2023160083A1 - 执行交易的方法、区块链、主节点和从节点 - Google Patents

执行交易的方法、区块链、主节点和从节点 Download PDF

Info

Publication number
WO2023160083A1
WO2023160083A1 PCT/CN2022/135298 CN2022135298W WO2023160083A1 WO 2023160083 A1 WO2023160083 A1 WO 2023160083A1 CN 2022135298 W CN2022135298 W CN 2022135298W WO 2023160083 A1 WO2023160083 A1 WO 2023160083A1
Authority
WO
WIPO (PCT)
Prior art keywords
transaction
variable
entry
access
transactions
Prior art date
Application number
PCT/CN2022/135298
Other languages
English (en)
French (fr)
Inventor
刘晓建
张兆勇
Original Assignee
蚂蚁区块链科技(上海)有限公司
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 蚂蚁区块链科技(上海)有限公司 filed Critical 蚂蚁区块链科技(上海)有限公司
Publication of WO2023160083A1 publication Critical patent/WO2023160083A1/zh

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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06311Scheduling, planning or task assignment for a person or group
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06316Sequencing of tasks or work
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management

Definitions

  • the embodiments of this specification belong to the technical field of block chain, and in particular relate to a method for executing transactions in the block chain, the block chain, a master node and a slave node.
  • Blockchain is a new application model of computer technologies such as distributed data storage, point-to-point transmission, consensus mechanism, and encryption algorithm.
  • the data blocks are combined into a chained data structure in a sequentially connected manner in chronological order, and a non-tamperable and unforgeable distributed ledger is cryptographically guaranteed. Due to the characteristics of decentralization, non-tamperable information, and autonomy, the blockchain has also received more and more attention and application. However, since the variables accessed cannot be predicted before the transactions calling smart contracts are executed, they usually cannot be executed in parallel.
  • the purpose of the present invention is to provide a method for executing transactions in the block chain, so that the slave nodes in the block chain can execute transactions in parallel according to the consensus proposal of the master node.
  • the first aspect of this specification provides a method for executing a transaction in a blockchain, the blockchain includes a master node and a slave node, and the method includes:
  • the master node pre-executes multiple received transactions, and generates access lists for multiple variables and transaction information for each transaction, wherein the access list includes a plurality of entries arranged in sequence, and each entry includes the table The sequence number of the item, the transaction ID and access type that access the variable, the sequence number corresponds to the order of access to the variable by the transactions in the entry, and the transaction information includes the variable ID accessed by the transaction and the access to the variable Access the corresponding sequence number;
  • the master node sends the access list of the plurality of variables and the transaction information of the plurality of transactions to the slave node;
  • the slave node executes the plurality of transactions based on the access list of the plurality of variables and transaction information of the plurality of transactions.
  • the second aspect of this specification provides a blockchain, including a master node and a slave node,
  • the master node is used to pre-execute multiple received transactions, and generate access lists for multiple variables and transaction information for each transaction, wherein the access list includes a plurality of entries arranged in sequence, and each entry includes The sequence number of the entry, the transaction identifier and access type that access the variable, the sequence number corresponds to the order in which the transactions in the entry access the variable, and the transaction information includes the variable identifier accessed by the transaction and the access type of the variable.
  • the sequence number corresponding to the access of the variable; sending the access list of the plurality of variables and the transaction information of the plurality of transactions to the slave node;
  • the slave node is configured to execute the plurality of transactions based on the access list of the plurality of variables and transaction information of the plurality of transactions.
  • the third aspect of this specification provides a block chain master node, including:
  • the pre-execution unit is configured to pre-execute multiple received transactions, and generate access lists for multiple variables and transaction information for each transaction, wherein the access list includes a plurality of entries arranged in sequence, and each entry includes The sequence number of the entry, the transaction identifier and access type that access the variable, the sequence number corresponds to the order in which the transactions in the entry access the variable, and the transaction information includes the variable identifier accessed by the transaction and the access type of the variable. The sequence number corresponding to the variable access;
  • a sending unit configured to send the access lists of the multiple variables and the transaction information of the multiple transactions to the slave nodes of the block chain.
  • the fourth aspect of this specification provides a blockchain slave node, including:
  • a receiving unit configured to receive a plurality of variable access lists and transaction information of a plurality of transactions from the master node, and the plurality of variable access lists and transaction information of the plurality of transactions are pre-executed by the master node after the plurality of transactions Generate, wherein, the access list includes a plurality of entries arranged in sequence, each entry includes the sequence number of the entry, the transaction identifier and access type that access the variable, and the sequence number is the same as the entry in the entry
  • the transaction access sequence corresponds to the variable
  • the transaction information includes the variable identifier accessed by the transaction and the sequence number corresponding to the variable access;
  • An execution unit configured to execute the plurality of transactions based on the access list of the plurality of variables and transaction information of the plurality of transactions.
  • the slave node executes the transaction according to the variable access queue and transaction information generated by the master node, and the transactions without conflicts can be executed in parallel, and the transactions with conflicts can be executed according to The transactions recorded in the access queue are executed sequentially, thereby improving the efficiency of transaction execution.
  • FIG. 1 is a block chain architecture diagram applied in an embodiment of this specification
  • FIG. 2 is a flow chart of a method for executing a transaction in a blockchain in an embodiment of this specification
  • Fig. 3 is a schematic diagram of the process of generating an access list and transaction information in an embodiment of this specification
  • Fig. 4 is a schematic diagram of the process of executing a transaction in a slave node in an embodiment of this specification
  • FIG. 5 is an architecture diagram of a block chain master node in an embodiment of this specification.
  • Fig. 6 is an architecture diagram of a block chain slave node in an embodiment of this specification.
  • Fig. 1 shows a block chain architecture diagram applied by an embodiment of this specification.
  • the blockchain includes, for example, 6 nodes including a master node 1, a slave node 2 to a slave node 6.
  • the connection between nodes schematically represents a P2P (Peer to Peer, point-to-point) connection.
  • P2P Peer to Peer, point-to-point
  • These nodes store a full amount of books, that is, store the status of all blocks and all accounts.
  • each node in the blockchain generates the same state in the blockchain by executing the same transaction, and each node in the blockchain stores the same state database.
  • the master node 1 can be responsible for receiving transactions from the client, and initiate a consensus proposal to each slave node.
  • the consensus proposal includes, for example, multiple transactions in the block to be formed (such as block B1) and each Information such as the order in which transactions are submitted. After the nodes in the blockchain successfully reach consensus on the consensus proposal, each node can execute the multiple transactions according to the order of submission in the consensus proposal, thereby generating block B1.
  • block chain shown in FIG. 1 is only exemplary, and the embodiment of this description is not limited to be applied to the block chain shown in FIG. 1 , for example, it can also be applied to a block chain system including sharding.
  • the block chain includes 6 nodes
  • the embodiment of this specification is not limited thereto, but may include other numbers of nodes.
  • the nodes contained in the blockchain can meet Byzantine Fault Tolerance (BFT) requirements.
  • BFT Byzantine Fault Tolerance
  • the Byzantine fault tolerance requirement mentioned above can be understood as that there can be Byzantine nodes inside the blockchain, but the blockchain does not reflect Byzantine behavior externally.
  • some Byzantine fault-tolerant algorithms require the number of nodes to be greater than 3f+1, where f is the number of Byzantine nodes, such as the practical Byzantine fault-tolerant algorithm PBFT (Practical Byzantine Fault Tolerance).
  • a transaction in the blockchain field may refer to a unit of tasks performed and recorded in the blockchain.
  • a transaction usually includes a sending field (From), a receiving field (To) and a data field (Data).
  • the From field indicates the account address that initiated the transaction (that is, initiates a transfer task to another account)
  • the To field indicates the account address that received the transaction (that is, received the transfer)
  • the Data field Include the transfer amount.
  • the From field indicates the account address that initiated the transaction
  • the To field indicates the account address of the contract called by the transaction
  • the Data field includes the function name in the calling contract
  • the Data such as the incoming parameters of the function are used to obtain the code of the function from the blockchain and execute the code of the function when the transaction is executed.
  • Smart contracts on the blockchain are contracts that can be triggered by transactions on the blockchain system. Smart contracts can be defined in the form of code. Calling a smart contract in Ethereum is to initiate a transaction pointing to the address of the smart contract, so that each node in the Ethereum network runs the smart contract code in a distributed manner. It should be noted that in addition to creating smart contracts by users, smart contracts can also be set by the system in the genesis block. This type of contract is generally called a genesis contract. Generally, some blockchain data structures, parameters, attributes and methods can be set in the genesis contract. In addition, accounts with system administrator privileges can create system-level contracts or modify system-level contracts (referred to as system contracts). Wherein, the system contract can be used to add data structures of different business data in the blockchain.
  • Bob sends a transaction containing information about creating a smart contract (that is, deploying a contract) to the blockchain shown in Figure 1, and the data field of the transaction includes the code of the contract to be created (such as bytecode or machine code), the to field of the transaction is empty to indicate that the transaction is used to deploy the contract.
  • the nodes After the nodes reach an agreement through the consensus mechanism, determine the contract address "0x6f8ae93", each node adds the contract account corresponding to the contract address of the smart contract in the state database, allocates the state storage corresponding to the contract account, and The contract code is saved in the state storage of the contract, so the contract is created successfully.
  • the from field of the transaction is the address of the account of the transaction initiator (ie Bob), "0x6f8ae93" in the to field represents the address of the called smart contract, and the data field of the transaction includes the method and parameters of calling the smart contract.
  • each node in the blockchain can respectively execute the transaction, thereby respectively executing the contract, and updating the state database based on the execution of the contract.
  • transactions can be executed in parallel in blockchain nodes to speed up transaction execution.
  • the blockchain node can execute transactions in parallel through multiple processes in a single machine.
  • the blockchain node can be deployed in a server cluster, and execute transactions in parallel through multiple servers.
  • blockchain nodes first divide multiple transactions into multiple transaction groups according to the accounts accessed by the transactions, and each transaction group does not access the same account, so that each transaction group can be executed in parallel.
  • a smart contract is called in a transaction, the variables accessed in the transaction cannot be predicted before the transaction is executed, so multiple transactions cannot be effectively grouped, and transactions cannot be executed in parallel.
  • the master node can execute the transaction and send the execution result to the slave node for verification.
  • the master node will only package non-conflicting transactions during execution and postpone conflicting transactions to The next block is packed so that slave nodes can achieve concurrent verification.
  • this method when the conflict rate between transactions is high, these transactions will be placed in different blocks, which reduces system performance and increases storage costs.
  • Fig. 2 is a flow chart of a method for executing a transaction in a block chain in an embodiment of this specification, the method can be executed by the master node and each slave node shown in Fig. 1, and master node 1 and slave node 2 are shown in Fig. 2 As an example, it is understood that other slave nodes in the blockchain perform the same operations as slave node 2.
  • step S201 the master node 1 pre-executes multiple received transactions, and generates access lists for multiple variables and transaction information for each transaction.
  • the pre-execution refers to the execution of the transaction by the master node before making a consensus proposal.
  • the master node 1 Before the consensus proposal, the master node 1 has not set the submission order of each transaction, and the master node 1 can pre-execute the transactions in any order.
  • the master node 1 may pre-execute the received transactions in the order in which they are received, or the master node 1 may also pre-execute the multiple transactions in parallel after receiving multiple transactions at the same time.
  • master node 1 After successful pre-execution of each transaction, master node 1 maintains the latest state set of variables (identified as pre-execution state set hereinafter) according to the read and write operations of each transaction on variables, and pre-executes other transactions according to the pre-execution state set.
  • a transaction Txi includes a read operation on variable A and a write operation on variable B.
  • the master node 1 pre-executes the transaction Txi and executes the read operation on the variable A, it determines whether the pre-execution state set has the value of the variable A, if not, reads the value of the variable A from the state database, and in the transaction Txi
  • the key-value pair of variable A is recorded in the pre-execution read set, and the read value of variable A is stored in the pre-execution state set.
  • variable A If the value of variable A is included in the pre-execution state set, variable A is directly read from the pre-execution state set The value of , record the key-value pair of variable A in the pre-execution read set of transaction Txi.
  • the master node 1 executes the write operation on the variable B, it records the key-value pair of the variable B in the pre-execution write set of the transaction Txi.
  • the pre-executed read-write set of the transaction Txi is obtained.
  • the master node 1 After the master node 1 completes the pre-execution of the transaction Txi, it judges whether the pre-execution read set of the transaction Txi is consistent with the variable values in the pre-execution state set. If the pre-execution transaction Txi is consistent, it is determined that the transaction Txi is successfully pre-executed, and the pre-execution state set is updated according to the pre-execution read-write set of the transaction Txi, that is, the key-value pair of variable B in the pre-execution read-write set is updated to the pre-execution state set .
  • the master node 1 can update the variable access list after the pre-execution completes each transaction, and generate the transaction information of the transaction according to the variable access list.
  • the access list includes a plurality of entries arranged in sequence, and each entry includes the sequence number of the entry, the transaction identifier and access type for accessing the variable, and the sequence number is related to the transaction in the entry.
  • the access order of the variable corresponds.
  • the access list may be in the form of a linked list.
  • the access types include shared type and exclusive type.
  • the access type of the transaction to the variable is a shared type; if the transaction only includes the write operation of a certain variable or the transaction includes both the write operation and the read operation of operation, the access type of the transaction to the variable is the exclusive type.
  • the transaction information includes the variable identifier accessed by the transaction and the sequence number corresponding to the access to the variable.
  • the master node 1 may store the sequence number corresponding to the transaction's access to the variable in association with the read or written variable in the pre-execution read-write set of the transaction.
  • Fig. 3 is a schematic diagram of the process of generating an access list and transaction information in an embodiment of this specification.
  • master node 1 updates the information of variable x in the variable information after pre-executing transaction A. Assuming that the current variable information does not include the access list of the variable x, thus, the master node 1 generates the first entry of the access list of the variable x, and the first entry is the head entry of the access list of the variable x, It is also a tail entry. The sequence number in the first entry is 0, the access type is shared, and the transaction set (shown as ⁇ in FIG. 3 ) includes the identifier of transaction A (for example, "A"). At the same time, the master node 1 adds the information of transaction A to the transaction information part, in which the identification of variable x and the sequence number corresponding to the access of transaction A to variable x (such as "x.0”) are recorded in association.
  • master node 1 can determine the access to the tail entry (that is, the entry with sequence number 0) in the access list of variable x according to the variable information
  • the type is a shared type, therefore, master node 1 can directly add the identifier of transaction B to the transaction set in this entry.
  • the master node 1 adds the information of transaction B to the transaction information part, which records the identification of variable x and the sequence number corresponding to the access of variable x by transaction B (for example, "x.0").
  • transaction A and transaction B are written into an entry of the access queue
  • this embodiment of the specification is not limited thereto.
  • transaction A and transaction B may also be written into different sequence numbers.
  • the two variables can be executed in parallel according to the sharing type in the two table entries.
  • master node 1 Assuming that transaction C includes write access to variables, after pre-executing transaction C, master node 1 generates the first entry of the access list of variable y in the variable information similarly to the above.
  • the sequence number of this entry is 0, the access type is exclusive, and the transaction queue (shown by ⁇ > in FIG. 3 ) includes the identifier of transaction C.
  • the difference between the transaction queue and the above-mentioned transaction set is that when executing a transaction (or verifying whether the transaction is executable), it is not necessary to consider the arrangement order of multiple transactions in the transaction set, but it is necessary to consider the order of multiple transactions in the transaction queue. Order.
  • the master node 1 adds the information of transaction C to the transaction information part, in which the identifier of the variable y and the sequence number corresponding to the access of the variable y by transaction C (such as "y.0") are recorded in association.
  • transaction C includes not only the write operation of variable y but also the read operation of variable y, the entry of variable y and the transaction information of transaction C as shown in the upper part of Table 3 are also generated.
  • the master node 1 obtains the variable information and transaction information shown in the upper part of Fig. 3 after the pre-execution completes transaction A, transaction B and transaction C.
  • transaction D includes a write access to variable x and a read access to variable y.
  • the master node 1 After the master node 1 pre-executes and completes the transaction D, for the variable x, since the access type of the current tail entry of the variable x is the shared type (refer to the upper part of Figure 3), the master node 1 sequentially increases in the access list of the variable x One entry is used as the new tail entry. The sequence number of the newly added entry is 1, the access type is the exclusive type, and the transaction queue includes the identifier of the transaction D.
  • the access type of the current tail entry of variable y is an exclusive type (refer to the upper part of FIG.
  • master node 1 sequentially adds an entry in the access list of variable y as a new tail entry.
  • the sequence number of the newly added entry is 1, the access type is the sharing type, and the transaction set includes the identifier of the transaction D.
  • the master node 1 adds transaction D information to the transaction information, in which the variable x and the sequence number 1 are recorded in association, and the variable y and the sequence number 1 are recorded in association.
  • transaction E includes a write access to variable x and a read access to variable y.
  • the master node 1 pre-executes and completes the transaction E, for the variable x, since the access type of the current tail entry of the variable x is the exclusive type (refer to the middle part of Figure 3), the transaction queue of the master node 1 in the tail entry Add the ID of transaction D in sequence.
  • master node 1 adds the identifier of transaction E to the transaction set in the tail entry of variable y.
  • the master node 1 adds transaction E information to the transaction information, in which the variable x and the sequence number 1 are recorded in association, and the variable y and the sequence number 1 are recorded in association.
  • FIG. 3 schematically shows that transaction D and transaction E are recorded in a transaction queue in one entry
  • this embodiment of the specification is not limited thereto.
  • transaction D and transaction E can be written into two entries with different sequence numbers, so that the execution sequence of transaction D and transaction E can be indicated by the order of sequence numbers.
  • another version number may also be recorded in the entry.
  • the version number "1" is also added to the second entry ", as shown in the lower part of Figure 3
  • the pre-execution completes the transaction E add 1 to the version number in the second entry of the variable x, that is, update it to "2".
  • the version number can be set to be a preset value or a null value.
  • transaction F includes the reading of variable x
  • the master node when the master node reads variable x when pre-executing transaction F, it records the sequence number and version number of the tail entry of variable x when reading variable x. Specifically, if the access queue of variable x when transaction F reads variable x is as shown in the upper part of Figure 3, the sequence number of the entry at the end of the record is 0, and the version number is empty. If transaction F reads variable x The access queue of the variable x is shown in the middle part of Figure 3, and the sequence number of the entry at the end of the record is 1, and the version number is 1. After pre-executing transaction F, the master node reads the latest sequence number and version number of the tail entry of the current variable x again.
  • step S203 master node 1 sends variable information and transaction information to slave node 2.
  • the master node 1 may pre-execute a plurality of transactions as described above, so as to obtain the respective access lists of the plurality of variables accessed by the plurality of transactions and the respective transaction information of the plurality of transactions.
  • the master node 1 may send the transaction information of the plurality of transactions and the access list of the plurality of variables to each slave node (including the slave node 2 ) as a consensus proposal. Master node 1 can also send multiple received transactions to each slave node. It can be understood that each slave node may also receive multiple transactions from other slave nodes or clients. Each slave node may also receive transaction information of the plurality of transactions and access lists of the plurality of variables from other slave nodes.
  • step S205 the slave node 2 executes the multiple transactions based on the access list of multiple variables and the transaction information of the multiple transactions.
  • transactions can be executed in parallel through multiple threads.
  • multiple variables in the variable information may be divided into multiple groups, so that each thread executes a transaction according to an access list of multiple variables in one group.
  • thread 1 may process the access list for variable x
  • thread 2 may process the access list for variable y in parallel.
  • Fig. 4 is a schematic diagram of the process of executing a transaction in a slave node in an embodiment of the present specification.
  • thread 1 first reads the header entry of the access list of variable x, and obtains the identifiers of transaction A and transaction B from the transaction collection of the entry. Afterwards, thread 1 reads transaction information x.0 of transaction A, that is, transaction A only accesses variable x, and the sequence number corresponding to this access is 0, which is consistent with the sequence number in the header entry of current variable x. Therefore, Thread 1 determines that Transaction A is currently executable. Similarly, Thread 1 may determine that Transaction B is currently executable. That is, transaction A and transaction B can currently be executed in parallel. Thread 1 may instruct another thread to execute transaction B such that transaction A and transaction B are executed in parallel in slave node 2 . Thread 1 can also execute transaction A and transaction B serially, or execute transaction A and transaction B serially in the order of "transaction B-transaction A".
  • thread 2 In parallel with thread 1, thread 2 reads the header entry of the access list of variable y, and obtains the identifier of transaction C from the transaction queue of the entry. Afterwards, thread 2 reads the transaction information y.0 of transaction C, and similarly determines that transaction C is currently executable. Therefore, thread 2 can execute transaction C. That is to say, in the slave node 2, multiple transactions are executed in parallel according to variable information and transaction information, which improves transaction execution efficiency.
  • thread 1 After thread 1 finishes executing transaction A, it deletes the identifier of transaction A in the transaction set in the header entry of variable x. After executing transaction B, since only transaction B remains in the transaction set, the header Part entry is deleted, so as to obtain the access list of variable x as shown in the middle part of Fig. 4 .
  • thread 1 reads the current header entry of the variable x again, and obtains the identifier of the first transaction D from the transaction queue of the entry. Afterwards, thread 1 reads the transaction information x.1, y.1 of transaction D, that is, transaction D accesses variable x with sequence number 1, and accesses variable y with sequence number 1. Thread 1 can determine according to the current variable information: the sequence number of the current header entry of variable x is 1, which is consistent with the sequence number of transaction D accessing variable x, and the sequence number of the current header entry of variable y is 0, which is consistent with The sequence number of the variable y accessed by transaction D is inconsistent.
  • thread 1 can determine that transaction D is currently unexecutable, that is, it needs to wait for transaction C to be executed before it can be executed. That is to say, multiple transactions with variable access conflicts are serially executed in the slave node 2 according to the variable information and transaction information, which improves the accuracy of transaction execution.
  • thread 1 may determine that transaction E is not currently executable. After thread 1 determines that transaction D and transaction E are currently unexecutable, it can obtain other executable transactions according to the access list of other variables in the group assigned to thread 1 for transaction execution, and read the access list of variable x again when it is idle , to determine whether transaction D can be executed.
  • thread 2 After thread 2 finishes executing transaction C, it deletes the current head entry in the access queue of variable y, and obtains the access queue shown in the lower part of Fig. 4 .
  • thread 1 determines the transaction in the header entry of variable x again.
  • the sequence number corresponding to variable x and variable y in the transaction information in transaction D is the same as that of each variable in the variable information
  • the sequence number in the head entry of the variable x is the same, and the transaction D is ranked first in the transaction queue in the access list entry of the variable x, and the transaction D is also located in the access list entry of another variable y accessed by the transaction D (that is, no transaction execution order is involved), therefore, thread 1 can determine that transaction D is executable, and start executing transaction D.
  • Thread 1 may delete the transaction D in the head entry of the access list of variable x and the transaction D in the head entry of the access list of variable y after executing the transaction D.
  • Thread 2 can similarly determine whether the transactions in the transaction queue of variable y are executable, since thread 1 has started executing transaction D, therefore, thread 2 can determine that transaction D is not executable, and continue to determine whether transaction E is executable.
  • Thread 2 reads transaction information x.1, y.1 of transaction E, that is, transaction E accesses variable x with sequence number 1, and accesses variable y with sequence number 1.
  • Thread 2 can determine according to the current variable information: the sequence number of the current header entry of variable x is 1, which is consistent with the sequence number of transaction E accessing variable x, and the sequence number of the current header entry of variable y is 1, which is consistent with The sequence number of the variable y accessed by transaction E is the same.
  • Thread 2 can continue to determine the non-first position of transaction E in the transaction queue (that is, after transaction D) according to the access list of variable x, so it can confirm that transaction E is currently unexecutable. Thread 2 may execute transaction E after execution of transaction D is complete.
  • Fig. 5 is the architectural diagram of the blockchain master node in an embodiment of this specification, including:
  • the pre-execution unit 51 is configured to pre-execute multiple received transactions, and generate access lists for multiple variables and transaction information for each transaction, wherein the access list includes a plurality of entries arranged in sequence, and each entry contains Including the sequence number of the entry, the transaction identifier and access type for accessing the variable, the sequence number corresponds to the order in which the transactions in the entry access the variable, and the transaction information includes the variable identifier and access type of the transaction accessed by the transaction The sequence number corresponding to the access of the variable; the sending unit 52, configured to send the access lists of the multiple variables and the transaction information of the multiple transactions to the slave nodes of the block chain.
  • the access types of every two adjacent entries include shared type and exclusive type, and the shared type includes reading the variable
  • the transaction identifiers of one or more transactions of the exclusive type include the transaction identifiers of one or more transactions that write the variable in sequence.
  • the multiple transactions include a first transaction, and the first transaction includes a read operation on the first variable, and the pre-execution unit 51 is specifically configured to: complete the pre-execution After the first transaction, in the case that the first entry in the first access list of the first variable as the current tail entry is a shared type, add the identifier of the first transaction to the first entry In the transaction set of , record the first sequence number in the transaction information of the first transaction in association with the identifier of the first variable;
  • the second entry includes: a second sequence number, a sharing type, a transaction set including the first transaction identifier, and the second sequence number is recorded in the first transaction in association with the identifier of the first variable in the transaction information.
  • the multiple transactions include a first transaction, the first transaction includes a write operation to the first variable, and the pre-execution unit 51 is specifically configured to:
  • the pre-execution completes the first transaction, in the case that the first entry in the first access list of the first variable as the current tail entry is an exclusive type, add the first transaction to all In the transaction queue in the first entry, record the first sequence number in the transaction information of the first transaction in association with the identifier of the first variable;
  • the second entry includes: a second sequence number, an exclusive type, a transaction queue including the identifier of the first transaction, and the second sequence number is associated with the identifier of the first variable and recorded in the first In the transaction information of the transaction.
  • the pre-execution unit 51 is specifically configured to pre-execute the received first transaction based on the pre-execution state set, and after the pre-execution completes the first transaction, based on the pre-execution of the first transaction
  • the read-write set updates the pre-execution state set.
  • the pre-execution read-write set of the first transaction includes a read operation on a first variable
  • the pre-execution unit 51 is configured to: determine the first variable in the pre-execution read-write set Whether the value of is consistent with the value of the first variable in the pre-execution state set, and if they are consistent, update the pre-execution state set based on the pre-execution read-write set of the first transaction.
  • Fig. 6 is an architecture diagram of a block chain slave node in an embodiment of this specification, including:
  • the receiving unit 61 is configured to receive multiple variable access lists and multiple transaction transaction information from the master node, and the multiple variable access lists and multiple transaction transaction information are pre-executed by the master node Generated afterwards, wherein the access list includes a plurality of entries arranged in sequence, and each entry includes the sequence number of the entry, the transaction identifier and access type for accessing the variable, and the sequence number is the same as that in the entry
  • the order of access to the variable corresponds to the transaction
  • the transaction information includes the variable identifier accessed by the transaction and the sequence number corresponding to the access to the variable;
  • the executing unit 62 is configured to execute the multiple transactions based on the access list of the multiple variables and the transaction information of the multiple transactions.
  • the execution unit 62 is specifically configured to: select a first access list of a first variable, the current header entry of the first access list includes the identifier of the first transaction;
  • Read the transaction information of the first transaction determine the multiple variables accessed by the first transaction and the sequence numbers corresponding to each variable, and the multiple variables include the first variable;
  • the execution unit 62 is specifically configured to:
  • the improvement of a technology can be clearly distinguished as an improvement in hardware (for example, improvements in circuit structures such as diodes, transistors, and switches) or improvements in software (improvement in method flow).
  • improvements in circuit structures such as diodes, transistors, and switches
  • improvements in software improvement in method flow
  • the improvement of many current method flows can be regarded as the direct improvement of the hardware circuit structure.
  • Designers almost always get the corresponding hardware circuit structure by programming the improved method flow into the hardware circuit. Therefore, it cannot be said that the improvement of a method flow cannot be realized by hardware physical modules.
  • a programmable logic device Programmable Logic Device, PLD
  • PLD Programmable Logic Device
  • FPGA Field Programmable Gate Array
  • HDL Hardware Description Language
  • ABEL Advanced Boolean Expression Language
  • AHDL Altera Hardware Description Language
  • HDCal JHDL
  • Lava Lava
  • Lola MyHDL
  • PALASM RHDL
  • VHDL Very-High-Speed Integrated Circuit Hardware Description Language
  • Verilog Verilog
  • the controller may be implemented in any suitable way, for example the controller may take the form of a microprocessor or processor and a computer readable medium storing computer readable program code (such as software or firmware) executable by the (micro)processor , logic gates, switches, Application Specific Integrated Circuit (ASIC), programmable logic controllers, and embedded microcontrollers, examples of controllers include but are not limited to the following microcontrollers: ARC 625D, Atmel AT91SAM, Microchip PIC18F26K20 and Silicone Labs C8051F320, the memory controller can also be implemented as part of the control logic of the memory.
  • ASIC Application Specific Integrated Circuit
  • controller in addition to realizing the controller in a purely computer-readable program code mode, it is entirely possible to make the controller use logic gates, switches, application-specific integrated circuits, programmable logic controllers, and embedded The same function can be realized in the form of a microcontroller or the like. Therefore, such a controller can be regarded as a hardware component, and the devices included in it for realizing various functions can also be regarded as structures within the hardware component. Or even, means for realizing various functions can be regarded as a structure within both a software module realizing a method and a hardware component.
  • the systems, devices, modules, or units described in the above embodiments can be specifically implemented by computer chips or entities, or by products with certain functions.
  • a typical implementation device is a server system.
  • the computer that realizes the functions of the above embodiments can be, for example, a personal computer, a laptop computer, a vehicle-mounted human-computer interaction device, a cellular phone, a camera phone, a smart phone, a personal digital assistant , media players, navigation devices, email devices, game consoles, tablet computers, wearable devices, or any combination of these devices.
  • one or more embodiments of the present specification provide the operation steps of the method described in the embodiment or the flowchart, more or fewer operation steps may be included based on conventional or non-inventive means.
  • the sequence of steps enumerated in the embodiments is only one of the execution sequences of many steps, and does not represent the only execution sequence.
  • the methods shown in the embodiments or drawings can be executed sequentially or in parallel (such as a parallel processor or multi-thread processing environment, or even a distributed data processing environment).
  • These computer program instructions may also be stored in a computer-readable memory capable of directing a computer or other programmable data processing apparatus to operate in a specific manner, such that the instructions stored in the computer-readable memory produce an article of manufacture comprising instruction means, the instructions
  • the device realizes the function specified in one or more procedures of the flowchart and/or one or more blocks of the block diagram.
  • a computing device includes one or more processors (CPUs), input/output interfaces, network interfaces, and memory.
  • processors CPUs
  • input/output interfaces network interfaces
  • memory volatile and non-volatile memory
  • Memory may include non-permanent storage in computer readable media, in the form of random access memory (RAM) and/or nonvolatile memory such as read-only memory (ROM) or flash RAM. Memory is an example of computer readable media.
  • RAM random access memory
  • ROM read-only memory
  • flash RAM flash random access memory
  • Computer-readable media including both permanent and non-permanent, removable and non-removable media, can be implemented by any method or technology for storage of information.
  • Information may be computer readable instructions, data structures, modules of a program, or other data.
  • Examples of computer storage media include, but are not limited to, phase change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read only memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), Flash memory or other memory technology, Compact Disc Read-Only Memory (CD-ROM), Digital Versatile Disc (DVD) or other optical storage, Magnetic cassettes, magnetic tape magnetic disk storage, graphene storage or other magnetic storage devices or any other non-transmission medium that can be used to store information that can be accessed by computing devices.
  • computer-readable media excludes transitory computer-readable media, such as modulated data signals and carrier waves.
  • one or more embodiments of this specification may be provided as a method, system or computer program product. Accordingly, one or more embodiments of the present description may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, one or more embodiments of the present description may employ a computer program embodied on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) having computer-usable program code embodied therein. The form of the product.
  • program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
  • program modules may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
  • program modules may be located in both local and remote computer storage media including storage devices.

Abstract

一种在区块链中执行交易的方法、区块链、主节点和从节点,所述方法包括:主节点预执行接收的多个交易,生成多个变量各自的访问列表和各个交易的交易信息,其中,访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,顺序号与该表项中的交易对该变量的访问顺序对应,交易信息包括该交易访问的变量标识和对该变量的该次访问对应的顺序号;主节点将多个变量的访问列表和多个交易的交易信息发送给从节点;从节点基于多个变量的访问列表和多个交易的交易信息执行多个交易。

Description

执行交易的方法、区块链、主节点和从节点
本申请要求于2022年2月25日提交中国国家知识产权局、申请号为202210182800.4、申请名称为“执行交易的方法、区块链、主节点和从节点”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种在区块链中执行交易的方法、区块链、主节点和从节点。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。然而,由于调用智能合约的交易在执行前不能预知访问的变量,因此通常不能并行执行。
发明内容
本发明的目的在于提供一种在区块链中执行交易的方法,使得可以区块链中的从节点可根据主节点的共识提议并行执行交易。
本说明书第一方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法包括:
所述主节点预执行接收的多个交易,生成多个变量各自的访问列表和各个交易的交易信息,其中,所述访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,所述顺序号与该表项中的交易对该变量的访问顺序对应,所述交易信息包括该交易访问的变量标识和对该变量的访问对应的顺序号;
所述主节点将所述多个变量的访问列表和所述多个交易的交易信息发送给所述从节点;
所述从节点基于所述多个变量的访问列表和所述多个交易的交易信息执行所述多个交易。
本说明书第二方面提供一种区块链,包括主节点和从节点,
所述主节点用于预执行接收的多个交易,生成多个变量各自的访问列表和各个交易的交易信息,其中,所述访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,所述顺序号与该表项中的交易对该变量的访问顺序对应,所述交易信息包括该交易访问的变量标识和对该变量的访问对应的顺序号;将所述多个变量的访问列表和所述多个交易的交易信息发送给所述从节点;
所述从节点用于基于所述多个变量的访问列表和所述多个交易的交易信息执行所述多个交易。
本说明书第三方面提供一种区块链主节点,包括:
预执行单元,用于预执行接收的多个交易,生成多个变量各自的访问列表和各个交易的交易信息,其中,所述访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,所述顺序号与该表项中的交易对该变量的访问顺序对应,所述交易信息包括该交易访问的变量标识和对该变量的访问对应的顺序号;
发送单元,用于将所述多个变量的访问列表和所述多个交易的交易信息发送给所述区块链的从节点。
本说明书第四方面提供一种区块链从节点,包括:
接收单元,用于从所述主节点接收多个变量的访问列表和多个交易的交易信息,所述多个变量访问列表和多个交易的交易信息由主节点预执行所述多个交易之后生成,其中,所述访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,所述顺序号与该表项中的交易对该变量的访问顺序对应,所述交易信息包括该交易访问的变量标识和对该变量的访问对应的顺序号;
执行单元,用于基于所述多个变量的访问列表和所述多个交易的交易信息执行所述多个交易。
通过本说明书实施例提供的在区块链中执行交易的方案,从节点根据主节点生成的变量的访问队列和交易信息执行交易,对于没有冲突的交易可以并行执行,对于有冲突的交易可根据访问队列记录的交易的先后顺序先后执行,从而提高了交易执行效率。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一实施例所应用的区块链架构图;
图2为本说明书一实施例中的在区块链中执行交易的方法流程图;
图3为本说明书一实施例中生成访问列表和交易信息的过程示意图;
图4为本说明书一实施例中的在从节点中执行交易的过程示意图;
图5为本说明书一实施例中的区块链主节点的架构图;
图6为本说明书一实施例中的一种区块链从节点的架构图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
图1示出本说明书一实施例所应用的区块链架构图。如图1中,区块链中例如包含主节点1、从节点2~从节点6共6个节点。节点之间的连线示意性的表示P2P(Peer to Peer,点对点)连接。这些节点上都存储全量的账本,即存储全部区块和全部账户的状态。其中,区块链中的每个节点通过执行相同的交易而产生区块链中的相同的状态,区块链中的每个节点存储相同的状态数据库。所不同的是,主节点1可负责从客户端接收交易,并向各个从节点发起共识提议,该共识提议中例如包括将要成块的区块(例如区块B1)中的多个交易及各个交易的提交顺序等信息。在区块链中的节点对共识提议共识成功之后,各个节点可根据共识提议中的提交顺序执行该多个交易,从而生成区块B1。
可以理解,图1所示的区块链仅仅是示例性的,本说明书实施例不限于应用于图1所示的区块链,例如还可以应用于包括分片的区块链系统中。
另外,图1中虽然示出了区块链中包括6个节点,本说明书实施例不限于此,而是可以包括其他数目的节点。具体是,区块链中包含的节点可以满足拜占庭容错(Byzantine Fault Tolerance,BFT)要求。所述的拜占庭容错要求可以理解为在区 块链内部可以存在拜占庭节点,而区块链对外不体现拜占庭行为。一般的,一些拜占庭容错算法中要求节点个数大于3f+1,f为拜占庭节点个数,例如实用拜占庭容错算法PBFT(Practical Byzantine Fault Tolerance)。
区块链领域中的交易可以指在区块链中执行并记录在区块链中的任务单元。交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data)。其中,在交易为转账交易的情况中,From字段表示发起该交易(即发起对另一个账户的转账任务)的账户地址,To字段表示接收该交易(即接收转账)的账户地址,Data字段中包括转账金额。在交易调用区块链中的智能合约的情况中,From字段表示发起该交易的账户地址,To字段表示交易所调用的合约的账户地址,Data字段中包括调用合约中的函数名、及对该函数的传入参数等数据,以用于在交易执行时从区块链中获取该函数的代码并执行该函数的代码。
区块链中可提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。在以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,使得以太坊网络中每个节点分布式地运行智能合约代码。需要说明的是,除了可以由用户创建智能合约,也可以在创世块中由系统设置智能合约。这类合约一般称为创世合约。一般的,创世合约中可以设置一些区块链的数据结构、参数、属性和方法。此外,具有系统管理员权限的账户可以创建系统级的合约,或者修改系统级的合约(简称为系统合约)。其中,所述系统合约可用于在区块链中增加不同业务的数据的数据结构。
在部署合约的场景中,例如,Bob将一个包含创建智能合约信息(即部署合约)的交易发送到如图1所示的区块链中,该交易的data字段包括待创建的合约的代码(如字节码或者机器码),交易的to字段为空,以表示该交易用于部署合约。节点间通过共识机制达成一致后,确定合约的合约地址“0x6f8ae93…”,各个节点在状态数据库中添加与该智能合约的合约地址对应的合约账户,分配与该合约账户对应的状态存储,并将合约代码保存在该合约的状态存储中,从而合约创建成功。
在调用合约的场景中,例如,Bob将一个用于调用智能合约的交易发送到如图1所示的区块链中,该交易的from字段是交易发起方(即Bob)的账户的地址,to字段中的“0x6f8ae93…”代表了被调用的智能合约的地址,交易的data字段包括调用智能合约的方法和参数。在区块链中对该交易进行共识之后,区块链中的各个节点可分别执行该交易,从而分别执行该合约,基于该合约的执行更新状态数据库。
在相关技术中,为了提高区块链中的每秒执行交易(TPS)指标,需要加快交易的执行速度。为此,区块链节点中可通过并行执行交易来加快交易的执行速度。在一种实施方式中,区块链节点可通过单机中的多个进程并行执行交易,在另一种实施方式中,区块链节点可部署在服务器集群中,通过多台服务器并行执行交易。通常,对于转账交易,区块链节点首先根据交易访问的账户将多个交易划分为多个交易组,各个交易组之间不访问相同的账户,从而可并行执行各个交易组。然而,当交易中调用智能合约时,在执行该交易之前不能预知该交易中访问的变量,从而无法对多个交易进行有效的分组,也就无法并行执行交易。
在另一种相关技术中,可由主节点执行交易,并将执行结果发送给从节点进行验证,为了加速验证阶段,主节点会在执行时仅打包无冲突的交易,将有冲突的交易推迟到下一个区块打包,这样从节点可以实现并发验证。然而,在该方式中,当交易间的冲突率较高时,这些交易会被放到不同的区块中,降低了系统性能,增大了存储成本。
图2为本说明书一实施例中的在区块链中执行交易的方法流程图,该方法可由图1所示的主节点和各个从节点执行,图2中示出主节点1和从节点2作为示例,可以理解,区块链中的其他从节点进行与从节点2相同的操作。
如图2所示,首先,在步骤S201,主节点1预执行接收的多个交易,生成多个变量各自的访问列表和各个交易的交易信息。
所述预执行是指主节点在进行共识提议前对交易的执行。在进行共识提议之前,主节点1还未设置各个交易的提交顺序,主节点1可按照任意顺序进行对交易的预执行。例如,主节点1可按照接收各个交易的先后顺序预执行接收的各个交易,或者主节点1也可以在同时接收到多个交易之后,并行预执行该多个交易。
主节点1在成功预执行各个交易之后,根据各个交易对变量的读写操作维护变量最新状态集(下文标识为预执行状态集),并根据预执行状态集预执行其他交易。
例如,交易Txi中包括对变量A的读操作和对变量B的写操作。主节点1在预执行交易Txi时,在执行对变量A的读操作时,确定预执行状态集是否有变量A的值,如果没有则从状态数据库中读取变量A的值,在交易Txi的预执行读集中记录变量A的键值对,并在预执行状态集中存储该读取的变量A的值,如果预执行状态集中包括变量A的值,则直接从预执行状态集中读取变量A的值,在交易Txi的预执行读集中记录变量A的键值对。主节点1在执行对变量B的写操作时,在交易Txi的预执行写集中记录变量B的键值对。 从而得到交易Txi的预执行读写集。
主节点1在完成对交易Txi的预执行之后,判断交易Txi的预执行读集与预执行状态集中的变量值是否一致,如果不一致说明交易Txi与其他在先预执行的交易存在冲突,则重新预执行交易Txi,如果一致,则确定交易Txi成功预执行,根据交易Txi的预执行读写集更新预执行状态集,即将预执行读写集中的变量B的键值对更新到预执行状态集中。
主节点1可在预执行完成每个交易之后更新变量的访问列表,并根据变量的访问列表生成该交易的交易信息。其中,所述访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,所述顺序号与该表项中的交易对该变量的访问顺序对应。具体是,所述访问列表可以为链表的形式。所述访问类型包括共享类型和独占类型。其中,如果交易仅包括对某个变量的读操作,则该交易对该变量的访问类型为共享类型,如果交易仅包括对某个变量的写操作或者交易包括对某个变量的写操作和读操作,则该交易对该变量的访问类型为独占类型。所述交易信息包括该交易访问的变量标识和对该变量的该次访问对应的顺序号。主节点1可在交易的预执行读写集中与读或者写的变量关联地存储该交易对变量的访问对应的顺序号。
图3为本说明书一实施例中生成访问列表和交易信息的过程示意图。
参考图3中的上部,假设交易A中包括对变量x的读访问,主节点1在预执行交易A之后,在变量信息中更新变量x的信息。假设当前变量信息中不包括变量x的访问列表,从而,主节点1生成变量x的访问列表的第1个表项,该第1个表项即是变量x的访问列表的头部表项,也是尾部表项。该第1个表项中的顺序号为0,访问类型为共享类型,交易集合(图3中以{}示出)中包括交易A的标识(例如“A”)。同时,主节点1在交易信息部分添加交易A的信息,其中关联地记录了变量x的标识和交易A对变量x的访问对应的顺序号(例如“x.0”)。
假设交易B中也包括对变量x的读访问,主节点1在预执行交易B之后,根据变量信息可确定变量x的访问列表中的尾部表项(即顺序号为0的表项)的访问类型为共享类型,因此,主节点1可直接在该表项中的交易集合中添加交易B的标识。同时,主节点1在交易信息部分添加交易B的信息,其中关联地记录了变量x的标识和交易B对变量x的访问对应的顺序号(例如“x.0”)。
可以理解,图3中虽然示出将交易A和交易B都写入访问队列的一个表项中,本说明 书实施例不限于此,例如,也可以将交易A和交易B写入不同顺序号的两个表项中,通过该两个表项中的共享类型确定该两个变量可以并行执行。
假设交易C中包括对变量的写访问,主节点1在预执行交易C之后,与上文类似地,在变量信息中生成变量y的访问列表的第1个表项。该表项的顺序号为0,访问类型为独占类型,交易队列(图3中以<>示出)包括交易C的标识。其中,交易队列与上述交易集合的区别在于,在执行交易(或者验证交易是否可执行)时,不需要考虑交易集合中的多个交易的排列顺序,而需要考虑交易队列中的多个交易的排列顺序。同时,主节点1在交易信息部分添加交易C的信息,其中关联地记录了变量y的标识和交易C对变量y的访问对应的顺序号(例如“y.0”)。可以理解,假设交易C中除了包括对变量y的写操作之外还包括对变量y的读操作,同样地生成如表3中上部所示的变量y的表项和交易C的交易信息。
也就是说,主节点1在预执行完成交易A、交易B和交易C之后,得到图3上部所示的变量信息和交易信息。
参考图3中的中部,假设交易D包括对变量x的写访问和对变量y的读访问。主节点1在预执行完成交易D之后,对于变量x,由于变量x的当前尾部表项的访问类型为共享类型(参考图3上部),因此,主节点1在变量x的访问列表中顺序增加一个表项作为新的尾部表项。该新增加的表项的顺序号为1,访问类型为独占类型,交易队列中包括交易D的标识。对于变量y,由于变量y的当前尾部表项的访问类型为独占类型(参考图3上部),因此,主节点1在变量y的访问列表中顺序增加一个表项作为新的尾部表项。该新增加的表项的顺序号为1,访问类型为共享类型,交易集合中包括交易D的标识。同时,主节点1在交易信息中增加交易D的信息,该信息中关联地记录变量x和顺序号1,以及关联地记录变量y和顺序号1。
参考图3中的下部,假设交易E包括对变量x的写访问和对变量y的读访问。主节点1在预执行完成交易E之后,对于变量x,由于变量x的当前尾部表项的访问类型为独占类型(参考图3中部),因此,主节点1在该尾部表项中的交易队列中顺序添加交易D的标识。对于变量y,由于变量y的当前尾部表项的访问类型为共享类型(参考图3中部),因此,主节点1在变量y的该尾部表项中的交易集合中添加交易E的标识。同时,主节点1在交易信息中增加交易E的信息,该信息中关联地记录变量x和顺序号1,以及关联地记录变量y和顺序号1。
可以理解,虽然图3中示意示出将交易D和交易E记录到一个表项中的交易队列中, 本说明书实施例不限于此。例如,可以将交易D和交易E写入不同顺序号的两个表项中,从而可通过顺序号的先后顺序指示交易D和交易E的执行顺序。
在一种实施方式中,在表项中,除了记录如图3所示的顺序号之外,还可以记录另一个版本号。例如如图3中中部所示,在预执行完成交易D添加变量x的第2个表项后,在该第2个表项中除了记录顺序号“1”之外,还增加版本号“1”,如图3中下部所示,在预执行完成交易E之后,在变量x的第2个表项中将版本号加1,即更新为“2”。在共享型表项中,可设置恒定为预设值或者空值的版本号。假设交易F中包括对变量x的读取,主节点在预执行交易F时读取变量x时,记录在读取变量x时变量x的尾部表项的顺序号和版本号。具体是,如果交易F读取变量x时的变量x的访问队列如图3中上部所示,则记录尾部表项的顺序号为0,版本号为空,如果交易F读取变量x时的变量x的访问队列如图3中中部所示,则记录尾部表项的顺序号为1,版本号为1。主节点在预执行完交易F之后,再次读取当前变量x的尾部表项的最新顺序号和版本号,如果与预执行过程中记录的顺序号和版本号一致,则可确认交易F读取了正确的值,交易F预执行成功,如果与预执行过程中记录的顺序号和版本号不一致,则可确认交易F读取了错误的值,交易F预执行失败。通过比较顺序号和版本号来确定交易是否预执行成功,相比于前述的在预执行完成交易之后比较读取的变量状态值和变量当前状态值的方法,节省了读取和比较的数据量,提高了交易预执行的效率。
在步骤S203,主节点1将变量信息和交易信息发送给从节点2。
主节点1可如上所述预执行多个交易,从而可获取该多个交易访问的多个变量各自的访问列表、以及该多个交易各自的交易信息。主节点1可将该多个交易的交易信息和该多个变量的访问列表作为共识提议发送给各个从节点(包括从节点2)。主节点1还可以将接收的多个交易发送给各个从节点。可以理解,各个从节点也可能从其他从节点或者客户端接收到多个交易。各个从节点也可以从其他从节点接收到该多个交易的交易信息和该多个变量的访问列表。
在步骤S205,从节点2基于多个变量的访问列表和多个交易的交易信息执行所述多个交易。
从节点2中可通过多个线程并行执行交易。具体是,可以将变量信息中的多个变量分成多个组,使得每个线程根据一个组中的多个变量的访问列表执行交易。例如,线程1可处理变量x的访问列表,线程2可并行地处理变量y的访问列表。
图4为本说明书一实施例中的在从节点中执行交易的过程示意图。
参考图4的上部,线程1首先读取变量x的访问列表的头部表项,从该表项的交易集合中获取交易A和交易B的标识。之后,线程1读取交易A的交易信息x.0,即交易A只访问了变量x,并且该次访问对应的顺序号为0,与当前变量x的头部表项中的顺序号一致,因此,线程1确定交易A当前可执行。类似地,线程1可确定交易B当前可执行。也就是说,交易A和交易B当前可并行执行。线程1可指示另一个线程执行交易B,以使得在从节点2中并行执行交易A和交易B。线程1也可以串行地执行交易A和交易B,或者以“交易B-交易A”的先后顺序串行执行交易A和交易B。
与线程1并行地,线程2读取变量y的访问列表的头部表项,从该表项的交易队列中获取交易C的标识。之后,线程2读取交易C的交易信息y.0,类似地可确定交易C当前可执行。因此,线程2可执行交易C。也就是说,在从节点2中根据变量信息和交易信息实现了并行执行多个交易,提高了交易执行效率。
线程1在执行完成交易A之后,将变量x的头部表项中的交易集合中的交易A的标识删除,在执行完成交易B之后,由于交易集合中只剩下交易B,因此将该头部表项删除,从而得到如图4的中部所示的变量x的访问列表。
参考图4的中部,线程1再次读取变量x的当前头部表项,从该表项的交易队列中获取排在首位的交易D的标识。之后,线程1读取交易D的交易信息x.1,y.1,即交易D以顺序号1访问了变量x、以顺序号1访问了变量y。线程1根据当前的变量信息可确定:变量x的当前头部表项的顺序号为1,与交易D访问变量x的顺序号一致,变量y的当前头部表项的顺序号为0,与交易D访问变量y的顺序号不一致。因此,线程1可确定交易D当前不可执行,即需要等待交易C执行完成之后才可以执行。也就是说,在从节点2中根据变量信息和交易信息实现了串行执行存在变量访问冲突的多个交易,提高了交易执行的正确率。另外,由于交易E在交易队列中排在交易D之后,因此,线程1可确定交易E当前不可执行。线程1在确定交易D和交易E当前不可执行之后,可根据分给线程1的组中其他变量的访问列表获取其他可执行的交易进行交易执行,并在空闲时再次读取变量x的访问列表,以确定交易D是否可以执行。
线程2在执行完成交易C之后,在变量y的访问队列中删除当前的头部表项,得到图4中下部所示的访问队列。
参考图4的下部,线程1再次对变量x的头部表项中的交易进行确定,此时,交易D中的交易信息中的变量x和变量y对应的顺序号与变量信息中的各个变量的头部表项中的顺序号一致,且交易D在变量x的访问列表表项中的交易队列中排在首位、交易D还位 于交易D访问的另一个变量y的访问列表表项的交易集合中(即不涉及交易执行顺序),因此,线程1可确定交易D可执行,并开始执行交易D。线程1在执行完成交易D之后可删除变量x的访问列表的头部表项中的交易D、以及变量y的访问列表的头部表项中的交易D。
线程2可类似地确定变量y的交易队列中的交易是否可执行,由于线程1已经开始执行交易D,因此,线程2可确定交易D不可执行,并继续确定交易E是否可执行。线程2读取交易E的交易信息x.1,y.1,即交易E以顺序号1访问了变量x、以顺序号1访问了变量y。线程2根据当前的变量信息可确定:变量x的当前头部表项的顺序号为1,与交易E访问变量x的顺序号一致,变量y的当前头部表项的顺序号为1,与交易E访问变量y的顺序号一致。线程2继续根据变量x的访问列表可确定交易E在交易队列的非首位的位置(即排在交易D之后),因此可确认交易E当前不可执行。线程2可在交易D执行完成之后执行交易E。
图5为本说明书一实施例中的区块链主节点的架构图,包括:
预执行单元51,用于预执行接收的多个交易,生成多个变量各自的访问列表和各个交易的交易信息,其中,所述访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,所述顺序号与该表项中的交易对该变量的访问顺序对应,所述交易信息包括该交易访问的变量标识和对该变量的访问对应的顺序号;发送单元52,用于将所述多个变量的访问列表和所述多个交易的交易信息发送给所述区块链的从节点。
在一种实施方式中,在所述访问列表中的多个表项中,每两个相邻表项的访问类型包括共享类型和独占类型,所述共享类型的表项中包括读取该变量的一个或多个交易的交易标识,所述独占类型的表项中包括顺序排列的写该变量的一个或多个交易的交易标识。
在一种实施方式中,所述多个交易中包括第一交易,所述第一交易包括对所述第一变量的读操作,所述预执行单元51具体用于:在预执行完成所述第一交易之后,在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为共享类型的情况中,将所述第一交易的标识添加到所述第一表项的交易集合中,将所述第一顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中;
在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为独占类型的情况中,在所述第一访问列表中在所述第一表项之后添加第二表项,所述第二表项包括: 第二顺序号、共享类型、包括第一交易标识的交易集合,将所述第二顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中。
在一种实施方式中,所述多个交易中包括第一交易,所述第一交易包括对所述第一变量的写操作,所述预执行单元51具体用于:
在预执行完成所述第一交易之后,在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为独占类型的情况中,将所述第一交易顺序添加到所述第一表项中的交易队列中,将所述第一顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中;
在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为共享类型的情况中,在所述第一访问列表中在所述第一表项之后添加第二表项,所述第二表项包括:第二顺序号、独占类型、包括第一交易的标识的交易队列,将所述第二顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中。
在一种实施方式中,所述预执行单元51具体用于,基于预执行状态集预执行接收的第一交易,在预执行完成所述第一交易之后,基于所述第一交易的预执行读写集更新所述预执行状态集。
在一种实施方式中,所述第一交易的预执行读写集包括对第一变量的读操作,所述预执行单元具体51用于:确定所述预执行读写集中所述第一变量的值与所述预执行状态集中的所述第一变量的值是否一致,在一致的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集。
图6为本说明书一实施例中的一种区块链从节点的架构图,包括:
接收单元61,用于从所述主节点接收多个变量的访问列表和多个交易的交易信息,所述多个变量访问列表和多个交易的交易信息由主节点预执行所述多个交易之后生成,其中,所述访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,所述顺序号与该表项中的交易对该变量的访问顺序对应,所述交易信息包括该交易访问的变量标识和对该变量的访问对应的顺序号;
执行单元62,用于基于所述多个变量的访问列表和所述多个交易的交易信息执行所述多个交易。
在一种实施方式中,所述执行单元62具体用于:选取第一变量的第一访问列表,所述第一访问列表的当前头部表项包括第一交易的标识;
读取所述第一交易的交易信息,确定所述第一交易访问的多个变量及各个变量对 应的顺序号,所述多个变量中包括所述第一变量;
在确定所述多个变量中的任一变量对应的顺序号与该变量当前的访问列表中的头部表项中的顺序号不一致的情况中,确定所述第一交易不可执行。
在一种实施方式中,所述执行单元62具体用于:
在确定所述多个交易中的第二交易可执行之后,执行所述第二交易,所述第二交易中包括对第二变量的访问;
在所述第二变量的第二访问列表中的当前头部表项中删除所述第二交易。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated  Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实 现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁 磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。

Claims (20)

  1. 一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法包括:
    所述主节点预执行接收的多个交易,生成多个变量各自的访问列表和各个交易的交易信息,其中,所述访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,所述顺序号与该表项中的交易对该变量的访问顺序对应,所述交易信息包括该交易访问的变量标识和对该变量的访问对应的顺序号;
    所述主节点将所述多个变量的访问列表和所述多个交易的交易信息发送给所述从节点;
    所述从节点基于所述多个变量的访问列表和所述多个交易的交易信息执行所述多个交易。
  2. 根据权利要求1所述的方法,其中,在所述访问列表中的多个表项中,每两个相邻表项的访问类型包括共享类型和独占类型,所述共享类型的表项中包括读取该变量的交易集合,所述独占类型的表项中包括写该变量的交易队列,所述交易队列中包括顺序排列的一个或多个交易。
  3. 根据权利要求2所述的方法,所述多个交易中包括第一交易,所述第一交易仅包括对所述第一变量的读操作,所述主节点预执行接收的多个交易,生成多个变量各自的访问列表和各个交易的交易信息包括:
    所述主节点在预执行完成所述第一交易之后,在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为共享类型的情况中,将所述第一交易的标识添加到所述第一表项的交易集合中,将所述第一顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中;
    在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为独占类型的情况中,在所述第一访问列表中在所述第一表项之后添加第二表项,所述第二表项包括:第二顺序号、共享类型、包括第一交易标识的交易集合,将所述第二顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中。
  4. 根据权利要求2所述的方法,所述多个交易中包括第一交易,所述第一交易包括对所述第一变量的写操作,所述主节点预执行接收的多个交易,生成多个变量各自的访问列表和各个交易的交易信息包括:
    所述主节点在预执行完成所述第一交易之后,在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为独占类型的情况中,将所述第一交易顺序添加到所述第一表项中的交易队列中,将所述第一顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中;
    在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为共享类型的情况中,在所述第一访问列表中在所述第一表项之后添加第二表项,所述第二表项包括:第二顺序号、独占类型、包括第一交易的标识的交易队列,将所述第二顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中。
  5. 根据权利要求1或2所述的方法,其中,所述从节点基于所述多个变量的访问列表和所述多个交易的交易信息执行所述多个交易包括:
    所述从节点选取第一变量的第一访问列表,所述第一访问列表的当前头部表项包括第一交易的标识;
    读取所述第一交易的交易信息,确定所述第一交易访问的多个变量及各个变量对应的顺序号,所述多个变量中包括所述第一变量;
    在确定所述多个变量中的任一变量对应的顺序号与该变量当前的访问列表中的头部表项中的顺序号不一致的情况中,确定所述第一交易当前不可执行。
  6. 根据权利要求2或5所述的方法,其中,所述从节点基于所述多个变量的访问列表和所述多个交易的交易信息执行所述多个交易还包括:
    所述从节点选取第二变量的第二访问列表,所述第二访问列表的当前头部表项包括第二交易的标识;
    读取所述第二交易的交易信息,确定所述第二交易访问第三变量,且该次访问对应于所述第三变量的第二顺序号;
    在确定所述第二顺序号与所述第三变量的第三访问列表中的当前头部表项的顺序号一致、且第三访问列表中的当前头部表项的访问类型为独占类型之后,在确定所述第二交易不是第三访问列表中的当前头部表项的交易队列中排在首位的交易时,确定所述第二交易当前不可执行。
  7. 根据权利要求5或6所述的方法,其中,所述从节点基于所述多个变量的访问列表和所述多个交易的交易信息执行所述多个交易还包括:
    在确定所述多个交易中的第四交易可执行之后,执行所述第四交易,所述第四交易中包括对第四变量的访问;
    在所述第四变量的第四访问列表中的当前头部表项中删除所述第四交易。
  8. 根据权利要求3或4所述的方法,所述主节点预执行接收的多个交易包括,所述主节点基于预执行状态集预执行接收的第一交易,在预执行完成所述第一交易之后,基于所述第一交易的预执行读写集更新所述预执行状态集。
  9. 根据权利要求8所述的方法,所述第一交易的预执行读写集包括对第一变量的读操作,所述基于所述第一交易的预执行读写集更新所述预执行状态集包括:确定所述预执行读写集中所述第一变量的值与所述预执行状态集中的所述第一变量的值是否一致,在一致的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集。
  10. 根据权利要求8所述的方法,所述表项中还包括版本号,所述版本号指示变量对应的版本,所述第一交易的预执行读写集包括对第一变量的读操作,所述方法还包括:所述主节点在预执行所述第一交易时,记录所述第一变量的读操作对应的所述第一变量的尾部表项的最新的第一顺序号和第一版本号,所述基于所述第一交易的预执行读写集更新所述预执行状态集包括:确定所述第一顺序号和第一版本号与所述第一变量当前尾部表项的最新的第二顺序号和第二版本号是否一致,在一致的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集。
  11. 一种区块链,包括主节点和从节点,
    所述主节点用于预执行接收的多个交易,生成多个变量各自的访问列表和各个交易的交易信息,其中,所述访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,所述顺序号与该表项中的交易对该变量的访问顺序对应,所述交易信息包括该交易访问的变量标识和对该变量的访问对应的顺序号;将所述多个变量的访问列表和所述多个交易的交易信息发送给所述从节点;
    所述从节点用于基于所述多个变量的访问列表和所述多个交易的交易信息执行所述多个交易。
  12. 一种区块链主节点,包括:
    预执行单元,用于预执行接收的多个交易,生成多个变量各自的访问列表和各个交易的交易信息,其中,所述访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,所述顺序号与该表项中的交易对该变量的访问顺序对应,所述交易信息包括该交易访问的变量标识和对该变量的访问对应的顺序号;
    发送单元,用于将所述多个变量的访问列表和所述多个交易的交易信息发送给所述区块链的从节点。
  13. 根据权利要求12所述的主节点,其中,在所述访问列表中的多个表项中,每两个相邻表项的访问类型包括共享类型和独占类型,所述共享类型的表项中包括读取该变量的一个或多个交易的交易标识,所述独占类型的表项中包括顺序排列的写该变量的一个或多个交易的交易标识。
  14. 根据权利要求13所述的主节点,所述多个交易中包括第一交易,所述第一交易仅包括对所述第一变量的读操作,所述预执行单元具体用于:
    在预执行完成所述第一交易之后,在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为共享类型的情况中,将所述第一交易的标识添加到所述第一表项的交易集合中,将所述第一顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中;
    在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为独占类型的情况中,在所述第一访问列表中在所述第一表项之后添加第二表项,所述第二表项包括:第二顺序号、共享类型、包括第一交易标识的交易集合,将所述第二顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中。
  15. 根据权利要求13所述的主节点,所述多个交易中包括第一交易,所述第一交易包括对所述第一变量的写操作,所述预执行单元具体用于:
    在预执行完成所述第一交易之后,在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为独占类型的情况中,将所述第一交易顺序添加到所述第一表项中的交易队列中,将所述第一顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中;
    在所述第一变量的第一访问列表的作为当前尾部表项的第一表项为共享类型的情况中,在所述第一访问列表中在所述第一表项之后添加第二表项,所述第二表项包括:第二顺序号、独占类型、包括第一交易的标识的交易队列,将所述第二顺序号与所述第一变量的标识关联地记录到所述第一交易的交易信息中。
  16. 根据权利要求14或15所述的主节点,所述预执行单元具体用于,基于预执行状态集预执行接收的第一交易,在预执行完成所述第一交易之后,基于所述第一交易的预执行读写集更新所述预执行状态集。
  17. 根据权利要求16所述的主节点,所述第一交易的预执行读写集包括对第一变 量的读操作,所述预执行单元具体用于:确定所述预执行读写集中所述第一变量的值与所述预执行状态集中的所述第一变量的值是否一致,在一致的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集。
  18. 一种区块链从节点,包括:
    接收单元,用于从所述主节点接收多个变量的访问列表和多个交易的交易信息,所述多个变量访问列表和多个交易的交易信息由主节点预执行所述多个交易之后生成,其中,所述访问列表包括顺序排列的多个表项,每个表项中包括该表项的顺序号、访问该变量的交易标识和访问类型,所述顺序号与该表项中的交易对该变量的访问顺序对应,所述交易信息包括该交易访问的变量标识和对该变量的该次访问对应的顺序号;
    执行单元,用于基于所述多个变量的访问列表和所述多个交易的交易信息执行所述多个交易。
  19. 根据权利要求18所述的从节点,其中,所述执行单元具体用于:
    选取第一变量的第一访问列表,所述第一访问列表的当前头部表项包括第一交易的标识;
    读取所述第一交易的交易信息,确定所述第一交易访问的多个变量及各个变量对应的顺序号,所述多个变量中包括所述第一变量;
    在确定所述多个变量中的任一变量对应的顺序号与该变量当前的访问列表中的头部表项中的顺序号不一致的情况中,确定所述第一交易当前不可执行。
  20. 根据权利要求19所述的从节点,其中,所述执行单元具体用于:
    在确定所述多个交易中的第二交易可执行之后,执行所述第二交易,所述第二交易中包括对第二变量的访问;
    在所述第二变量的第二访问列表中的当前头部表项中删除所述第二交易。
PCT/CN2022/135298 2022-02-25 2022-11-30 执行交易的方法、区块链、主节点和从节点 WO2023160083A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210182800.4A CN114529417A (zh) 2022-02-25 2022-02-25 执行交易的方法、区块链、主节点和从节点
CN202210182800.4 2022-02-25

Publications (1)

Publication Number Publication Date
WO2023160083A1 true WO2023160083A1 (zh) 2023-08-31

Family

ID=81624256

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2022/135298 WO2023160083A1 (zh) 2022-02-25 2022-11-30 执行交易的方法、区块链、主节点和从节点

Country Status (2)

Country Link
CN (1) CN114529417A (zh)
WO (1) WO2023160083A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114529417A (zh) * 2022-02-25 2022-05-24 蚂蚁区块链科技(上海)有限公司 执行交易的方法、区块链、主节点和从节点
CN114936092A (zh) * 2022-05-30 2022-08-23 蚂蚁区块链科技(上海)有限公司 在区块链中执行交易的方法及区块链的主节点
CN115098483A (zh) * 2022-06-29 2022-09-23 蚂蚁区块链科技(上海)有限公司 一种预执行缓存数据清理方法和区块链节点

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210157792A1 (en) * 2019-11-22 2021-05-27 TmaxBI Co., Ltd. Technique for managing data in a blockchain network
CN112887437A (zh) * 2021-04-28 2021-06-01 支付宝(杭州)信息技术有限公司 区块链交易处理方法、区块链节点和区块链
CN113034142A (zh) * 2021-01-29 2021-06-25 腾讯科技(深圳)有限公司 一种交易数据处理方法、装置以及计算机设备
CN113744061A (zh) * 2021-11-04 2021-12-03 支付宝(杭州)信息技术有限公司 一种在区块链中执行交易的方法、区块链、和从节点
CN114529417A (zh) * 2022-02-25 2022-05-24 蚂蚁区块链科技(上海)有限公司 执行交易的方法、区块链、主节点和从节点
CN114547203A (zh) * 2022-02-25 2022-05-27 蚂蚁区块链科技(上海)有限公司 执行交易的方法、区块链、主节点和从节点

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210157792A1 (en) * 2019-11-22 2021-05-27 TmaxBI Co., Ltd. Technique for managing data in a blockchain network
CN113034142A (zh) * 2021-01-29 2021-06-25 腾讯科技(深圳)有限公司 一种交易数据处理方法、装置以及计算机设备
CN112887437A (zh) * 2021-04-28 2021-06-01 支付宝(杭州)信息技术有限公司 区块链交易处理方法、区块链节点和区块链
CN113744061A (zh) * 2021-11-04 2021-12-03 支付宝(杭州)信息技术有限公司 一种在区块链中执行交易的方法、区块链、和从节点
CN114529417A (zh) * 2022-02-25 2022-05-24 蚂蚁区块链科技(上海)有限公司 执行交易的方法、区块链、主节点和从节点
CN114547203A (zh) * 2022-02-25 2022-05-27 蚂蚁区块链科技(上海)有限公司 执行交易的方法、区块链、主节点和从节点

Also Published As

Publication number Publication date
CN114529417A (zh) 2022-05-24

Similar Documents

Publication Publication Date Title
WO2023160083A1 (zh) 执行交易的方法、区块链、主节点和从节点
WO2023160085A1 (zh) 执行交易的方法、区块链、主节点和从节点
CN114827165B (zh) 对多个交易进行分组的方法和区块链节点
WO2023231336A1 (zh) 执行交易的方法和区块链节点
WO2024001024A1 (zh) 在区块链系统中执行交易的方法、区块链系统和节点
US20190199794A1 (en) Efficient replication of changes to a byte-addressable persistent memory over a network
CN113743940A (zh) 在区块链中执行交易的方法、区块链、主节点和从节点
WO2023231335A1 (zh) 在区块链中执行交易的方法及区块链的主节点
WO2023231337A1 (zh) 在区块链中执行交易的方法、区块链的主节点和从节点
CN114936256A (zh) 在区块链中执行交易的方法和区块链节点
WO2024001025A1 (zh) 一种预执行缓存数据清理方法和区块链节点
WO2017020757A1 (en) Rebalancing and elastic storage scheme with elastic named distributed circular buffers
WO2024001032A1 (zh) 在区块链系统中执行交易的方法、区块链系统和节点
US11625192B2 (en) Peer storage compute sharing using memory buffer
WO2024041376A1 (zh) 分布式图数据处理系统、方法、装置、设备及存储介质
US11023493B2 (en) Intelligently scheduling resynchronization jobs in a distributed object-based storage system
WO2023231342A1 (zh) 基于变量状态自动执行合约的方法和装置
WO2023240933A1 (zh) 一种基于区块链的分布式应用部署方法及装置
US11392610B2 (en) Scalable object storage with intelligent replication
CN116032756A (zh) 基于区块链更新应用程序的配置信息的方法和区块链节点
US11340964B2 (en) Systems and methods for efficient management of advanced functions in software defined storage systems
WO2018188416A1 (zh) 一种数据搜索的方法、装置和相关设备
WO2024092932A1 (zh) 交易执行方法和区块链节点
CN116881361A (zh) 交易的执行方法、节点和区块链系统
WO2023241115A1 (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: 22928343

Country of ref document: EP

Kind code of ref document: A1