DE202014011229U1 - Block prospecting device - Google Patents

Block prospecting device Download PDF

Info

Publication number
DE202014011229U1
DE202014011229U1 DE202014011229.0U DE202014011229U DE202014011229U1 DE 202014011229 U1 DE202014011229 U1 DE 202014011229U1 DE 202014011229 U DE202014011229 U DE 202014011229U DE 202014011229 U1 DE202014011229 U1 DE 202014011229U1
Authority
DE
Germany
Prior art keywords
hash
block
block header
candidate
tree
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
DE202014011229.0U
Other languages
German (de)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Circle Line International Ltd Vg
Original Assignee
Little Dragon Tech LLC
Little Dragon Technology LLC
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 Little Dragon Tech LLC, Little Dragon Technology LLC filed Critical Little Dragon Tech LLC
Publication of DE202014011229U1 publication Critical patent/DE202014011229U1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • 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/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3239Cryptographic 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 using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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
    • 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
    • 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
    • G06Q2220/00Business processing using cryptography

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Accounting & Taxation (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Finance (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Vorrichtung zum Schürfen eines Blocks, der eine Block-Überschrift aufweist, als Funktion einer ausgewählten Hash-Funktion, die auf die Block-Überschrift angewendet wird, wobei die ausgewählte Hash-Funktion eine Erweiterungsoperation und eine Komprimierungsoperation aufweist, wobei die Vorrichtung eingerichtet ist zum:
[1] Entwickeln einer Vielzahl m von Zwischenzuständen, jede als Funktion eines selektiven Variierens eines ausgewählten ersten Abschnitts der Block-Überschrift;
[2] Durchführen der Erweiterungsoperation bei einem ausgewählten zweiten Abschnitt der Block-Überschrift, um einen Nachrichten-Zeitplan zu erzeugen; und
[3] Durchführen der Komprimierungsoperation bei den Zwischenzuständen und dem Nachrichten-Zeitplan für jeden der m Zwischenzustände, um ein entsprechendes der m Ergebnisse zu erzeugen.

Figure DE202014011229U1_0000
Apparatus for purging a block having a block header as a function of a selected hash function applied to the block header, the selected hash function having an expansion operation and a compression operation, the apparatus being arranged to:
[1] developing a plurality m of intermediate states, each as a function of selectively varying a selected first portion of the block header;
[2] performing the expansion operation on a selected second portion of the block header to create a message schedule; and
[3] Performing the compression operation on the intermediate states and the message schedule for each of the m intermediate states to produce a corresponding one of the m results.
Figure DE202014011229U1_0000

Description

QUERVERWEIS AUF BEZOGENE ANMELDUNGENCROSS-REFERENCE TO RELATED APPLICATIONS

Diese Anmeldung bezieht sich auf die US Provisional Application mit der Nummer 61/906,310 , eingereicht am 19. November 2013 („Stammanmeldung“), deren Gegenstand in seiner Gesamtheit ausdrücklich durch Bezugnahme hierin aufgenommen ist, und beansprucht hiermit den Nutzen des Anmeldetags derselben gemäß 37 CFR §1.78(a)(4).This application relates to US Provisional Application number 61 / 906,310 , filed on Nov. 19, 2013 ("parent application"), the entire subject matter of which is expressly incorporated herein by reference, and hereby claims the benefit of the filing date thereof in accordance with 37 CFR §1.78 (a) (4).

HINTERGRUND DER ERFINDUNGBACKGROUND OF THE INVENTION

Gebiet der Erfindung.Field of the invention.

Die vorliegende Erfindung betrifft eine Vorrichtung zur Verwendung beim Schürfen (engl.: mining) eines Blocks, beispielsweise in einer Block-Kette (engl.: block chain), und ins Besondere eine Vorrichtung zur Verwendung in einem Kryptowährungssystem, wie beispielsweise dem Bitcoin Schürfsystem (engl.: mining system).The present invention relates to an apparatus for use in mining a block, for example in a block chain, and more particularly to an apparatus for use in a cryptocurrency system, such as the Bitcoin scraper system (see e.g. English: mining system).

Beschreibung der bezogenen Technik.Description of the related art.

Im Allgemeinen werden in der nachfolgenden Beschreibung Fachbegriffe, die den zuständigen Fachmännern geläufig sind, bei ihrem ersten Auftreten kursiv geschrieben. Zusätzlich, wenn ein Begriff eingeführt wird, der vermutlich neu ist oder der in einem Kontext verwendet wird, der vermutlich neu ist, wird dieser Begriff fett gedruckt und es wird eine Definition bereitgestellt, die dazu gedacht ist, sich auf diesen Begriff zu beziehen. Zusätzlich werden über die Beschreibung hinweg manchmal die Begriffe annehmen und verweigern verwendet, wenn auf eine Wiedergabe eines Signals, eines Signal-Flags (zu Deutsch: Signal-Statusindikator), eines Status-Bits oder einer ähnlichen Vorrichtung in seinen logisch wahren bzw. logisch falschen Zustand Bezug genommen wird, und der Begriff umschalten, um die logische Inversion eines Signals von einem Zustand zu dem anderen anzuzeigen. Alternativ kann auf die sich gegenseitig ausschließenden Booleschen Zustände als logische 0 und logische 1 Bezug genommen werden. Natürlich, so wie es bekannt ist, kann ein konsistenter Systembetrieb erhalten werden mittels Umkehrens des logischen Sinns aller derartigen Signale, so dass die Signale, die hierin als logisch wahr bezeichnet werden, logisch falsch werden und umgekehrt. Darüber hinaus ist es in derartigen Systemen nicht relevant, welche spezifischen Spannungsniveaus gewählt werden, um jeden der logischen Zustände zu repräsentieren. Zum Erleichtern der Bezugnahme wird der Begriff „Satz“ so verwendet, dass er eine Ansammlung von keinem, einem oder mehreren Gegenständen bezeichnet, so wie es der Kontext erfordert.In general, in the following description, technical terms that are familiar to those skilled in the art will be italicized on their first appearance. In addition, when introducing a term that is presumably new or that is used in a context that is presumably new, that term is bolded and a definition is provided that is intended to refer to that term. In addition, the terms accept and deny are sometimes used throughout the description when referring to a playback of a signal, a signal flag, a status bit, or similar device into its logically true or logically false one State, and the term toggle to indicate the logical inversion of a signal from one state to the other. Alternatively, the mutually exclusive Boolean states may be referred to as logical 0 and logical 1. Of course, as is well known, consistent system operation can be obtained by reversing the logical sense of all such signals so that the signals referred to herein as being true logic become logically false and vice versa. Moreover, in such systems, it is not relevant which specific voltage levels are chosen to represent each of the logic states. For ease of reference, the term "sentence" is used to denote a collection of none, one or more items as the context requires.

Im Allgemeinen kann ein dezentralisiertes Netzwerk gemeinsame Informationen in einer Block-Kette (engl.: block-chain) speichern und darauf Bezug nehmen. Bei einer typischen Block-Kette enthält jeder Block Einheiten von Informationen, die gewöhnlich Transaktionen bezeichnet werden, die ungefähr zur selben Zeit auftreten. Unter Verwendung eines vorgegebenen Protokolls werden die Blöcke miteinander verbunden, indem deren Hashwerte in entsprechende Felder des nächsten nachfolgenden Blocks in der Block-Kette integriert werden.In general, a decentralized network can store and refer to common information in a block-chain. In a typical block chain, each block contains units of information, usually called transactions, that occur at about the same time. Using a given protocol, the blocks are linked together by integrating their hash values into corresponding fields of the next succeeding block in the block chain.

Der Prozess des Block-Ketten-Schürfens (engl.: block chain mining) ist dazu eingerichtet, einem System zu ermöglichen, zu einem Konsens zu kommen, in dem alle Knoten in einem Computernetzwerk derselben Block-Kette zustimmen. Verschiedene Block-Ketten-Systeme wurden vorgeschlagen und manche sind derzeit in Betrieb. Eines der ersten und derzeit das am weitesten verbreitete ist das Bitcoin System. Gemäß dem Bitcoin Protokoll, wird der erste Miner (zu Deutsch: Schürfer), der erfolgreich einen gültigen Ausführungsnachweis für einen Block-Kandidaten erzeugt, dazu berechtig, einen Block an die Block-Kette (manchmal bezeichnet als ledger (zu Deutsch: Konto)) anzuhängen und als Belohnung neue Einheiten der Kryptowährung zu erzeugen.The process of block chain mining is designed to allow a system to come to a consensus in which all nodes in a computer network agree on the same block chain. Various block-chain systems have been proposed and some are currently in operation. One of the first and currently the most widely used is the Bitcoin system. According to the Bitcoin protocol, the first miner who successfully generates a valid execution record for a block candidate will be entitled to a block to the block chain (sometimes referred to as ledger). attach and as a reward create new units of the cryptocurrency.

Der Ausführungsnachweis für einen Block besteht aus einem Nonce-Wert, der, wenn er in ein vorgegebenes Feld eines Blocks eingetragen wird, bewirkt, dass der kryptographische Hash-Wert des Blocks mit einem bestimmten Schwierigkeitsgrad übereinstimmt. Da sich kryptographische Hash-Funktionen praktisch wie ein Zufallsorakel verhalten, wurde bisher noch kein besseres Vorgehen entdeckt, um einen geeigneten Nonce zu finden, als praktisches Herumprobieren. Der Schürfprozess ist daher ein stochastischer Prozess. In der Praxis sind die Chancen, dass ein bestimmter Schürfer (engl.: miner) erfolgreich einen Block löst, zu jedem Zeitpunkt proportional zu der Hashrate des Schürfers bezogen auf die Hashrate des gesamten Netzwerks.The execution record for a block consists of a nonce value which, when entered into a given field of a block, causes the block's cryptographic hash value to match a certain level of difficulty. Since cryptographic hash functions behave virtually like a random oracle, so far no better way has been discovered to find a suitable nonce than practical trial and error. The mining process is therefore a stochastic process. In practice, the chances that a particular miner will successfully solve a block are at any time proportional to the scraper's hashrate relative to the entire network's hash rate.

Bekannterweise hat die amerikanische Sicherheitsbehörde („NSA“) einen Satz von kryptographischen Hash-Funktionen designed und veröffentlicht, auf die als Secure Hash Algorithmus („SHA“) Bezug genommen wird. Insbesondere verwendet das Bitcoin Protokoll den SHA-256, der in dem folgenden Pseudocode beschrieben ist: As is well known, the United States Security Agency ("NSA") has designed and published a set of cryptographic hash functions referred to as Secure Hash Algorithm ("SHA"). In particular, the Bitcoin protocol uses the SHA-256 described in the following pseudocode:

Figure DE202014011229U1_0001
Figure DE202014011229U1_0002
Figure DE202014011229U1_0003
Figure DE202014011229U1_0004
Figure DE202014011229U1_0001
Figure DE202014011229U1_0002
Figure DE202014011229U1_0003
Figure DE202014011229U1_0004

Nachfolgend kann zur vereinfachten Bezugnahme auf Aspekte der vorliegenden Erfindung Bezug genommen werden unter Verwendung der Terminologie, die in dem vorstehenden Pseudocode verwendet wird. Ferner ist die Offenbarung beispielhaft auf das Bitcoin Protokoll gerichtet, obwohl erkannt wurde, dass auch andere Kryptowährungssysteme von der vorliegenden Erfindung profitieren können.Hereinafter, for ease of reference, aspects of the present invention may be referenced using the terminology used in the above pseudocode. Further, the disclosure is illustrative of the Bitcoin protocol, although it has been recognized that other crypto-currency systems may benefit from the present invention.

Viele Hash-Funktionen, einschließlich der SHA-1, SHA-2 und RIPEMD Familien, teilen sich ein ähnliches Schema mit SHA-256. Jede verwendet eine Erweiterungsfunktion (welche manchmal als Erweiterungsoperation bezeichnet wird), die dazu eingerichtet ist, eine Eingangsnachricht in einen Nachrichten-Zeitplan (engl.: message schedule) zu erweitern, und dann eine Komprimierungsfunktion (manchmal als Komprimierungsoperation bezeichnet), die dazu ausgebildet ist, den Nachrichten-Zeitplan in einen Hashwert oder in ein Ergebnis zu komprimieren (manchmal bezeichnet als Nachrichten-Digest oder einfach Digest). Typischerweise ist die Komprimierungsfunktion rekursiv und komprimiert ein Wort des Nachrichten-Zeitplans pro Runde. Die rekursive Natur dieser Funktionen leiht sich selbst bekannten Schleifen-Abroll(engl.: loop-unrolling)-Techniken und, wenn auf eine Hardware-Implementierungen angewendet, resultiert sie in einer klassischen Pipeline-Konfiguration von Computerelementen.Many hash functions, including the SHA-1, SHA-2, and RIPEMD families, share a similar scheme with SHA-256. Each uses an extension function (sometimes referred to as an extension operation) adapted to extend an input message into a message schedule, and then a compression function (sometimes called a compression operation) designed to do so to compress the message schedule into a hash value or result (sometimes referred to as a message digest or simply a digest). Typically, the compression function is recursive and compresses one word of the message schedule per round. The recursive nature of these functions lends itself to known loop-unrolling techniques and, when applied to hardware implementations, results in a classical pipeline configuration of computer elements.

Normalerweise, wenn ein Hash in Bitcoin erzeugt wird, wird er zweimal erzeugt, d.h. ein SHA-256 Hash eines SHA-256 Hashs (manchmal bezeichnet als Doppel-SHA, oder einfach SHA2). Die meiste Zeit werden nur SHA-256 Hashs verwendet, beispielsweise wenn Transaktionen und Block-Überschriften (engl.: block headers) gehasht werden. Jedoch wird auch RIPEMD-160 für den zweiten Hash verwendet, wenn ein kürzerer Hash-Digest erwünscht ist, beispielsweise wenn ein öffentlicher Schlüssel gehasht wird, um eine Bitcoin Adresse zu erhalten.Normally, when a hash is generated in Bitcoin, it is generated twice, ie a SHA-256 hash of a SHA-256 hash (sometimes referred to as a double SHA, or simply SHA 2 ). Most of the time, only SHA-256 hashs are used, for example, when hashed transactions and block headers. However, RIPEMD-160 is also used for the second hash when a shorter hash digest is desired, for example, when a public key is hashed to obtain a bitcoin address.

Block-Ketten-Mining hat aufgrund seines Designs eine kompetitive Natur. Der finanzielle Gewinn ist proportional zu der Anzahl von gelösten Blöcken, welche wiederum proportional zu der Hash-Rate bezogen auf die Hash-Rate des gesamten Netzwerkes ist. Mit zunehmendem Wettbewerb suchen Schürfer aggressiv auch nach kleinen Verbesserungen der Hash-Rate. Ein bekannter Ansatz, um die Hash-Rate zu verbessern, ist, die Hash-Suche über die größte Anzahl von Hash-Engines (zu Deutsch: Hash-Generator oder Hash-Erzeuger) zu streuen, von denen jeder dazu eingerichtet ist, unabhängig einen entsprechenden Abschnitt des gesamten Nonce-Raumes für Hashes zu suchen, die die benötigte Schwierigkeit erfüllen (d.h. darunter sind).Block Chain Mining has a competitive nature due to its design. The financial gain is proportional to the number of blocks released, which in turn is proportional to the hash rate relative to the hash rate of the entire network. As competition increases, miners aggressively seek for small hash rate enhancements. One known approach to improving the hash rate is to scatter the hash search over the largest number of hash engines, each of which is set up, independently appropriate section of the entire nonce space for hashes that meet the required difficulty (ie, below).

Wenn ein Hash in Bitcoin berechnet wird, hat die gehashte Nachricht häufig eine feste Länge. Dies ist beispielsweise der Fall für Block-Überschriften (80 Bytes) und wann immer ein Hash-Wert (32 Bytes) selbst gehasht wird. Hash-Werte werden in allen Anwendungen von Doppel-SHA gehasht. In der Formation eines Merkle-Baums werden Hash-Wertpaare (64 Bytes), die in einer Baum-Datenstruktur angeordnet sind, gehasht. Im Allgemeinen können Hash-Engines, die dazu eingerichtet sind, Nachrichten mit fester Länge zu hashen, anders optimiert werden als Hash-Engines, die dazu eingerichtet sind, Nachrichten mit willkürlicher Länge zu hashen.When a hash is calculated in Bitcoin, the hashed message is often of fixed length. This is the case, for example, for block headings (80 bytes) and whenever a hash value (32 bytes) is itself hashed. Hash values are hashed by double SHA in all applications. In the formation of a Merkle tree, hash value pairs (64 bytes) arranged in a tree data structure are hashed. In general, hash engines that are designed to hash to fixed-length messages can be optimized differently than hash engines that are set to hash arbitrarily-length messages.

Wenn ein Hash-Engine in einem anwendungsspezifischen integrierten Schaltkreis („ASIC“) implementiert wird, sind die Schlüsseldesignziele, die Potenz, die Leistungsfähigkeit und den Bereich zu verbessern. Wenn viele Nachrichten der gleichen kurzen Länge gehasht werden sollen, ist eine Pipeline-Implementierung eines Hash-Kerns möglich. Beispielhaft zeigt 1 einen Block einer derartigen Pipeline gemäß dem Stand der Technik. Bei einem typischen ASIC sind mehrere solcher Pipeline-Blöcke instanziiert und dazu eingerichtet, entweder parallel oder seriell zu arbeiten unter der Kontrolle einer zentralen Steuereinheit, welche eine herkömmliche Mikroprozessoreinheit („MPU“) oder eine spezielle Steuereinheit (nicht gezeigt), die auf dem gleichen ASIC instanziiert ist, sein kann.When a hashing engine is implemented in an application-specific integrated circuit ("ASIC"), the key design goals, power, performance, and scope must be improved. When many messages of the same short length are to be hashed, a pipeline implementation of a hash core is possible. Exemplary shows 1 a block of such a pipeline according to the state of the technique. In a typical ASIC, a plurality of such pipeline blocks are instantiated and configured to operate either in parallel or serially under the control of a central control unit including a conventional microprocessor unit ("MPU") or a dedicated control unit (not shown) operating on the same ASIC is instantiated, can be.

Beim Block-Ketten-Schürfen werden viele Nachrichten (Blöcke) gehasht, die sich nur in dem letzten Datenblock unterscheiden (beispielsweise in dem Abschnitt, der die Nonce enthält). Für diese spezifische Art von Anwendung kann der Zwischenzustand (engl.: midstate) des Komprimierers (d.h. der Hardwarekomponente, die die Komprimierungsfunktion durchführt) vorberechnet werden, soweit er nicht von der Nonce abhängt. Dann kann für die letzte Anwendung des Komprimierers, die nicht von der Nonce abhängt, der Pipeline-Kern 10, wie in 1 gezeigt, verwendet werden. In 1 wurde eine herkömmliche Notation verwendet, um Busbreiten zu kennzeichnen, mit Einheiten, die als 32-Bit Doppel-Wörter („dwords“) ausgedrückt sind. Manchmal, abhängig vom Kontext, können der Komprimierer 14 als ein Semi-Hasher und die Kombination des Erweiterers 12 und des Komprimierers 14 als Voll-Hasher bezeichnet werden. Zum Zwecke der vorliegenden Erfindung wird angegeben, dass der Kern 10 in Form einer Pipeline (engl.: pipelined form) oder in gerollter Form (engl.: rolled form) installiert sein kann.In block chain mining, many messages (blocks) are hashed that differ only in the last data block (for example, in the section containing the nonce). For this specific type of application, the intermediate state (midstate) of the compressor (ie, the hardware component performing the compression function) can be precomputed, as long as it does not depend on the nonce. Then, for the last application of the compressor, which does not depend on the nonce, the pipeline core 10, as in FIG 1 shown to be used. In 1 For example, conventional notation has been used to denote bus widths with units expressed as 32-bit double words ("dwords"). Sometimes, depending on the context, the compressor 14 may be referred to as a semi-hasher and the combination of the extender 12 and the compressor 14 as a full hasher. For the purposes of the present invention, it is stated that the core 10 may be installed in the form of a pipelined or in a rolled form.

In 2 ist die grundsätzliche Hardwarearchitektur eines gerollten Kerns (engl.: rolled core) 10' gemäß dem Stand der Technik dargestellt. Typischerweise werden bei einer derartigen Architektur ungefähr 67 Zyklen benötigt, um eine SHA-256 Runde zu berechnen, aufweisend 64 Berechnungszyklen plus ein paar zusätzliche Zyklen, um die Register mit Anfangswerten zu laden. Häufig wird der Nur-Lese-Speicher („ROM“) der Konstanten zwischen verschiedenen Kernen 10' geteilt. Im Allgemeinen kann ein gerollter Spezial-Kern 10' gemäß dem Stand der Technik wie in 3 dargestellt konzipiert werden, wobei die Hash berechnende Hardware als Wolke (engl.: cloud) einer kombinatorischen Logik dargestellt ist. Ein höher strukturierter Pipeline-Kern 10' ist beispielhaft in 4 dargestellt. In 5 ist eine High-Level Darstellung eines typischen Bitcoin SHA2-Engines 16 dargestellt.In 2 FIG. 3 illustrates the basic hardware architecture of a rolled core 10 'according to the prior art. Typically, with such an architecture, approximately 67 cycles are needed to compute a SHA-256 round, having 64 computation cycles plus a few extra cycles to load the registers with initial values. Often, the read only memory ("ROM") of the constants is shared between different cores 10 '. In general, a rolled special core 10 'according to the prior art as in 3 The hashing hardware is represented as a cloud of combinatorial logic. A higher structured pipeline core 10 'is exemplified in FIG 4 shown. In 5 is a high-level representation of a typical Bitcoin SHA 2 engine 16 shown.

In 6 ist das Format einer Bitcoin Block-Überschrift gezeigt, wobei die dargestellten Feldgrößen in 8-Bit Bytes ausgedrückt sind. Wie zu sehen ist, überspannt bei einem Offset von 36 das 32-Byte Merkle-Wurzel(engl.: Merkle root)-Feld die Grenze zwischen Block [0] (manchmal einfach als „B0“ bezeichnet) und Block [1] („B1“) der Block-Überschrift. Beispielhaft ist in 7 ein 3-Level Merkle-Baum gezeigt, der einen Blätterset (engl.: leaf set) aufweisend 4 Transaktionen hat, obwohl zu verstehen ist, dass ein typischer Merkle-Baum zusätzliche hierarchische Hash-Ebenen haben kann abhängig von der Anzahl der Transaktionen, die gehasht werden. In 8 ist zur vereinfachten Bezugnahme eine typische 3-Block-Sequenz innerhalb einer Bitcoin Block-Kette dargestellt, wobei jeder Block eine Block-Überschrift (siehe 6) und ein entsprechendes Set von Transaktionen (in Reinschrift (engl.: clear text), um das Block-Browsen zu vereinfachen) aufweist. In Situationen, in denen die Anzahl von verfügbaren Transaktionen geringer ist als eine Quadratzahl, wird ein Padding, beispielsweise Duplikat- oder Dummy-Transaktionen, auf Blätter-Ebene (engl.. leaf level) hinzugefügt, um die quadratische Baumstruktur zu vervollständigen. In Übereinstimmung mit dem Bitcoin Protokoll ist die erste Transaktion jedes Blocks immer eine Erzeugungs(oder Coinbase)-Transaktion, die von dem Schürfer erzeugt wird, der den Block der Kette hinzugefügt hat.In 6 For example, the format of a bitcoin block header is shown, with the displayed field sizes expressed in 8-bit bytes. As can be seen, at an offset of 36, the 32-byte Merkle root field spans the boundary between block [0] (sometimes referred to simply as "B0") and block [1] (" B1 ") of the block header. Exemplary is in 7 a 3-level Merkle tree having a leaf set having 4 transactions, although it should be understood that a typical Merkle tree may have additional hierarchical hash levels depending on the number of transactions that to be hashed. In 8th For simplicity of reference, a typical 3 block sequence within a bitcoin block chain is shown, each block being a block header (see 6 ) and a corresponding set of transactions (in clear text) to facilitate block browsing. In situations where the number of available transactions is less than a square number, padding, such as duplicate or dummy leaf level transactions, is added to complete the quadratic tree structure. In accordance with the Bitcoin protocol, the first transaction of each block is always a create (or coinbase) transaction created by the prospector who added the block to the chain.

Wie in der eingangs erwähnten US Provisional Application erwähnt, wurde vorgeschlagen, das 4-Byte Versionsfeld in der Block-Überschrift (siehe 6) aufzuteilen und beispielsweise den Hoch 2-Byte Abschnitt als zusätzlichen Nonce-Bereich zu verwenden. Alternativ dazu definiert die Bitcoin Spezifikation ein extraNonce-Feld in dem Format für die Coinbase- oder Erzeugungs-Transaktionen (siehe 16 b). Jedoch erkennt die Bitcoin Spezifikation, dass das Vergrößern des extraNonce-Felds eine Neuberechnung des Merkle-Baums zur Folge hat, da die Coinbase-Transaktion der Blätterknoten ist, der ganz links ist. In diesem Ansatz wird jedes Mal, wenn das extraNonce Feld vergrößert wird, eine vollständige Merkle-Wurzel erzeugt, was erfordert, dass die gesamte Block-Überschrift neu prozessiert wird.As mentioned in the aforementioned US Provisional Application, it has been proposed to include the 4-byte version field in the block header (see 6 ) and, for example, to use the high 2-byte section as an additional nonce area. Alternatively, the Bitcoin specification defines an extraNonce field in the format for the Coinbase or Generation transactions (see 16 b ). However, the Bitcoin specification recognizes that increasing the extraNonce field results in a recalculation of the Merkle tree, since the CoinBase transaction is the leaf leftmost node. In this approach, each time the extraNonce field is increased, a complete Merkle root is generated, requiring that the entire block header be re-processed.

Ein Problem, das bei derzeitigen Hardwareplattformdesigns wahrgenommen wird, ist die Anforderung, dass jeder Hash-Kern dazu eingerichtet sein muss, den vollen SHA-256 durchzuführen, unabhängig von allen anderen Hash-Kernen in der Hardware-Instanziierung. Was benötigt wird, ist eine Vorrichtung, die es einer einzigen Erweiterer-Instanz (engl.: expander instant) ermöglicht, unter einer Vielzahl von Komprimierer-Instanzen (engl.: compression instants) geteilt zu werden (bspw. von diesen gemeinsam verwendet zu werden).One problem that is perceived in current hardware platform designs is the requirement that each hash core must be configured to perform the full SHA-256 independently of all other hash cores in the hardware instantiation. What is needed is a device that allows a single expander instance to be shared (eg, shared among) among a plurality of compression instants ).

KURZE BESCHREIBUNG DER ERFINDUNG BRIEF DESCRIPTION OF THE INVENTION

Bei einer Ausführungsform der Erfindung wird eine Vorrichtung bereitgestellt, die dazu eingerichtet ist, ein Blockschürfverfahren (engl.: block mining method) zum Schürfen (engl.: mining) eines Blocks durchzuführen, der eine Block-Überschrift aufweist, als Funktion einer ausgewählten Hashfunktion, die auf die Block-Überschrift angewendet wird, wobei die ausgewählte Hash-Funktionen eine Erweiterungsoperation (alternativ: Entpackungsoperation) und eine Komprimierungsoperation aufweist. In Übereinstimmung mit der Vorrichtung wird erst eine Mehrzahl m von Zwischenzuständen (engl.: mid-states) entwickelt, jeder als Funktion eines selektiven Variierens eines ausgewählten ersten Abschnitts der Block-Überschrift. Nachfolgend wird die Erweiterungsoperation auf einen ausgewählten zweiten Abschnitt der Block-Überschrift ausgeführt, um einen Nachrichten-Zeitplan zu erzeugen. Letztendlich wird für jeden der Zwischenzustände die Komprimierungsfunktion auf den Zwischenzustand und den Nachrichten-Zeitplan durchgeführt, um entsprechende Resultate zu erzeugen.In one embodiment of the invention, an apparatus is provided which is adapted to perform a block mining method for mining a block having a block header as a function of a selected hash function, which is applied to the block header, the selected hash functions having an extension operation (alternatively: unpacking operation) and a compression operation. In accordance with the apparatus, a plurality m of mid-states are first developed, each as a function of selectively varying a selected first portion of the block header. Subsequently, the extension operation is performed on a selected second portion of the block header to generate a message schedule. Finally, for each of the intermediate states, the compression function is performed on the intermediate state and message schedule to produce corresponding results.

Bei einer weiteren Ausführungsform wird ein computerlesbares Medium bereitgestellt, das ausführbare Instruktionen aufweist, die, wenn sie von einem Prozessierungssystem durchgeführt werden, bewirken, dass das Prozessierungssystem die Schritte des Verfahrens durchführt.In another embodiment, a computer-readable medium is provided having executable instructions that, when executed by a processing system, cause the processing system to perform the steps of the method.

Figurenlistelist of figures

Die Erfindung kann besser verstanden werden anhand einer Beschreibung von bestimmten bevorzugten Ausführungsformen in Verbindung mit den angehängten Zeichnungen, in denen zeigen:

  • 1 ein Blockdiagramm einer Spezial-SHA-Pipeline des Standes der Technik;
  • 2 ein Blockdiagramm eines gerollten Spezial-SHA-Kerns des Standes der Technik; ein Blockdiagramm eines anderen gerollten Spezial-SHA-Kerns des Standes der Technik;
  • 4 ein Blockdiagramm eines Bitcoin SHA2 Hash-Engines, der einen Pipeline-Kern hat, gemäß dem Stand der Technik;
  • 5 ein Blockdiagramm eines Bitcoin SHA2 Hash-Engines, der einen gerollten Kern oder einen Pipeline-Kern hat, gemäß dem Stand der Technik;
  • 6 das Format einer Bitcoin Block-Überschrift in Tabellenform;
  • 7 ein Blockdiagramm eines mehrstufigen (engl.: multi-tier) Merkle-Baums, wie er in dem Bitcoin Protokoll ausgeführt ist;
  • 8 ein Blockdiagramm des allgemeinen Formats für Bitcoin Blöcke, die eine Block-Kette aufweisen;
  • 9 ein Blockdiagramm eines Bitcoin SHA2 Hash-Engines, der in Übereinstimmung mit der vorliegenden Erfindung konstruiert ist, wie in der US Provisional Application offenbart;
  • 10 ein Blockdiagramm einer möglichen Hardwareimplementierung in Übereinstimmung mit der vorliegenden Erfindung, wie in der US Provisional Application offenbart;
  • 11 ein logisches Ablaufdiagramm eines möglichen Verfahrens zum Betreiben der Ausführungsform gemäß 10, wie ebenfalls in der US Provisional Application offenbart;
  • 12 ein Blockdiagramm einer möglichen parallelen Ausführungsform eines Nachrichten-Zeitplan-Teilens (engl.: message schedule sharing) in Übereinstimmung mit der vorliegenden Erfindung, wie in der US Provisional Application offenbart;
  • 13 ein Blockdiagramm einer möglichen kaskadierten Ausführungsform eines Nachrichten-Zeitplan-Teilens in Übereinstimmung mit der vorliegenden Erfindung;
  • 14 ein Blockdiagramm einer alternativen parallelen Ausführungsform einer Pipeline-Nachrichten-Zeitplan-Vorberechnung in Übereinstimmung mit der vorliegenden Erfindung;
  • 15, aufweisend 15a und 15b ein Blockdiagramm möglicher Nachrichten-Zeitplan-Vorberechnung-Engines, angepasst zur Verwendung beispielsweise in 14;
  • 16, aufweisend 16a und 16b ein Blockdiagramm mehrerer möglicher Formen für den mehrstufigen Merkle-Baum gemäß 7;
  • 17 ein Ablaufdiagramm eines möglichen Verfahrens zum Erzeugnis einer Mehrzahl von Merkle-Wurzeln (engl.: roots);
  • 18 ein Blockdiagramm einer möglichen kaskadierten Ausführungsform eines Nachrichten-Zeitplan-Teilens, die gerollte Kerne hat, in Übereinstimmung mit der vorliegenden Erfindung; und
  • 19 ein Blockdiagramm einer Ausführungsform einer Nachrichten-Zeitplan-Vorberechnung, die gerollte Kerne hat, in Übereinstimmung mit der vorliegenden Erfindung.
The invention can be better understood by a description of certain preferred embodiments in conjunction with the attached drawings, in which:
  • 1 a block diagram of a special SHA pipeline of the prior art;
  • 2 a block diagram of a rolled special SHA core of the prior art; a block diagram of another prior art rolled special SHA core;
  • 4 a block diagram of a Bitcoin SHA2 hash engine having a pipeline core, according to the prior art;
  • 5 a block diagram of a Bitcoin SHA2 hash engine having a rolled core or a pipelined core, according to the prior art;
  • 6 the format of a bitcoin block header in tabular form;
  • 7 a block diagram of a multi-tier Merkle tree as embodied in the Bitcoin protocol;
  • 8th a block diagram of the general format for Bitcoin blocks having a block chain;
  • 9 a block diagram of a Bitcoin SHA 2 hashing engine constructed in accordance with the present invention as disclosed in the US Provisional Application;
  • 10 a block diagram of a possible hardware implementation in accordance with the present invention as disclosed in the US Provisional Application;
  • 11 a logical flow diagram of a possible method for operating the embodiment according to 10 as also disclosed in the US Provisional Application;
  • 12 a block diagram of a possible parallel embodiment of a message schedule sharing in accordance with the present invention, as disclosed in the US Provisional Application;
  • 13 a block diagram of a possible cascaded embodiment of a message schedule sharing in accordance with the present invention;
  • 14 a block diagram of an alternative parallel embodiment of a pipeline message schedule pre-calculation in accordance with the present invention;
  • 15 having 15a and 15b a block diagram of possible message schedule precalculation engines adapted for use in e.g. 14 ;
  • 16 having 16a and 16b a block diagram of several possible shapes for the multi-level Merkle tree according to 7 ;
  • 17 a flow chart of a possible method for producing a plurality of Merkle roots (English: roots);
  • 18 a block diagram of a possible cascaded embodiment of a message schedule sharing having rolled cores, in accordance with the present invention; and
  • 19 a block diagram of one embodiment of a message schedule pre-calculation having rolled cores, in accordance with the present invention.

In den Zeichnungen werden ähnliche Elemente soweit möglich gleich nummeriert. Jedoch dient dieses Vorgehen lediglich der vereinfachten Bezugnahme und dem Vermeiden unnötiger Ausuferung von Zahlen und ist nicht dazu gedacht, zu implizieren oder vorzuschlagen, dass die vorliegende Erfindung die Identität von Funktionen oder Strukturen in den verschiedenen Ausführungsformen benötigt.As far as possible, similar elements are numbered the same in the drawings. However, this approach is merely for ease of reference and avoid unnecessary sprawl of numbers, and is not intended to imply or suggest that the present invention requires the identity of functions or structures in the various embodiments.

DETAILLIERTE BESCHREIBUNG DER ERFINDUNGDETAILED DESCRIPTION OF THE INVENTION

9 veranschaulicht eine High-Level-Ansicht eines Bitcoin SHA2 Hash-Engines 16, der in Übereinstimmung mit der vorliegenden Erfindung, wie ich sie in der US Provisional Application offenbart ist, ausgebildet ist. In 10 wird eine grundlegende Implementierung der vorliegenden Erfindung, wie sie in der US Provisional Application offenbart ist, bereitgestellt. Die bevorzugte Ausformungsform ist in der Form eines ASICs instanziiert, der einen Hash-Engine 16' instanziiert, der eine ausgewählte Anzahl, beispielsweise 200, von SHA-256 Semi-Hashern 12 und eine entsprechende Anzahl von Voll-SHA-256 Hashern 14 aufweist. Jeder Semi-Hasher 12 ist mit einem entsprechenden Voll-Hasher 14 verbunden (engl.: pipelined). Jede Hash-Pipeline (bspw. Hash-Verbindung), welche einen Semi-Hasher 12 mit einem Voll-Hasher 14 kombiniert, gibt ein SHA2-Ergebnis pro Taktschlag aus. Jeder Semi-Hasher 12 hat ein 32-Byte Zwischenzustands(engl.: mid-state)-Register 18, welches einen vorbereiteten Zwischenzustand (engl.: midstate) enthält, und ein 64*4-Byte vorberechnetes Nachrichten-Zeitplan-Register 20, welches einen vorberechneten Nachrichten-Zeitplan enthält; und alle SHA Runden (engl.: rounds) sind abgerollt (engl.: unrolled) und in Hardware implementiert. Herkömmlicherweise enthält jeder Voll-Hasher 14 die Logik zum Erzeugen des Nachrichten-Zeitplans, um den Nachrichten-Zeitplan von dem Eingangsblock bei jedem Taktschlag abzuleiten; und die Runden sind abgerollt. Ein Nachrichten-Zeitplan-Verschieberegister 12a ist dazu eingerichtet, ähnlich einer Erweiterungspipeline zu arbeiten, um einen Nachrichten-Zeitplan eines Eingabeblocks sequenziell in einen 64-Deep Push-Down Stapel von 16 dword Gleitfenster (manchmal als Slots bezeichnet) zu erzeugen, wobei jedes neue dword der Nachricht an den Anfang kommt und das älteste dword ganz unten entfernt wird. Während des Betriebs wird jedes Gleitfenster nach unten zu dem nächst tieferen Slot gedrückt, um der Hash-Runde, die zu dem Slot korrespondiert, zu folgen. Bei Runde 61 des Voll-Hashers 14 wird ein spezielles Zwischenvergleichs-Logikmodul 22 bereitgestellt, das eine Lösung für den Block prüft, bevor alle 64 Runden abgearbeitet sind. Falls die Lösung gefunden wird, wird eine Unterbrechung („IRQ“) erzeugt; optional kann allen Voll-Hashern 14 erlaubt werden, das Suchen nach zusätzlichen Lösungen fortzusetzen, oder sie können angehalten werden, um Energie zu sparen. Ein externer Mikroprozessor („MPU“) 24 kümmert sich um die Ausnahme, liest die Ausgangssignale der Voll-Hasher 14 und findet den einen, der den Block gelöst hat. Ferner wird ein Letzte-32-Bit-Prüfer 26 bereitgestellt, um die erneute Verwendung der Hash-Pipeline für die Vorberechnung zu vereinfachen. 9 illustrates a high-level view of a Bitcoin SHA 2 hashing engine 16 which is formed in accordance with the present invention, as disclosed in the US Provisional Application. In 10 For example, there is provided a basic implementation of the present invention as disclosed in US Provisional Application. The preferred embodiment is instantiated in the form of an ASIC, which is a hash engine 16 ' instantiating a selected number, say 200, of SHA 256 Semi-Hashern 12 and a corresponding number of full SHA 256 Hashern 14 having. Every semi-hasher 12 is with a corresponding full-hasher 14 connected (English: pipelined). Each hash pipeline (eg hash connection) which is a semi-hasher 12 with a full-hasher 14 combined, returns one SHA 2 score per beat. Every semi-hasher 12 has a 32-byte mid-state register 18 , which contains a prepared midstate, and a 64 * 4-byte pre-computed message schedule register 20 containing a pre-calculated message schedule; and all SHA rounds are unrolled and implemented in hardware. Traditionally, each contains full hash 14 the message schedule generation logic to derive the message schedule from the input block at each beat; and the rounds are unrolled. A news schedule relocation register 12a is configured to operate similarly to an extension pipeline to sequentially encode a message schedule of an input block into one 64 -Deep push-down stack of 16 dword sliding windows (sometimes called slots), where each new dword of the message comes to the beginning and the oldest dword is removed at the very bottom. During operation, each sliding window is pushed down to the next lower slot to follow the hash round corresponding to the slot. At round 61 the full-hasher 14 becomes a special intermediate comparison logic module 22 provided that checks a solution for the block before all 64 Rounds are completed. If the solution is found, an interrupt ("IRQ") is generated; optional can all full hashers 14 be allowed to continue searching for additional solutions, or they may be stopped to save energy. An external microprocessor ("MPU") 24 takes care of the exception, reads the output signals of the full-hasher 14 and find the one who solved the block. It also becomes a last-32-bit examiner 26 to simplify the reuse of the hash pipeline for precalculation.

In Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung, wird direkt vorgeschlagen, den 28-Byte-Abschnitt der Merkle-Wurzel, der in dem Block [0] (siehe 6) liegt, selektiv zu variieren. Dies erfordert, dass der Schürfer erst eine Vorbereitungsstufe abarbeitet, in der viele verschiedene gültige Merkle-Wurzeln konstruiert sind. Jedoch, im Unterschied zu dem herkömmlichen Ansatz, ist das Ziel, eine Anzahl von Kandidaten für Merkle-Wurzeln zu finden, die mit dem gleichen 4-Byte Muster enden. Ein Weg ist beispielsweise, ein vorgegebenes festes Muster zu wählen (beispielsweise 4 Null Bytes). Ein anderer Weg ist, die Kandidaten für die Merkle-Wurzeln für jedes Muster zu speichern, bis genug Kandidaten für Wurzeln, die mit einem gewünschten Muster enden, gefunden sind.In accordance with one embodiment of the present invention, it is directly suggested to use the 28-byte portion of the Merkle root set forth in block [0] (see 6 ) is to vary selectively. This requires the miner to complete a preparation stage that constructs many different valid Merkle roots. However, unlike the conventional approach, the goal is to find a number of candidate Merkle roots that end up with the same 4-byte pattern. For example, one way is to choose a given fixed pattern (for example, 4 zero bytes). Another way is to store the candidate Merkle roots for each pattern until enough candidates for roots ending in a desired pattern are found.

Der funktionale Ablauf von Operationen des Hash-Engines 16', wie er in der US Provisional Application beschrieben ist, ist in 11 dargestellt. Dieser arbeitet, in Pseudocodeform (mit Einrückungen, die eine 4-Schleifen-Struktur kennzeichnen) wie folgt:

Figure DE202014011229U1_0005
Figure DE202014011229U1_0006
The functional flow of operations of the hash engine 16 ' , as described in the US Provisional Application, is in 11 shown. This works in pseudo-code form (with indents marking a 4-loop structure) as follows:
Figure DE202014011229U1_0005
Figure DE202014011229U1_0006

Ein Weg, schnell viele gültige Wurzel-Kandidaten aufzuzählen, ist, diese zu konstruieren durch Erhöhen des extraNonce-Felds und durch Neuberechnen der Elternknoten(engl.: parent nodes)-Hashes oben im Baum zu den Wurzelknoten. Ein anderer Weg ist, die Unterbäume (engl.: sub-trees) des Merkle-Baums neu anzuordnen mittels Tauschens der Kinderknoten (engl.: child nodes) (beispielsweise links und rechts vertauschen) und die Elternknoten bis zu den Wurzel-Knoten neu zu berechnen; dieser Ansatz kann ein Permutieren der Transaktions-Blätter (engl.: transaction leafs) einschließen. Jedes Mal, wenn ein neuer Wurzel-Kandidat berechnet wird, wird er mit dem gewünschten Muster verglichen und, wenn er nicht passt, wird der Wurzel-Kandidat verworfen und ansonsten gespeichert. Wie in der US Provisional Application angemerkt, erfordert diese Technik, dass der Schöpfer ungefähr s*232log2(Q) SHA2 Hash-Digest abarbeitet, um s Elemente mit gleicher Endung zu erhalten, wenn es Q Transaktionen gibt, die in dem Merkle-Baum aufgenommen werden sollen.One way to quickly enumerate many valid root candidates is to construct them by incrementing the extraNonce field and recalculating the parent node hashes at the top of the tree to the root nodes. Another way is to rearrange the sub-trees of the Merkle tree by swapping the child nodes (for example, swapping left and right) and re-assigning the parent nodes to the root nodes to calculate; this approach may include permuting the transaction sheets. Each time a new root candidate is computed, it is compared to the desired pattern and, if it does not match, the root candidate is discarded and stored otherwise. As noted in the US Provisional Application, this requires Art that the creator executes approximately 32 s * 2 log2 (Q) 2 SHA hash digest to obtain s elements with the same ending if there is Q transactions to be received within the Merkle tree.

Wie in der US Provisional Application erläutert, wird vorgeschlagen, eine bessere Performance zu erzielen mittels Kombinierens von zwei Sätzen von vorerzeugten Merkle-Unterbäumen (obwohl ein dynamisch erzeugter Merkle-Unterbaum kombiniert werden kann, wurde festgestellt, dass dies im allgemeinen schlechter ist). Die Vorbereitungsstufe wird in drei Schritten durchgeführt.

  1. 1. In dem ersten Schritt der Vorbereitungsstufe werden K1 Knoten-Hashes entwickelt mittels selektiven Neuanordnens von Transaktionen in dem Merkle-Baum oder vielleicht mittels Wählens unterschiedlicher Sätze von Transaktionen aus dem Pool von allen anhängigen Transaktionen. Dies kann erzielt werden in ungefähr (K1+1)*log2(#Q1) SHA2 Operationen wobei Q1 ein Set von Transaktion-Hashes ist und #Q1 die Anzahl von Transaktion-Hashes (das heißt, Blätter Knoten) in dem Satz ist, da, sobald ein Baum für Q1 Transaktionen gebildet wurde, die neuen Wurzeln erhalten werden können mittels Tauschens der KinderKnoten, und das Berechnen jedes Eltern-Knotens erfordert im Durchschnitt log2(Q1) SHA2 Hash-Digest. Nur die Eltern-Knoten-Hashes müssen gespeichert werden und die tatsächlichen Bäume können später aus dem Speicher entfernt werden.
  2. 2. In dem zweiten Schritt der Vorbereitungsstufe wird ein Satz von K2 Eltern-Knoten-Hash-Digest eines Sets von Knoten-Unterbäumen entwickelt, wobei der Satz von Transaktionen Q2 ist und die Anzahl von Transaktionen (Blätter-Knoten) #Q2=#Q1 ist (wie vorstehend erläutert, ist dies immer möglich, da die Bitcoin Merkle-Wurzeln Duplikate-Transaktions-Hashes nutzen, um leere Knoten des Baums aufzufüllen). Es ist anzumerken, dass sich die Sets Q1 und Q2 nicht schneiden und dass jede Reihe von Transaktionen, die erzeugt werden mittels Verkettung einer Reihe von Q1 mit einer Reihe von Q2, eine gültige Reihenfolge von Transaktionen sein muss. Es ist auch anzumerken, dass beinahe alle möglichen Reihen von Q1 Transaktionen im Allgemeinen gültig sind, da die meisten Schürfer keine Blöcke erzeugen, die Transaktionen haben, die von anderen Transaktionen in den Block abhängen (die einzige Ausnahme ist, dass die Erzeugungstransaktion immer die erste ist). Für Q1 gibt es eine Anzahl von (#Q1-1)! möglichen Wurzel-Kandidaten des linken Unterbaumes (dort gibt es 3.628.800 mögliche Reihen). Für Q2 kann zur Vereinfachung angenommen werden, dass es keine wiederholten Transaktion-Hashes gibt (d.h. #Q1+#Q2 ist eine Quadratzahl). Daraus folgt, dass es eine Anzahl von (#Q2)! möglichen Wurzel-Kandidaten des rechten Unterbaumes gibt. Wenn wir #Q1=#Q2=11 annehmen, dann gibt es mindestens 246 mögliche Wurzel-Kandidaten, die einfach berechnet werden können mittels Kombinierens eines Elements des linken Satzes mit einem Element des rechten Satzes. Es ist anzumerken, dass K1 und K2 nicht so groß sein müssen und einen kleinen Untersatz von möglichen Reihen repräsentieren können und größere Werte von #Q1 und #Q2 nutzen.
  3. 3. In dem dritten Schritt der Vorbereitungsstufe (welcher generell durchgeführt wird, beispielsweise von dem Hash-Enginge 16'), werden die Hashes eines Elternteils des erstens Satzes iterativ kombiniert mit einem Elternteil des zweiten Satzes (ein Blätter-Knoten mit einem rechten Knoten) und dann SHA2 gehasht, um den Wurzel-Knoten-Hash zu erhalten. Jede Kombination erfordert lediglich das Erhalten von 2 Hashes von den Tabellen und das Durchführen der SHA2 Operationen.
As explained in the US Provisional Application, it is proposed to achieve better performance by combining two sets of pre-produced Merkle subtrees (although a dynamically generated Merkle subtree can be combined, it has been found that this is generally worse). The preparation stage is carried out in three steps.
  1. 1. In the first step of the preparation stage, K 1 node hashes are developed by selectively rearranging transactions in the Merkle tree, or perhaps by choosing different sets of transactions from the pool of all pending transactions. This can be achieved in approximately (K 1 +1) * log 2 (# Q 1 ) SHA 2 operations where Q 1 is a set of transaction hashes and #Q 1 is the number of transaction hashes (i.e., leaves node) in Given that, once a tree has been formed for Q 1 transactions, the new roots can be obtained by swapping the child nodes, and computing each parent node on average requires log 2 (Q 1 ) SHA 2 hash digest. Only the parent node hashes need to be saved and the actual trees can later be removed from memory.
  2. 2. In the second step of the preparation stage, a set of K 2 parent node hash digest of a set of node subtrees is developed, where the set of transactions is Q 2 and the number of transactions is (leaf node) #Q 2 = # Q 1 (as explained above, this is always possible because the Bitcoin Merkle roots use duplicate transaction hashes to fill up empty nodes in the tree). It should be noted that the sets Q 1 and Q 2 do not intersect and that any series of transactions generated by concatenating a series of Q 1 with a series of Q 2 must be a valid order of transactions. It should also be noted that almost all possible sets of Q1 transactions are generally valid, as most prospectors do not generate blocks having transactions that depend on other transactions in the block (the only exception being that the generation transaction is always the first is). For Q 1 there are a number of (#Q 1 -1)! possible root candidates of the left subtree (there are 3,628,800 possible rows). For Q 2 , for simplicity, it can be assumed that there are no repeated transaction hashes (ie #Q 1 + # Q 2 is a square number). It follows that there are a number of (#Q 2 )! possible root candidate of the right subtree. If we assume #Q 1 = # Q 2 = 11, then there are at least 2 46 possible root candidates that can easily be computed by combining an element of the left set with an element of the right set. It should be noted that K 1 and K 2 need not be so large and can represent a small subset of possible rows and use larger values of #Q 1 and #Q 2 .
  3. 3. In the third step of the preparation stage (which is generally performed, for example, by the hash Enginge 16 ' ), the hashes of a parent of the first sentence are iteratively combined with a parent of the second set (a leaf node with a right node) and then SHA 2 hashed to obtain the root node hash. Each combination only requires getting 2 hashes from the tables and performing the SHA 2 operations.

In 12 ist ein Kern 10 gezeigt, der dazu eingerichtet ist, in dem System gemäß 9 verwendet zu werden und der einen Erweiterer 12 aufweist, der dazu eingerichtet ist, den gleichen Nachrichten-Zeitplan mit einem Paar von synchronen arbeitenden Komprimierern 14a und 14b zu teilen. Wie im Vorstehenden erläutert startet jeder der Komprimierer 14 mit einem einzigartigen Zwischenzustand, der beispielsweise unter Verwendung des Prozesses zum Erzeugen der Wurzel-Kandidaten erzeugt wird. Da der Hash-Prozess synchron nach unten durch den Komprimierer 14 fortschreitet, fließen die Wörter des Nachrichten-Zeitplans parallel nach unten durch den Erweiterer 12. Bis zur Vervollständigung liefert jeder Komprimierer 14 einen entsprechenden einzigartigen Ausgangs-Zustand. Wie in unserer grundlegenden Architektur bleiben die Zwischenzustände über einen vollen Nonce-Bereich konstant, wohingegen sich die Nonce in den Wörtern des Nachrichten-Zeitplans mit dem vollen Pipeline-Taktschlag erhöhen. In deutlichem Unterschied zu einer herkömmlichen Architektur benötigt der Hash-Engine 16' lediglich einen einzigen geteilten Erweiterer 12, wodurch sich nicht nur die gesamte Systemhardware reduziert, sondern auch der Energieverbrauch.In 12 For example, a core 10 configured to be implemented in the system according to FIG 9 to be used and an enhancer 12 which is adapted to the same message schedule with a pair of synchronous operating compressors 14a and 14b to share. As explained above, each of the compressors starts 14 with a unique intermediate state, for example, generated using the process of generating the root candidates. Since the hash process is synchronized down through the compressor 14 As the message progresses, the words of the message schedule flow down parallel through the enhancer 12 , Until completion, each compressor delivers 14 a corresponding unique output state. As in our basic architecture, the intermediate states remain constant over a full nonce range, whereas the nonce in the words of the message schedule increase with the full pipeline beat. In stark contrast to a traditional architecture, the hash engine needs 16 ' only a single shared extension 12 which reduces not only the overall system hardware but also the power consumption.

13 zeigt einen typischen kaskadierten Kern 10, der dazu eingerichtet ist, in dem System gemäß 9 verwendet zu werden, aufweisend einen Erweiterer 12, der dazu eingerichtet ist, den gleichen Nachrichten-Zeitplan mit einer Mehrzahl von synchronen operierenden Komprimieren 14a bis 14b zu teilen. In diesem Kern 10 sind mehrere Komprimierer 14 in einer Kaskade verbunden, wobei jedes Nachrichten-Zeitplan-Element sequenziell von einem Komprimierer zum anderen Komprimierer weitergegeben wird, mit einem Verzögerungsintervall (geeignet für die spezifische Hardwareimplementierung) pro Komprimierer. Jeder Komprimierer 14 beginnt mit einem einzigartigen Zwischenzustand und liefert nach Fertigstellung einen entsprechenden einzigartigen Ausgangszustand; jedoch werden die Ausgangszustände, die zu der gleichen Nachricht korrespondieren, über die Zeit sequenziell um einen Verzögerungsintervall beabstandet zugestellt. Es ist anzumerken, dass diese Anordnung eine sorgfältig koordinierte 2-dimensionale Pipeline aufweist, wobei die Verarbeitung von oben nach unten und von links nach rechts verläuft. Im Betrieb produzieren in jedem Zyklus alle Komprimierer 14 je einen entsprechenden Ausgangszustand, jedoch für verschiedene Nachrichten. 13 shows a typical cascaded core 10 that is set up in the system according to 9 to be used, having an enhancer 12 that is set up to compress the same message schedule with a plurality of synchronous operating 14a to 14b to share. In this core 10 are several compressors 14 in a cascade, wherein each message schedule element is passed sequentially from one compressor to the other compressor, with a Delay interval (suitable for the specific hardware implementation) per compressor. Every compressor 14 begins with a unique intermediate state and, upon completion, provides a corresponding unique initial state; however, the output states corresponding to the same message are sequentially delivered over time by a delay interval. It should be noted that this arrangement has a carefully coordinated 2-dimensional pipeline, the processing being from top to bottom and from left to right. In operation, all compressors produce in each cycle 14 each one corresponding initial state, but for different messages.

In 14 ist eine typische kaskadierte Form des Nachrichten-Zeitplan-Vorberechnungs-Prozessierens dargestellt, wobei der Hash-Engine 16 einen Zwischenzustands-Generator 28 aufweist, der dazu eingerichtet ist, dynamisch einzigartige Zwischenzustände für jeden der Mehrzahl von Komprimieren 14 zu erzeugen, und einen 64-stufigen Verzögerer FIFO 30, der dazu eingerichtet ist, die Zulieferung des entsprechenden Zwischenzustandes zu der letzten Stufe des entsprechenden Komprimierers 14 zu verzögern. Der Zwischenzustands-Generator 28 muss mit jedem Komprimierer-Taktschlag einen neuen Zwischenzustand entwickeln, wobei jeder Zwischenzustand in der Komprimierer-Kette bei der gleichen Taktsignal-Rate nach unten weitergegeben wird. In dieser Ausführungsform des Nachrichten-Zeitplan-Vorberechnungs-Hash-Engine 16 werden die Nachrichten-Zeitplan-Wörter, W0 bis W63, mittels eines geeigneten Nachrichten-Zeitplan-Vorberechnungs-Engine 32 dynamisch entwickelt, deren Beispiele in 15 gezeigt sind. In dem Hash-Engine 16 sind beide Nachrichten-Zeitplan-Wörter und die Nonce für eine relativ lange Zeit konstant. Bei der in 15a gezeigten Ausführungsform werden die Ausgabe-Wörter in einem Satz von 64 Nachrichten-Zeitplan-Registern 34 gespeichert, die den entsprechenden Komprimierern 14 zugeordnet sind. Obwohl in 15a ein einzelner geteilter gerollter Nachrichten-Erweiterer 32a dargestellt ist, hat jeder Komprimierer 14 einen lokalen gerollten Nachrichten-Erweiterer 32a (nicht gezeigt). Bei einer alternativen Ausführungsform, die in 15b gezeigt ist, hat jeder Komprimierer 14 eine Wolke an kombinatorischer Logik 32b, die diesem zugeordnet ist und die dazu eingerichtet ist, dynamisch die Nachrichten-Zeitplan-Wörter zu erzeugen; daher gibt es keinen Bedarf für das Register 34 bei dieser Ausführungsform. Da die Nachrichten-Zeitplan-Register 34 relativ unregelmäßig aufgefrischt (engl.: update) werden, sollte ausreichend Zeit zum Lösen für die tiefe Logik (engl.: deep logic) 32b sein.In 14 A typical cascaded form of message schedule preprocessing processing is shown using the hash engine 16 an intermediate state generator 28 that is configured to dynamically unique intermediate states for each of the plurality of compresses 14 and a 64-stage retarder FIFO 30 which is adapted to supply the corresponding intermediate state to the last stage of the corresponding compressor 14 to delay. The intermediate state generator 28 must evolve a new intermediate state with each compressor beat, with each intermediate state in the compressor chain being passed down at the same clock rate. In this embodiment, the message schedule pre-calculation hashing engine 16 the message schedule words, W0 through W63, are sent by means of an appropriate message schedule pre-calculation engine 32 dynamically developed, their examples in 15 are shown. In the hash engine 16 both message-schedule words and the nonce are constant for a relatively long time. At the in 15a In the embodiment shown, the output words in a set of 64 News Schedule registers 34 saved to the appropriate compressors 14 assigned. Although in 15a a single shared rolled message expander 32a is shown, every compressor has 14 a local rolled message expander 32a (Not shown). In an alternative embodiment, the in 15b Every compressor has shown 14 a cloud of combinatorial logic 32b associated with it and arranged to dynamically generate the message schedule words; therefore there is no need for the register 34 in this embodiment. Because the news schedule registers 34 be relatively irregularly refreshed (English: update) should be enough time to solve for the deep logic 32b.

In 16a wurde zur vereinfachten Bezugnahme die Struktur eines einfachen 3-stufigen binären Merkle-Baums dargestellt, der 4 Blätter-Knoten, d.h. Transaktionen[1::4], aufweist. In Übereinstimmung mit der vorliegenden Erfindung wird versucht, so viele Wurzel-Kandidaten-Hashes wie möglich zu erzeugen und dann die zu identifizieren und zu speichern, die in das letzte dword passen. In Pseudocodeform funktioniert ein Ansatz, auf den Bezug genommen wird als divide-and-conquer („D&C), wie folgt:

Figure DE202014011229U1_0007
Figure DE202014011229U1_0008
In 16a For simplicity of reference, the structure of a simple 3-stage binary Merkle tree has been illustrated 4 Leaf nodes, ie transactions [1 :: 4] . In accordance with the present invention, an attempt is made to generate as many root candidate hashes as possible and then to identify and store those that fit into the last dword. In pseudocode form, an approach referred to as divide-and-conquer ("D &C") works as follows:
Figure DE202014011229U1_0007
Figure DE202014011229U1_0008

Anmerkungen:Remarks:

  1. 1) Dieser Ablauf ist in 17 dargestellt. In dem inneren Schleifen-Schritt 2.1.1 ist die Anhängen-Operation dargestellt unter Verwendung eines „::"-Symbols.1) This procedure is in 17 shown. In the inner loop step 2.1.1, the attach operation is illustrated using a "::" symbol.
  2. 2) Der grundlegende Transaktion-Tausch-Mechanismus ist beispielhaft in 16a dargestellt, wobei Transaktion3 in dem rechten Unterbaum, Q2, mit Transaktion4 in dem rechten Unterbaum, Q2, getauscht wurde.2) The basic transaction exchange mechanism is exemplary in 16a where transaction 3 in the right sub-tree, Q2, has been swapped with transaction 4 in the right sub-tree, Q2.
  3. 3) In 16b ist betont, dass die Erzeugung-Transaktion immer die Transaktion ganz links sein muss. Daher ist in Schritt 1 des D&C-Algorithmus die Erzeugungs-Transaktion darauf beschränkt, in Q1 zu bleiben.3) In 16b It is emphasized that the generation transaction must always be the leftmost transaction. Therefore, in step 1 of the D & C algorithm limits the generation transaction to staying in Q1.
  4. 4) Da k1, k2 relativ klein sein können (erforderlich in der Größenordnung von ungefähr 1M Listenelementen), ist es bevorzugt, alles außer der äußeren Rekursion des D&C Algorithmus, d.h. Schritt 2, in der Form eines Softwaremoduls, das in der MPU 24 angesiedelt ist, zu implementieren. Einmal entwickelt können L1 und L2 zu einer Pipeline von Hash-Kernen 10 weitergeleitet werden, um die Wurzel-Hashes zu erzeugen und dann die Liste L nach Wurzeln zu durchsuchen, die die Kriterien erfüllen (in der Größenordnung von ungefähr 1T Listenelementen).4) Since k1, k2 can be relatively small (required on the order of about 1M list elements), it is preferable to do everything except the outer recursion of the D & C algorithm, ie step 2 , in the form of a software module included in the MPU 24 is settled to implement. Once developed, L1 and L2 can become a pipeline of hash cores 10 be routed to generate the root hashes and then search the list L for roots that meet the criteria (on the order of about 1T list items).

