No estoy preguntando por el diseño de bitcoin ... pero estoy interesado en la capacidad de hash de un minero de bitcoin.
Para ser breve : ¿los mineros de bitcoin (o algunos de ellos) aceptan entradas personalizables y las procesan en bloque (en lugar de aceptar más instrucciones de alto nivel y la minería funciona automáticamente)?
La verdadera pregunta es, he leído algunos artículos sobre un esquema de firma de criptografía post-cuántica, el esquema de firma Merkle (MSS):
Esta nueva forma de hacer una firma digital requiere que se calculen muchos hash, por ejemplo:
-
una sola firma de una sola vez (OTS) requiere al menos 512 veces de hashes si usamos SHA-256 con un tamaño de salida de
512*256/8=16kBytes
.Si se desea una salida más pequeña, lo que requiere un compromiso de memoria de tiempo, por ejemplo. para reducir el tamaño en casi 8, requiere
2^8 * (256 / 8) = 8192
hashes con un tamaño de salida de aproximadamente256 * 256 / 8 / 8 = 1024 Bytes
; para reducir en 16, requiere2^16 * (256 / 16) = 1048576
hashes con un tamaño de salida de aproximadamente 512 bytes. -
cada firma de MSS consta de varias OTS, que están autenticadas por árboles binarios encadenados (la OTS en una hoja se usa para autenticar la clave pública raíz del árbol subyacente), que significa, para n árboles existen n OTS que deben hacerse.
- para calcular la clave pública raíz del árbol, puede ser necesario hacer un hash de todo el árbol: con los niveles de m , se necesitan aproximadamente 2 hash de ^ m.
Y finalmente, de esta manera se puede lograr una vida de n*m
(el límite de hacer la firma). Por ejemplo: si se están diseñando las firmas de 2^80
, con n=4, m=20
y una compensación con 16, para el peor de los casos se requieren hashes de 4*1048576 + 4*2^20=8388608
(pero con un tamaño de salida atractivo de (256*256/16*4+80*256)/8=4608Bytes
en comparación con los algoritmos populares).
Este requisito parece demasiado alto para el software (OpenSSL puede hacer eso en 3 segundos, pero si una firma toma 3 segundos, ¿por qué deberíamos diseñar una vida útil de 2^80
signos?), pero para hardware como los mineros de bitcoin, parece Todavía es demasiado fácil (no estoy seguro, nunca he jugado con eso). Así que he estado considerando la posibilidad de adaptar un minero de bitcoin en una aceleración de hardware para tal algoritmo de firma. Para hacerlo, es necesario alimentar al minero con los insumos que queremos que calcule. ¿Es esto posible? (Creo que debería, ya que deberían al menos permitir que algunos parámetros relacionados con el usuario se personalicen en pruebas de hashcash ...)