# US 11,113,676 B2 · Block mining methods and apparatus

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,113,676 B2
- Document ID: US11113676B2
- Status: Granted
- Kind: B2
- Application number: 15/141,063
- Filed: 2016-04-28
- Published: 2017-08-24
- Granted: 2021-09-07
- Earliest claimed: 2013-11-19
- Assignees: Top Galore Limited
- Applicants: Top Galore Limited
- Inventors: Timo Tobias Hanke; Sergio Demian Lerner
- Web page: https://patentgrep.com/patent/US11113676B2

## CPC

- G06Q 20/0655: {e-cash managed centrally}
- G06Q 20/0658: {e-cash managed locally}
- G06Q 20/3827: {Use of message hashing}
- H04L 9/0643: {Hash functions, e.g. MD5, SHA, HMAC or f9 MAC}
- H04L 9/3239: {involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD}
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- G06Q 2220/00: Business processing using cryptography
- H04L 2209/56: Financial cryptography, e.g. electronic payment or e-cash
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Block chain mining methods and apparatus. A mid-state generator develops a plurality, n, of mid-states by selectively varying a portion of the block, and, in particular, the block header. A single message expander develops a message schedule by expanding a message in accordance with a predetermined expansion function; and the message schedule is shared with a plurality, n, of compressors, each developing a result as a function of the message schedule and a respective one of the n unique mid-states in accordance with a predetermined compression function. The compressors can be either rolled core or pipelined core.

## Claims

### Claim 1

A method for mining a block, comprising a block header, as a function of a predetermined hash function applied on the block header, the predetermined hash function comprising an expansion operation and a compression operation, the method comprising the steps of:
retrieving, by a processing system comprising a processor and memory, a plurality of transactions associated with the block from a ledger stored on a server of a decentralized network, the processing system comprising a single shared expander and a plurality of compressor entities, each being implemented as hardware components in an application specific integrated circuit;
determining, by the processing system, a plurality of candidate roots from the received plurality of transactions associated with the block, each candidate root including a predetermined pattern;
developing, by a mid-state generator entity of the processing system, m mid-states, each mid-state being developed from a first portion of one of the plurality of candidate roots, the mid-state generator developing a new mid-state of the m mid-states every compressor entity pipe clock, with each mid-state of the m mid-states being passed down a compressor entity chain at the pipe clock rate;
distributing the determined plurality of m mid-states to a beginning stage of the plurality of compressor entities;
performing, by the single shared expander of the processing system using an input of a message and a nonce, the expansion operation on a second portion of each of the plurality of candidate roots to produce a message schedule, the message schedule comprising a plurality of message schedule elements, the single shared expander being provided by a single shared rolled message expander entity;
distributing the message schedule to the plurality of compressor entities via the single shared expander;
delaying delivery of the plurality of m mid-states to a final stage of the plurality of compressor entities using a FIFO having a number of stages, the number of stages corresponding to the plurality of message schedule elements of the message schedule;
for each of the m mid-states, performing, by one of a plurality of compressors of the processing system, the compression operation on a combination of one of the m mid-states and the message schedule, the plurality of compressors being communicatively coupled to the single shared expander and receiving the message schedule from the single shared expander, the compression for each of the m mid-states producing a respective one of m results;
identifying, by the processing system, a block solution from the m results by comparing each of the m results to a target; and
providing, by the processing system, the block solution to the ledger stored on the server.

### Claim 2 (depends on 1)

The method of claim 1 wherein the first portion of the one of the plurality of plurality of candidate roots comprises an extraNonce field that includes a selected 4 bytes of the block header.

### Claim 3 (depends on 1)

The method of claim 1 wherein the first portion of the one of the plurality of plurality of candidate roots comprises a digest of a transaction.

### Claim 4 (depends on 3)

The method of claim 3 wherein a generation transaction comprises one of the plurality of transactions; and wherein the determining each of the plurality of candidate roots is performed by varying the generation transaction.

### Claim 5 (depends on 3)

The method of claim 3 wherein the determining each of the plurality of candidate roots is performed by varying a selected portion of a selected transaction.

### Claim 6 (depends on 3)

The method of claim 3 wherein the determining each of the plurality of candidate roots is performed by varying an order of the plurality of transactions.

### Claim 7 (depends on 1)

The method of claim 1 wherein each candidate root comprises a root of a tree data structure.

### Claim 8 (depends on 7)

The method of claim 7 wherein the tree data structure comprises a Merkle tree.

### Claim 9 (depends on 7)

The method of claim 7 wherein the determining each of the plurality of candidate roots is performed by executing the steps of:
selecting a left sub-tree hash from a first plurality of candidate sub-tree hashes;
selecting a right sub-tree hash from a second plurality of candidate sub-tree hashes; and
developing the root of the tree data structure from the left sub-tree hash and the right sub-tree hash.

### Claim 10 (depends on 1)

The method of claim 1 wherein the determining each of the plurality of candidate roots is performed by executing the steps of:
determining the plurality of candidate roots by applying a filter function to a set of all possible roots, and:
when a root of the set of all possible roots fails the filter function, discarding the root; but
when the root passes the filter function, adding the root to the plurality of possible roots, wherein a mid-state is developed for each candidate root to develop the m mid-states.

### Claim 11 (depends on 10)

The method of claim 10:
wherein the first portion of the one of the plurality of candidate roots comprises a first 28 bytes of a 32-byte Merkle root stored within the block and the second portion of each of the plurality of candidate roots comprises a last 4 bytes of the Merkle root; and
wherein the filter function is further characterized as selecting a candidate root when the second portion does not comprise the predetermined pattern, the selected candidate roots being subsequently discarded.

### Claim 12 (depends on 1)

The method of claim 1 wherein the message schedule comprises an ordered sequence of message schedule elements and wherein the performing the compression operation step is performed by, for each of the m mid-states, compressing the sequence of message schedule elements to produce a respective one of m results.
