Otra cosa por la que me gustan los ASICs es porque el coste de minería se convierte, sobre todo, en investigación y desarrollo en tecnología. En definitiva, el tipo de trabajo que cualquier país quiere tener dentro de sus fronteras.
Un desarrollo de tecnología absolutamente banal porque los ASIC no sirven para nada, excepto calcular SHA256d... y sospecho que ni eso; supongo que están optimizados para calcular SHA256d con 80 bytes de entrada y nada más.
Mientras que el mineo con GPU sí traía innovación porque todos podemos aprender a programar en paralelo con una GPU a partir de los desarrollos hechos para el mineo, para otras muchas cosas que no son el mineo. Con los ASIC llegamos a un callejón sin salida. De hecho, suponen un peligro latente para bitcoin: supongamos que mañana se descubre que SHA256d tiene una vulnerabilidad grave, de tal forma que eligiendo astutamente la entrada se consigan "targets" con más posibilidad. La solución obvia es cambiar la rutina de hash (por ejemplo, SHA3, recientemente elegido por el NIST) e implementarla en los nuevos clientes... pero... como ya hay una gran cantidad de dinero invertida en esos desarrollos, estos inversores (los mineros ASIC) no lo van a consentir; y como tienen la mayoría de la potencia de cálculo, mantendrán la cadena de bloques principal con SHA256d mientras que los bloques producidos por el nuevo cliente quedarán "huérfanos"... chungo, chungo.
Pero es que eso no es un inconveniente, sino una ventaja. Mayor número de nodos implica una red más resistente...
Sólo si ese mayor número de nodos están controlados por un mayor número de personas de las que ahora controlan el hastrate.
Pero es que es más fácil que sea así ¿no te das cuenta? La condición base de toda red p2p es que nadie domine el 50% de los nodos. Esa es la condición de partida de bitcoin. Pero esa condición se ve sobrepasada por otra, que es que nadie domine el 50% de la potencia de cálculo. En la condición actual, es más fácil que alguien controle el 50% de la potencia de cálculo, que en cualquier red p2p alguien controle el 50% de nodos.
Ya me imaginaba que podrías intentar limitar el número de nodos mediante IPs, el problema es que ahora se da más poder sobre la red a aquellos que deciden a quién se asignan las direcciones IP (
ICANN) y tienen mayor ventaja los que disponen de más cantidad de direcciones, ver
asignación de direcciones IP por país ―se puede comprobar cómo, por cuestiones políticas y de ventaja tecnológica, Estados Unidos tiene asignadas unas 5 IPs por habitante y controla el 44,5 % de las IPs que pueden existir mientras China se tiene que conformar con 0,25 IPs por persona; esto da una situación de claro privilegio a los EE.UU.―. En la hipótesis de que trabajemos con IPv6 desaparece este sistema de control puesto que podríamos considerar el número de direcciones IP ilimitado en la práctica.
A ver LuisCar, sé realista: ¿cuántas direcciones posibles IPv4 existen? 2^32 ~ 4x10^9, o sea, 4000 millones. ¿Cuántos nodos hay conectados actualmente a bitcoin? Unos 1000 (información de blockchain.info), es decir, menos de una millonésima.
Suponiendo que un sistema como el que propongo se implante y promueva la creación masiva de nodos y que llegamos a 1 millón de nodos. Eso sigue siendo menos del 0.1% del total disponible.
Por lo tanto es lo de menos que haya un país que controle tanto o cuanto. Es más, tú mismo puedes ir mañana a alquilar un servidor dedicado cuya IP posiblemente sea de EEUU.
La potencia de cálculo, aunque se utilice calculando valores hash en sí mismos irrelevantes, sirve para reducir la probabilidad de que un atacante malicioso se haga con la toma de decisiones de la red. En el sistema de prueba-de-trabajo se establece una equivalencia entre "poder de decisión" y "poder de computación". La idea es que en una red con muchas máquinas participantes habrá una correlación buena entre el poder de computación disponible y la cantidad de usuarios interesados en que el sistema funcione. Si consideras que esos cálculos de valores hash son un gasto tonto de energía y recursos tendrás que encontrar otra manera que impida, con la misma efectividad, que un atacante pueda hacerse con el control del 51% de poder de decisión en la red.
Uhmmm ¿qué es lo que no has entendido de mi exposición?
Porque yo sí te puedo confesar que no estoy seguro de entenderte.
A ver: la red actual con 80 TH/s y una dificultad de 10 millones es igual de segura que la red de hace dos años, con 80 GH/s y una dificultad de 10.000. Es una cuestión de escala. Mi propuesta va en el sentido de normalizar hacia abajo.
No sé si va por ahí tu objeción
Aunque se acabaran los valores posibles del nonce en menos de un segundo, se pueden hacer otros cambios como modificar la dirección Bitcoin a la que iría la recompensa del bloque. Creo que eso es lo que hace el código original de bitcoind a través en la función IncrementExtraNonce. Incluso para modificar la marca temporal tal vez tampoco sería necesario esperar ya que los tiempos en Bitcoin se utilizan muy a la ligera; de hecho un bloque N+1 puede tener un tiempo de creación anterior al del bloque N que le precede.
Vale, estamos de acuerdo en que dejar el nonce a 16 bits no es suficiente.
Lo que quiero decir es que el algoritmo de minado no está pensado para que sean necesarias pausas de espera sino precisamente para calcular valores hash a destajo hasta que se encuentre uno válido.
De nuevo, es una cuestión de escala: una red funcionando a 1 MH/s puede producir 1 bloque cada 10 minutos si se regula la dificultad proporcionalmente. Da igual si los mineros se ven obligados a pausar o no. Para la tasa de creación de bloques es absolutamente irrelevante.
Pero para el ahorro energético y para la desincentivación a la centralización es mejor mi sistema.
Pero entonces, ¿para qué mantener esos 65.536 hashes? Si el sistema de prueba de trabajo basado en calcular valores de hash no te convence y ves una manera de identificar los nodos individuales sin atender a la potencia de cálculo, ¿qué te aporta el sistema de minado? Mi impresión es que no valen las medias tintas: o bien mantienes la prueba-de-trabajo con todo lo que eso conlleva: minado, bloques, etc. o bien lo eliminas todo, pero en ese último caso seguramente necesitarías algún tipo de centralización. Todos los intentos de eliminar los cálculos de hash aparentemente absurdos del sistema de prueba de trabajo suelen chocar con alguna incompatibilidad con la idea de la descentralización.
Es que la "prueba de trabajo" sí me convence. Mi sistema no la obvia. En principio, aquel nodo que resuelva el bloque se lleva la recompensa. Igual que ahora.
Pero entonces tienes el problema de decidir qué es "un nodo". Sin haberme parado a pensarlo mucho, me imagino que hay restricciones de IP y puertos lógicos que pueden dificultar que un atacante haga un programa que simule ser muchos nodos, pero creo que es un tipo de ataque factible. Una máquina podría simular por software mil identidades diferenciadas, pero nunca podrá simular que tiene mil veces la potencia computacional que realmente tiene. Ese es para mí el gran logro intelectual de Satoshi Nakamoto: el poder computacional es lo único no falsificable en una red distribuida. Dicho de otro modo, en el mundo cibernético "un hombre un voto" no tiene sentido, pero "cierta potencia de cálculo un voto" sí lo tiene. Esa es más o menos la idea como yo la entiendo.
Interesante reflexión Nubarius. Ahora sí que nos estamos entendiendo: tú ves una dificultad intrínseca, más allá de si es posible o no controlar el espacio "ExtraNonce" o el "coinbase". Como, por ejemplo, la identificación de las direcciones IP. Yo creo que sí es posible, más que nada porque los "peers" sólo se entienden con IPs. De hecho, en blockchain.info se encuentra abundante información acerca del nodo que genera cada bloque.
En cualquier caso, no estoy seguro 100% de tener razón, pero creo que la propia criptografía puede proporcionar un sistema de evitar la falsificación. La salida del "poder computacional" es sencilla, pero nos arrastra a una escalada inútil y perjudicial (por el gasto energético y la recentralización) que es posible que se le escapara al poder visionario de Satoshi Nakamoto.