WO2020169059A1 - 交易替换方法、设备和存储介质 - Google Patents

交易替换方法、设备和存储介质 Download PDF

Info

Publication number
WO2020169059A1
WO2020169059A1 PCT/CN2020/075946 CN2020075946W WO2020169059A1 WO 2020169059 A1 WO2020169059 A1 WO 2020169059A1 CN 2020075946 W CN2020075946 W CN 2020075946W WO 2020169059 A1 WO2020169059 A1 WO 2020169059A1
Authority
WO
WIPO (PCT)
Prior art keywords
transaction
predecessor
pool
type
information
Prior art date
Application number
PCT/CN2020/075946
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 杭州复杂美科技有限公司
Priority to US17/432,076 priority Critical patent/US20220131873A1/en
Publication of WO2020169059A1 publication Critical patent/WO2020169059A1/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/121Timestamp

Definitions

  • This application relates to the field of blockchain technology, in particular to a transaction replacement method, device and storage medium.
  • some institutions have proposed a method of transaction replacement.
  • the transaction before the replacement in the transaction pool is deleted, and the transaction after the replacement is placed in the transaction pool and waiting for packaging; however, there is a certain delay in different nodes in the blockchain. All nodes cannot guarantee a strong synchronization relationship. For example, when node A deletes the transaction before replacement, puts the replaced transaction into the transaction pool and waits for packaging, and then receives the transaction before replacement from node B, node A will Put the transaction before replacement into the transaction pool again and wait for it to be packaged. If both transactions are eventually packaged, it will cause a transaction exception.
  • the present invention provides a transaction replacement method, including:
  • first transaction is the first type of transaction
  • Receive the first confirmation message sent by the user terminal for confirming the first transaction store the first transaction in the transaction pool, and generate the second confirmation message that the first transaction has been confirmed and send it to other nodes in the blockchain; or, Receive the second confirmation signal sent by other nodes of the blockchain, and store the first transaction in the transaction pool;
  • the present invention provides a transaction replacement method, including:
  • first transaction is the first type of transaction
  • the present invention provides a transaction replacement method, including:
  • first transaction is the first type of transaction
  • Receive the third confirmation signal sent by the user terminal for confirming the first transaction store the first transaction in the transaction pool, and generate the fourth confirmation message that the first transaction has been confirmed and send it to other nodes in the blockchain; or, Receive the fourth confirmation signal sent by other nodes of the blockchain, and store the first transaction in the transaction pool;
  • the present invention provides a transaction replacement method, including:
  • first transaction is the first type of transaction
  • the present invention also provides a device that includes one or more processors and a memory, where the memory contains instructions executable by the one or more processors to make the one or more processors execute each of the processors according to the present invention.
  • the transaction replacement method provided by the embodiment.
  • the present invention also provides a storage medium storing a computer program, the computer program causing the computer to execute the transaction replacement method provided according to each embodiment of the present invention.
  • the transaction replacement method, device and storage medium provided by many embodiments of the present invention select the predecessor transaction to be replaced by configuring predecessor transaction information for the transaction to be deposited in the pre-transaction pool.
  • predecessor transaction information for the transaction to be deposited in the pre-transaction pool.
  • Mark the predecessor transaction to be replaced as obsolete and save the transaction in the pre-transaction pool;
  • the confirmation signal of the transaction is received, save the transaction in the transaction pool, and when the transaction is packaged, delete the transaction All the methods of predecessor transactions enable the transaction content to be modified before the transaction enters the trading pool and prevent the return of predecessor transactions;
  • the transaction replacement method, device and storage medium provided by some embodiments of the present invention further determine whether the first address for sending the first transaction is the same as the second address for sending the first predecessor transaction: if yes, the first predecessor transaction is marked as abandoned , And store the first transaction in the pre-transaction pool, so that different users cannot maliciously send the first transaction to replace the first predecessor transaction that does not belong to them, thereby improving the security of the blockchain system and further improving the user experience;
  • the transaction replacement method, device and storage medium provided by some embodiments of the present invention further calculate the number of predecessor transactions owned by the exchange and compare it with the threshold of the number of predecessor transactions pre-configured by the system, if the number of predecessor transactions of the transaction is greater than Pre-configured threshold for the number of predecessor transactions, the method of discarding transactions is to restrict a transaction from having too many predecessor transactions, so as to prevent some malicious users from constantly sending transactions to replace predecessor transactions and causing pre-trading pool congestion, thereby increasing
  • the security of the blockchain system further improves the user experience;
  • the transaction replacement method, device and storage medium provided by some embodiments of the present invention further configure the storage duration threshold of the transaction in the pre-transaction pool; monitor whether the waiting duration of the transaction in the pre-transaction pool exceeds the configured waiting duration threshold: yes, then
  • the method of deleting transactions is to delete the transactions that have been stored for too long in the pre-transaction pool and release the storage space of the pre-transaction pool, thereby improving the security of the blockchain system and further improving the user experience.
  • Fig. 1 is a flowchart of a transaction replacement method provided by an embodiment of the present invention.
  • Fig. 2 is a flowchart of step S15 in a preferred embodiment of the method shown in Fig. 1.
  • Fig. 3 is a flowchart of step S15 in a preferred embodiment of the method shown in Fig. 1.
  • Fig. 4 is a flowchart of step S12 in a preferred embodiment of the method shown in Fig. 1.
  • Fig. 5 is a flowchart of a transaction replacement method provided by an embodiment of the present invention.
  • Fig. 6 is a flowchart of step S211 in a preferred implementation of the method shown in Fig. 5.
  • Fig. 7 is a schematic structural diagram of a device provided by an embodiment of the present invention.
  • Fig. 1 is a flowchart of a transaction replacement method provided by an embodiment of the present invention.
  • the present invention provides a transaction replacement method, including:
  • S12 Receive the first transaction sent by the client, and determine whether the first transaction to be deposited in the pre-transaction pool is the first type of transaction that replaces the predecessor transaction or does not replace the predecessor transaction through whether the first predecessor transaction information of the first transaction is empty
  • the second type of transaction :
  • step S13 deposit the first transaction into the pre-transaction pool
  • step S14 query whether the predecessor transaction of the first transaction is in the pre-transaction pool according to the first predecessor transaction information:
  • step S15 mark the first predecessor transaction as abandoned, and store the first transaction in the pre-transaction pool;
  • S16 Receive the first confirmation information sent by the user terminal for confirming the first transaction, store the first transaction in the transaction pool, and generate the second confirmation information that the first transaction has been confirmed, and send it to other nodes in the blockchain; Or, receive the second confirmation signal sent by other nodes of the blockchain, and store the first transaction in the transaction pool;
  • S18 Query whether there is a previous predecessor transaction according to the predecessor transaction information of the queried transaction, and loop the current step until the predecessor transaction cannot be queried;
  • the first transaction generated and sent by the user is configured with predecessor and discard information of the predecessor;
  • the first predecessor transaction information is the transaction hash of the predecessor transaction of the first transaction, and when the first transaction has no predecessor transaction, the first transaction
  • the predecessor transaction information of a transaction is configured to be empty;
  • the discarded information is used to identify the discarded state of the transaction;
  • the first confirmation information sent by the user to confirm the first transaction is the transaction hash of the first transaction signed by the user, and node A generates The second confirmation information that the first transaction has been confirmed, and the second confirmation information is consistent with the first confirmation information;
  • step S12 node A receives tx_101 sent by user A, and determines whether tx_101 to be deposited in the pre-transaction pool is the first type of transaction that replaces the predecessor transaction or the second type of transaction that does not replace the predecessor through whether the predecessor of tx_101 is empty :
  • step S13 is executed: deposit tx_101 in the pre-transaction pool.
  • step S12 node A receives tx_102 sent by user A, and determines whether tx_102 to be deposited in the pre-transaction pool is the first type of transaction that replaces the predecessor transaction or the second type that does not replace the predecessor transaction through whether tx_102 and the predecessor are empty transaction:
  • step S14 is executed: according to hash(tx_80), query whether tx_80's predecessor transaction tx_80 is in the pre-trading pool:
  • step S15 is executed: mark tx_80 as obsolete, update the discard of tx_80 from false to true, and store tx_102 in the pre-trading pool ;as well as,
  • step S16 node A receives the sig(hash(tx_102)) sent by user A, stores tx_102 in the transaction pool, and generates the second confirmation message that the first transaction has been confirmed, because the second confirmation message and the first confirmation message Consistent, it is also sig(hash(tx_102)), so node A sends sig(hash(tx_102)) to other nodes of the blockchain; or node A receives the second confirmation signal sig sent by other nodes of the blockchain (hash(tx_102)), deposit tx_102 into the transaction pool;
  • step S17 after tx_102 is packaged, node A queries the first predecessor transaction of tx_102 as hash(tx_80) according to hash(tx_80);
  • step S18 node A queries whether the previous predecessor transaction exists according to the predecessor transaction information of the queried transaction, and loops the current step until the predecessor transaction cannot be queried; query whether the previous predecessor exists according to the predecessor of tx_80, the predecessor of tx_80 Is hash(tx_60), the last predecessor transaction of tx_80 is tx_60; according to the predecessor of tx_60, it is checked whether there is a previous predecessor transaction. If no predecessor transaction of tx_60 is found, the cycle ends;
  • step S19 node A deletes tx_80 and tx_60.
  • the principle of preventing transaction back transmission is: when another node of the blockchain, suppose it is node B, due to network delay or other problems, tx_80 is transmitted back to node A; if tx_102 has not been packaged at this time, node A Judging that tx_80 exists in the pre-trading pool, and tx_80 has been marked as obsolete, node A discards the tx_80 returned by node B; if tx_102 is packaged at this time, tx_80 and tx_60 in the pre-transaction pool have been deleted, and node A checks node B Whether it is consistent with its own block height, because node A has packaged tx_102 and node B is still in the stage of returning tx_80, the block height of node A must be greater than that of node B, and node A discards the tx_80 returned by node B .
  • the foregoing embodiment selects the predecessor transaction to be replaced by configuring the predecessor transaction information for the transaction to be deposited in the pre-transaction pool.
  • the predecessor transaction to be replaced is still in the pre-transaction pool, the predecessor transaction to be replaced is marked as abandoned and the The transaction is deposited in the pre-trading pool; when the confirmation signal of the transaction is received, the transaction is deposited in the transaction pool, and when the transaction is packaged, all the predecessor transactions of the transaction are deleted so that the transaction enters the transaction pool
  • the transaction content can be modified before, and the previous transaction can be prevented from being transmitted back.
  • Fig. 2 is a flowchart of step S15 in a preferred embodiment of the method shown in Fig. 1. As shown in FIG. 2, in a preferred embodiment, step S15 includes:
  • step S152 mark the first predecessor transaction as discarded, and store the first transaction in the pre-transaction pool.
  • the first address for sending tx_102 is the same as the second address for sending tx_80;
  • step S151 node A determines whether the first address for sending tx_102 is the same as the second address for sending tx_80:
  • step S152 is executed: tx_80 is marked as obsolete, and tx_102 is stored in the pre-transaction pool.
  • the foregoing embodiment prevents different users from maliciously sending the first transaction to replace the first predecessor transaction that does not belong to them, thereby improving the security of the blockchain system and further improving the user experience.
  • Fig. 3 is a flowchart of step S15 in a preferred embodiment of the method shown in Fig. 1. As shown in FIG. 3, in a preferred embodiment, step S15 includes:
  • S153 Query whether there is a previous predecessor transaction according to the predecessor transaction information of the queried transaction, and loop the current step until the predecessor transaction cannot be queried;
  • execute S157 mark the first predecessor transaction as abandoned, and store the first transaction in the pre-transaction pool;
  • the threshold of the number of pre-configured predecessor transactions is 3;
  • step S153 node A queries whether the previous predecessor transaction exists according to the predecessor transaction information of the queried transaction, and loops the current step until the predecessor transaction cannot be queried; according to the predecessor of tx_80, it queries whether the previous predecessor exists, the predecessor of tx_80 Is hash(tx_60), the last predecessor transaction of tx_80 is tx_60; according to the predecessor of tx_60, it is checked whether there is a previous predecessor transaction. If no predecessor transaction of tx_60 is found, the cycle ends;
  • step S154 the number of each predecessor transaction is counted, and one is added to calculate the first total.
  • the number of predecessor transactions is 1, and one is added to calculate the first total to 2.
  • step S155 it is judged whether the first sum is greater than the pre-configured threshold of the number of predecessor transactions:
  • the threshold of the number of predecessor transactions can also be configured to other values according to actual needs, such as ,
  • the configuration is 5, the configuration is 0 or a negative number (except for the first predecessor transaction, no additional predecessor transactions are allowed), the same technical effect can be achieved.
  • the foregoing embodiment restricts a transaction from having too many predecessor transactions, so as to prevent some malicious users from constantly sending transactions to replace predecessor transactions to cause congestion in the pre-transaction pool, thereby improving the security of the blockchain system and further improving user experience.
  • Fig. 4 is a flowchart of step S12 in a preferred embodiment of the method shown in Fig. 1. As shown in FIG. 4, in a preferred embodiment, step S12 includes:
  • S122 Determine whether the total number of transactions in the pre-trading pool is less than the threshold for depositing transactions in the pre-trading pool:
  • node A receives tx_101 and tx_102 successively.
  • the total number of transactions in the pre-transaction pool is less than the threshold for depositing transactions in the pre-transaction pool.
  • node A receives tx_102 the total number of transactions in the pre-transaction pool is not Less than the threshold for depositing transactions in the pre-trading pool;
  • step S122 node A judges whether the total number of transactions in the pre-transaction pool is less than the threshold for depositing transactions in the pre-transaction pool:
  • the threshold for depositing transactions in the pre-transaction pool can be configured according to actual needs, and the same technical effect can be achieved.
  • a first threshold of the storage duration of transactions in the pre-transaction pool is configured; monitoring whether the waiting time of transactions in the pre-transaction pool exceeds the first threshold: yes, delete the transaction.
  • the waiting time of the transaction in the pre-trading pool is the time when the transaction enters the pre-trading pool, it is assumed that the waiting time of tx_1 in advance exceeds 10 minutes. ;
  • the waiting time for node A to monitor tx_1 exceeds 10 minutes, and node A deletes tx_1.
  • the waiting time of the transaction in the pre-transaction pool is from the time the transaction enters the pre-transaction pool to the time the transaction enters the pre-transaction pool plus 10 minutes.
  • the first threshold of the storage duration of the transaction in the pre-trading pool is 10 minutes
  • the waiting time of the transaction in the pre-trading pool is the time when the transaction enters the pre-trading pool.
  • the first threshold can also be configured according to actual needs, for example, 5 minutes; the waiting time of the transaction in the pre-transaction pool is configured to start timing when the transaction is received by the node, etc., to achieve the same technical effect.
  • the foregoing embodiment deletes transactions that are stored for too long in the pre-transaction pool and releases the storage space of the pre-transaction pool, thereby improving the security of the blockchain system and further improving the user experience.
  • a transaction replacement method provided by an embodiment of the present invention includes:
  • first transaction is the first type of transaction
  • Fig. 5 is a flowchart of a transaction replacement method provided by an embodiment of the present invention. As shown in Figure 5, in this embodiment, the present invention provides a transaction replacement method, including:
  • S202 Receive the first transaction sent by the client, and determine whether the first transaction to be deposited in the pre-transaction pool is the first type of transaction that replaces the predecessor transaction or does not replace the predecessor transaction by determining whether the first predecessor transaction information of the first transaction is empty
  • the second type of transaction :
  • step S203 deposit the first transaction into the pre-trading pool
  • step S204 query whether the predecessor transaction of the first transaction is in the pre-transaction pool according to the first predecessor transaction information:
  • step S205 deposit the first transaction into the pre-transaction pool
  • S206 Receive a third confirmation signal for confirming the first transaction sent by the user terminal, store the first transaction in the transaction pool, and generate fourth confirmation information that the first transaction has been confirmed and send it to other nodes in the blockchain; Or, receive the fourth confirmation signal sent by other nodes of the blockchain, and store the first transaction in the transaction pool;
  • S207 Determine whether the first predecessor transaction information of the first transaction is empty to determine whether the first transaction to be packaged is the first type of transaction that replaces the predecessor transaction or the second type of transaction that does not replace the predecessor transaction:
  • step S208 package the first transaction
  • step S209 query the first predecessor transaction of the first transaction according to the first predecessor transaction information
  • S210 Query whether there is a previous predecessor transaction according to the predecessor transaction information of the queried transaction, and loop the current step until the predecessor transaction is not found;
  • the first transaction generated and sent by the user is configured with predecessor of the predecessor; the first predecessor is the transaction hash of the predecessor of the first transaction.
  • the predecessor of the first transaction The transaction information configuration is empty; the third confirmation information sent by the user to confirm the first transaction is the transaction hash of the first transaction signed by the user.
  • Node A generates the fourth confirmation information that the first transaction has been confirmed, and the fourth confirmation The information is consistent with the third confirmation information;
  • the second confirmation message is the same as the first confirmation
  • the information is consistent, also sig(hash(tx_301)); after user A sends tx_302, he thinks that tx_280 is correct, and user A confirms that tx_280 is correct, and sends sig(hash(tx_280)) to node A of the blockchain.
  • the second confirmation information is consistent with the first confirmation information, which is also sig(hash(tx_280));
  • step S202 node A receives tx_301 sent by user A, and determines whether tx_301 to be deposited in the pre-transaction pool is the first type of transaction that replaces the predecessor transaction or the second type of transaction that does not replace the predecessor through whether the predecessor of tx_301 is empty :
  • step S203 is executed: deposit tx_301 in the pre-transaction pool;
  • step S206 node A receives the sig(hash(tx_301)) sent by user A, stores the first transaction in the transaction pool, and generates the fourth confirmation message that the first transaction has been confirmed and sends it to other nodes in the blockchain , Because the fourth confirmation information is consistent with the third confirmation information, which is also sig(hash(tx_301)), node A sends sig(hash(tx_301)) to other nodes in the blockchain; or node A receives the block The fourth confirmation signal sig(hash(tx_301)) sent by other nodes of the chain will store tx_301 in the transaction pool;
  • step S207 node A determines whether the predecessor of tx_301 is empty to determine whether the tx_301 to be packaged is the first type of transaction that replaces the predecessor transaction or the second type of transaction that does not replace the predecessor transaction:
  • step S208 is executed: packaging tx_301.
  • step S202 node A receives tx_302 sent by user A, and determines whether tx_302 to be deposited in the pre-transaction pool is the first type of transaction that replaces the predecessor transaction or the second type of transaction that does not replace the predecessor through whether the predecessor of tx_302 is empty :
  • step S204 is executed: according to the hash (tx_280), query whether the predecessor tx_280 of tx_302 is in the pre-transaction pool:
  • step S205 store tx_302 in the pre-trading pool
  • step S206 node A receives the sig(hash(tx_280)) sent by user A, stores tx_280 in the transaction pool, and generates the fourth confirmation message that the first transaction has been confirmed and sends it to other nodes in the blockchain.
  • the fourth confirmation information is consistent with the third confirmation information, which is also sig(hash(tx_280)), so node A sends sig(hash(tx_280)) to other nodes in the blockchain; or, node A receives the blockchain’s
  • the fourth confirmation signal sig(hash(tx_280)) sent by other nodes will store tx_280 in the transaction pool;
  • step S207 node A determines whether the first transaction to be packaged is the first type of transaction that replaces the predecessor transaction or the second type of transaction that does not replace the predecessor of the tx_280 predecessor:
  • step S209 is executed: query the first predecessor of tx_280 as tx_260 according to hash(tx_260);
  • step S210 node A queries whether the previous predecessor transaction exists according to the predecessor transaction information of the queried transaction, and loops the current step until the predecessor transaction cannot be queried; according to the predecessor of tx_260, it queries whether the previous predecessor transaction exists, and the query cannot be found The predecessor transaction of tx_260, the cycle ends;
  • step S211 node A deletes tx_260 and packs the first transaction.
  • the principle of preventing transaction return is: when another node of the blockchain, suppose it is node B, due to network delay or other problems, tx_260 is returned to node A; if tx_280 has not been packaged at this time, node A Judging that there is tx_260 in the pre-transaction pool, node A discards the tx_260 returned by node B; if tx_280 is packaged at this time, tx_260 in the pre-transaction pool has been deleted, and node A checks whether the block height of node B and its own are consistent, because Node A has packaged tx_280, and node B is still in the stage of returning tx_260. The block height of node A must be greater than that of node B, and node A discards the tx_260 returned by node B.
  • the first transaction sent by the client is received, and whether the first predecessor transaction information of the first transaction is empty to determine whether the first transaction to be deposited in the pre-transaction pool is the first type of transaction that replaces the predecessor transaction or not.
  • the second type of transaction of the predecessor transaction if the first transaction is the second type of transaction, the first transaction is stored in the pre-trading pool; if the first transaction is the first type of transaction, the first transaction is inquired based on the first predecessor transaction information Whether the predecessor transaction of is in the pre-transaction pool: Yes, deposit the first transaction in the pre-transaction pool; receive the third confirmation signal sent by the client to confirm the first transaction, and deposit the first transaction in the transaction pool, And generate the fourth confirmation message that the first transaction has been confirmed and send it to other nodes of the blockchain; or, receive the fourth confirmation signal sent by other nodes of the blockchain, and store the first transaction in the transaction pool; pass the first Whether the first predecessor transaction information of the transaction is empty.
  • first transaction to be packaged is the first type of transaction that replaces the predecessor transaction or the second type of transaction that does not replace the predecessor transaction: if the first transaction is the second type of transaction, pack the first transaction A transaction; if the first transaction is the first type of transaction, query the first predecessor transaction of the first transaction according to the first predecessor transaction information; query whether the previous predecessor transaction exists according to the predecessor transaction information of the queried transaction, and cycle the current Steps until the predecessor transaction cannot be queried; delete the first predecessor transaction and each queried predecessor transaction, and pack the method of the first transaction, so that the transaction content can be modified before the transaction enters the transaction pool, and the transaction can be prevented from being transmitted back, and the user can Selectively specify transactions that need to be confirmed to further improve user experience.
  • step S211 includes:
  • step S2114 calculate the transaction hash according to the queried transaction, and query whether there is a subsequent subsequent transaction based on the calculated transaction hash, and loop the current step until no subsequent transaction is queried;
  • the predecessor transaction information of the first subsequent transaction is consistent with the first transaction hash.
  • step S2112 node A deletes tx_260;
  • step S2113 node A calculates the transaction hash of tx_280 to obtain hash(tx_280), and queries whether there is a subsequent transaction of tx_280 according to hash(tx_280):
  • step S2114 is executed to query whether there is a subsequent subsequent transaction according to the calculated transaction hash, and the current step is looped until no subsequent transaction is queried;
  • node A calculates the transaction hash of tx_302 and obtains hash (tx_302). According to the hash (tx_302), no subsequent transactions of tx_302 are found, and the cycle ends;
  • step S2115 node A deletes tx_302 and packs tx_280.
  • depositing the first transaction into the pre-transaction pool includes:
  • depositing the first transaction in the pre-transaction pool includes:
  • the first transaction sent by the user terminal is received, and the first transaction to be deposited in the pre-transaction pool is determined by whether the first predecessor transaction information of the first transaction is empty is the first type of transaction that replaces the predecessor transaction Or the second type of transaction that does not replace the predecessor transaction, also includes:
  • a first threshold of the storage duration of transactions in the pre-transaction pool is configured; monitoring whether the waiting time of transactions in the pre-transaction pool exceeds the first threshold: yes, delete the transaction.
  • the waiting time of the transaction in the pre-trading pool is the time when the transaction enters the pre-trading pool, it is assumed that the waiting time of tx_201 exceeds 10 minutes. ;
  • Node A monitors tx_201 for more than 10 minutes, and node A deletes tx_201.
  • the waiting time of the transaction in the pre-transaction pool is from the time the transaction enters the pre-transaction pool to the time the transaction enters the pre-transaction pool plus 10 minutes.
  • a transaction replacement method provided by an embodiment of the present invention includes:
  • first transaction is the first type of transaction
  • Fig. 7 is a schematic structural diagram of a device provided by an embodiment of the present invention.
  • the present application also provides a device 700, including one or more central processing units (CPU) 701, which can be based on a program stored in a read-only memory (ROM) 702 or The program loaded from the storage section 708 into the random access memory (RAM) 703 executes various appropriate actions and processing. In the RAM 703, various programs and data necessary for the operation of the device 700 are also stored.
  • the CPU 701, the ROM 702, and the RAM 703 are connected to each other through a bus 704.
  • An input/output (I/O) interface 705 is also connected to the bus 704.
  • the following components are connected to the I/O interface 705: an input part 706 including a keyboard, a mouse, etc.; an output part 707 including a cathode ray tube (CRT), a liquid crystal display (LCD), etc., and speakers, etc.; a storage part 708 including a hard disk, etc. ; And the communication section 709 including a network interface card such as a LAN card, a modem, etc. The communication section 709 performs communication processing via a network such as the Internet.
  • the drive 710 is also connected to the I/O interface 705 as needed.
  • a removable medium 711 such as a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory, etc., is installed on the drive 710 as needed, so that the computer program read therefrom is installed into the storage section 708 as needed.
  • the transaction replacement method described in any of the above embodiments can be implemented as a computer software program.
  • an embodiment of the present disclosure includes a computer program product, which includes a computer program tangibly embodied on a machine-readable medium, the computer program including program code for executing a transaction replacement method.
  • the computer program may be downloaded and installed from the network through the communication part 709, and/or installed from the removable medium 711.
  • the present application also provides a computer-readable storage medium.
  • the computer-readable storage medium may be the computer-readable storage medium included in the device of the above-mentioned embodiment; or it may exist alone without being installed in The computer-readable storage medium in the device.
  • the computer-readable storage medium stores one or more programs, and the programs are used by one or more processors to execute the transaction replacement method described in this application.
  • each block in the flowchart or block diagram can represent a module, program segment, or part of code, and the module, program segment, or part of code contains one or more for realizing the specified logical function Executable instructions.
  • the functions marked in the block may also occur in a different order from the order marked in the drawings. For example, two blocks shown in succession can actually be executed substantially in parallel, and they can sometimes be executed in the reverse order, depending on the functions involved.
  • each block in the block diagram and/or flowchart, and the combination of the blocks in the block diagram and/or flowchart can be implemented by a dedicated hardware-based system that performs the specified functions or operations Or it can be realized by a combination of dedicated hardware and computer instructions.
  • the units or modules involved in the embodiments described in the present application can be implemented in software or hardware.
  • the described units or modules may also be arranged in the processor.
  • each of the described units may be a software program arranged in a computer or a mobile smart device, or may be a separately configured hardware device.
  • the names of these units or modules do not constitute a limitation on the units or modules themselves under certain circumstances.

