ES2836139T3 - Procedimientos y aparatos de minería de bloques - Google Patents

Procedimientos y aparatos de minería de bloques Download PDF

Info

Publication number
ES2836139T3
ES2836139T3 ES14864642T ES14864642T ES2836139T3 ES 2836139 T3 ES2836139 T3 ES 2836139T3 ES 14864642 T ES14864642 T ES 14864642T ES 14864642 T ES14864642 T ES 14864642T ES 2836139 T3 ES2836139 T3 ES 2836139T3
Authority
ES
Spain
Prior art keywords
entity
block header
message
compressor
hash
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
ES14864642T
Other languages
English (en)
Inventor
Timo Hanke
Sergio Lerner
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
Original Assignee
Circle Line International Ltd
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=53180113&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=ES2836139(T3) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Circle Line International Ltd filed Critical Circle Line International Ltd
Application granted granted Critical
Publication of ES2836139T3 publication Critical patent/ES2836139T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • G06Q20/0655Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed centrally
    • 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
    • G06Q20/0658Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed locally
    • 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/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Un procedimiento para extraer un bloque en una cadena de bloques, preferentemente Bitcoin, dicho bloque comprende un encabezado de bloque, en función de una función hash seleccionada aplicada en el encabezado del bloque, la función hash seleccionada comprende una operación de expansión y una operación de compresión, el método realizado en un sistema informático, comprendiendo dicho sistema informático una única entidad expansora para realizar dicha operación de expansión y una pluralidad de entidades compresoras, cada una de las cuales se adapta para realizar una operación de compresión y que funcionen todas de forma síncrona, que comprende los pasos de: [1] Calcular una pluralidad, m, de estados medios, cada uno en función de variar selectivamente una primera porción seleccionada del encabezado del bloque, que comienza desde un estado medio único respectivo de dicha pluralidad de estados medios mediante una entidad generadora de estado medio, en el que dicha entidad generadora de estado medio calcula un reloj de canalización de estado medio nuevo para cada entidad de compresor, que pasa por cada estado medio por la cadena de entidad de compresor a la misma frecuencia de reloj de canalización; [1.1] Distribuir dicha pluralidad calculada de m estados medios a una etapa inicial de dicha pluralidad de entidades compresoras, [2] Calcular mediante dicha entidad de expansión única una programación de mensajes, comprendiendo dicha programación de mensajes una pluralidad de elementos de programación de mensajes, a la entrada de un mensaje y un número de un solo uso mediante la realización de dicha operación de expansión en una segunda porción seleccionada del encabezado del bloque; dicha entidad expansora compartida única es proporcionada por una entidad expansora de mensajes enrollados compartida única o una nube de lógica combinatoria asociada con cada entidad compresora; [2.1] Compartir dicha programación de mensajes calculada entre dichas una o más entidades compresoras mediante dicha entidad expansora; [2.2] Retrasar la entrega de dicha pluralidad calculada de estados medios m a una etapa final de dicha pluralidad de entidades de compresor mediante el uso de una memoria FIFO, que tiene un número de etapas, que corresponden con el número de etapas a dicho número de elementos de programación de mensajes calculados de dicho programa de mensajes; [3] Calcular para cada uno de los estados medios m mediante la realización de la operación de compresión en el estado medio calculado y la programación de mensajes calculada, uno respectivo de m resultados.

Description