Ein alternativer Ansatz, um schnell einen Satz von Wurzel-Kandidaten zu entwickeln, ist, das extraNonce Feld zu erhöhen, das zur Verwendung in jeder Erzeugungstransaktion verfügbar ist (siehe 16 b). Da das extraNonce Feld eine variable Länge von 2 bis 100 Bytes hat, kann ein sehr großer Pool von Wurzel-Hash-Kandidaten einfach und schnell erzeugt werden, einfach unter Verwendung des extraNonce Feld. Obwohl es bislang vorgeschlagen wurde, das extraNonce Feld zu verwenden, um den effektiven Nonce-Bereich für Schürfoperationen zu erhöhen, ist kein Vorschlag bekannt, dass der resultierende Satz von Wurzel-Hashes unter Verwendung einer vorgegebenen Filterfunktion gefiltert wird, die speziell dazu eingerichtet ist, die zu identifizieren, in denen die letzten 4 Bytes ein vorgegebenes Kriterium erfüllen, beispielsweise alle null sind oder einen beliebigen anderen vorgegebenen Wert haben, wie in der US Provisional Application vorgeschlagen. Der essenzielle Nutzen des vorliegenden Ansatzes ist, dass nur B0 betroffen ist, was ermöglicht, den Nachrichten-Zeitplan von B1 vorzuberechnen. Das Endziel, zur Erinnerung, ist, die vorliegenden zwei primären Mechanismen zu vereinfachen: das Teilen des Nachrichten-Zeitplans und das Vorberechnen des Nachrichten-Zeitplans.An alternative approach to quickly developing a set of root candidates is to increase the extraNonce field available for use in each generation transaction (see 16 b ). Since the extraNonce field has a variable length of 2 to 100 bytes, a very large pool of root hash candidates can be easily and quickly generated simply by using the extraNonce field. Although it has heretofore been suggested to use the extraNonce field to increase the effective nonce range for probing operations, there is no suggestion that the resulting set of root hashes be filtered using a given filter function that is specifically designed to to identify those in which the last ones 4 Bytes satisfy a predetermined criterion, for example, all are zero or have any other predetermined value as proposed in the US Provisional Application. The essential benefit of the present approach is that only B 0 is affected, which allows to pre-calculate the message schedule of B 1 . The ultimate goal, as a reminder, is to simplify the present two primary mechanisms: sharing the message schedule and pre-computing the message schedule.

