IP Library Granted Patent US 12,732,389
Granted Patent B2
US 12,732,389 · App. 18/265,225 · Granted Sep 8, 2026

Methods and systems for compressing transaction identifiers

Inventors: Ricky Charles Rand (London, GB); Steven Patrick Coughlan (London, GB)
Assignee: nChain Licensing AG
H04L9/50H04L9/0869H04L9/3239
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,732,389
App. No.
18/265,225
Granted
Sep 8, 2026
Kind
B2
Abstract

Methods and systems for compressing transaction identifiers by a mining node in a blockchain network. The method may include receiving transaction data regarding a blockchain transaction having a transaction identifier; appending the transaction identifier to a global transaction identifier list at a position associated with an index; generating a fixed-length prefix value from the transaction identifier using a function, wherein the function has an equiprobable distribution of results across a range of fixed-length prefix values; identifying a memory location associated with the fixed-length prefix value and storing the index in a data structure at the memory location; truncating the transaction identifier to a shortened transaction identifier; and outputting the fixed-length prefix value concatenated with the shorted transaction identifier as a compressed transaction identifier.

Claims (49)

1 . A computer-implemented method of compressing transaction identifiers by a mining node in a blockchain network, the method comprising:

receiving, via a network connection, transaction data regarding a blockchain transaction having a transaction identifier;

appending the transaction identifier to a global transaction identifier list at a position associated with an index;

generating a fixed-length prefix value from the transaction identifier using a function, wherein the function has an equiprobable distribution of results across a range of fixed-length prefix values;

identifying a memory location associated with the fixed-length prefix value and storing the index in a data structure at the memory location;

truncating the transaction identifier to a shortened transaction identifier; and

outputting the fixed-length prefix value concatenated with the shortened transaction identifier as a compressed transaction identifier, wherein outputting includes transmitting the compressed transaction identifier to a second mining node via the blockchain network.

2 . The method of claim 1 , wherein transmitting includes transmitting the compressed transaction identifier in an append message referencing a block template defining a candidate block being mined by the mining node.

3 . The method of claim 1 , wherein truncating selects a number of bytes of the transaction identifier based on a compressed transaction identifier length parameter.

4 . The method of claim 1 , wherein the data structure stores an ordered list of indices for one or more previously-generated compressed transaction identifiers having the fixed-length prefix value, and wherein storing the index includes appending the index to the ordered list.

5 . The method of claim 1 , wherein generating the fixed-length prefix value includes first randomizing the transaction identifier using a salt value.

6 . The method of claim 5 , wherein the salt value includes a Merkle root associated with a most-recently validated block and wherein randomizing includes XOR'ing the transaction identifier with the Merkle root.

7 . The method of claim 1 , wherein generating the fixed-length prefix value includes recursively folding the transaction identifier by XOR'ing a first half with a second half.

8 . The method of claim 7 , wherein generating the fixed-length prefix value further includes truncating the recursively folded transaction identifier.

9 . The method of claim 1 , wherein the data structure includes one or more indices corresponding to previously-stored transaction identifiers and wherein the method further includes comparing the transaction identifier to the previously-stored transaction identifiers in the global list located at the one or more indices, and wherein truncating includes determining a length for the shortened transaction identifier dependent on the comparison of the transaction identifier to the previously-stored transaction identifiers in the global list.

10 . The method of claim 9 , wherein the length is a first length if the comparing results in no match and is a second length longer than the first length if the comparing results in a match of a number of bytes corresponding to the first length.

11 . The method of claim 10 , wherein the length is a third length longer than the second length if the comparing results in a match of a number of bytes corresponding to the second length.

12 . The method of claim 9 , wherein outputting includes inserting the compressed transaction identifier in an append message using an opcode selected based on the length.

13 . The method of claim 1 , further comprising:

receiving a compressed identifier from a third miner, the compressed identifier having a prefix of a predetermined length and a truncated part;

identifying the memory location based on the prefix;

comparing the truncated part to transaction identifiers located in the global list at indices contained in the data structure at the memory location; and