DESCRIPCIÓN
Procedimientos y aparatos de minería de bloques
Antecedentes de la invención
1. Campo de la invención.
La presente invención se refiere tanto a procedimientos como a aparatos para su uso en la minería de un bloque, por ejemplo, en una cadena de bloques, y, en particular, a procedimientos y aparatos para su uso en un sistema de moneda criptográfica, tal como el sistema de minería de Bitcoin.
2. Descripción de la técnica relacionada.
En general, en las descripciones que siguen, escribir en cursiva la primera aparición de cada término especial de la técnica que debería ser familiar para los expertos en esta técnica. Además, cuando introducimos por primera vez un término que creemos que es nuevo o que usaremos en un contexto que creemos que es nuevo, se proporcionará el término en negrita y la definición que pretendemos aplicar a ese término. Además, a lo largo de esta descripción, a veces usaremos los términos afirmar y negar cuando se hace referencia a la representación de una señal, bandera de señal, bit de estado o aparato similar en su estado lógicamente verdadero o lógicamente falso, respectivamente, y el término palanca para indicar la inversión lógica de una señal de un estado lógico a otro. Alternativamente, podemos referirnos a los estados exclusivos mutuamente booleano como lógica_0 y lógica_1. Por supuesto, como es bien conocido, se puede obtener un funcionamiento consistente del sistema invirtiendo el sentido lógico de todas estas señales, de modo que las señales descritas en la presente memoria como lógicamente verdaderas se vuelven lógicamente falsas y viceversa. Además, no es relevante en tales sistemas qué niveles de tensión específicos se seleccionan para representar cada uno de los estados lógicos. Para facilitar la referencia, utilizaremos el término "conjunto" para referirnos a una colección de cero, uno o más de un elemento, según lo requiera el contexto.
En general, una red descentralizada puede almacenar y hacer referencia a información común en una cadena de bloques. En una cadena de bloques típica, cada bloque contiene unidades de información comúnmente llamadas transacciones que surgen aproximadamente al mismo tiempo. Mediante el uso de un protocolo predefinido, los bloques se vinculan teniendo sus valores hash insertado en un campo designado en el siguiente bloque secuencial de la cadena de bloques.
El procedimiento de minería en cadena de bloques se diseña para permitir que el sistema llegue a un consenso en el que todos los nodos en la red informática están de acuerdo con la misma cadena de bloques. Se han propuesto diversos sistemas de cadena de bloques y algunos están actualmente en funcionamiento. Uno de los primeros y, actualmente, el más reconocido es el sistema Bitcoin. De acuerdo con el protocolo Bitcoin, el primer minero para calcular con éxito una prueba de trabajo válida para un bloque candidato que tiene derecho a agregar el bloque a la cadena de bloques (a veces denominado como el libro mayor), y para generar nuevas unidades de la moneda criptográfica como recompensa.
La prueba de trabajo para un bloque consiste de una presente ocasión de valor que, cuando se inserta en un campo designado en el bloque, hace que el valor hash criptográfico del bloque se encuentre con un cierto objetivo de dificultad. Desde una función hash criptográfica se comporta prácticamente como un oráculo aleatorio, no se ha descubierto un mejor enfoque para encontrar una presente ocasión válida que la simple prueba y error. El procedimiento de minería es, por tanto, un estocástico procedimiento. En la práctica, las posibilidades de que un minero en particular tenga éxito que resuelva un bloque son, en cualquier momento en particular, proporcionales a las tasas hash en relación con la tasa hash de toda la red.
Como se conoce, la Agencia de Seguridad Nacional de EE.UU. ("NSA") ha diseñado y publicado un conjunto de funciones hash criptográficas denominadas como Algoritmos hash seguros ("SHA"). En particular, el protocolo Bitcoin aplica la SHA-256, descrito en el siguiente pseudocódigo:
**■;*->*-;*'*■*' * # #
Nota 1: Todas las variables son de enteros sin signo de 32 bit y la suma se calcula del módulo de
232
Nota 2: Para cada ronda, hay una constante por ronda k[i] y una entrada en la matriz de programación de mensaje \vj i ]. 0 < i < 63
Nota 3: La función de compresión usa 8 variables de trabajo, desde a hasta h
N ota 4: La co a vención big-endian se usa al expresar las constantes en este p sendo código y al analizar los datos del bloque de m ensajes de bytes a palabras, la primera palabra del m ensaje de entrada "abe" después del relleno es 0x01626380.
Inicializar valores hash: (primeros 32 bits de la parte fraccional de la raíz cuadrada de los primeros 8 primos 2... 19).
hO i“ 0x6aO9e667j
hl :■ 'Qxbb67ae95;
h2 := 0x3c6ef372;
h3 0xa54ff53a;
h4 i• 0x510^527fj
h 5 := 0x 9b 0568 Se;
h6 := 0xlffl3d9abj
h7 :- 0x5beQcdl9;
Inicializar matrices de constantes por ronda: (primeros 32 bits de la parte fraccional de la raíz cúbica de lo s primeros 64 primos 2...311).
k[0. .63]
0x428a2f98, 0x71374491, OxbScOfbcf, Qxe9b5dba5 , 0x3956c25b 0x59fUlf 1, 0x923f82a4, 0xablc5ed5 , 0xd8Q7aa98, 0xl2835bOl 0x243185be, 0x550c7dc3, Qx72be5d74, OxSOdeblíe, Qx9bdc06a7 0xcl9bíJ74, 0xe49b69cl, 0xe£be4786, OxO£cl9dc6, 0x240calcc 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, Ox76f988da, 0x983e5152 QxaB31c66d, 0xb00327c8, 0xbf597fc7, Üxc6e00bf3, 0xd5a79147 0x06ca6351, 0x14292967, 0x27b70a85, 0x2elb2138, 0x4d2c6dfc 0x53380dl3, 0x650a7354, 0x76Éa0abb, 0x81c2c92e, 0x92722cB5 0xa2b£e8al, OxafiLa6E4b, 0xc24bñb70, 0xc76c5la3, Oxdl92e819 0xd6990624, 0xf40e35fi5, 0xl06aa070, 0xl9a4cll6, 0xle376c08 0x2748774c t 0x34b0bqb5, 0x391c0cb3/ 0x4ed8aa4a, 0xbb9cca4f 0x682e6ff3, 0x748f82ee, 0x78a5636f, Ox84c87814, 0x8cc70208 0x90befffa, Dxa4506ceb, Oxbef9a3f7, 0xc67178f2;
Preprocesamiento:
Añadir e l bit T al mensaje;
Añadir k bits '0';
D onde k es e l número m ínim o > Ode manera que e l tamaño del m ensaje resultante (m ódulo 512 en bits) es 448.
Añadir tamaño del mensaje;
(sin e l bit '1' o relleno), en bits, com o entero big-endian de 64 bit (esto tomará el tamaño entero posprocesado de un múltiplo de 512 bits).
Procesa el mensaje en fragmentos sucesivos de 512 bit:
Interrumpe el mensaje en fragmentos de 512 bit;
Para cada fragmento;
{
Crea una matriz de programación de mensaje de entrada 64 w [0... 63] de palabras de 32 b it (Los valores iniciales en w [0...63] no importan, tantas knplementaciones cero aquí) Fragmentos de copia en Las primeras 16 palabras w [Q ...15] de la matriz de programación de mensaje;
Expande las primeras 16 palabras en las restantes 48 palabras w [16.. .63] de la matriz de programación de mensaje:
Para i de 16 a 63:
sO i - ( w [ i —1 S ] r i g h t r o t a t e 7 ) x o r ( w [ i - 15 ] r i g h t r o t a t e 18 ) s o r ( w [ i - 151 r i g h t s h i f t 3 ) ;
Figure imgf000004_0001
x o r
Inicializa las variables de trabajo a valor hasli actual:
a i » h 0 ;
b h l j
c != h 2 ;
d i » h 3 ;
e s= h 4 ;
f h5;
g : s h 6 ;
h ;= h 7 ;
Bucle prmcipal de función de compresión:
Para i de 0 a 63:
(
Figure imgf000004_0002
x o r t e r i g h t r o t a t e Ch := (a and f) xor ((not e) and gj;
templ := h SI ch k[i) ■w[i];
SO := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate
22 ) í
maj := (a and b) xor (a and c) xor (b andc);
temp2 SO+ maj;
h ;= g;
g := f;
f ;= e ;
e 4= d templ;
d := c;
C : = b ;
b s= a;
a templ temp2;
Adiciona el fragmento comprimido al valor hask actual:
hO := hO a ;
h l := h l b ;
h2 h2 c ;
h3 ;= h3 d ;
h4 := h4 e ;
h5 := h5 £ ;
h6 := h é q;
h7 t - h7 h ;
Produce el valor liash final (big- endian):
digest := hash ;=hOappend hl appendh2 appendh3 append h4 appendh5
appendh6 appendh7
* * * * * * * * * *
De aquí en adelante, por conveniencia de referencia, podemos referirnos a aspectos de nuestra invención mediante el uso de la terminología establecida anteriormente en el pseudocódigo. Además, a manera de ejemplo, centraremos nuestra divulgación en el protocolo Bitcoin, aunque reconocemos que otros sistemas de moneda criptográfica pueden beneficiarse de nuestra invención.
Muchas funciones hash, incluida las familias SHA-1, SHA-2 y RIPEMD, comparten un esquema similar con SHA-256. Cada uno aplica una función de expansión (a veces denominado como una operación de expansión) adaptado para expandir una entrada de un mensaje en una programación del mensaje, y luego aplica una función de compresión (a veces denominado como una operación de compresión) adaptado para comprimir la programación del mensaje en un valor hash o un resultado (a veces denominado como el compendio del mensaje o simplemente compendio). Normalmente, la función de compresión es recursiva, que comprende una palabra del programa de mensajes por ronda. La naturaleza recursiva de estas funciones se presta a conocidos de desenrollado de bucle de técnicas y, cuando se aplica a implementaciones de hardware, da como resultado un clásico canalizado en configuración de elementos computacionales.
Por lo general, cuando se calcula un hash dentro del Bitcoin, se calcula dos veces, es decir, un hash SHA-256 de un hash SHA-256 (a veces denominado como un doble-SHA, o simplemente SHA2). La mayoría de las veces solo se utilizan funciones hash SHA-256, por ejemplo, cuando se procesan transacciones y encabezados de bloque. Sin embargo, RIPEMD-160 también se usa para el segundo hash cuando se desea un compendio hash más corto, por ejemplo, cuando la función hash de una llave pública para obtener una dirección de Bitcoin.
La minería de cadena de bloques es, por diseño, de naturaleza competitiva. La recompensa monetaria es proporcional al número de bloques resuelto, que es a su vez proporcional a la tasa hash relativa a la tasa hash de toda la red. A medida que la competencia ha aumentado, los mineros buscan agresivamente incluso pequeñas mejoras en la tasa hash. Un enfoque conocido para mejorar la tasa hash es dispersar la búsqueda hash en la mayor cantidad de motores hash, cada uno adaptado a independientemente buscar una porción respectiva de la totalidad de espacio de un número de un solo uso para hashes que satisfacen (es decir, están más abajo) el objetivo de dificultad requerido.
A menudo, cuando se calcula un hash dentro del Bitcoin, el mensaje que se procesa tiene una longitud fija. Este es el caso, por ejemplo, para los encabezados de bloque (80 bytes) y siempre que un valor hash (32 bytes) esté en uso. Los valores hash se procesan en todas las aplicaciones de doble SHA. En la formación de un árbol Merkle pares de valores hash (64 bytes) dispuestos en una estructura de datos de árbol están en uso. En general, los motores hash adaptados a mensajes hash de longitud fija pueden optimizarse de forma diferente a los motores hash adaptados a mensajes hash de longitud arbitraria.
Al implementar un motor hash en un circuito integrado de aplicación específica ("ASIC"), los objetivos clave del diseño son mejorar la potencia, el rendimiento y el área. Cuando se deben aplicar hash a muchos mensajes de la misma longitud corta, una implementación canalizada de un núcleo hash es posible. A manera de ejemplo, la Figura 1 muestra un bloque de dicha canalización de la TÉCNICA ANTERIOR. En un ASIC típico, se instancian varios bloques de canalización de este tipo y se adaptan para funcionar, ya sea en paralelo o en serie, bajo el control de una unidad de control central, que puede ser una unidad de microprocesador convencional ("MPU") o un controlador especial (no mostrado) instanciado en el mismo ASIC.
En la minería de cadena de bloques, muchos mensajes (bloques) han sido numerados para que difieran solo en el último fragmento (es decir, que contiene el número de un solo uso). Para ese tipo específico de aplicación, el estado medio del compresor (es decir, el componente de hardware que realiza la función de compresión) puede calcularse previamente en la medida en que no dependa del número de un solo uso. Entonces, para la última aplicación del compresor que depende del número de un solo uso, se puede emplear el núcleo de canalización 10 como en la Figura 1. En la Figura 1, hemos utilizado la notación convencional para indicar los anchos de bus, con unidades expresadas como 32 bits palabras dobles ("dwords"). A veces, en función de del contexto, el compresor 14 puede denominarse como un semi-hash y la combinación del expansor 12 y el compresor 14 como una función hash completa. Para los propósitos de nuestra invención, afirmamos que el núcleo 10 se puede instanciar en una forma de canalización o de arrollado.
Hemos ilustrado en la Figura 2 la arquitectura básica de hardware de un núcleo laminado de la TÉCNICA ANTERIOR 10'. Normalmente, en una arquitectura de este tipo, se requieren aproximadamente 67 ciclos para calcular una ronda SHA-256, que comprende 64 ciclos de cálculo más unos pocos ciclos adicionales para cargar los registros con valores iniciales. A menudo, la memoria de sólo lectura ("ROM") de constantes se comparte entre varios núcleos 10'. En general, un núcleo laminado de propósito especial de la TÉCNICA ANTERIOR 10' puede conceptualizarse como se ilustra en la Figura 3, en el que el hardware computacional de hash se representa como una nube de lógica combinacional. Un SHA de la técnica anterior altamente estructurada2 del núcleo canalizado 10 se ilustra a manera de ejemplo en la Figura 4. En la Figura 5, hemos ilustrado una representación de alto nivel de un SHA típico de Bitcoin2 del motor 16.
En la Figura 6 se muestra el formato de un Encabezado de Bloque de Bitcoin en el que los tamaños de campo se expresan en bytes de 8 bits. Como puede verse, en compensar 36, el campo Merkle de raíz de 32 bytes abarca el límite entre el Bloque [0] (a veces denominado simplemente como "B0") y Bloque [1] ("Bi") del encabezado del bloque. A modo de ejemplo, hemos ilustrado en la Figura 7 un árbol Merkle de 3 niveles que tiene un conjunto de hojas que comprende 4 transacciones, aunque se reconocerá que un árbol Merkle típico puede tener niveles de hash jerárquicos adicionales en función de del número de transacciones que se están numerando. En la Figura 8, hemos mostrado, por conveniencia de referencia, una secuencia típica de 3 bloques dentro de una cadena de bloques de Bitcoin, en el que cada bloque comprende un encabezado de bloque (ver Figura 6) y un conjunto respectivo de transacciones (en texto claro para facilitar la navegación en bloque). En situaciones donde el número de transacciones disponibles es menor que una potencia de dos, se agrega relleno, por ejemplo, transacciones duplicadas o ficticias, en el nivel de hoja para completar la estructura de árbol de potencia de dos. De acuerdo con el protocolo Bitcoin, la primera transacción de cada bloque es siempre una transacción de generación (o base de moneda) generada por el minero que agregó el bloque a la cadena.
Se ha propuesto dividir el campo Versión de 4 bytes en el encabezado de bloque (ver Figura 6) y usar, por ejemplo, la porción alta de 2 bytes como rango del número de un solo uso adicional. Alternativamente, la memoria descriptiva de Bitcoin define un campo del número de un solo uso extra en el formato para la base de monedas o transacción de generación (ver Figura 16b). Sin embargo, la memoria descriptiva de Bitcoin reconoce que incrementar el campo del número de un solo uso extra implica volver a calcular el árbol Merkle, ya que la transacción de la base de monedas es el nodo hoja más a la izquierda. En este enfoque, cada vez que se incrementa del número de un solo uso extra, se genera una raíz Merkle completa, lo que requiere que se vuelva a procesar el encabezado de bloque completo.
Un problema que percibimos con los diseños de plataformas de hardware actuales es el requisito de que cada núcleo hash se adapte para realizar el SHA-256 completo independientemente de todos los demás núcleos hash en la instanciación de hardware. Lo que se necesita es un procedimiento y un aparato que permita que un único instante de expansión sea compartido por una pluralidad de instantes de compresor.
Breve sumario de la invención
En una realización de nuestra invención, proporcionamos un procedimiento para extraer un bloque en una cadena de bloques de acuerdo con la reivindicación 1.
En otra realización, proporcionamos un aparato configurado para realizar nuestro procedimiento de extracción de bloques.
En otra realización más, nuestro procedimiento para extraer un bloque en una cadena de bloques puede incorporarse en un medio legible por ordenador que incluye instrucciones ejecutables que, cuando se ejecutan en un sistema de procesamiento, hacen que el sistema de procesamiento realice los pasos de un procedimiento de acuerdo con una cualquiera de las reivindicaciones 1 a 13.
Breve descripción de las distintas vistas de los dibujos
Nuestra invención puede entenderse más completamente mediante una descripción de ciertas realizaciones preferentes junto con los dibujos adjuntos en los que:
La Figura 1 ilustra, en forma de diagrama de bloques, una canalización SHA de propósito especial de la técnica anterior;
La Figura 2 ilustra, en forma de diagrama de bloques, un núcleo laminado SHA de propósito especial de la técnica anterior;
La Figura 3 ilustra, en forma de diagrama de bloques, otro núcleo laminado SHA de propósito especial de la técnica anterior;
La Figura 4 ilustra, en forma de diagrama de bloques, un motor hash SHA de Bitcoin de la técnica anterior 2 que tiene un núcleo canalizado;
La Figura 5 ilustra, en forma de diagrama de bloques, un motor hash SHA de Bitcoin de la técnica anterior 2 que tiene un núcleo laminado o un núcleo canalizado;
La Figura 6 ilustra, en forma de tabla, el formato de un encabezado de bloque de Bitcoin;
La Figura 7 ilustra, en forma de diagrama de bloques, un árbol Merkle de varios niveles como se emplea en el protocolo Bitcoin;
La Figura 8 ilustra, en forma de diagrama de bloques, el formato general para bloques de Bitcoin que comprenden una cadena de bloques;
La Figura 9 ilustra, en forma de diagrama de bloques, un motor hash SHA de Bitcoin2;
La Figura 10 ilustra, en forma de diagrama de bloques, una posible implementación de hardware;
La Figura 11 ilustra, en forma de diagrama de flujo lógico, un procedimiento posible para operar la realización de la Figura 10;
La Figura 12 ilustra, en forma de diagrama de bloques, un posible paralelo, de la realización que comparte programa de mensajes;
La Figura 13 ilustra, en forma de diagrama de bloques, una posible realización que comparte la programación de mensajes en cascada, de acuerdo con nuestra invención;
La Figura 14 ilustra, en forma de diagrama de bloques, un paralelo alternativo, de la realización de cálculo previo de la programación de mensajes canalizado de acuerdo con nuestra invención;
La Figura 15, que comprende la Figura 15a y la Figura 15b, ilustra, en forma de diagrama de bloques, posibles motores de cálculo previo de la programación de mensajes adaptados para su uso, por ejemplo, en la Figura 14; La Figura 16, que comprende la Figura 16a y la Figura 16b, ilustra, en forma de diagrama de bloques, varias formas posibles para el árbol Merkle de varios niveles de la Figura 7;
La figura 17 ilustra, en forma de diagrama de flujo, un posible procedimiento para generar una pluralidad de raíces de Merkle de acuerdo con nuestra invención;
La Figura 18 ilustra, en forma de diagrama de bloques, una posible realización que comparte la programación de mensajes en cascada, que tiene núcleos enrollados, de acuerdo con nuestra invención; y
La Figura 19 ilustra, en forma de diagrama de bloques, una realización de cálculo previo de programación de mensajes, que tiene núcleos enrollados, de acuerdo con nuestra invención.
En los dibujos, los elementos similares se enumerarán de manera similar siempre que sea posible. Sin embargo, esta práctica es simplemente por conveniencia de referencia y para evitar la proliferación innecesaria de números, y no pretende implicar o sugerir que nuestra invención requiera identidad en función o estructura en las diversas realizaciones.
Descripción detallada de la invención
La Figura 9 ilustra, en forma de alto nivel, un motor hash SHA2 de Bitcoin 16 construido de acuerdo con nuestra invención como se divulga en nuestra Solicitud Provisional. En la Figura 10, presentamos una implementación básica de nuestra invención, tal como divulga nuestra Patente Provisional. La realización preferente se instancia en forma de un ASIC que instancia un motor hash 16' que contiene una pluralidad seleccionada, por ejemplo, 200, semi-hash SHA-256 12, y una pluralidad correspondiente de funciones hash completas SHA-256 14. Cada semihash 12 se canaliza con una función hash completa 14. Cada canalización de la función hash, que combina un semihash 12 con una función hash completa 14, genera un SHA2 que resulta por tic del reloj. Cada semi-hash 12 tiene un registro de estado medio de 32 bytes 18 que contiene un estado medio precalculado, y un registro de programación de mensajes precalculado de 64*4 bytes 20 que contiene una programación de mensajes precalculada; y todas las rondas s Ha se desenrollan e implementan en hardware. Como es convencional, cada función hash completa 14 contiene la lógica de creación de la programación de mensajes para derivar la programación de mensajes del bloque de entrada en cada tic del reloj; y, también, se desenrollan rondas. Un registro de cambio de programación de mensajes 12a se adapta para funcionar de manera similar a una canalización de expansión para desarrollar la programación de mensajes de un bloque de entrada secuencialmente en una pila de empuje hacia abajo de profundidad 64 de ventanas deslizantes de 16 dwords (a veces denominado como ranuras), donde cada nueva dword del mensaje ingresa en la parte superior y la dword más antigua se elimina en la parte inferior. En funcionamiento, cada ventana deslizante se empuja hacia abajo hasta la siguiente ranura más profunda para seguir la ronda hash correspondiente con la ranura. En la ronda 61 de la función hash completa 14, proporcionamos un módulo de lógica de comparación intermedia especial 22 que busca una solución al bloque antes de que se realicen las 64 rondas. Si se encuentra la solución, un interruptor ("IRQ") se eleva; opcionalmente, se puede permitir que todas las funciones hash completas 14 continúen la búsqueda de soluciones adicionales, o se pueden detener para ahorrar potencia. Un microprocesador externo ("MPU") 24 maneja la excepción, lee las salidas de las funciones hash completas 14 y encuentra la que resolvió el bloque. Además, proporcionamos un verificador de los últimos 32 bits 26 para facilitar la reutilización de la canalización de las funciones hash para el cálculo previo.
De acuerdo con una realización de nuestra invención, proponemos directamente variar selectivamente la porción de 28 bytes de la raíz Merkle que se encuentra en el Bloque[0] (ver, Figura 6). Nuestro procedimiento requiere que el minero primero realice una etapa de preparación donde se construyen muchas raíces Merkle válidas diferentes. Sin embargo, a diferencia del enfoque habitual, nuestro objetivo es encontrar varias raíces Merkle candidatas que terminen con el mismo patrón de 4 bytes. Por ejemplo, una manera es seleccionar un patrón fijo predeterminado (por ejemplo 4 bytes de cero). Otra manera es almacenar las raíces Merkle candidatas para cada patrón hasta que se encuentren suficientes raíces candidatas que terminen con un patrón deseado.
El flujo funcional de operación de nuestro motor hash 16', se ilustra en la Figura 11. En forma de pseudocódigo (con sangría que indica un bucle para estructura), así es como funciona:
1. Precalcular estados intermedios s MSü,..,MSs-1 mediante la aplicación del primer procesamiento de fragmentos de SHA a un encabezado de bloque modificado al establecer el campo raíces Merkle en cada uno de las raíces Merkle s MRü,..,Mrs-1.
2. Crea B1 con los primeros 32 bits de B1 establecidos en el patrón fijo que todos los MR_i tienen en común en sus respectivos últimos 4 bytes. Establezca los otros campos de B1 ("bits" y "tiempo") en los valores apropiados.
3. Para cada número de un solo uso v,
3.1. Almacene el número de un solo uso en B1 y precalcula el programa de mensajes Wv para B1.
3.1. Para cada i desde 0 a s-1:
3.1.1. Completa el estado medio MSi a una ejecución SHA completa mediante el uso del programa de mensajes precalculado Wv para obtener el compendio intermedio Ti,v.
3.1.2. Aplique la segunda operación SHA a Ti,v para obtener el compendio del hash doble SHA Di,v.
3.1.3. Compare Di,v con el objetivo (si se utiliza la optimización de la última ronda, la comparación se realiza dentro del segundo motor de ejecución SHA).
Para enumerar rápidamente muchas raíces candidatas válidas, una manera de construirlas es mediante el aumento del campo del número de un solo uso extra y que vuelve a calcular el hash del nodo padre en el árbol hasta el nodo raíz. Otra manera es reorganizar los subárboles del árbol Merkle mediante el intercambio de nodos secundarios (por ejemplo, izquierda con derecha) y recalculando los nodos padres hasta el nodo raíz; este enfoque podría incluir que permute las hojas transacción. Cada vez que se calcula una nueva raíz candidata, se compara con el patrón deseado y, si no coincide, la raíz candidata se descarta; de lo contrario, se almacena. Como notamos en nuestra Solicitud Provisional, esta técnica requiere que el minero realice aproximadamente s*2A32*log2(Q) SHA2 compendios hash para obtener elementos s de igual terminación, cuando hay transacciones Q para incluir en el árbol Merkle.
Proponemos lograr un mayor rendimiento que combine dos conjuntos de subárboles de Merkle pregenerados (aunque se puede combinar un subárbol Merkle generado dinámicamente, hemos encontrado que esto es generalmente peor). Nuestra etapa de preparación se realiza en tres pasos:
1. En el primer paso de nuestra etapa de preparación, desarrollamos K1 hashes de nodo que reorganiza selectivamente el conjunto de transacciones en el árbol Merkle o, quizás, elige diferentes conjuntos de transacciones del conjunto de todas las transacciones pendientes. Esto se puede lograr en aproximadamente (Ki 1)*log2(#Qi) SHA2 operaciones, donde Qi es un conjunto de hash de transacciones y #Qi es el número de hashes de transacciones en el conjunto (es decir, nodos de hoja), ya que una vez un árbol para Q1 se han creado transacciones, luego se puede obtener una nueva raíz que intercambia los nodos secundarios, y calcula cada nodo principal que requiere un log2(Q1) SHA2 promedio de compendios de hash. Solo se deben guardar los hashes del nodo principal y los árboles actuales se pueden eliminar más tarde de la memoria.
2. En el segundo paso de nuestra etapa de preparación, desarrollamos un conjunto de K2 compendios de hash de nodo principal de un conjunto de subárboles de nodos, donde el conjunto de transacciones es Q2 y el número de transacciones (nodos de hoja) es #Q2=#Q1 (como se señaló anteriormente, esto siempre es posible ya que las raíces de Bitcoin Merkle usan hashes de transacciones duplicadas para llenar los nodos vacíos del árbol). Tenga en cuenta que los conjuntos Q1 y Q2 no se intersequen, y cualquier orden de transacciones creada por la concatenación de un pedido de Q1 con cualquier pedido de Q2 debe ser un pedido válido de transacciones. Nótese, también, que casi todos los posibles órdenes de las transacciones Q1 son generalmente válidas ya que la mayoría de los mineros no generan bloques que tienen transacciones que dependen de otras transacciones en el bloque (la única excepción es que la transacción de generación es siempre la primera).
Para Q1, hay número (#Q1-1)! de posibles raíces candidatas de los subárboles izquierdos (hay 3628800 ordenaciones posibles).
Para Q2, por simplicidad, podemos suponer que no hay hash de transacciones repetidas (es decir, #Q1+#Q2 es una potencia de dos). Por tanto, se deduce que hay número (#Q2)! de posibles raíces candidatas de los subárboles de la derecha. Si tomamos #Q1=#Q2=11, entonces hay al menos 2A46 posibles raíces candidatas que se pueden calcular fácilmente mediante la combinación de un elemento del conjunto de la izquierda con un elemento del conjunto de la derecha. Tenga en cuenta que K1 y K2 no necesitan ser tan grandes y pueden representar un pequeño subconjunto de los posibles ordenamientos, y el uso de valores más altos de #Q1 y #Q2.
3. En el tercer paso de nuestra etapa de preparación (que generalmente se realiza, por ejemplo, por nuestro motor hash 16'), los hashes de un padre del primer conjunto se combinan iterativamente con un padre del segundo conjunto (un nodo izquierdo con un nodo), y luego el hash SHA2 para obtener el hash del nodo raíz. Cada combinación requiere solo obtener 2 hashes desde tablas y realizar las operaciones SHA2.
En la Figura 12 se muestra un núcleo 10, adaptado para su uso en el sistema de la Figura 9, que comprende un expansor 12 adaptado para compartir el mismo programa de mensajes con un par de compresores 14a y 14b que funcionan sincrónicamente. Como se explicó anteriormente, cada uno de los compresores 14 comienza con un estado medio único generado mediante el uso, por ejemplo de nuestro procedimiento de generación de raíz candidata. A medida que el procedimiento hash avanza sincrónicamente hacia abajo a través de los compresores 14, las palabras de programación de mensajes fluyen en paralelo hacia abajo a través del expansor 12. Una vez finalizado, cada compresor 14 entrega un respectivo estado de salida único. Al igual que en nuestra arquitectura básica, los estados intermedios permanecen constantes durante un rango completo de número de un solo uso, mientras que el número de un solo uso dentro de las palabras de programación del mensaje se incrementa a la frecuencia de reloj de la canalización completa. A diferencia de una arquitectura convencional, nuestro motor hash 16' requiere solo un único expansor 12 compartido, lo que reduce significativamente no solo el hardware total del sistema, sino también el consumo de potencia.
En la Figura 13 se muestra un núcleo 10 genérico en cascada, adaptado para su uso en el sistema de la Figura 9, que comprende un expansor 12 adaptado para compartir la misma programación de mensajes con una pluralidad de compresores 14a-14b que funcionan sincrónicamente. En este núcleo 10, los diversos compresores 14 se conectan en cascada, que pasan cada elemento de programación de mensajes secuencialmente de compresor a compresor, un intervalo de retardo (adecuado para la implementación de hardware específica) por compresor. Cada compresor 14 comienza con un estado medio único y, una vez completado, entrega un estado de salida único respectivo; sin embargo, los estados de salida correspondientes al mismo mensaje se entregan secuencialmente en el tiempo con un intervalo de retraso. Tenga en cuenta que esta disposición comprende una canalización en 2 dimensiones cuidadosamente coordinada con el trabajo que fluye de arriba hacia abajo y de izquierda a derecha. En funcionamiento, en cada ciclo, todos los compresores 14 producen un respectivo estado de salida, pero para mensajes diferentes.
En la Figura 14 hemos ilustrado una forma genérica en cascada de nuestro procedimiento de precálculo de programación de mensajes, en el que el motor hash 16 comprende un generador de estado medio 28 adaptado dinámicamente para generar estados medios únicos para cada uno de la pluralidad de compresores 14, y un FIFO de retardo de 64 etapas 30 adaptado para retrasar la entrega de los estados medios respectivos a la etapa final de los compresores 14 correspondientes. El generador de estado medio 28 debe desarrollar un nuevo estado medio en cada reloj de tubería del compresor, pasando cada estado medio por la cadena del compresor a la misma frecuencia de reloj de tubería. En esta realización de nuestro motor hash de precálculo de programación de mensajes 16, las palabras de programación de mensajes, W0-W63, se desarrollan dinámicamente mediante un motor de precálculo de programación de mensajes adecuado 32, cuyos ejemplos hemos mostrado en la Figura 15. En el motor hash 16, tanto las palabras de programación de mensajes como el número de un solo uso son constantes durante un tiempo relativamente largo. En la realización mostrada en la Figura 15a, las palabras de salida se almacenan en un conjunto de 64 registros de programación de mensajes 34 asociados con cada compresor 14. Aunque hemos ilustrado en la Figura 15a un único expansor de mensaje enrollado compartido 32a, cada compresor 14 tiene un expansor de mensaje enrollado local 32a (no mostrado). En la realización alternativa mostrada en la Figura 15b, cada compresor 14 tiene una nube de lógica combinacional 32b asociada con el mismo adaptada para generar dinámicamente las palabras de programación de mensajes; por lo tanto, no hay necesidad de los registros 34 en esta realización. Dado que los registros de programación de mensajes 34 se actualizan con relativa poca frecuencia, debería haber tiempo suficiente para que se resuelva la lógica profunda 32b.
En la Figura 16a, hemos ilustrado, por conveniencia de referencia, la estructura de un árbol Merkle binario simple de 3 niveles que tiene 4 nodos de hojas, es decir, Transacciones^ - 4]. De acuerdo con nuestra invención, buscamos producir tantos hash de raíz candidatos como sea posible, y luego identificar y almacenar aquellos que coincidan en el último dword. En forma de pseudocódigo, un enfoque al que nos referimos como divide y vencerás ("D&C") funciona así:
Algoritmo de D&C:
Entrada: Q = conjunto de 2An transacciones (es decir, las hojas del árbol).
Salida: L = lista de k valores hash del nodo raíz.
1. Divide el conjunto de hojas en dos conjuntos Q1, Q2 de tamaño 2A(n -1 );
2. Producir una lista L1 de compendios hash donde cada elemento es el nodo raíz de un árbol Merkle construido a partir de Q1 mediante la permuta de los nodos del árbol
3. Producir una lista L2 de compendios hash donde cada elemento es el nodo raíz de un árbol Merkle construido a partir de Q2 mediante la permuta de los nodos del árbol
3.1. Para todo x1 en L1:
3.1.1. Para todo x2 en L2:
3.1.11. Calcule x = SHA2(x1 II x2) y agregar a L;
4. Devuelve la lista L que comprende las raíces #L1*# L2.
Notas:
1) Este flujo se ilustra en la Figura 17. En el paso del ciclo interno 2.1.1, denotamos la operación de adición mediante el uso de un "::" símbolo.
2) Nuestro mecanismo básico de intercambio de transacciones se ilustra a modo de ejemplo en la Figura 16a, en el que las transacciones en el subárbol derecho, Q2, se han intercambiado con Transacción4 en el subárbol derecho, Q2.
3) En la Figura 16b, hemos enfatizado que la generación de transacción siempre debe ser la transacción más a la izquierda. Por lo tanto, en el paso 1 de nuestro algoritmo D&C, la generación de transacción se restringe a permanecer en Q1.
4) Dado que k1, k2 pueden ser relativamente pequeños (que requiere del orden de 1 M de elementos de lista), preferimos implementar todo menos la recursividad externa de nuestro algoritmo D&C, es decir, el paso 2, en forma de un módulo de software que reside en la MPU 24. Una vez desarrolladas, L1 y L2 pueden enviarse a una canalización de núcleos hash 10 para producir los hash de raíz y luego buscar en la lista L raíces que satisfagan nuestros criterios (en el orden de los elementos de la lista de IT).
Un enfoque alternativo para desarrollar rápidamente un conjunto de hashes de raíz candidatos es incrementar el campo del número de un solo uso extra que está disponible para su uso en cada generación de transacción (ver Figura 16b). Dado que el campo del número de un solo uso extra tiene una longitud variable de 2 a 100 bytes, se puede generar fácil y rápidamente un grupo muy grande de hashes raíz candidatos simplemente mediante el uso del campo del número de un solo uso extra. Aunque hasta ahora se ha propuesto utilizar el campo del número de un solo uso extra para aumentar el rango de número de un solo uso efectivo para las operaciones mineras, no tenemos conocimiento de ninguna propuesta de que el conjunto resultante de hashes raíz sea filtrado mediante el uso de una predeterminada función de filtro especialmente adaptado para identificar aquellos en los que los últimos 4 bytes coinciden con un criterio dado, por ejemplo, todos los ceros o cualquier otro valor dado como hemos divulgado en nuestra Solicitud Provisional. El beneficio esencial de nuestro enfoque es que solo Bo se ve afectado, lo que permite que la programación de mensajes de B1 sea precalculada. El objetivo final, recuerde, es facilitar nuestros dos mecanismos principales: compartir la programación de mensajes y precalcular la programación de mensajes. En la Figura 18, hemos ilustrado cómo podemos adaptar la arquitectura de núcleo enrollado de acuerdo con nuestra invención para emplear nuestra metodología de intercambio de programación de mensajes. En el núcleo ilustrado 10', los programas de mensajes desarrollados por un único expansor de mensajes 12 se aplican, en paralelo, a una pluralidad de compresores 14 que funcionan sincrónicamente. Como en la realización de la Figura 12, cada uno de los compresores 14 se inicializa con diferentes estados medios; esto es efectivo ya que los nuevos estados medios se requieren con relativa poca frecuencia, generalmente después de que se ha agotado el rango de número de un solo uso.
En la Figura 19, hemos ilustrado cómo podemos adaptar la arquitectura de núcleo enrollado de acuerdo con nuestra invención para emplear nuestra metodología de precálculo de programación de mensajes. En el núcleo ilustrado 10', los mensajes precalculados son desarrollados por un único expansor de mensajes 12 y aplicados, en paralelo, a una pluralidad de compresores en cascada 14. Como en la realización de la Figura 14, los estados medios generados se conectan en cascada a través de un conjunto respectivo de registros de estado medio, a través de un bus que opera a una frecuencia de aproximadamente la frecuencia del núcleo / 67. En esta realización, dado que la programación de mensajes se actualiza con relativa poca frecuencia, podemos agregar las constantes y almacenar las sumas precalculadas en el archivo de registro.
Aunque hemos descrito nuestra invención en el contexto de realizaciones particulares, un experto en esta técnica se dará cuenta fácilmente de que se pueden realizar muchas modificaciones en tales realizaciones para adaptarse a implementaciones específicas definidas por las reivindicaciones adjuntas. En el futuro, si otras partes del encabezado del bloque Bitcoin están disponibles como espacio número de un solo uso expandido, tal como los primeros 32 bits del hash de bloque anterior, entonces nuestros procedimientos y aparatos también pueden hacer uso de este espacio adicional para crear el conjunto de estados medios requeridos por nuestra invención.
Por tanto, es evidente que hemos proporcionado un procedimiento y un aparato mejorados para extraer cadenas de bloques. En particular, presentamos nuestros nuevos procedimientos y aparatos que permiten que un único instante expansor sea compartido por una pluralidad de instantes compresores. Además, afirmamos que nuestro procedimiento y aparato proporcionan un rendimiento generalmente superior a las mejores técnicas de la técnica anterior.

Claims (15)

REIVINDICACIONES
1. Un procedimiento para extraer un bloque en una cadena de bloques, preferentemente Bitcoin, dicho bloque comprende un encabezado de bloque, en función de una función hash seleccionada aplicada en el encabezado del bloque, la función hash seleccionada comprende una operación de expansión y una operación de compresión, el método realizado en un sistema informático, comprendiendo dicho sistema informático una única entidad expansora para realizar dicha operación de expansión y una pluralidad de entidades compresoras, cada una de las cuales se adapta para realizar una operación de compresión y que funcionen todas de forma síncrona,
que comprende los pasos de:
[1] Calcular una pluralidad, m, de estados medios, cada uno en función de variar selectivamente una primera porción seleccionada del encabezado del bloque, que comienza desde un estado medio único respectivo de dicha pluralidad de estados medios mediante una entidad generadora de estado medio, en el que dicha entidad generadora de estado medio calcula un reloj de canalización de estado medio nuevo para cada entidad de compresor, que pasa por cada estado medio por la cadena de entidad de compresor a la misma frecuencia de reloj de canalización;
[1.1] Distribuir dicha pluralidad calculada de m estados medios a una etapa inicial de dicha pluralidad de entidades compresoras,
[2] Calcular mediante dicha entidad de expansión única una programación de mensajes, comprendiendo dicha programación de mensajes una pluralidad de elementos de programación de mensajes, a la entrada de un mensaje y un número de un solo uso mediante la realización de dicha operación de expansión en una segunda porción seleccionada del encabezado del bloque; dicha entidad expansora compartida única es proporcionada por una entidad expansora de mensajes enrollados compartida única o una nube de lógica combinatoria asociada con cada entidad compresora;
[2.1] Compartir dicha programación de mensajes calculada entre dichas una o más entidades compresoras mediante dicha entidad expansora;
[2.2] Retrasar la entrega de dicha pluralidad calculada de estados medios m a una etapa final de dicha pluralidad de entidades de compresor mediante el uso de una memoria FIFO, que tiene un número de etapas, que corresponden con el número de etapas a dicho número de elementos de programación de mensajes calculados de dicho programa de mensajes;
[3] Calcular para cada uno de los estados medios m mediante la realización de la operación de compresión en el estado medio calculado y la programación de mensajes calculada, uno respectivo de m resultados
2. El procedimiento de la reivindicación 1, en el que la primera porción del encabezado del bloque comprende los primeros 4 bytes del encabezado del bloque.
3. El procedimiento de la reivindicación 1, en el que la primera porción del encabezado del bloque comprende un compendio de una transacción.
4. El procedimiento de la reivindicación 3, en el que una transacción de generación comprende una de las transacciones; y en el que el paso [1] se caracteriza además por variar la transacción de generación.
5. El procedimiento de la reivindicación 3, en el que el paso [1] se caracteriza además por variar una porción seleccionada de una transacción seleccionada.
6. El procedimiento de la reivindicación 3, en el que el paso [1] se caracteriza además por variar el orden de una pluralidad de transacciones.
7. El procedimiento de la reivindicación 1, en el que la primera porción comprende una raíz de una estructura de datos de árbol.
8. El procedimiento de la reivindicación 7, en el que la estructura de datos de árbol comprende un árbol Merkle.
9. El procedimiento de la reivindicación 7, en el que el paso [1] se caracteriza además por comprender los pasos de:
[1.1.1] seleccionar un hash de subárbol izquierdo de una primera pluralidad de hash de subárbol candidatos;
[1.1.2] seleccionar un hash de subárbol derecho de una segunda pluralidad de hash de subárbol candidatos; y [1.1.3] desarrollar la raíz de la estructura de datos del árbol a partir del hash del subárbol izquierdo y del hash del subárbol derecho.
10. El procedimiento de la reivindicación 1, en el que el paso [1] se caracteriza además por comprender los pasos de:
[1.1] desarrollar un encabezado de bloque candidato mediante la variación de la primera parte del encabezado de bloque;
[1.2] aplicar una función de filtro al encabezado de bloque candidato, y:
[1.2.1] si el encabezado de bloque candidato falla la función de filtro, descartar el encabezado del bloque candidato, pero
[1.2.1] de lo contrario, desarrollar un estado medio en función del encabezado de bloque candidato; y
[1.3] repetir los pasos [1.1] a [1.2] para desarrollar una pluralidad, m, de estados medios, cada uno en función de un encabezado de bloque candidato respectivo.
11. El procedimiento de la reivindicación 10:
En el que, en el paso [1.1], la primera porción del encabezado de bloque candidato comprende 28 bytes y una segunda porción del encabezado del bloque candidato comprende 4 bytes; y
en el que, en el paso [1.2.1], la función de filtro se caracteriza además por seleccionar para descartar un encabezado de bloque candidato que depende de la segunda porción.
12. El procedimiento de la reivindicación 1, en el que el paso [2] se caracteriza además por:
[2] realizar la operación de expansión en el encabezado del bloque para producir una programación de mensajes que comprende una secuencia ordenada de elementos de programación de mensajes;
y en el que el paso [3] se caracteriza además por:
[3] para cada uno de los estados medios m, realizar la operación de compresión en la secuencia de elementos de programación de mensajes para producir uno de los resultados respectivos m.
13. El procedimiento de la reivindicación 1 que comprende además los pasos de:
[4] desarrollar selectivamente un encabezado de bloque modificado mediante la variación de una porción seleccionada del bloque; y
[5] repetir selectivamente los pasos del [2] al [4].
14. Aparato configurado para realizar el procedimiento de cualquier reivindicación anterior.
15. Un medio legible por ordenador que incluye instrucciones ejecutables que, cuando se ejecutan en un sistema de procesamiento, hace que el sistema de procesamiento realice los pasos de un método de acuerdo con una cualquiera de las reivindicaciones 1 a 13.
ES14864642T 2013-11-19 2014-11-19 Procedimientos y aparatos de minería de bloques Active ES2836139T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361906310P 2013-11-19 2013-11-19
PCT/US2014/066470 WO2015077378A1 (en) 2013-11-19 2014-11-19 Block mining methods and apparatus

Publications (1)

Publication Number Publication Date
ES2836139T3 true ES2836139T3 (es) 2021-06-24

Family

ID=53180113

Family Applications (1)

Application Number Title Priority Date Filing Date
ES14864642T Active ES2836139T3 (es) 2013-11-19 2014-11-19 Procedimientos y aparatos de minería de bloques

Country Status (11)

Country Link
US (1) US11113676B2 (es)
EP (1) EP3095044B1 (es)
KR (1) KR102137956B1 (es)
CN (2) CN106415530A (es)
CY (1) CY1123686T1 (es)
DK (1) DK3095044T3 (es)
ES (1) ES2836139T3 (es)
PT (1) PT3095044T (es)
RS (1) RS61234B1 (es)
SI (1) SI3095044T1 (es)
WO (1) WO2015077378A1 (es)

Families Citing this family (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170300877A1 (en) * 2014-09-23 2017-10-19 Spondoolies Tech Ltd. System and method for providing shared hash engines architecture for a bitcoin block chain
WO2016067295A1 (en) * 2014-10-30 2016-05-06 Spondoolies Tech Ltd. Method and system for reducing power consumption in bitcoin mining via waterfall structure
US10409827B2 (en) 2014-10-31 2019-09-10 21, Inc. Digital currency mining circuitry having shared processing logic
US20160379212A1 (en) * 2015-06-26 2016-12-29 Intel Corporation System, apparatus and method for performing cryptographic operations in a trusted execution environment
US10504179B1 (en) 2015-12-08 2019-12-10 Fmr Llc Social aggregated fractional equity transaction partitioned acquisition apparatuses, methods and systems
US11636471B2 (en) 2017-12-15 2023-04-25 Fmr Llc Social data tracking datastructures, apparatuses, methods and systems
US10778439B2 (en) 2015-07-14 2020-09-15 Fmr Llc Seed splitting and firmware extension for secure cryptocurrency key backup, restore, and transaction signing platform apparatuses, methods and systems
US10339523B2 (en) 2015-07-14 2019-07-02 Fmr Llc Point-to-point transaction guidance apparatuses, methods and systems
US10644885B2 (en) 2015-07-14 2020-05-05 Fmr Llc Firmware extension for secure cryptocurrency key backup, restore, and transaction signing platform apparatuses, methods and systems
US11436598B2 (en) 2017-12-15 2022-09-06 Fmr Llc Social data tracking datastructures, apparatuses, methods and systems
US11488147B2 (en) 2015-07-14 2022-11-01 Fmr Llc Computationally efficient transfer processing and auditing apparatuses, methods and systems
US10992469B2 (en) 2015-07-14 2021-04-27 Fmr Llc Seed splitting and firmware extension for secure cryptocurrency key backup, restore, and transaction signing platform apparatuses, methods and systems
CN105245327A (zh) * 2015-08-21 2016-01-13 北京比特大陆科技有限公司 比特币工作量证明哈希计算芯片优化的方法、装置和电路
JP6355168B2 (ja) * 2015-11-09 2018-07-11 日本電信電話株式会社 ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム
US9660627B1 (en) 2016-01-05 2017-05-23 Bitfury Group Limited System and techniques for repeating differential signals
US9514264B1 (en) 2016-01-05 2016-12-06 Bitfury Group Limited Layouts of transmission gates and related systems and techniques
US9645604B1 (en) 2016-01-05 2017-05-09 Bitfury Group Limited Circuits and techniques for mesochronous processing
US10262164B2 (en) 2016-01-15 2019-04-16 Blockchain Asics Llc Cryptographic ASIC including circuitry-encoded transformation function
CN105740440B (zh) * 2016-02-01 2019-03-26 上海凭安网络科技有限公司 一种加快区块链查询的索引方法
CN106100825A (zh) * 2016-05-31 2016-11-09 深圳市风云实业有限公司 基于fpga的高吞吐量sha‑1算法
US10313108B2 (en) * 2016-06-29 2019-06-04 Intel Corporation Energy-efficient bitcoin mining hardware accelerators
US10142098B2 (en) 2016-06-29 2018-11-27 Intel Corporation Optimized SHA-256 datapath for energy-efficient high-performance Bitcoin mining
CN106407008B (zh) * 2016-08-31 2019-12-03 北京比特大陆科技有限公司 挖矿业务处理方法、装置和系统
US10783279B2 (en) * 2016-09-01 2020-09-22 Atmel Corporation Low cost cryptographic accelerator
CN106407795B (zh) * 2016-09-05 2019-05-14 北京众享比特科技有限公司 数据存在认证系统、认证方法及验证方法
US10755242B2 (en) * 2016-09-23 2020-08-25 Intel Corporation Bitcoin mining hardware accelerator with optimized message digest and message scheduler datapath
US10367645B2 (en) * 2016-10-26 2019-07-30 International Business Machines Corporation Proof-of-work for smart contracts on a blockchain
US10491378B2 (en) 2016-11-16 2019-11-26 StreamSpace, LLC Decentralized nodal network for providing security of files in distributed filesystems
KR102603069B1 (ko) * 2016-11-19 2023-11-15 디피니티 스티프텅 시스템 아키텍쳐 및 시스템 아키텍쳐에서의 데이터 처리 방법
US10387684B2 (en) 2016-12-09 2019-08-20 International Business Machines Corporation Interlocked blockchains to increase blockchain security
WO2018112949A1 (zh) * 2016-12-23 2018-06-28 深圳前海达闼云端智能科技有限公司 区块链的挖矿方法、装置和节点设备
US10419225B2 (en) 2017-01-30 2019-09-17 Factom, Inc. Validating documents via blockchain
EP3355513B1 (en) 2017-01-31 2020-10-14 Sony Corporation Electronic node and method for maintaining a distributed ledger
WO2018145201A1 (en) * 2017-02-08 2018-08-16 Upstream Data Inc. Blockchain mine at oil or gas facility
CN107040582B (zh) * 2017-02-17 2020-08-14 创新先进技术有限公司 一种数据处理方法及装置
US10411897B2 (en) 2017-02-17 2019-09-10 Factom, Inc. Secret sharing via blockchains
US10817873B2 (en) 2017-03-22 2020-10-27 Factom, Inc. Auditing of electronic documents
CN107451007B (zh) * 2017-03-24 2020-11-06 北京瑞卓喜投科技发展有限公司 针对增加区块进行勘误的区块链的验证方法及系统
CN107451002B (zh) * 2017-03-24 2020-11-10 北京瑞卓喜投科技发展有限公司 针对修改区块体数据的区块链的主动验证方法及系统
CN106971342A (zh) * 2017-03-29 2017-07-21 宁夏凯速德科技有限公司 去中心化的电子商务平台中基于区块链技术的交易方法及系统
US10685399B2 (en) 2017-03-31 2020-06-16 Factom, Inc. Due diligence in electronic documents
US10270599B2 (en) 2017-04-27 2019-04-23 Factom, Inc. Data reproducibility using blockchains
KR102017739B1 (ko) * 2017-05-12 2019-09-03 박경옥 블록체인 시스템 및 블록체인 생성 방법
CN107402824B (zh) 2017-05-31 2020-06-02 创新先进技术有限公司 一种数据处理的方法及装置
CN109391643B (zh) * 2017-08-03 2020-08-07 中国移动通信有限公司研究院 区块链轻量化处理方法、区块链节点及存储介质
CN107580030B (zh) * 2017-08-18 2021-03-02 重庆邮电大学 一种数据管理方法、装置及服务器
US11316696B2 (en) * 2017-09-29 2022-04-26 R3 Ltd. Hash subtrees for grouping components by component type
US11170000B2 (en) 2017-10-20 2021-11-09 Intuit Inc. Parallel map and reduce on hash chains
KR102010571B1 (ko) * 2017-11-15 2019-08-13 한전케이디엔 주식회사 블록체인을 이용한 스마트그리드 이종 데이터 보안 저장 방법
CN108156219A (zh) * 2017-11-30 2018-06-12 深圳市轱辘车联数据技术有限公司 一种设备找回的方法及服务器
US11177961B2 (en) * 2017-12-07 2021-11-16 Nec Corporation Method and system for securely sharing validation information using blockchain technology
CN108337461A (zh) * 2017-12-14 2018-07-27 杭州微兔科技有限公司 用于区块链计算的装置、系统及装置的应用方法
CN108389044A (zh) * 2018-02-28 2018-08-10 北京比特大陆科技有限公司 工作量证明的计算方法和系统、电子设备、程序和介质
US10372943B1 (en) * 2018-03-20 2019-08-06 Blockchain Asics Llc Cryptographic ASIC with combined transformation and one-way functions
US10404454B1 (en) 2018-04-25 2019-09-03 Blockchain Asics Llc Cryptographic ASIC for derivative key hierarchy
US10783164B2 (en) 2018-05-18 2020-09-22 Factom, Inc. Import and export in blockchain environments
US11134120B2 (en) 2018-05-18 2021-09-28 Inveniam Capital Partners, Inc. Load balancing in blockchain environments
US11170366B2 (en) 2018-05-18 2021-11-09 Inveniam Capital Partners, Inc. Private blockchain services
CN108881433A (zh) * 2018-06-15 2018-11-23 孙念 基于区块链的信息定时释放或发送方法及装置
CN109063049B (zh) * 2018-07-18 2020-12-08 百度在线网络技术(北京)有限公司 一种区块链网络的账号处理方法、装置、设备及存储介质
CN110738472B (zh) * 2018-07-20 2023-10-03 北京航空航天大学 区块链的存储方法和区块链的节点
US11044095B2 (en) 2018-08-06 2021-06-22 Factom, Inc. Debt recordation to blockchains
US11164250B2 (en) 2018-08-06 2021-11-02 Inveniam Capital Partners, Inc. Stable cryptocurrency coinage
US11348098B2 (en) 2018-08-06 2022-05-31 Inveniam Capital Partners, Inc. Decisional architectures in blockchain environments
US11328290B2 (en) 2018-08-06 2022-05-10 Inveniam Capital Partners, Inc. Stable cryptocurrency coinage
US11989208B2 (en) 2018-08-06 2024-05-21 Inveniam Capital Partners, Inc. Transactional sharding of blockchain transactions
CN109347639B (zh) * 2018-09-21 2021-06-29 浪潮电子信息产业股份有限公司 一种序列号的生成方法及装置
CN109214817B (zh) * 2018-10-08 2021-09-03 莆田市烛火信息技术有限公司 一种基于算力寄生的区块链共识装置
CN109558527B (zh) * 2019-01-02 2023-10-20 平安科技(深圳)有限公司 基于区块链的高考分数查询方法、装置和计算机设备
US11296866B2 (en) 2019-01-15 2022-04-05 Blockchain ASICs Inc. Dynamic transform in blockchain header validation
CN110264187B (zh) 2019-01-23 2021-06-04 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质
US11032074B2 (en) * 2019-02-11 2021-06-08 Pqsecure Technologies, Llc Cryptosystem and method using isogeny-based computations to reduce a memory footprint
CN110060161B (zh) * 2019-03-28 2021-05-28 众安信息技术服务有限公司 用于区块链交易防重的客户端服务实现方法及服务组件
CN110113186A (zh) * 2019-04-19 2019-08-09 浙江万胜智能科技股份有限公司 一种基于区块链的混合智慧城市网络结构
CA3183109A1 (en) 2019-05-15 2020-11-19 Upstream Data Inc. Portable blockchain mining system and methods of use
CN110176998A (zh) * 2019-05-17 2019-08-27 北京众享比特科技有限公司 一种工作量证明的共识方法、装置、设备和存储介质
US11770256B1 (en) 2019-06-20 2023-09-26 Marvell Asia Pte, Ltd. System and method for bitcoin mining with reduced power
CN116757843A (zh) * 2019-06-28 2023-09-15 创新先进技术有限公司 用于执行不同类型区块链合约的系统和方法
US11438142B1 (en) 2019-08-19 2022-09-06 Marvell Asia Pte, Ltd. System and method for mining digital currency in a blockchain network
JP7383949B2 (ja) * 2019-09-20 2023-11-21 富士電機株式会社 情報処理装置及びプログラム
US11444749B2 (en) 2020-01-17 2022-09-13 Inveniam Capital Partners, Inc. Separating hashing from proof-of-work in blockchain environments
US11164267B2 (en) 2020-02-27 2021-11-02 International Business Machines Corporation Using blockchain to select energy-generating sources
CA3076653A1 (en) 2020-03-21 2021-09-21 Upstream Data Inc. Portable blockchain mining systems and methods of use
US20220058167A1 (en) * 2020-08-24 2022-02-24 Intel Corporation Device, system and method for version rolling with a blockchain mining engine
US11652604B2 (en) 2020-11-12 2023-05-16 Paypal, Inc. Blockchain data compression and storage
CN114528246A (zh) * 2020-11-23 2022-05-24 深圳比特微电子科技有限公司 运算核、计算芯片和加密货币矿机
CN112925504A (zh) * 2021-02-20 2021-06-08 北京比特大陆科技有限公司 工作量证明的计算装置、asic芯片和工作量证明的计算方法
GB2611321A (en) * 2021-09-29 2023-04-05 Quantum Blockchain Tech Plc Message scheduling for cryptographic hashing
US11989153B2 (en) 2021-09-29 2024-05-21 Chain Reaction Ltd. Cryptocurrency miner with multiple power domains
WO2024010804A1 (en) * 2022-07-06 2024-01-11 Block, Inc. Computing architecture for energy-efficient hash computation
US20240144249A1 (en) * 2022-10-27 2024-05-02 Marathon Digital Holdings Systems And Methods For Overclocking Mining Rigs

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6097811A (en) * 1995-11-02 2000-08-01 Micali; Silvio Tree-based certificate revocation system
US7359846B1 (en) * 2002-12-05 2008-04-15 Cadence Design Systems, Inc. Modeling an ASIC based on static pipeline delays
US7921300B2 (en) * 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
WO2005043802A1 (en) 2003-10-20 2005-05-12 Drm Technologies, Llc Securing digital content system and method
US7599489B1 (en) * 2004-02-09 2009-10-06 Sun Microsystems Inc. Accelerating cryptographic hash computations
JP5504592B2 (ja) * 2008-08-25 2014-05-28 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにプログラム
KR20100047592A (ko) * 2008-10-29 2010-05-10 한국전자통신연구원 Sha 알고리즘 기반의 메시지 스케줄 연산 방법, 메시지 압축 연산 방법 및 이를 수행하는 암호장치
WO2011041610A1 (en) * 2009-09-30 2011-04-07 Zynga Game Network Inc. Apparatuses, methods and systems for a trackable virtual currencies platform
US8694703B2 (en) * 2010-06-09 2014-04-08 Brocade Communications Systems, Inc. Hardware-accelerated lossless data compression
US8838608B2 (en) * 2010-12-20 2014-09-16 Teradata Us, Inc. Virtual R-tree mapped to an extendible-hash based file system
US8856547B2 (en) * 2012-06-07 2014-10-07 Intel Corporation Speed up secure hash algorithm (SHA) using single instruction multiple data (SIMD) architectures
US8838997B2 (en) * 2012-09-28 2014-09-16 Intel Corporation Instruction set for message scheduling of SHA256 algorithm
US9495668B1 (en) * 2013-05-10 2016-11-15 EMC IP Holding Company LLC Computing solutions to a problem involving inversion of a one-way function
US10038550B2 (en) * 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10409827B2 (en) * 2014-10-31 2019-09-10 21, Inc. Digital currency mining circuitry having shared processing logic

Also Published As

Publication number Publication date
EP3095044A4 (en) 2017-09-06
CY1123686T1 (el) 2022-03-24
KR102137956B1 (ko) 2020-07-28
KR20160106570A (ko) 2016-09-12
US20170243176A1 (en) 2017-08-24
EP3095044A1 (en) 2016-11-23
EP3095044B1 (en) 2020-09-23
WO2015077378A1 (en) 2015-05-28
CN106415530A (zh) 2017-02-15
SI3095044T1 (sl) 2021-02-26
PT3095044T (pt) 2020-12-24
US11113676B2 (en) 2021-09-07
RS61234B1 (sr) 2021-01-29
DK3095044T3 (da) 2020-12-21
CN111427891A (zh) 2020-07-17

Similar Documents

Publication Publication Date Title
ES2836139T3 (es) Procedimientos y aparatos de minería de bloques
Aumasson et al. BLAKE2: simpler, smaller, fast as MD5
US6829355B2 (en) Device for and method of one-way cryptographic hashing
ES2805125T3 (es) Arquitectura e instrucciones flexibles para el estándar de cifrado avanzado (AES)
Aumasson et al. NORX: parallel and scalable AEAD
Feng et al. A byte-based guess and determine attack on SOSEMANUK
Rohde et al. Fast hash-based signatures on constrained devices
Zong et al. Collision attacks on round-reduced Gimli-hash/ascon-xof/ascon-hash
Theocharoulis et al. Implementing rainbow tables in high-end fpgas for super-fast password cracking
WO2009031883A1 (en) Encryption processor
Krovetz Message authentication on 64-bit architectures
WO2021233198A1 (zh) 用于执行散列算法的电路和方法
CN107508666B (zh) 一种基于rsa和sha-512的低成本数字签名sopc设计方法
US10536264B2 (en) Efficient cryptographically secure control flow integrity protection
US9973336B2 (en) Hash value generating device
Chaigneau et al. Cryptanalysis of NORX v2. 0
Van Rompay et al. Cryptanalysis of 3-pass HAVAL
JP2011101413A (ja) 秘密鍵を伴う電子暗号アセンブリを安全に守る方法
Van Hieu et al. Hardware implementation for fast block generator of Litecoin blockchain system
Bao et al. Generic attacks on hash combiners
Yu et al. Evaluate the security margins of SHA-512, SHA-256 and DHA-256 against the boomerang attack
CN101483519A (zh) 产生哈希函数的压缩函数装置以及哈希函数系统及方法
Knudsen et al. Preimage and collision attacks on MD2
Saravanan et al. Theoretical survey on secure hash functions and issues
Naito et al. LM-DAE: low-memory deterministic authenticated encryption for 128-bit security