In 18 ist dargestellt, wie die gerollte Kernarchitektur in Übereinstimmung mit der vorliegenden Erfindung angepasst werden kann, um die vorliegende Methodik zum Teilen des Nachrichten-Zeitplans zu verwenden. In dem dargestellten Kern 10' werden die Nachrichten-Zeitpläne, die mittels eines einzigen Nachrichten-Erweiterers 12 entwickelt werden, parallel auf eine Mehrzahl von synchron arbeitenden Komprimieren 14 angewendet. Wie in der Ausführungsform gemäß 12 wird jeder der Komprimierer 14 mit unterschiedlichen Zwischenzuständen initialisiert; dies ist effektiv, da neue Zwischenzustände relativ unregelmäßig benötigt werden, im Allgemeinen nachdem der Nonce-Bereich ausgeschöpft wurde.In 18 FIG. 3 illustrates how the rolled core architecture in accordance with the present invention may be adapted to the present method of sharing the message schedule use. In the illustrated core 10 ' are the message schedules created by means of a single message extender 12 be developed in parallel to a plurality of synchronously operating compression 14 applied. As in the embodiment according to 12 everyone gets the compressor 14 initialized with different intermediate states; this is effective because new intermediate states are needed relatively irregularly, generally after the nonce region has been exhausted.