Abstract

本发明提供一种交易替换方法、设备和存储介质,该方法包括:通过为待存入预先交易池的交易配置前身交易信息选择要替换的前身交易,当要替换的前身交易仍在预先交易池中时,将要替换的前身交易标记为废弃,并将该交易存入预先交易池;当接收到该交易的确认信号时,将该交易存入交易池,以及,当该交易被打包时,删除该交易的所有前身交易。本发明使得该交易进入交易池前可修改交易内容,且防止前身交易回传。

Description

交易替换方法、设备和存储介质 技术领域
本申请涉及区块链技术领域,具体涉及一种交易替换方法、设备和存储介质。
背景技术
在区块链交易过程中,用户发送交易时需要填写发送方地址、接收方地址、交易数量等信息来进行交易。在现有的方案中,这些信息需要在交易提交前确定,交易一旦提交后就无法更改交易信息,用户在误操作后可能会造成不可挽回的损失;
针对上述问题,一些机构提出了交易替换的方法,将交易池中的替换前的交易删除,将替换后的交易放入交易池并等待打包;但是区块链中不同节点存在一定的延时,所有的节点无法保证强同步关系,例如,当节点A删除替换前的交易,将替换后的交易放入交易池并等待打包后,又收到节点B回传的替换前的交易,节点A会将替换前的交易又一次放入交易池并等待打包,若两笔交易最终都被打包,则造成交易异常。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种交易进入交易池前可修改交易内容,且防止交易回传的交易替换方法、设备和存储介质。
第一方面,本发明提供一种交易替换方法,包括:
接收用户端发送的第一交易,并通过第一交易的第一前身交易信息是否为空确定待存入预先交易池的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则将第一交易存入预先交易池;
若第一交易为第一类交易,则根据第一前身交易信息查询第一交易的前身交易是否在预先交易池中:
是,则将第一前身交易标记为废弃,并将第一交易存入预先交易池中;以及,
接收用户端发送的用于确认第一交易的第一确认信息,将第一交易存入交易池,并生成第一交易已确认的第二确认信息并发送至区块链的其它节点;或,接收区块链的其它节点发送的第二确认信号,将第一交易存入交易池;
在第一交易被打包后,根据第一前身交易信息查询第一交易的第一前身交易;
根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
删除第一前身交易及各查询到的前身交易。
第二方面,本发明提供一种交易替换方法,包括:
生成第一交易并发送至区块链的节点,以供区块链的节点接收第一交易,并通过第一交易的第一前身交易信息是否为空确定待存入预先交易池的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则将第一交易存入预先交易池;
若第一交易为第一类交易,则根据第一前身交易信息查询第一交易的前身交易是否在预先交易池中:
是,则将第一前身交易标记为废弃,并将第一交易存入预先交易池中;以及,
向区块链的节点发送用于确认第一交易的第一确认信息,以供区块链的节点接收第一确认信息,将第一交易存入交易池,并生成第一交易已确认的第二确认信息并发送至区块链的其它节点;
在第一交易被打包后,根据第一前身交易信息查询第一交易的第一前身交易;
根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
删除第一前身交易及各查询到的前身交易。
第三方面,本发明提供一种交易替换方法,包括:
接收用户端发送的第一交易,并通过第一交易的第一前身交易信息是否为空确定待存入预先交易池的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则将第一交易存入预先交易池;
若第一交易为第一类交易,则根据第一前身交易信息查询第一交易的前身交易是否在预先交易池中:
是,则将第一交易存入预先交易池中;
接收用户端发送的用于确认第一交易的第三确认信号,将第一交易存入交易池,并生成第一交易已确认的第四确认信息并发送至区块链的其它节点;或,接收区块链的其它节点发送的第四确认信号,将第一交易存入交易池;
通过第一交易的第一前身交易信息是否为空确定待打包的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则打包第一交易;
若第一交易为第一类交易,则根据第一前身交易信息查询第一交易的第一前身交易;
根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
删除第一前身交易及各查询到的前身交易,并打包第一交易。
第四方面,本发明提供一种交易替换方法,包括:
生成第一交易并发送至区块链的节点,以供区块链的节点接收第一交易,并通过第一交易的第一前身交易信息是否为空确定待存入预先交易池的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则将第一交易存入预先交易池;
若第一交易为第一类交易,则根据第一前身交易信息查询第一交易的前身交易是否在预先交易池中:
是,则将第一交易存入预先交易池中;
向区块链的节点发送用于确认第一交易的第三确认信号,以供区块链的节点接收第三确认信号,将第一交易存入交易池,并生成第一交易已确认的第四确认信息并发送至区块链的其它节点,并通过第一交易的第一前身交易信息是否为空确定待打包的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则打包第一交易;
若第一交易为第一类交易,则根据第一前身交易信息查询第一交易的前身交易;
根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
删除第一前身交易及各查询到的前身交易,并打包述第一交易。
第五方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的交易替换方法。
第六方面,本发明还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本发明各实施例提供的交易替换方法。
本发明诸多实施例提供的交易替换方法、设备和存储介质通过为待存入预先交易池的交易配置前身交易信息选择要替换的前身交易,当要替换的前身交易仍在预先交易池中时,将要替换的前身交易标记为废弃,并将该交易存入预先交易池;当接收到该交易的确认信号时,将该交易存入交易池,以及,当该交易被打包时,删除该交易的所有前身交易的方法,使得该交易进入交易池前可修改交易内容,且防止前身交易回传;
本发明一些实施例提供的交易替换方法、设备和存储介质进一步通过判断发送第一交易的第一地址与发送第一前身交易的第二地址是否相同:是,则将第一前身交易标记为废弃,并将第一交易存入预先交易池中的方法,使得不同的用户不能恶意发送第一交易替换不属于自己的第一前身交易,从而提高区块链系统的安全性,进一步改善用户体验;
本发明一些实施例提供的交易替换方法、设备和存储介质进一步通过计算交易所拥有的前身交易的数量,并与系统预配置的前身交易的数量的阈值进行比较,若交易的前身交易的数量大于预配置的前身交易的数量的阈值,则丢弃交易的方法,以约束一笔交易不能存在过多的前身交易,以防止某些恶意用户不停发送交易替换前身交易造成预先交易池拥堵,从而提高区块链系统的安全性,进一步改善用户体验;
本发明一些实施例提供的交易替换方法、设备和存储介质进一步通过配置预先交易池中交易的存放时长的阈值;监测预先交易池的交易的等待时长是否超过配置的等待时长的阈值:是,则删除交易的方法,删除预先交易池中存放时长过长的交易,释放预先交易池的存储空间,从而提高区块链系统的安全性,进一步改善用户体验。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例提供的一种交易替换方法的流程图。
图2为图1所示方法的一种优选实施方式中步骤S15的流程图。
图3为图1所示方法的一种优选实施方式中步骤S15的流程图。
图4为图1所示方法的一种优选实施方式中步骤S12的流程图。
图5为本发明一实施例提供的一种交易替换方法的流程图。
图6为图5所示方法的一种优选实施方式中步骤S211的流程图。
图7为本发明一实施例提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例 中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1为本发明一实施例提供的一种交易替换方法的流程图。
如图1所示,在本实施例中,本发明提供一种交易替换方法,包括:
S12:接收用户端发送的第一交易,并通过第一交易的第一前身交易信息是否为空确定待存入预先交易池的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则执行步骤S13:将第一交易存入预先交易池;
若第一交易为第一类交易,则执行步骤S14:根据第一前身交易信息查询第一交易的前身交易是否在预先交易池中:
是,则执行步骤S15:将第一前身交易标记为废弃,并将第一交易存入预先交易池中;以及,
S16:接收用户端发送的用于确认第一交易的第一确认信息,将第一交易存入交易池,并生成第一交易已确认的第二确认信息并发送至区块链的其它节点;或,接收区块链的其它节点发送的第二确认信号,将第一交易存入交易池;
S17:在第一交易被打包后,根据第一前身交易信息查询第一交易的第一前身交易;
S18:根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
S19:删除第一前身交易及各查询到的前身交易。
具体地,用户生成并发送的第一交易配置有前身交易信息predecessor及废弃信息discard;第一前身交易信息为第一交易的前身交易的交易哈希,当第一交易没有前身交易时,该第一交易的前身交易信息配置为空;废弃信息用于标识交易的废弃状态;用户发送的用于确认第一交易的第一确认信息为经用户签名的第一交易的交易哈希,节点A生成第一交易已确认的第二确认信息,第二确认信息与第一确认信息一致;
以废弃状态为false时表示交易未废弃,废弃状态为true时表示交易废弃为例;假设当前预先交易池中有100笔交易tx_1~tx_100,交易池中没有交易;用户甲生成tx_101及tx_102,并发送至区块链的节点A;其中,tx_101的predecessor为空,tx_102的predecessor为hash(tx_80),tx_80的predecessor为hash(tx_60),tx_60的predecessor为空;用户甲确认tx_102无误后,向区块链的节点A发送sig(hash(tx_102)),第二确认信息与第一确认信息一致,也为sig(hash(tx_102));
用户甲生成tx_101及tx_102,并发送至区块链的节点A;
当节点A接收到tx_101时:
在步骤S12中,节点A接收用户甲发送的tx_101,并通过tx_101的predecessor是否为空确定待存入预先交易池的tx_101是替换前身交易的第一类交易或不替换前身交易的第二类交易:
由于tx_101的predecessor为空,tx_101为第二类交易,则执行步骤S13:将tx_101存入预先交易池。
当节点A接收到tx_102时:
在步骤S12中,节点A接收用户甲发送的tx_102,并通过tx_102及的predecessor是否为空确定待存入预先交易池的tx_102是替换前身交易的第一类交易或不替换前身交易的第二类交易:
由于tx_102的predecessor为hash(tx_80),tx_102为第一类交易,则执行步骤S14:根据hash(tx_80)查询tx_102的前身交易tx_80是否在预先交易池中:
由于当前预先交易池中有100笔交易tx_1~tx_100,tx_80在预先交易池中,则执行步骤S15:将tx_80标记为废弃,tx_80的discard由false更新为true,并将tx_102存入预先交易池中;以及,
在步骤S16中,节点A接收用户甲发送的sig(hash(tx_102)),将tx_102存入交易池,并生成第一交易已确认的第二确认信息,由于第二确认信息与第一确认信息一致,也为sig(hash(tx_102)),因此节点A将sig(hash(tx_102))发送至区块链的其它节点;或,节点A接收区块链的其它节点发送的第二确认信号sig(hash(tx_102)),将tx_102存 入交易池;
在步骤S17中,节点A在tx_102被打包后,根据hash(tx_80)查询tx_102的第一前身交易为hash(tx_80);
在步骤S18中,节点A根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;根据tx_80的predecessor查询是否存在上一个前身交易,tx_80的predecessor为hash(tx_60),tx_80的上一个前身交易为tx_60;又根据tx_60的predecessor查询是否存在上一个前身交易,查询不到tx_60的前身交易,循环结束;
在步骤S19中,节点A删除tx_80及tx_60。
防止交易回传的原理为:当区块链的另一节点,假设为节点B,由于网络延时或其它问题,将tx_80回传给节点A;若此时tx_102还未被打包,则节点A判断,预先交易池中存在tx_80,且tx_80已标记为废弃,节点A丢弃节点B回传的tx_80;若此时tx_102被打包,预先交易池中的tx_80及tx_60都已删除,节点A检查节点B与自己的区块高度是否一致,由于节点A已打包tx_102,而节点B仍处于回传tx_80阶段,节点A的区块高度必然大于节点B的区块高度,节点A丢弃节点B回传的tx_80。
上述实施例通过为待存入预先交易池的交易配置前身交易信息选择要替换的前身交易,当要替换的前身交易仍在预先交易池中时,将要替换的前身交易标记为废弃,并将该交易存入预先交易池;当接收到该交易的确认信号时,将该交易存入交易池,以及,当该交易被打包时,删除该交易的所有前身交易的方法,使得该交易进入交易池前可修改交易内容,且防止前身交易回传。
图2为图1所示方法的一种优选实施方式中步骤S15的流程图。如图2所示,在一优选实施例中,步骤S15包括:
S151:判断发送第一交易的第一地址与发送第一前身交易的第二地址是否相同:
是,则执行步骤S152:将第一前身交易标记为废弃,并将第一交易存入预先交易池中。
具体地,假设发送tx_102的第一地址与发送tx_80的第二地址相同;
当节点A接收到tx_102时:
在步骤S151中,节点A判断发送tx_102的第一地址与发送tx_80的第二地址是否相同:
由于发送tx_102的第一地址与发送tx_80的第二地址相同,则执行步骤S152:将tx_80标记为废弃,并将tx_102存入预先交易池中。
上述实施例使得不同的用户不能恶意发送第一交易替换不属于自己的第一前身交易,提高区块链系统的安全性,进一步改善用户体验。
图3为图1所示方法的一种优选实施方式中步骤S15的流程图。如图3所示,在一优选实施例中,步骤S15包括:
S153:根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
S154:对各前身交易的数量进行计数,并加一计算第一总和;
S155:判断第一总和是否大于预配置的前身交易的数量的阈值:
否,则执行S157:将第一前身交易标记为废弃,并将第一交易存入预先交易池中;
是,则执行S156:丢弃第一交易。
具体地,假设预配置的前身交易的数量的阈值为3;
在步骤S153中,节点A根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;根据tx_80的predecessor查询是否存在上一个前身交易,tx_80的predecessor为hash(tx_60),tx_80的上一个前身交易为tx_60;又根据tx_60的predecessor查询是否存在上一个前身交易,查询不到tx_60的前身交易,循环结束;
在步骤S154中,对各前身交易的数量进行计数,并加一计算第一总和,前身交易的数量为1,加一计算第一总和为2;
在步骤S155中,判断第一总和是否大于预配置的前身交易的数量的阈值:
由于2不大于3,执行S157:将tx_80标记为废弃,并将tx_102 存入预先交易池中。
上述实施例以预配置的前身交易的数量的阈值为3为例对本实施例进行了阐述,在更多实施例中,还可以根据实际需求,将前身交易的数量的阈值配置为其它数值,例如,配置为5,配置为0或负数(除了第一前身交易外不允许有额外的前身交易),可实现相同的技术效果。
上述实施例约束一笔交易不能存在过多的前身交易,以防止某些恶意用户不停发送交易替换前身交易造成预先交易池拥堵,从而提高区块链系统的安全性,进一步改善用户体验。
图4为图1所示方法的一种优选实施方式中步骤S12的流程图。如图4所示,在一优选实施例中,步骤S12包括:
S122:判断预先交易池中的交易总数是否小于预先交易池中存放交易的阈值:
否,则执行S124:丢弃所述第一交易。
具体地,假设节点A先后接收到tx_101及tx_102,节点A接收tx_101时,预先交易池中的交易总数小于预先交易池中存放交易的阈值,节点A接收tx_102时,预先交易池中的交易总数不小于预先交易池中存放交易的阈值;
当节点A接收到tx_102时:
在步骤S122中,节点A判断预先交易池中的交易总数是否小于预先交易池中存放交易的阈值:
否,则执行S124,丢弃tx_102。
在更多实施例中,可根据实际需求配置预先交易池中存放交易的阈值,可实现相同的技术效果。
在一优选实施例中,配置预先交易池中交易的存放时长的第一阈值;监测预先交易池的交易的等待时长是否超过所述第一阈值:是,则删除该交易。
具体地,以预先交易池中交易的存放时长的第一阈值为10分钟,预先交易池中交易的等待时长为该交易进入预先交易池时开始计时为例,假设预先tx_1的等待时长超过10分钟;
节点A监测tx_1的等待时长超过10分钟,节点A删除tx_1。
在上述实施例中,当节点A接收到一笔交易,该交易在预先交易池中的等待时长为该交易进入预先交易池的时刻起至该交易进入预先交易池的时刻起加上10分钟结束。
上述实施例以预先交易池中交易的存放时长的第一阈值为10分钟,预先交易池中交易的等待时长为该交易进入预先交易池时开始计时为例对本实施例进行了阐述,在更多实施例中,还可以根据实际需求配置第一阈值,例如,5分钟;将预先交易池中交易的等待时长配置为该交易被节点接收的时刻开始计时等,可实现相同的技术效果。
上述实施例删除预先交易池中存放时长过长的交易,释放预先交易池的存储空间,从而提高区块链系统的安全性,进一步改善用户体验。
在本实施例中,本发明一实施例提供的一种交易替换方法,包括:
生成第一交易并发送至区块链的节点,以供区块链的节点接收第一交易,并通过第一交易的第一前身交易信息是否为空确定待存入预先交易池的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则将第一交易存入预先交易池;
若第一交易为第一类交易,则根据第一前身交易信息查询第一交易的前身交易是否在预先交易池中:
是,则将第一前身交易标记为废弃,并将第一交易存入预先交易池中;以及,
向区块链的节点发送用于确认第一交易的第一确认信息,以供区块链的节点接收第一确认信息,将第一交易存入交易池,并生成第一交易已确认的第二确认信息并发送至区块链的其它节点;
在第一交易被打包后,根据第一前身交易信息查询第一交易的第一前身交易;
根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
删除第一前身交易及各查询到的前身交易。
上述实施例的交易替换原理可参考图1所示的方法,此处不再赘述。
图5为本发明一实施例提供的一种交易替换方法的流程图。如图5所示,在本实施例中,本发明提供一种交易替换方法,包括:
S202:接收用户端发送的第一交易,并通过第一交易的第一前身交易信息是否为空确定待存入预先交易池的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则执行步骤S203:将第一交易存入预先交易池;
若第一交易为第一类交易,则执行步骤S204:根据第一前身交易信息查询第一交易的前身交易是否在预先交易池中:
是,则执行步骤S205:将第一交易存入预先交易池中;
S206:接收用户端发送的用于确认第一交易的第三确认信号,将第一交易存入交易池,并生成第一交易已确认的第四确认信息并发送至区块链的其它节点;或,接收区块链的其它节点发送的第四确认信号,将第一交易存入交易池;
S207:通过第一交易的第一前身交易信息是否为空确定待打包的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则执行步骤S208:打包第一交易;
若第一交易为第一类交易,则执行步骤S209:根据第一前身交易信息查询第一交易的第一前身交易;
S210:根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
S211:删除第一前身交易及各查询到的前身交易,并打包第一交易。
具体地,用户生成并发送的第一交易配置有前身交易信息predecessor;第一前身交易信息为第一交易的前身交易的交易哈希,当第一交易没有前身交易时,该第一交易的前身交易信息配置为空;用户发送的用于确认第一交易的第三确认信息为经用户签名的第一交 易的交易哈希,节点A生成第一交易已确认的第四确认信息,第四确认信息与第三确认信息一致;
假设当前预先交易池中有100笔交易tx_201~tx_300,交易池中没有交易;用户甲生成tx_301及tx_302,并发送至区块链的节点A;其中,tx_301的predecessor为空,tx_302的predecessor为hash(tx_280),tx_280的predecessor为hash(tx_260),tx_260的predecessor为空;用户甲确认tx_301无误后,向区块链的节点A发送sig(hash(tx_301)),第二确认信息与第一确认信息一致,也为sig(hash(tx_301));用户甲发送tx_302后,认为tx_280才是正确的,用户甲确认tx_280无误后,向区块链的节点A发送sig(hash(tx_280)),第二确认信息与第一确认信息一致,也为sig(hash(tx_280));
用户甲生成tx_301及tx_302,并发送至区块链的节点A;
当节点A接收到tx_301时:
在步骤S202中,节点A接收用户甲发送的tx_301,并通过tx_301的predecessor是否为空确定待存入预先交易池的tx_301是替换前身交易的第一类交易或不替换前身交易的第二类交易:
由于tx_301的predecessor为空,tx_301为第二类交易,则执行步骤S203:将tx_301存入预先交易池;
在步骤S206中,节点A接收用户甲发送的sig(hash(tx_301)),将第一交易存入交易池,并生成第一交易已确认的第四确认信息并发送至区块链的其它节点,由于第四确认信息与第三确认信息一致,也为sig(hash(tx_301)),因此节点A将sig(hash(tx_301))发送至区块链的其它节点;或,节点A接收区块链的其它节点发送的第四确认信号sig(hash(tx_301)),将tx_301存入交易池;
在步骤S207中,节点A通过tx_301的predecessor是否为空确定待打包的tx_301是替换前身交易的第一类交易或不替换前身交易的第二类交易:
由于tx_301的predecessor为空,tx_301为第二类交易,则执行步骤S208:打包tx_301。
当节点A接收到tx_302时:
在步骤S202中,节点A接收用户甲发送的tx_302,并通过tx_302的predecessor是否为空确定待存入预先交易池的tx_302是替换前身交易的第一类交易或不替换前身交易的第二类交易:
由于tx_302的predecessor为hash(tx_280),tx_302为第一类交易,则执行步骤S204:根据hash(tx_280)查询tx_302的前身交易tx_280是否在预先交易池中:
是,则执行步骤S205:将tx_302存入预先交易池中;
在步骤S206中,节点A接收用户甲发送的sig(hash(tx_280)),将tx_280存入交易池,并生成第一交易已确认的第四确认信息并发送至区块链的其它节点,由于第四确认信息与第三确认信息一致,也为sig(hash(tx_280)),因此节点A将sig(hash(tx_280))发送至区块链的其它节点;或,节点A接收区块链的其它节点发送的第四确认信号sig(hash(tx_280)),将tx_280存入交易池;
在步骤S207中,节点A通过tx_280的predecessor是否为空确定待打包的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
由于tx_280的predecessor为hash(tx_260),tx_280为第一类交易,则执行步骤S209:根据hash(tx_260)查询tx_280的第一前身交易为tx_260;
在步骤S210中,节点A根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;根据tx_260的predecessor查询是否存在上一个前身交易,查询不到tx_260的前身交易,循环结束;
在步骤S211中,节点A删除tx_260,并打包第一交易。
防止交易回传的原理为:当区块链的另一节点,假设为节点B,由于网络延时或其它问题,将tx_260回传给节点A;若此时tx_280还未被打包,则节点A判断,预先交易池中存在tx_260,节点A丢弃节点B回传的tx_260;若此时tx_280被打包,预先交易池中的tx_260已删除,节点A检查节点B与自己的区块高度是否一致,由于节点A已打包tx_280,而节点B仍处于回传tx_260阶段,节点A的区块高 度必然大于节点B的区块高度,节点A丢弃节点B回传的tx_260。
上述实施例通过接收用户端发送的第一交易,并通过第一交易的第一前身交易信息是否为空确定待存入预先交易池的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:若第一交易为第二类交易,则将第一交易存入预先交易池;若第一交易为第一类交易,则根据第一前身交易信息查询第一交易的前身交易是否在预先交易池中:是,则将第一交易存入预先交易池中;接收用户端发送的用于确认第一交易的第三确认信号,将第一交易存入交易池,并生成第一交易已确认的第四确认信息并发送至区块链的其它节点;或,接收区块链的其它节点发送的第四确认信号,将第一交易存入交易池;通过第一交易的第一前身交易信息是否为空确定待打包的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:若第一交易为第二类交易,则打包第一交易;若第一交易为第一类交易,则根据第一前身交易信息查询第一交易的第一前身交易;根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;删除第一前身交易及各查询到的前身交易,并打包第一交易的方法,使得交易进入交易池前可修改交易内容,且防止交易回传,以及,用户可选择性指定需要确认的交易,进一步改善用户体验。
图6为图5所示方法的一种优选实施方式中步骤S211的流程图。如图6所示,在一优选实施例中,步骤S211包括:
S2112:删除第一前身交易及各查询到的前身交易;
S2113:计算第一交易的第一交易哈希,根据第一交易哈希查询是否存在第一交易的第一后续交易:
是,则执行步骤S2114:根据查询到的交易计算交易哈希,并根据计算出的交易哈希查询是否存在后一个后续交易,循环当前步骤直至查询不到后续交易;
S2115:删除第一后续交易及各查询到的后续交易,并打包第一交易;
其中,第一后续交易的前身交易信息与第一交易哈希一致。
具体地,在步骤S2112中,节点A删除tx_260;
在步骤S2113中,节点A计算tx_280的交易哈希,得到hash(tx_280),根据hash(tx_280)查询是否存在tx_280的后续交易:
由于tx_302的predecessor为hash(tx_280),因此查询到tx_302为tx_280的后续交易,执行步骤S2114,根据计算出的交易哈希查询是否存在后一个后续交易,循环当前步骤直至查询不到后续交易;节点A计算tx_302的交易哈希,得到hash(tx_302),根据hash(tx_302)查询不到tx_302的后续交易,循环结束;
在步骤S2115中,节点A删除tx_302,并打包tx_280。
在一优选实施例中,将第一交易存入预先交易池包括:
判断发送第一交易的第一地址与发送第一前身交易的第二地址是否相同:
是,则将第一交易存入预先交易池中。
上述实施例的交易替换原理可参考图2所示的方法,此处不再赘述。
在一优选实施例中,若第一交易为第一类交易,将第一交易存入预先交易池包括:
根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
对各前身交易的数量进行计数,并加一计算第一总和;
判断第一总和是否大于预配置的前身交易的数量的阈值:
否,则将第一交易存入预先交易池中;
是,则丢弃第一交易。
上述实施例的交易替换原理可参考图3所示的方法,此处不再赘述。
在一优选实施例中,接收用户端发送的第一交易,并通过第一交易的第一前身交易信息是否为空确定待存入预先交易池的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易,还包括:
判断预先交易池中的交易总数是否小于预先交易池中存放交易的阈值:
否,则丢弃所述第一交易。
上述实施例的交易替换原理可参考图4所示的方法,此处不再赘述。
在一优选实施例中,配置预先交易池中交易的存放时长的第一阈值;监测预先交易池的交易的等待时长是否超过所述第一阈值:是,则删除该交易。
具体地,以预先交易池中交易的存放时长的第一阈值为10分钟,预先交易池中交易的等待时长为该交易进入预先交易池时开始计时为例,假设预先tx_201的等待时长超过10分钟;
节点A监测tx_201的等待时长超过10分钟,节点A删除tx_201。
在上述实施例中,当节点A接收到一笔交易,该交易在预先交易池中的等待时长为该交易进入预先交易池的时刻起至该交易进入预先交易池的时刻起加上10分钟结束。
在本实施例中,本发明一实施例提供的一种交易替换方法,包括:
生成第一交易并发送至区块链的节点,以供区块链的节点接收第一交易,并通过第一交易的第一前身交易信息是否为空确定待存入预先交易池的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则将第一交易存入预先交易池;
若第一交易为第一类交易,则根据第一前身交易信息查询第一交易的前身交易是否在预先交易池中:
是,则将第一交易存入预先交易池中;
向区块链的节点发送用于确认第一交易的第三确认信号,以供区块链的节点接收第三确认信号,将第一交易存入交易池,并生成第一交易已确认的第四确认信息并发送至区块链的其它节点,并通过第一交易的第一前身交易信息是否为空确定待打包的第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
若第一交易为第二类交易,则打包第一交易;
若第一交易为第一类交易,则根据第一前身交易信息查询第一交易的前身交易;
根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
删除第一前身交易及各查询到的前身交易,并打包述第一交易。
上述实施例的交易替换原理可参考图5所示的方法,此处不再赘述。
图7为本发明一实施例提供的一种设备的结构示意图。
如图7所示,作为另一方面,本申请还提供了一种设备700,包括一个或多个中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM703中,还存储有设备700操作所需的各种程序和数据。CPU701、ROM702以及RAM703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本公开的实施例,上述任一实施例描述的交易替换方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行交易替换方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存 储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的交易替换方法。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (15)

  1. 一种交易替换方法,其特征在于,包括:
    接收用户端发送的第一交易,并通过所述第一交易的第一前身交易信息是否为空确定待存入预先交易池的所述第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
    若所述第一交易为所述第二类交易,则将所述第一交易存入所述预先交易池;
    若所述第一交易为所述第一类交易,则根据所述第一前身交易信息查询所述第一交易的前身交易是否在所述预先交易池中:
    是,则将所述第一前身交易标记为废弃,并将所述第一交易存入所述预先交易池中;以及,
    接收用户端发送的用于确认所述第一交易的第一确认信息,将所述第一交易存入交易池,并生成第一交易已确认的第二确认信息并发送至区块链的其它节点;或,接收所述区块链的其它节点发送的所述第二确认信号,将所述第一交易存入交易池;
    在所述第一交易被打包后,根据所述第一前身交易信息查询所述第一交易的第一前身交易;
    根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
    删除所述第一前身交易及各查询到的前身交易。
  2. 根据权利要求1所述的方法,其特征在于,所述将所述第一前身交易标记为废弃,并将所述第一交易存入所述预先交易池中包括:
    判断发送所述第一交易的第一地址与发送所述第一前身交易的第二地址是否相同:
    是,则将所述第一前身交易标记为废弃,并将所述第一交易存入所述预先交易池中。
  3. 根据权利要求1所述的方法,其特征在于,所述将所述第一前 身交易标记为废弃,并将所述第一交易存入所述预先交易池中包括:
    根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
    对各所述前身交易的数量进行计数,并加一计算第一总和;
    判断所述第一总和是否大于预配置的前身交易的数量的阈值:
    否,则将所述第一前身交易标记为废弃,并将所述第一交易存入所述预先交易池中;
    是,则丢弃所述第一交易。
  4. 根据权利要求1所述的方法,其特征在于,所述接收用户端发送的第一交易,并通过所述第一交易的第一前身交易信息是否为空确定待存入预先交易池的所述第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易,还包括:
    判断所述预先交易池中的交易总数是否小于所述预先交易池中存放交易的阈值:
    否,则丢弃所述第一交易。
  5. 根据权利要求1所述的方法,其特征在于,还包括:
    配置所述预先交易池中交易的存放时长的第一阈值;
    监测所述预先交易池的交易的等待时长是否超过所述第一阈值:是,则删除所述交易。
  6. 一种交易替换方法,其特征在于,包括:
    生成第一交易并发送至区块链的节点,以供所述区块链的节点接收所述第一交易,并通过所述第一交易的第一前身交易信息是否为空确定待存入预先交易池的所述第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
    若所述第一交易为所述第二类交易,则将所述第一交易存入所述预先交易池;
    若所述第一交易为所述第一类交易,则根据所述第一前身交易信 息查询所述第一交易的前身交易是否在所述预先交易池中:
    是,则将所述第一前身交易标记为废弃,并将所述第一交易存入所述预先交易池中;以及,
    向所述区块链的节点发送用于确认所述第一交易的第一确认信息,以供所述区块链的节点接收所述第一确认信息,将所述第一交易存入交易池,并生成第一交易已确认的第二确认信息并发送至区块链的其它节点;
    在所述第一交易被打包后,根据所述第一前身交易信息查询所述第一交易的第一前身交易;
    根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
    删除所述第一前身交易及各查询到的前身交易。
  7. 一种交易替换方法,其特征在于,包括:
    接收用户端发送的第一交易,并通过所述第一交易的第一前身交易信息是否为空确定待存入预先交易池的所述第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
    若所述第一交易为所述第二类交易,则将所述第一交易存入所述预先交易池;
    若所述第一交易为所述第一类交易,则根据所述第一前身交易信息查询所述第一交易的前身交易是否在所述预先交易池中:
    是,则将所述第一交易存入所述预先交易池中;
    接收所述用户端发送的用于确认所述第一交易的第三确认信号,将所述第一交易存入交易池,并生成第一交易已确认的第四确认信息并发送至区块链的其它节点;或,接收所述区块链的其它节点发送的所述第四确认信号,将所述第一交易存入交易池;
    通过所述第一交易的第一前身交易信息是否为空确定待打包的所述第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
    若所述第一交易为所述第二类交易,则打包所述第一交易;
    若所述第一交易为所述第一类交易,则根据所述第一前身交易信息查询所述第一交易的第一前身交易;
    根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
    删除所述第一前身交易及各查询到的前身交易,并打包所述第一交易。
  8. 根据权利要求7所述的方法,其特征在于,所述前身交易信息包括前身交易的交易哈希,所述删除所述第一前身交易及各查询到的前身交易,并打包所述第一交易包括:
    删除所述第一前身交易及各查询到的前身交易;
    计算所述第一交易的第一交易哈希,根据所述第一交易哈希查询是否存在所述第一交易的第一后续交易:
    是,则根据查询到的交易计算交易哈希,并根据计算出的交易哈希查询是否存在后一个后续交易,循环当前步骤直至查询不到后续交易;
    删除所述第一后续交易及各查询到的后续交易,并打包所述第一交易;
    其中,所述第一后续交易的前身交易信息与所述第一交易哈希一致。
  9. 根据权利要求7所述的方法,其特征在于,若所述第一交易为所述第一类交易,所述将所述第一交易存入所述预先交易池中包括:
    判断发送所述第一交易的第一地址与发送所述第一前身交易的第二地址是否相同:
    是,则将所述第一交易存入所述预先交易池中。
  10. 根据权利要求7所述的方法,其特征在于,若所述第一交易为所述第一类交易,所述将所述第一交易存入所述预先交易池中包括:
    根据所查询到的交易的前身交易信息查询是否存在上一个前身交 易,循环当前步骤直至查询不到前身交易;
    对各所述前身交易的数量进行计数,并加一计算第一总和;
    判断所述第一总和是否大于预配置的前身交易的数量的阈值:
    否,则将所述第一交易存入所述预先交易池中;
    是,则丢弃所述第一交易。
  11. 根据权利要求7所述的方法,其特征在于,所述接收用户端发送的第一交易,并通过所述第一交易的第一前身交易信息是否为空确定待存入预先交易池的所述第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易,还包括:
    判断所述预先交易池中的交易总数是否小于所述预先交易池中存放交易的阈值:
    否,则丢弃所述第一交易。
  12. 根据权利要求7所述的方法,其特征在于,还包括:
    配置所述预先交易池中交易的存放时长的第一阈值;
    配置所述预先交易池的交易的等待时长是否超过所述第一阈值:是,则删除所述交易。
  13. 一种交易替换方法,其特征在于,包括:
    生成第一交易并发送至区块链的节点,以供所述区块链的节点接收所述第一交易,并通过所述第一交易的第一前身交易信息是否为空确定待存入预先交易池的所述第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
    若所述第一交易为所述第二类交易,则将所述第一交易存入所述预先交易池;
    若所述第一交易为所述第一类交易,则根据所述第一前身交易信息查询所述第一交易的前身交易是否在所述预先交易池中:
    是,则将所述第一交易存入所述预先交易池中;
    向所述区块链的节点发送用于确认所述第一交易的第三确认信 号,以供所述区块链的节点接收所述第三确认信号,将所述第一交易存入交易池,并生成第一交易已确认的第四确认信息并发送至区块链的其它节点,并通过所述第一交易的第一前身交易信息是否为空确定待打包的所述第一交易是替换前身交易的第一类交易或不替换前身交易的第二类交易:
    若所述第一交易为所述第二类交易,则打包所述第一交易;
    若所述第一交易为所述第一类交易,则根据所述第一前身交易信息查询所述第一交易的前身交易;
    根据所查询到的交易的前身交易信息查询是否存在上一个前身交易,循环当前步骤直至查询不到前身交易;
    删除所述第一前身交易及各查询到的前身交易,并打包述第一交易。
  14. 一种设备,其特征在于,所述设备包括:
    一个或多个处理器;
    存储器,用于存储一个或多个程序,
    当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-13中任一项所述的方法。
  15. 一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-13中任一项所述的方法。