identifying a full transaction identifier that corresponds to the compressed identifier based on a match between the truncated part and a first portion of one of the transaction identifiers located in the in the global list at one of the indices.

14 . A computing device to compress transaction identifiers in a blockchain network, the computing device including:

one or more processors;

memory; and

processor-executable instructions stored in the memory that, when executed by the one or more processors, cause the processors to:

receive, via a network connection, transaction data regarding a blockchain transaction having a transaction identifier;

append the transaction identifier to a global transaction identifier list at a position associated with an index;

generate a fixed-length prefix value from the transaction identifier using a function, wherein the function has an equiprobable distribution of results across a range of fixed-length prefix values;

identify a memory location associated with the fixed-length prefix value and storing the index in a data structure at the memory location;

truncate the transaction identifier to a shortened transaction identifier; and

output the fixed-length prefix value concatenated with the shortened transaction identifier as a compressed transaction identifier by transmitting the compressed transaction identifier to a second mining node via the blockchain network.

15 . The computing device claimed in claim 14 , wherein the instructions, when executed, are to cause the one or more processors to transmit by transmitting the compressed transaction identifier in an append message referencing a block template defining a candidate block being mined by the mining node.

16 . The computing device claimed in claim 14 , wherein the instructions, when executed, are to cause the one or more processors to truncate by selecting a number of bytes of the transaction identifier based on a compressed transaction identifier length parameter.

17 . The computing device claimed in claim 14 , wherein the instructions, when executed, are to cause the one or more processors to generate the fixed-length prefix value includes recursively folding the transaction identifier by XOR'ing a first half with a second half.

18 . The computing device claimed in claim 14 , wherein the data structure includes one or more indices corresponding to previously-stored transaction identifiers and wherein the instructions, when executed, are to cause the one or more processors to compare the transaction identifier to the previously-stored transaction identifiers in the global list located at the one or more indices, and wherein the instructions, when executed, are to cause the one or more processors to truncate by determining a length for the shortened transaction identifier dependent on the comparison of the transaction identifier to the previously-stored transaction identifiers in the global list.

19 . A computer-readable medium storing processor-executable instructions for compressing transaction identifiers in a blockchain network, the processor-executable instructions including instructions that, when executed by one or more processors, cause the processors to:

receive, via a network connection, transaction data regarding a blockchain transaction having a transaction identifier;

append the transaction identifier to a global transaction identifier list at a position associated with an index;

generate a fixed-length prefix value from the transaction identifier using a function, wherein the function has an equiprobable distribution of results across a range of fixed-length prefix values;

identify a memory location associated with the fixed-length prefix value and storing the index in a data structure at the memory location;

truncate the transaction identifier to a shortened transaction identifier; and

output the fixed-length prefix value concatenated with the shortened transaction identifier as a compressed transaction identifier by transmitting the compressed transaction identifier to a second mining node via the blockchain network.

20 . A computer-implemented method of resolving a compressed transaction identifier by a mining node in a blockchain network, comprising:

receiving a compressed transaction identifier from a sending node via the blockchain network, where the compressed transaction identifier includes a prefix portion concatenated with a truncated portion;

using the prefix portion as an index, identifying a memory location storing a data structure corresponding to the prefix portion, the data structure storing one or more indices to a global list of transaction identifiers;

comparing the truncated portion to the transaction identifiers located in the global list at the one or more indices; and

when the truncated portion matches a first portion of one of the transaction identifiers located in the global list at the one or more indices, identifying that transaction identifier as a decompressed transaction identifier corresponding to the compressed transaction identifier.