In 19 ist dargestellt, wie die gerollte Kernarchitektur in Übereinstimmung mit der vorliegenden Erfindung angepasst werden kann, um die vorliegende Methodik der Vorberechnung des Nachrichten-Zeitplans zu verwenden. In dem dargestellten Kern 10' werden die vorberechneten Nachrichten mittels eines einzigen Nachrichten-Erweiterers 12 entwickelt und parallel auf eine Mehrzahl von kaskadierten Komprimieren 14 angewendet. Wie in der Ausführungsform gemäß 14 werden die erzeugten Zwischenzustände nach unten durch einen entsprechenden Satz von Zwischenzustands-Registern kaskadiert, über einen Bus, der bei einer Frequenz von ungefähr der Kernfrequenz/67 betrieben wird. Bei dieser Ausführungsform können Konstanten addiert werden und die vorberechneten Summen können in der Register-Datei gespeichert werden, da der Nachrichten-Zeitplan relativ unregelmäßig aufgefrischt (engl.: update) wird.In 19 FIG. 12 illustrates how the rolled core architecture may be adapted in accordance with the present invention to utilize the present methodology of pre-computation of the message schedule. In the illustrated core 10 ' the precalculated messages are sent by means of a single message extender 12 developed and compressed in parallel to a plurality of cascaded 14 applied. As in the embodiment according to 14 For example, the intermediate states generated are cascaded down by a corresponding set of intermediate state registers, via a bus operating at a frequency of approximately the core frequency / 67. In this embodiment, constants can be added and the precalculated sums stored in the register file because the message schedule is updated relatively irregularly.