PCT/CN2020/075946 2019-02-22 2020-02-20 交易替换方法、设备和存储介质 WO2020169059A1 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/432,076 US20220131873A1 (en) 2019-02-22 2020-02-20 Transaction Replacement Method, Device, and Storage Medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910135410.XA CN109919622B (zh) 2019-02-22 2019-02-22 交易替换方法、设备和存储介质
CN201910135410.X 2019-02-22

Publications (1)

Publication Number Publication Date
WO2020169059A1 true WO2020169059A1 (zh) 2020-08-27

Family

ID=66962191

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/075946 WO2020169059A1 (zh) 2019-02-22 2020-02-20 交易替换方法、设备和存储介质

Country Status (3)

Country Link
US (1) US20220131873A1 (zh)
CN (1) CN109919622B (zh)
WO (1) WO2020169059A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109919622B (zh) * 2019-02-22 2020-10-23 杭州复杂美科技有限公司 交易替换方法、设备和存储介质
JP7272988B2 (ja) * 2020-03-27 2023-05-12 トヨタ自動車株式会社 情報処理装置、情報処理方法、及び、システム
CN111639939A (zh) * 2020-06-08 2020-09-08 杭州复杂美科技有限公司 区块还原方法、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016161073A1 (en) * 2015-03-31 2016-10-06 Nasdaq, Inc. Systems and methods of blockchain transaction recordation
CN107423163A (zh) * 2017-03-24 2017-12-01 北京瑞卓喜投科技发展有限公司 整体串行增加区块的区块链的勘误方法及系统
CN108846753A (zh) * 2018-06-06 2018-11-20 北京京东尚科信息技术有限公司 用于处理数据的方法和装置
CN109919622A (zh) * 2019-02-22 2019-06-21 杭州复杂美科技有限公司 交易替换方法、设备和存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9818092B2 (en) * 2014-06-04 2017-11-14 Antti Pennanen System and method for executing financial transactions
CN108234470B (zh) * 2017-12-28 2020-08-04 江苏通付盾科技有限公司 区块链网络中区块打包方法及系统、电子设备、存储介质
CN108462582B (zh) * 2018-02-09 2020-03-27 北京欧链科技有限公司 区块链中的反馈处理方法和装置
CN109345251A (zh) * 2018-08-24 2019-02-15 深圳壹账通智能科技有限公司 可协商的区块链交易方法、装置、设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016161073A1 (en) * 2015-03-31 2016-10-06 Nasdaq, Inc. Systems and methods of blockchain transaction recordation
CN107423163A (zh) * 2017-03-24 2017-12-01 北京瑞卓喜投科技发展有限公司 整体串行增加区块的区块链的勘误方法及系统
CN108846753A (zh) * 2018-06-06 2018-11-20 北京京东尚科信息技术有限公司 用于处理数据的方法和装置
CN109919622A (zh) * 2019-02-22 2019-06-21 杭州复杂美科技有限公司 交易替换方法、设备和存储介质