Assignments (2)
EMPLOYMENT AGREEMENT Recorded Nov 20, 2023
From: COUGHLAN, STEVEN
To: NCHAIN LICENSING AG
Reel/Frame 065628/0940 →
EMPLOYMENT AGREEMENT Recorded Nov 20, 2023
From: RAND, RICKY
To: NCHAIN LICENSING AG
Reel/Frame 065628/0908 →
Priority Claims (1)
GB 2019124 · Dec 4, 2020 · national
Continuity (1)
Related Publication 20230421402A1 · Dec 28, 2023
References Cited (87)
US 8706701B1 · Stefanov et al. · 2014 [cited by applicant]
US 10250708B1 · Carver et al. · 2019 [cited by applicant]
US 10372943B1 · Rodriguez et al. · 2019 [cited by applicant]
US 10742421B1 · Wentz et al. · 2020 [cited by applicant]
US 10984134B2 · Setty · 2021 [cited by applicant]
US 11038685B1 · Dennis · 2021 [cited by applicant]
US 11368286B1 · Wang · 2022 [cited by examiner]
US 11399284B1 · Haleem et al. · 2022 [cited by applicant]
US 11487886B2 · Koorella et al. · 2022 [cited by applicant]
US 20080195583A1 · Hsu et al. · 2008 [cited by applicant]
US 20080224906A1 · Plamondon · 2008 [cited by applicant]
US 20100217798A1 · Asami · 2010 [cited by applicant]
US 20120030468A1 · Papamanthou et al. · 2012 [cited by applicant]
US 20120222130A1 · Lee et al. · 2012 [cited by applicant]
US 20150317748A1 · Roberts et al. · 2015 [cited by applicant]
US 20170178072A1 · Poornachandran et al. · 2017 [cited by applicant]
US 20170243176A1 · Hanke et al. · 2017 [cited by applicant]
US 20170316497A1 · Song et al. · 2017 [cited by applicant]
US 20170344435A1 · Davis · 2017 [cited by applicant]
US 20170344987A1 · Davis · 2017 [cited by applicant]
US 20180013567A1 · Davis · 2018 [cited by applicant]
US 20180285840A1 · Hasan · 2018 [cited by applicant]
US 20180307857A1 · Beecham · 2018 [cited by examiner]
US 20180323980A1 · Ahn et al. · 2018 [cited by applicant]
US 20190034465A1 · Shimamura · 2019 [cited by applicant]
US 20190044976A1 · Smith · 2019 [cited by applicant]
US 20190054836A1 · Haneda · 2019 [cited by applicant]
US 20190082007A1 · Klarman · 2019 [cited by examiner]
US 20190087793A1 · Dickerson et al. · 2019 [cited by applicant]
US 20190109709A1 · Wu · 2019 [cited by applicant]
US 20190156301A1 · Bentov et al. · 2019 [cited by applicant]
US 20190199515A1 · Carver et al. · 2019 [cited by applicant]
US 20190251199A1 · Klianev · 2019 [cited by applicant]
US 20190273733A1 · Kawabata · 2019 [cited by applicant]
US 20190340379A1 · Beecham · 2019 [cited by examiner]
US 20190349733A1 · Nolan et al. · 2019 [cited by applicant]
US 20190370789A1 · McCallum · 2019 [cited by examiner]
US 20200073698A1 · Wu · 2020 [cited by applicant]
US 20200119936A1 · Balasaygun et al. · 2020 [cited by applicant]
US 20200127834A1 · Westland et al. · 2020 [cited by applicant]
US 20200136808A1 · Chasko et al. · 2020 [cited by applicant]
US 20200162473A1 · Mercuri et al. · 2020 [cited by applicant]
US 20200210451A1 · Wang · 2020 [cited by applicant]
US 20200234293A1 · Lee et al. · 2020 [cited by applicant]
US 20200272618A1 · Hughes · 2020 [cited by applicant]
US 20200285634A1 · Jho et al. · 2020 [cited by applicant]
US 20200328892A1 · Gangal · 2020 [cited by applicant]
US 20200366495A1 · Mahoney · 2020 [cited by applicant]
US 20200372003A1 · Boelderl-Ermel et al. · 2020 [cited by applicant]
US 20200387395A1 · Viale et al. · 2020 [cited by applicant]
US 20210056544A1 · Mitra et al. · 2021 [cited by applicant]
US 20210117385A1 · Haldar et al. · 2021 [cited by applicant]
US 20210182895A1 · Sears · 2021 [cited by applicant]
US 20210209070A1 · Latorre · 2021 [cited by examiner]
US 20210209077A1 · Snellman · 2021 [cited by examiner]
US 20210240498A1 · Padmanabhan et al. · 2021 [cited by applicant]
US 20210326442A1 · Campagna et al. · 2021 [cited by applicant]
US 20210365867A1 · Kim · 2021 [cited by applicant]
US 20220094791A1 · Moller et al. · 2022 [cited by applicant]
US 20220100724A1 · Zhang et al. · 2022 [cited by applicant]
US 20220191037A1 · Hassanzadeh Nazarabadi · 2022 [cited by applicant]
JP 2003203029A · 2003 [cited by applicant]
JP 2006004277A · 2006 [cited by applicant]
JP 2019139691A · 2019 [cited by applicant]
JP 2020522786A · 2020 [cited by applicant]
WO WO2018145168A1 · 2018 [cited by examiner]
WO 2018224954A1 · 2018 [cited by applicant]
WO 2018224955A1 · 2018 [cited by applicant]
WO 2018229633A1 · 2018 [cited by applicant]
WO 2019003083A1 · 2019 [cited by applicant]
WO 2019021107A1 · 2019 [cited by applicant]
WO 2019077126A1 · 2019 [cited by applicant]
WO 2020208596A1 · 2020 [cited by applicant]
JP2021-560040 English Translation of Office Action of Japan Patent Office dated May 21, 2024, 5 pages. [cited by applicant]
Decker C., et al., “Information Propagation in the Bitcoin Network,” 13th IEEE International Conference on Peer-to-Peer Computing, Sep. 2013, pp. 1-10. [cited by applicant]
Sarda A., et al., “NoCo: An Efficient Transaction Propagation Protocol for Open Blockchains,” 2018 Second International Conference on Advances in Computing, Control and Communication Technology (IAC3T), Sep. 2018, pp. 4… [cited by applicant]
Sudhan A., et al., “Peer Selection Techniques for Enhanced Transaction Propagation in Bitcoin Peer-to-Peer Network,” 2018 Second International Conference on Intelligent Computing and Control Systems (ICICCS), Jun. 2018,… [cited by applicant]
Corallo M., “Compact Block Relay,” Apr. 27, 2014, Retrieved from the Internet: URL: https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki, 17 pages. [cited by applicant]
Ding D., et al., “Txilm: Lossy Block Compression with Salted Short Hashing,” arXiv: 1906.06500, Jun. 15, 2019, 5 pages. [cited by applicant]
Han Y., et al., “Shrec: Bandwidth-Efficient Transaction Relay in High-Throughput Blockchain Systems,” Proceedings of the 11th ACM Symposium on Cloud Computing (SoCC 20), Oct. 19-21, 2020, pp. 238-252. [cited by applicant]
International Search Report and Written Opinion for Application No. PCT/EP2021/082871 mailed on Feb. 25, 2022, 14 pages. [cited by applicant]
International Search Report and Written Opinion issued in International Application No. PCT/IB2020/053416, mailed on Jun. 26, 2020, 15 pages. [cited by applicant]
International Search Report and Written Opinion issued in International Application No. PCT/IB2020/053436, mailed on Jul. 3, 2020, 14 pages. [cited by applicant]
Katkuri S., “A Survey of Data Transfer and Storage Techniques in Prevalent Cryptocurrencies and Suggested Improvements,” arXiv: 1808.03380, Aug. 10, 2018, 72 pages. [cited by applicant]
Search Report for the Application No. GB1905221.6 dated Oct. 9, 2019, 4 pages. [cited by applicant]
Office Action of Chinese Application No. 202180093064.9 dated Apr. 17, 2026, 15 pages. [cited by applicant]
Office Action of European Application No. 21820173.9 dated Jun. 19, 2026, 6 pages. [cited by applicant]