Beispielhaft ist nachfolgend erläutert ein Verfahren zum Schürfen eines Blocks, der eine Block-Überschrift aufweist, als Funktion einer ausgewählten Hash-Funktion, die auf die Block-Überschrift angewendet wird, wobei die ausgewählte Hash-Funktion eine Erweiterungsoperation und eine Komprimierungsoperation aufweist, wobei das Verfahren die Schritte aufweist:

  1. [1] Entwickeln einer Vielzahl m von Zwischenzuständen, jede als Funktion eines selektiven Variierens eines ausgewählten ersten Abschnitts der Block-Überschrift;
  2. [2] Durchführen der Erweiterungsoperation bei einem ausgewählten zweiten Abschnitt der Block-Überschrift, um einen Nachrichten-Zeitplan zu erzeugen; und
  3. [3] Durchführen der Komprimierungsoperation bei den Zwischenzuständen und dem Nachrichten-Zeitplan für jeden der m Zwischenzustände, um ein entsprechendes der m Ergebnisse zu erzeugen.
By way of example, a method of purging a block having a block header as a function of a selected hash function applied to the block header, wherein the selected hash function has an expansion operation and a compression operation, is explained below Method comprising the steps:
  1. [1] developing a plurality m of intermediate states, each as a function of selectively varying a selected first portion of the block header;
  2. [2] performing the expansion operation on a selected second portion of the block header to create a message schedule; and
  3. [3] Performing the compression operation on the intermediate states and the message schedule for each of the m intermediate states to produce a corresponding one of the m results.