Also Published As

Publication number Publication date
US20220131873A1 (en) 2022-04-28
CN109919622A (zh) 2019-06-21
CN109919622B (zh) 2020-10-23

Similar Documents

Publication Publication Date Title
WO2020169059A1 (zh) 交易替换方法、设备和存储介质
AU2017382161B2 (en) Methods and apparatus for a distributed database that enables deletion of events
WO2020001370A1 (zh) 一种多链并发交易方法
CN111510395B (zh) 业务消息上报方法、装置、设备及介质
US11157324B2 (en) Partitioning for delayed queues in a distributed network
CN112292704A (zh) 交易处理
JP5767706B2 (ja) データの送信方法、送信機、受信機、並びにプログラム
WO2020019943A1 (zh) 发送数据的方法和装置,以及接收数据的方法和装置
CN116436927A (zh) 用于区块链网络中的高效传播的概率中继
CN109255057B (zh) 区块生成方法、装置、设备及存储介质
WO2015096692A1 (zh) 数据接收流量控制方法及其系统、计算机存储介质
WO2022076429A1 (en) Methods and apparatus for a distributed database within a network
US10282686B2 (en) Issue and trigger rebalancing in a ranked issue tracking system
WO2022183802A1 (zh) 一种负载均衡方法及装置、设备、存储介质、计算机程序产品
CN108519920A (zh) 一种调度重试方法及装置
US10282685B2 (en) Issue rank management in an issue tracking system
US20220103500A1 (en) Method and device for managing group member, and method for processing group message
CN109872139B (zh) 交易替换方法、设备和存储介质
WO2020156482A1 (zh) 交易替换方法、交易排队方法、设备和存储介质
JP2010226275A (ja) 通信装置および通信方法
WO2016107102A1 (zh) 短信并发业务处理方法及装置
US20230336368A1 (en) Block chain-based data processing method and related apparatus
WO2019109902A1 (zh) 队列调度方法及装置、通信设备、存储介质
WO2024041505A1 (zh) 数据获取方法、装置和设备
WO2019179387A1 (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: 20759085

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: 20759085

Country of ref document: EP

Kind code of ref document: A1