DE202014011229U1 - Block prospecting device - Google Patents
Block prospecting device Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/02—Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q2220/00—Business 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.
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.
Description
QUERVERWEIS AUF BEZOGENE ANMELDUNGENCROSS-REFERENCE TO RELATED APPLICATIONS
Diese Anmeldung bezieht sich auf die
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:
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
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
In
In
Wie in der eingangs erwähnten US Provisional Application erwähnt, wurde vorgeschlagen, das 4-Byte Versionsfeld in der Block-Überschrift (siehe
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 , aufweisend15a und15b ein Blockdiagramm möglicher Nachrichten-Zeitplan-Vorberechnung-Engines, angepasst zur Verwendung beispielsweise in14 ; -
16 , aufweisend16a und16b 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.
-
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 to10 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 having15a and15b a block diagram of possible message schedule precalculation engines adapted for use in e.g.14 ; -
16 having16a and16b a block diagram of several possible shapes for the multi-level Merkle tree according to7 ; -
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
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
Der funktionale Ablauf von Operationen des Hash-Engines
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. 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. 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. 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 lediglichdas Erhalten von 2 Hashes von den Tabellen und das Durchführen der SHA2 Operationen.
- 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. 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. 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
In
In
Anmerkungen:Remarks:
-
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 in17 shown. In the inner loop step 2.1.1, the attach operation is illustrated using a "::" symbol. -
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 in16a where transaction 3 in the right sub-tree, Q2, has been swapped with transaction 4 in the right sub-tree, Q2. -
3) In
16b ist betont, dass die Erzeugung-Transaktion immer die Transaktion ganz links sein muss. Daher ist in Schritt1 des D&C-Algorithmus die Erzeugungs-Transaktion darauf beschränkt, in Q1 zu bleiben.3) In16b It is emphasized that the generation transaction must always be the leftmost transaction. Therefore, instep 1 of the D & C algorithm limits the generation transaction to staying in Q1. -
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 MPU24 angesiedelt ist, zu implementieren. Einmal entwickelt können L1 und L2 zu einer Pipeline von Hash-Kernen10 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 theMPU 24 is settled to implement. Once developed, L1 and L2 can become a pipeline ofhash 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
In
In
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] 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.
- [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.
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.
- [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.
- [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.
- [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].
- [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] 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.
- [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.
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111833189A (en) * | 2018-10-26 | 2020-10-27 | 创新先进技术有限公司 | Data processing method and device |
-
2014
- 2014-11-19 DE DE202014011229.0U patent/DE202014011229U1/en active Active
Cited By (1)
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 |