Bei einer Weiterbildung des Verfahrens weist der erste Abschnitt der Block-Überschrift die ersten 4 Bytes der Block-Überschrift auf.In a further development of the method, the first section of the block header has the first 4 bytes of the block header.

Bei einer Weiterbildung des Verfahrens weist der erste Abschnitt der Block-Überschrift einen Digest einer Transaktion auf.In a further development of the method, the first section of the block header has a digest of a transaction.

Bei einer Weiterbildung des Verfahrens weist eine Erzeugungs-Transaktion eine der Transaktionen auf; und Schritt [1] ist ferner dadurch charakterisiert, dass die Erzeugungs-Transaktion variiert wird.In a further development of the method, a generation transaction comprises one of the transactions; and step [1] is further characterized in that the generating transaction is varied.

Bei einer Weiterbildung des Verfahrens ist Schritt [1] ferner dadurch charakterisiert, dass ein ausgewählter Abschnitt einer ausgewählten Transaktion variiert wird.In a development of the method, step [1] is further characterized in that a selected section of a selected transaction is varied.

Bei einer Weiterbildung des Verfahrens ist Schritt [1] ferner dadurch charakterisiert, dass eine Reihenfolge einer Mehrzahl von Transaktionen variiert wird.In a further development of the method, step [1] is further characterized in that an order of a plurality of transactions is varied.

Bei einer Weiterbildung des Verfahrens weist der erste Abschnitt eine Wurzel einer Baum-Daten-Struktur auf.In a development of the method, the first section has a root of a tree-data structure.

Bei einer Weiterbildung des Verfahrens weist die Baum-Daten-Struktur einen Merkle-Baum auf.In a development of the method, the tree-data structure has a Merkle tree.

Bei einer Weiterbildung des Verfahrens ist Schritt [1] ferner dadurch charakterisiert, dass er folgende Schritte aufweist:

  • [1.1.1] Auswählen eines linken Unterbaum-Hashes aus einer ersten Mehrzahl von Unterbaum-Hash-Kandidaten;
  • [1.1.2] Auswählen eines rechten Unterbaum-Hashes aus einer zweiten Mehrzahl von Unterbaum-Hash-Kandidaten und
  • [1.1.3] Entwickeln der Wurzeln der Baum-Daten-Struktur von dem linken Unterbaum-Hash und dem rechten Unterbaum-Hash.
In a development of the method, step [1] is further characterized in that it comprises the following steps:
  • [1.1.1] selecting a left subtree hash from a first plurality of subtree hash candidates;
  • [1.1.2] Selecting a right subtree hash from a second plurality of subtree hash candidates and
  • [1.1.3] Develop the roots of the tree data structure from the left subtree hash and the right subtree hash.

Bei einer Weiterbildung des Verfahrens ist Schritt [1] ferner dadurch charakterisiert, dass er die Schritte aufweist:

  • [1.1] Entwickeln eines Block-Überschrift-Kandidaten mittels Variierens des ersten Abschnitts der Block-Überschrift;
  • [1.2] Anwenden einer Filterfunktion auf den Block-Überschrift-Kandidaten, und:
    • [1.2.1] wenn der Block-Überschrift-Kandidat nicht durch die Filterfunktion kommt, Verwerfen des Block-Überschrift-Kandidaten; und andernfalls
    • [1.2.1] Entwickeln eines Zwischenzustandes als Funktion des Block-Überschrift-Kandidaten; und
  • [1.3] Wiederholen der Schritte [1.1] bis [1.2], um eine Mehrzahl m von Zwischenzuständen zu entwickeln, jeder als Funktion eines entsprechenden Block-Überschrift-Kandidaten.
In a development of the method, step [1] is further characterized in that it comprises the steps:
  • [1.1] developing a block header candidate by varying the first portion of the block header;
  • [1.2] Applying a Filtering Function to the Block Heading Candidate, and:
    • [1.2.1] if the block headline candidate does not pass through the filter function, discarding the block headline candidate; and otherwise
    • [1.2.1] developing an intermediate state as a function of the candidate block headline; and
  • [1.3] repeating steps [1.1] to [1.2] to develop a plurality m of intermediate states, each as a function of a corresponding block headline candidate.

Bei einer Weiterbildung des Verfahrens weist in Schritt [1.1] der erste Abschnitt des Block-Überschrift-Kandidaten 28 Byte auf und ein zweiter Abschnitt des Block-Überschrift-Kandidaten weist 4 Bytes auf; und in Schritt [1.2.1] ist die Filterfunktion ferner dadurch charakterisiert, dass ein Block-Überschrift-Kandidat abhängig von dem zweiten Abschnitt verworfen wird.In a further development of the method, in step [1.1], the first section of the block headline candidate has 28 bytes and a second section of the block headline candidate has 4 bytes; and in step [1.2.1], the filter function is further characterized by discarding a block headline candidate depending on the second portion.

Bei einer Weiterbildung des Verfahrens ist Schritt [2] ferner charakterisiert durch:

  • [2] Durchführen der Erweiterungsoperation auf die Block-Überschrift, um einen Nachrichten-Zeitplan zu erzeugen, der eine geordnete Folge von Nachrichten-Zeitplan-Elementen aufweist; und wobei Schritt [3] ferner dadurch charakterisiert ist, dass:
  • [3] für jeden der m Zwischenzustände die Komprimierungsoperation auf die Folge von Nachrichten-Zeitplan-Elementen durchgeführt wird, um ein entsprechendes der m Ergebnisse zu erzeugen.
In a further development of the method, step [2] is further characterized by:
  • [2] performing the extension operation on the block header to produce a message schedule having an ordered sequence of message schedule elements; and wherein step [3] is further characterized in that:
  • [3] for each of the m intermediate states, the compression operation is performed on the sequence of message schedule elements to produce a corresponding one of the m results.

Bei einer Weiterbildung ist das Verfahren ferner ausgebildet ist zum:

  • [4] selektiven Entwickeln einer modifizierten Block-Überschrift mittels Variierens eines ausgewählten Abschnitts des Blocks; und
  • [5] selektiven Wiederholen der Schritte [2] bis [4].
In a further development, the method is also designed to:
  • [4] selectively developing a modified block header by varying a selected portion of the block; and
  • [5] selectively repeating steps [2] to [4].

Beispielhaft ist nachfolgend erläutert ein weiteres Verfahren, das zum Schürfen eines Blocks eingerichtet, um eine Wurzel eines Merkle-Baums, der eine Mehrzahl von Knoten hat, zu erzeugen, wobei das Verfahren die Schritte aufweist:

  1. [1] Erzeugen einer Mehrzahl von Unterbaum-Hash-Kandidaten mittels Neuordnens eines ausgewählten Satzes von Knoten;
  2. [2] Auswählen eines linken Unterbaum-Hashes von einer ersten Mehrzahl von Unterbaum-Hash-Kandidaten;
  3. [3] Auswählen eines rechten Unterbaum-Hashes von einer zweiten Mehrzahl von Unterbaum-Hash Kandidaten; und
  4. [4] Entwickeln der Wurzel der Baum-Daten-Struktur aus dem linken Unterbaum-Hash und dem rechten Unterbaum-Hash.
By way of example, another method set forth for purging a block to generate a root of a Merkle tree having a plurality of nodes is shown below, the method comprising the steps of:
  1. [1] generating a plurality of sub-tree hash candidates by reordering a selected set of nodes;
  2. [2] selecting a left subtree hash from a first plurality of subtree hash candidates;
  3. [3] selecting a right subtree hash from a second plurality of subtree hash candidates; and
  4. [4] Develop the root of the tree-data structure from the left subtree hash and right subtree hash.

Obwohl die vorliegende Erfindung in Zusammenhang mit bestimmten Ausführungsformen beschrieben wurde, werden die Fachmänner auf diesem Gebiet bereitwillig erkennen, dass viele Modifikationen dieser Ausführungsformen vorgenommen werden können, um sie auf entsprechende spezifische Implementationen anzupassen. In der Zukunft, wenn andere Teile der Bitcoin Block-Überschrift als erweiterter Nonce Raum verfügbar gemacht werden, wie beispielsweise die ersten 32 Bits des vorhergehenden Block-Hashes, kann die vorliegende Vorrichtung auch diesen extra Nonce Raum nutzen, um den Satz von Zwischenzuständen zu erzeugen, die bei der vorliegenden Erfindung benötigt werden.Although the present invention has been described in conjunction with particular embodiments, those skilled in the art will readily appreciate that many modifications of these embodiments can be made to adapt to corresponding specific implementations. In the future, when other parts of the bitcoin block header are made available as extended nonce space, such as the first 32 bits of the previous block hash, the present device may also use this extra nonce space to generate the set of intermediate states that are needed in the present invention.

Daher ist es offensichtlich, dass eine verbesserte Vorrichtung zum Schürfen von Block-Ketten bereitgestellt wird. Insbesondere ist hervorzuheben, dass die neue Vorrichtung erlaubt, eine einzige Erweiterer-Instanz unter einer Mehrzahl von Komprimierer-Instanzen zu teilen. Ferner ist hervorzuheben, dass die Vorrichtung eine Leistungsfähigkeit bereitstellen, die den besten aus dem Stand der Technik überlegen ist.Therefore, it is apparent that an improved apparatus for excavating block chains is provided. In particular, it should be noted that the new device allows to share a single extender instance among a plurality of compressor instances. It should also be appreciated that the device provides performance superior to the best of the prior art.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • US 61/906310 [0001]US 61/906310 [0001]

Claims (15)

Vorrichtung zum Schürfen eines Blocks, der eine Block-Überschrift aufweist, als Funktion einer ausgewählten Hash-Funktion, die auf die Block-Überschrift angewendet wird, wobei die ausgewählte Hash-Funktion eine Erweiterungsoperation und eine Komprimierungsoperation aufweist, wobei die Vorrichtung eingerichtet ist zum: [1] Entwickeln einer Vielzahl m von Zwischenzuständen, jede als Funktion eines selektiven Variierens eines ausgewählten ersten Abschnitts der Block-Überschrift; [2] Durchführen der Erweiterungsoperation bei einem ausgewählten zweiten Abschnitt der Block-Überschrift, um einen Nachrichten-Zeitplan zu erzeugen; und [3] Durchführen der Komprimierungsoperation bei den Zwischenzuständen und dem Nachrichten-Zeitplan für jeden der m Zwischenzustände, um ein entsprechendes der m Ergebnisse zu erzeugen.Apparatus for purging a block having a block header as a function of a selected hash function applied to the block header, the selected hash function having an expansion operation and a compression operation, the apparatus being arranged to: [1] developing a plurality m of intermediate states, each as a function of selectively varying a selected first portion of the block header; [2] performing the expansion operation on a selected second portion of the block header to create a message schedule; and [3] Performing the compression operation on the intermediate states and the message schedule for each of the m intermediate states to produce a corresponding one of the m results. Vorrichtung nach Anspruch 1, wobei der erste Abschnitt der Block-Überschrift die ersten 4 Bytes der Block-Überschrift aufweist.Device after Claim 1 wherein the first portion of the block header comprises the first 4 bytes of the block header. Vorrichtung nach Anspruch 1, wobei der erste Abschnitt der Block-Überschrift einen Digest einer Transaktion aufweist.Device after Claim 1 wherein the first portion of the block header comprises a digest of a transaction. Vorrichtung nach Anspruch 3, wobei eine Erzeugungs-Transaktion eine der Transaktionen aufweist; und wobei Schritt [1] ferner dadurch charakterisiert ist, dass die Erzeugungs-Transaktion variiert wird.Device after Claim 3 wherein a create transaction comprises one of the transactions; and wherein step [1] is further characterized by varying the generating transaction. Vorrichtung nach Anspruch 3, wobei Schritt [1] ferner dadurch charakterisiert ist, dass ein ausgewählter Abschnitt einer ausgewählten Transaktion variiert wird.Device after Claim 3 wherein step [1] is further characterized by varying a selected portion of a selected transaction. Vorrichtung nach Anspruch 3, wobei Schritt [1] ferner dadurch charakterisiert ist, dass eine Reihenfolge einer Mehrzahl von Transaktionen variiert wird.Device after Claim 3 wherein step [1] is further characterized by varying an order of a plurality of transactions. Vorrichtung nach Anspruch 1, wobei der erste Abschnitt eine Wurzel einer Baum-Daten-Struktur aufweist.Device after Claim 1 , wherein the first section has a root of a tree-data structure. Vorrichtung nach Anspruch 7, wobei die Baum-Daten-Struktur einen Merkle-Baum aufweist.Device after Claim 7 wherein the tree data structure comprises a Merkle tree. Vorrichtung nach Anspruch 7, wobei Schritt [1] ferner dadurch charakterisiert ist, dass er folgende Schritte aufweist: [1.1.1] Auswählen eines linken Unterbaum-Hashes aus einer ersten Mehrzahl von Unterbaum-Hash-Kandidaten; [1.1.2] Auswählen eines rechten Unterbaum-Hashes aus einer zweiten Mehrzahl von Unterbaum-Hash-Kandidaten und [1.1.3] Entwickeln der Wurzeln der Baum-Daten-Struktur von dem linken Unterbaum-Hash und dem rechten Unterbaum-Hash.Device after Claim 7 wherein step [1] is further characterized by comprising the steps of: [1.1.1] selecting a left subtree hash from a first plurality of subtree hash candidates; [1.1.2] Selecting a right subtree hash from a second plurality of subtree hash candidates, and [1.1.3] developing the tree-data structure roots from the left subtree hash and the right subtree hash. Vorrichtung nach Anspruch 1, wobei Schritt [1] ferner dadurch charakterisiert ist, dass er die Schritte aufweist: [1.1] Entwickeln eines Block-Überschrift-Kandidaten mittels Variierens des ersten Abschnitts der Block-Überschrift; [1.2] Anwenden einer Filterfunktion auf den Block-Überschrift-Kandidaten, und: [1.2.1] wenn der Block-Überschrift-Kandidat nicht durch die Filterfunktion kommt, Verwerfen des Block-Überschrift-Kandidaten; und andernfalls [1.2.1] Entwickeln eines Zwischenzustandes als Funktion des Block-Überschrift-Kandidaten; und [1.3] Wiederholen der Schritte [1.1] bis [1.2], um eine Mehrzahl m von Zwischenzuständen zu entwickeln, jeder als Funktion eines entsprechenden Block-Überschrift-Kandidaten.Device after Claim 1 wherein step [1] is further characterized by comprising the steps of: [1.1] developing a block header candidate by varying the first portion of the block header; [1.2] applying a filter function to the candidate block header, and: [1.2.1] if the candidate block candidate does not pass through the filter function discarding the candidate block header; and otherwise [1.2.1] developing an intermediate state as a function of the candidate block header; and [1.3] repeating steps [1.1] to [1.2] to develop a plurality m of intermediate states, each as a function of a corresponding block headline candidate. Vorrichtung nach Anspruch 10: wobei in Schritt [1.1] der erste Abschnitt des Block-Überschrift-Kandidaten 28 Byte aufweist und ein zweiter Abschnitt des Block-Überschrift-Kandidaten 4 Bytes aufweist; und wobei in Schritt [1.2.1] die Filterfunktion ferner dadurch charakterisiert ist, dass ein Block-Überschrift-Kandidat abhängig von dem zweiten Abschnitt verworfen wird.Device after Claim 10 wherein in step [1.1], the first portion of the candidate block header has 28 bytes and a second portion of the candidate block header has 4 bytes; and wherein in step [1.2.1] the filter function is further characterized by discarding a block headline candidate depending on the second portion. Vorrichtung nach Anspruch 1, wobei Schritt [2] ferner charakterisiert ist durch: [2] Durchführen der Erweiterungsoperation auf die Block-Überschrift, um einen Nachrichten-Zeitplan zu erzeugen, der eine geordnete Folge von Nachrichten-Zeitplan-Elementen aufweist; und wobei Schritt [3] ferner dadurch charakterisiert ist, dass: [3] für jeden der m Zwischenzustände die Komprimierungsoperation auf die Folge von Nachrichten-Zeitplan-Elementen durchgeführt wird, um ein entsprechendes der m Ergebnisse zu erzeugen.Device after Claim 1 wherein step [2] is further characterized by: [2] performing the extension operation on the block header to produce a message schedule having an ordered sequence of message schedule elements; and wherein step [3] is further characterized in that: [3] for each of the m intermediate states, the compression operation is performed on the sequence of message schedule elements to produce a corresponding one of the m results. Vorrichtung nach Anspruch 1, die Vorrichtung ferner ausgebildet ist zum: [4] selektiven Entwickeln einer modifizierten Block-Überschrift mittels Variierens eines ausgewählten Abschnitts des Blocks; und [5] selektiven Wiederholen der Schritte [2] bis [4].Device after Claim 1 , the apparatus is further adapted to: [4] selectively develop a modified block header by varying a selected portion of the block; and [5] selectively repeating steps [2] to [4]. Vorrichtung, die dazu eingerichtet ist, beim Schürfen eines Blocks eine Wurzel eines Merkle-Baums, der eine Mehrzahl von Knoten hat, zu erzeugen und zum: [1] Erzeugen einer Mehrzahl von Unterbaum-Hash-Kandidaten mittels Neuordnens eines ausgewählten Satzes von Knoten; [2] Auswählen eines linken Unterbaum-Hashes von einer ersten Mehrzahl von Unterbaum-Hash-Kandidaten; [3] Auswählen eines rechten Unterbaum-Hashes von einer zweiten Mehrzahl von Unterbaum-Hash Kandidaten; und [4] Entwickeln der Wurzel der Baum-Daten-Struktur aus dem linken Unterbaum-Hash und dem rechten Unterbaum-Hash.Apparatus adapted to generate a root of a Merkle tree having a plurality of nodes when mining a block, and to: [1] generating a plurality of sub-tree hash candidates by reordering a selected set of nodes; [2] selecting a left subtree hash from a first plurality of subtree hash candidates; [3] selecting a right subtree hash from a second plurality of subtree hash candidates; and [4] Develop the root of the tree-data structure from the left subtree hash and right subtree hash. Computerlesbares Medium, aufweisend ausführbare Instruktionen, die, wenn sie auf einem Prozessierungssystem ausgeführt werden, das Prozessierungssystem veranlassen, in Übereinstimmung mit einem der vorstehenden Ansprüche zu arbeiten.A computer-readable medium comprising executable instructions that, when executed on a processing system, cause the processing system to operate in accordance with any one of the preceding claims.
DE202014011229.0U 2013-11-19 2014-11-19 Block prospecting device Active DE202014011229U1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361960310P 2013-11-19 2013-11-19
US61/960,310 2013-11-19

Publications (1)

Publication Number Publication Date
DE202014011229U1 true DE202014011229U1 (en) 2018-09-12

Family

ID=63679269

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202014011229.0U Active DE202014011229U1 (en) 2013-11-19 2014-11-19 Block prospecting device

Country Status (1)

Country Link
DE (1) DE202014011229U1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111833189A (en) * 2018-10-26 2020-10-27 创新先进技术有限公司 Data processing method and device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111833189A (en) * 2018-10-26 2020-10-27 创新先进技术有限公司 Data processing method and device

Similar Documents

Publication Publication Date Title
DE112012004873B4 (en) High bandwidth decompression of variable-length encrypted data streams
EP3028140B1 (en) Design of a circuit suitable for generating random bits and circuit for generating random bits
DE69838074T2 (en) METHOD AND DEVICE FOR SIMULTANEOUS ENCRYPTION AND COMPRESSION OF DATA
DE69527331T2 (en) Data recovery system, data processing system, data recovery method and data processing method
DE69330196T2 (en) Text compression technique using a frequency ordered matrix of word number mappings
DE4309314C2 (en) Field compilation device for merging data
DE112011106024B4 (en) Device specific information generating apparatus and device specific information generating method
DE68923262T2 (en) Two's complement multiplication with a sign / size multiplier.
DE69802520T2 (en) METHOD AND DEVICE FOR LOSS-FREE DATA COMPRESSION
WO2004066505A2 (en) Block data compression system, comprising a compression device and a decompression device and method for rapid block data compression with multi-byte search
DE69820230T2 (en) N-WAY BIT CHAIN PROCESSING IN A DATA FLOW ARCHITECTURE
DE2717311A1 (en) DATA PROCESSOR
DE102007060782A1 (en) Compensation for data strobe timing
DE112016004359T5 (en) Systems, methods and apparatus for decompression using hardware and software
DE69326793T2 (en) Parallelized size comparator for comparing a binary number with a specific number
DE2421130A1 (en) Operand comparator
DE202014011229U1 (en) Block prospecting device
DE69627391T2 (en) METHOD AND SYSTEM FOR CARRYING OUT A BOOL'S OPERATION ON BIT CHAINS USING A MAXIMUM BIT DISC
DE112014006841T5 (en) Differential Data Generation System, Data Update System and Differential Data Generation Method
EP3127272B1 (en) Encryption method and pseudo-random number generator
DE69707717T2 (en) MODULO-ARITHMETIC COPROCESSOR WITH A CIRCUIT FOR THE DIVISION OF WHOLE NUMBERS
DE102014105218A1 (en) Search device using finite automata for partial words
DE69329761T2 (en) Differential flag circuit with shifted counter
DE69223700T2 (en) Counter circuitry using and using the Johnson type counter
DE69530470T2 (en) METHOD AND DEVICE FOR A SPECIAL AND EFFICIENT USE OF A DATA STRUCTURE FOR DATA COMPRESSION

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R081 Change of applicant/patentee

Owner name: CIRCLE LINE INTERNATIONAL LIMITED, VG

Free format text: FORMER OWNER: LITTLE DRAGON TECHNOLOGY, LLC, SARATOGA, CA, US

Owner name: TOP GALORE LIMITED, VG

Free format text: FORMER OWNER: LITTLE DRAGON TECHNOLOGY, LLC, SARATOGA, CA, US

R082 Change of representative

Representative=s name: ULLRICH & NAUMANN PATENT- UND RECHTSANWAELTE, , DE

Representative=s name: PATENT- UND RECHTSANWAELTE ULLRICH & NAUMANN P, DE

Representative=s name: DOMPATENT VON KREISLER SELTING WERNER - PARTNE, DE

R082 Change of representative

Representative=s name: ULLRICH & NAUMANN PATENT- UND RECHTSANWAELTE, , DE

Representative=s name: PATENT- UND RECHTSANWAELTE ULLRICH & NAUMANN P, DE

R151 Utility model maintained after payment of second maintenance fee after six years
R081 Change of applicant/patentee

Owner name: CIRCLE LINE INTERNATIONAL LIMITED, VG

Free format text: FORMER OWNER: TOP GALORE LIMITED, TORTOLA, VG

R082 Change of representative

Representative=s name: PATENT- UND RECHTSANWAELTE ULLRICH & NAUMANN P, DE

R152 Utility model maintained after payment of third maintenance fee after eight years