Bitcoin Forum
May 11, 2024, 10:42:54 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Propuesta alternativa para un mineo más racional y una red más resiliente  (Read 2515 times)
Shevek (OP)
Sr. Member
****
Offline Offline

Activity: 252
Merit: 250



View Profile
April 27, 2013, 10:00:03 AM
 #1

En otro hilo he expresado mi opinión de que bitcoin tiene un problema de diseño en la generación de bloques mediante la "prueba de trabajo". Este problema se manifiesta con dos síntomas:

  • La absurda carrera a ninguna parte de la potencia de cálculo, que ahora experimenta un repunte importante con los ASIC: es como el juego de la cuerda, con dos equipos tirando de ella; de repente uno ata un burro y parece que va a ganar, hasta que el otro equipo ata otro burro; después un caballo, después un tractor, después un camión... y ambos equipos siguen exactamente donde estaban al principio, pero habiendo invertido estérilmente en todos esos recursos. Pues bien:  ¿en qué beneficia esa carrera a bitcoin? ¿acaso es más seguro con más potencia de cálculo? ¿Para qué gastar tanta energía y recursos tontamente?
  • Favorece la creación de "pools" centralizados, rompiendo el carácter distribuido de la red. Eso no sólo no ayuda al proyecto, sino que lo perjudica gravemente

Ante esta situación hay una solución relativamente sencilla de haberse pensado antes, porque ahora es imposible introducirla en el protocolo de bitcoin. Aquí la dejo, por si alguien la considera para la creación de una nueva criptomoneda.

La prueba de trabajo consiste en "hashear" la cabecera del bloque y ver si el resultado, interpretado como un número, está por debajo de un cierto valor objetivo ("target"), que es tanto más pequeño cuando mayor es la dificultad. Si es así, el nodo emite el bloque y los demás pueden probar fácilmente que es válido "hasheando" la cabecera.

Si no tiene éxito en este proceso, el nodo puede modificar un parámetro de la cabecera del bloque que es como una especie de contador (en el argot anglosajón: "nonce"); lo incrementa y vuelve a "hashear" y comprobar con el objetivo. Lo normal es empezar con el contador a 0 e ir subiendo hasta que el contador se "desborda". Es decir, suponed que el contador admite sólo 4 cifras decimales; pues empezando en 0 tenemos 10.000 oportunidades de probar (hasta el 9999) antes de que se desborde.

Si hemos llegado sin éxito al punto en que el contador se desborda, no tiene sentido empezar desde 0 otra vez, porque ya sabemos que no vamos a conseguir nada. Hay que modificar otro parámetro de la cabecera, puesto que sabemos que las funciones "hash" son muy sensibles a un cambio nimio. Hay otros dos parámetros que se pueden cambiar: el "hash" de las transacciones (hablaré de esto más tarde) y otro contador, que se incrementa en 1 con cada segundo que pasa y que, en principio, es más rápido que el anterior.

Por tanto, despues de nuestros 10.000 intentos, esperamos 1 segundo y volvemos a intentarlo. El problema es que no es necesario esperar... ¡porque no nos da tiempo a desbordar el contador real, que contiene 32 cifras binarias! Y 32 cifras binarias supone la friolera de probar 2^32 = 4x10^9 hashes antes de que el contador de tiempo se incremente. Es decir, tendríamos que tener una potencia de cálculo de 4 GH/s para desbordar el contador "nonce" antes de que se incremente el contador temporal. Esto favorece repartir el trabajo en "mineros", asignando a cada uno una porción del "nonce".

Pues bien, mi propuesta es rebajar el "nonce" a 16 bits, que es equivalente a 2^16 = 65.536 hashes. Por tanto, con una potencia mínima de 65 kH/s, fácilmente conseguible incluso con CPUs, cada nodo puede desbordar su "nonce" y esperar a que el contador de tiempo se incremente. Salvo que sea muy impaciente (que lo será, si hay BTCs de recompensa de por medio) y decida manipular la otra parte de la cabecera que es manipulable: el "hash" de las transacciones; en particular, la transacción de generación, que es tremendamente voluble y cuya manipulación altera la cabecera del bloque a discreción.

Efectivamente, habría que cambiar también la forma en que se construye la transacción de generación, pero ahora no quiero extenderme más. Simplemente supongamos por ahora que esto también se puede controlar y veamos las implicaciones.

Al no poder forzar la creación de hashes, cada nodo entra en una especie de lotería en que todos tienen el mismo número de boletos y las recompensas se van repartiendo al azar entre todos. El poder de cálculo de la red es simplemente 65 * (número_de_nodos) kH/s. Y, lo que es más importante, no tiene sentido la minería en "pools", puesto que cada nodo puede cumplir por sí mismo la máxima tasa de minado eficiente.

Por supuesto, la dificultad base tiene que ser inferior a la actual. La podemos calcular de forma que un nodo solitario, trabajando a 65 kH/s, tarde un promedio de 10 minutos en generar un bloque. Esto es: 2^16 * 600 ~ 2^25 (en lugar de 2^32 como es ahora). La dificultad de generar un nodo se calcularía como ahora, de forma que toda la red genere en promedio un bloque cada 10 minutos; y ese número sería muy parecido al número de nodos conectados. Si hay 1000 nodos la dificultad es ~1000, si hay 1 millón, ~1 millón.

Aún así, los usuarios pueden hacer "trampas". Supongamos que un tipo quiere multiplicar sus ganancias y se dedica a instalar nodos, contratando servidores dedicados y/o usando todos los ordenadores a los que tiene acceso como nodos. ¡Esta persona multiplicaría sus posibilidades de recompensa! Sí, pero a costa de incrementar la robustez de la red, haciéndola más resiliente con más nodos. Es decir, la codicia de los usuarios rema a favor de los intereses de la red.

Y, por último, la red sería también más robusta que la actual, puesto que para controlar el 51% de la potencia de cálculo habría que controlar el 51% de nodos.

¿Qué os parece?

Proposals for improving bitcoin are like asses: everybody has one
1SheveKuPHpzpLqSvPSavik9wnC51voBa
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
dserrano5
Legendary
*
Offline Offline

Activity: 1974
Merit: 1029



View Profile
April 27, 2013, 10:17:50 AM
 #2

Salvo que sea muy impaciente (que lo será, si hay BTCs de recompensa de por medio) y decida manipular la otra parte de la cabecera que es manipulable: el "hash" de las transacciones; en particular, la transacción de generación, que es tremendamente voluble y cuya manipulación altera la cabecera del bloque a discreción.

Efectivamente, habría que cambiar también la forma en que se construye la transacción de generación, pero ahora no quiero extenderme más. Simplemente supongamos por ahora que esto también se puede controlar y veamos las implicaciones.

No conozco los detalles pero ese hash de las transacciones, si es lo que su nombre indica, se puede modificar no sólo con la coinbase sino alterando el orden de las transacciones, o sacándome de la manga una nueva transacción a mí mismo. Así que creo que no se podría evitar que ese hash cambiara a voluntad.
Shevek (OP)
Sr. Member
****
Offline Offline

Activity: 252
Merit: 250



View Profile
April 27, 2013, 10:44:19 AM
 #3

Salvo que sea muy impaciente (que lo será, si hay BTCs de recompensa de por medio) y decida manipular la otra parte de la cabecera que es manipulable: el "hash" de las transacciones; en particular, la transacción de generación, que es tremendamente voluble y cuya manipulación altera la cabecera del bloque a discreción.

Efectivamente, habría que cambiar también la forma en que se construye la transacción de generación, pero ahora no quiero extenderme más. Simplemente supongamos por ahora que esto también se puede controlar y veamos las implicaciones.

No conozco los detalles pero ese hash de las transacciones, si es lo que su nombre indica, se puede modificar no sólo con la coinbase sino alterando el orden de las transacciones, o sacándome de la manga una nueva transacción a mí mismo. Así que creo que no se podría evitar que ese hash cambiara a voluntad.

Eso ya lo veremos  Smiley

Aparte de eso... ¿alguna otra debilidad?

Proposals for improving bitcoin are like asses: everybody has one
1SheveKuPHpzpLqSvPSavik9wnC51voBa
Shawshank
Legendary
*
Offline Offline

Activity: 1623
Merit: 1608



View Profile
April 27, 2013, 12:16:00 PM
 #4

Shevek, me temo que tu solución no funcionaría.

La minería de bitcoins es un negocio muy competitivo. Siempre habrá una carrera continua por ser el minero más eficiente, por fabricar los ASICs más potentes del mercado, que consuman menos energía, etc. Es el coste que pagan los usuarios por eliminar de la ecuación la confianza necesaria en las monedas fiduciarias (euro, dólar,etc). Es decir, sustituimos confianza en bancos centrales por trabajo de minero.

En el oro ocurre lo mismo. Hay una continua carrera por ser el minero más eficiente. Si el precio del oro sube, los mineros están más dispuestos a minar más profundo y en sitios más inhóspitos para extraer la materia prima. Incluso uno de los fundadores de Google se plantea seriamente traer un asteroide a la Tierra para extraer el oro, si su precio lo hiciera rentable.

Con el petróleo, ocurre lo mismo. A partir de 150 dólares por barril, merece la pena extraerlo de las arenas bituminosas de Canadá mediante un proceso más caro pero que genera margen para sus productores.


Lightning Address: shawshank@getalby.com
LuisCar
Legendary
*
Offline Offline

Activity: 1820
Merit: 1017



View Profile
April 27, 2013, 12:22:36 PM
 #5

Ésta es mi visión personal:

Así, a grandes rasgos, lo que logras es cambiar la carrera por conseguir chips más rápidos y eficientes por conseguir construir muchos equipos baratos que trabajen en conjunto. Me imagino equipos tipo Rasberry Pi o Arduino con sus propietarios compitiendo por lograr una granja de ellos lo mayor posible e invirtiendo cantidades similares a las actuales, es decir, lo que pueda permitirse cada minero. Cambias el riesgo de concentración de potencia de hash por concentración de equipos baratos y tendríamos la carrera tecnológica en el espacio de almacenamiento que, o se encuentra un resquicio en el software de modo que muchos nodos puedan compartir una misma base de datos (la cadena de bloques) o el que disponga de una tecnología que abarate el almacenar cientos de veces la cadena de bloques en cientos de nodos podrá lograr un mayor número de estos y controlar un porcentaje mayor de dicha red.

En cuanto a los pools de minería seguirían existiendo porque dicho diseño no resuelve el problema por el que la gente se asocia a un pool y es la muy baja probabilidad de encontrar un bloque en un corto periodo de tiempo. Puesto que en este modelo esto se va a dar de la misma forma, la gente sumaría sus nodos al los de un gran pool minero para que se repartan proporcionalmente los bloques que encuentre el pool (que lo va a hacer en gran medida porque va a sumar una enorme cantidad de nodos trabajando para él) y así disminuir el tiempo de espera de varias semanas o meses para hallar un bloque mientras gastas electricidad y no sube el balance de dinero de tu monedero.

Asurmen
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile
April 27, 2013, 12:42:37 PM
 #6

A mi no me parece absurda la carrera, el mayor hash y por tanto mayor dificultad no augmenta la seguridad de encryptacion de la red? O eso creia...
El tema de la centralizacion del mineo y por tanto su vulnerabilidad esta mas que resuelto, se llama p2pool, t puedes montar tu nodo en casa o entrar en las pools al 0.5% de fee, 1/2 1/5 de lo que se llegan a pagar en otros pools.
Y opino como luiscar, entre comillas t quejas de que la peña invierte en mas hash, pero con tu solucion solo desplazas la inversion.
hugolp
Legendary
*
Offline Offline

Activity: 1148
Merit: 1001


Radix-The Decentralized Finance Protocol


View Profile
April 27, 2013, 12:47:04 PM
 #7

Quote
Pues bien:  ¿en qué beneficia esa carrera a bitcoin? ¿acaso es más seguro con más potencia de cálculo? ¿Para qué gastar tanta energía y recursos tontamente?

Sí, cuanta más potencia de calculo, más segura es la red Bitcoin.

No se están gastando recursos y energía tontamente. Primero, las ASICS no consumen más que las FPGA's or las GPU's, son más eficientes. Y segundo, si la gente está dispuesta a pagar por el servicio significa que son recursos bien empleados. La minería son recursos destinados a mantener la red Bitcoin segura y ese es un servicio que mucha gente aprecia.


               ▄████████▄
               ██▀▀▀▀▀▀▀▀
              ██▀
             ███
▄▄▄▄▄       ███
██████     ███
    ▀██▄  ▄██
     ▀██▄▄██▀
       ████▀
        ▀█▀
The Radix DeFi Protocol is
R A D I X

███████████████████████████████████

The Decentralized

Finance Protocol
Scalable
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀██
██                   ██
██                   ██
████████████████     ██
██            ██     ██
██            ██     ██
██▄▄▄▄▄▄      ██     ██
██▀▀▀▀██      ██     ██
██    ██      ██     
██    ██      ██
███████████████████████

███
Secure
      ▄▄▄▄▄
    █████████
   ██▀     ▀██
  ███       ███

▄▄███▄▄▄▄▄▄▄███▄▄
██▀▀▀▀▀▀▀▀▀▀▀▀▀██
██             ██
██             ██
██             ██
██             ██
██             ██
██    ███████████

███
Community Driven
      ▄█   ▄▄
      ██ ██████▄▄
      ▀▀▄█▀   ▀▀██▄
     ▄▄ ██       ▀███▄▄██
    ██ ██▀          ▀▀██▀
    ██ ██▄            ██
   ██ ██████▄▄       ██▀
  ▄██       ▀██▄     ██
  ██▀         ▀███▄▄██▀
 ▄██             ▀▀▀▀
 ██▀
▄██
▄▄
██
███▄
▀███▄
 ▀███▄
  ▀████
    ████
     ████▄
      ▀███▄
       ▀███▄
        ▀████
          ███
           ██
           ▀▀

███
Radix is using our significant technology
innovations to be the first layer 1 protocol
specifically built to serve the rapidly growing DeFi.
Radix is the future of DeFi
█████████████████████████████████████

   ▄▄█████
  ▄████▀▀▀
  █████
█████████▀
▀▀█████▀▀
  ████
  ████
  ████

Facebook

███

             ▄▄
       ▄▄▄█████
  ▄▄▄███▀▀▄███
▀▀███▀ ▄██████
    █ ███████
     ██▀▀▀███
           ▀▀

Telegram

███

▄      ▄███▄▄
██▄▄▄ ██████▀
████████████
 ██████████▀
   ███████▀
 ▄█████▀▀

Twitter

██████

...Get Tokens...
Shawshank
Legendary
*
Offline Offline

Activity: 1623
Merit: 1608



View Profile
April 27, 2013, 12:54:32 PM
 #8

Y además, los ASICs generan incentivos directos e indirectos en las empresas que los fabrican. Vamos, que hasta los trabajadores de la línea de producción de los ASICs estarán interesados en el éxito de Bitcoin para mantener el trabajo. Este incentivo no existía cuando los bitcoins se minaban con una GPU de propósito general.

Por cierto, Shevek, recuerda que cada vez que añades una transacción al bloque, el hash de la cabecera cambia, por lo que además de por las razones explicadas anteriormente, me temo que tu propuesta no funcionaría...

Lightning Address: shawshank@getalby.com
Shevek (OP)
Sr. Member
****
Offline Offline

Activity: 252
Merit: 250



View Profile
April 27, 2013, 12:57:24 PM
 #9


La minería de bitcoins es un negocio muy competitivo. Siempre habrá una carrera continua por ser el minero más eficiente, por fabricar los ASICs más potentes del mercado, que consuman menos energía, etc. Es el coste que pagan los usuarios por eliminar de la ecuación la confianza necesaria en las monedas fiduciarias (euro, dólar,etc). Es decir, sustituimos confianza en bancos centrales por trabajo de minero.


Es que creo que no has entendido bien la propuesta: cualquiera que llegue a 65 kH/s ha alcanzado la máxima eficiencia. Repito: Cualquiera que llegue a 65 kH/s ha alcanzado la máxima eficiencia. Fin del problema. No tienen sentido los ASIC ni nada de eso.


Así, a grandes rasgos, lo que logras es cambiar la carrera por conseguir chips más rápidos y eficientes por conseguir construir muchos equipos baratos que trabajen en conjunto. Me imagino equipos tipo Rasberry Pi o Arduino con sus propietarios compitiendo por lograr una granja de ellos lo mayor posible e invirtiendo cantidades similares a las actuales, es decir, lo que pueda permitirse cada minero. Cambias el riesgo de concentración de potencia de hash por concentración de equipos baratos y tendríamos la carrera tecnológica en el espacio de almacenamiento que, o se encuentra un resquicio en el software de modo que muchos nodos puedan compartir una misma base de datos (la cadena de bloques) o el que disponga de una tecnología que abarate el almacenar cientos de veces la cadena de bloques en cientos de nodos podrá lograr un mayor número de estos y controlar un porcentaje mayor de dicha red.


Pero es que eso no es un inconveniente, sino una ventaja. Mayor número de nodos implica una red más resistente. Repito que la codicia rema a favor de la robustez de la red.

El mecanismo que me falta por explicar implica que la red ve a cada IP como un único nodo; los equipos tras una NAT salen con la misma IP, por tanto son el mismo nodo; no serviría tener cientos de ordenadores tras una NAT, sino con una IP directa a internet. Habría que contratar servidores dedicados con su propia IP. Y eso es caro.

Habrá gente que se pueda permitir tal dispendio, pero dudo mucho que sea más fácil conseguir superioridad así, que con el sistema actual a base de invertir en GH/s.

En cuanto a los pools de minería seguirían existiendo porque dicho diseño no resuelve el problema por el que la gente se asocia a un pool y es la muy baja probabilidad de encontrar un bloque en un corto periodo de tiempo. Puesto que en este modelo esto se va a dar de la misma forma, la gente sumaría sus nodos al los de un gran pool minero para que se repartan proporcionalmente los bloques que encuentre el pool (que lo va a hacer en gran medida porque va a sumar una enorme cantidad de nodos trabajando para él) y así disminuir el tiempo de espera de varias semanas o meses para hallar un bloque mientras gastas electricidad y no sube el balance de dinero de tu monedero.

Je, je... eso se soluciona con lo que aún no he explicado. Pero demuestra que le das a la cabeza y que has reflexionado sobre el asunto. Muchas gracias.

Proposals for improving bitcoin are like asses: everybody has one
1SheveKuPHpzpLqSvPSavik9wnC51voBa
Shevek (OP)
Sr. Member
****
Offline Offline

Activity: 252
Merit: 250



View Profile
April 27, 2013, 12:58:55 PM
 #10

Quote
Pues bien:  ¿en qué beneficia esa carrera a bitcoin? ¿acaso es más seguro con más potencia de cálculo? ¿Para qué gastar tanta energía y recursos tontamente?

Sí, cuanta más potencia de calculo, más segura es la red Bitcoin.


Eso no es verdad.

La red es más segura con más nodos, no necesariamente con más potencia de cálculo.

Proposals for improving bitcoin are like asses: everybody has one
1SheveKuPHpzpLqSvPSavik9wnC51voBa
Shevek (OP)
Sr. Member
****
Offline Offline

Activity: 252
Merit: 250



View Profile
April 27, 2013, 01:01:17 PM
 #11

Por cierto, Shevek, recuerda que cada vez que añades una transacción al bloque, el hash de la cabecera cambia, por lo que además de por las razones explicadas anteriormente, me temo que tu propuesta no funcionaría...

Me cito a mi mismo:

Quote
Salvo que sea muy impaciente (que lo será, si hay BTCs de recompensa de por medio) y decida manipular la otra parte de la cabecera que es manipulable: el "hash" de las transacciones; en particular, la transacción de generación, que es tremendamente voluble y cuya manipulación altera la cabecera del bloque a discreción.

Es decir, que ya lo sé. Por eso he añadido:

Quote
Efectivamente, habría que cambiar también la forma en que se construye la transacción de generación, pero ahora no quiero extenderme más. Simplemente supongamos por ahora que esto también se puede controlar y veamos las implicaciones.

Proposals for improving bitcoin are like asses: everybody has one
1SheveKuPHpzpLqSvPSavik9wnC51voBa
Shawshank
Legendary
*
Offline Offline

Activity: 1623
Merit: 1608



View Profile
April 27, 2013, 01:12:30 PM
 #12

Me cito a mi mismo:

Quote
Salvo que sea muy impaciente (que lo será, si hay BTCs de recompensa de por medio) y decida manipular la otra parte de la cabecera que es manipulable: el "hash" de las transacciones; en particular, la transacción de generación, que es tremendamente voluble y cuya manipulación altera la cabecera del bloque a discreción.

Es decir, que ya lo sé. Por eso he añadido:

Quote
Efectivamente, habría que cambiar también la forma en que se construye la transacción de generación, pero ahora no quiero extenderme más. Simplemente supongamos por ahora que esto también se puede controlar y veamos las implicaciones.

OK, Shevek. Queda claro.

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.

Lightning Address: shawshank@getalby.com
LuisCar
Legendary
*
Offline Offline

Activity: 1820
Merit: 1017



View Profile
April 27, 2013, 03:57:26 PM
 #13

Oye Shevek, valoro tu esfuerzo. La ciencia y la técnica avanzan a base de no considerar inamovibles los axiomas en los que creemos, lo cual no quiere decir que la solución que hemos imaginado resuelva los problemas que se plantean, pero sin indagar e insistir en ellos no se avanza.


Así, a grandes rasgos, lo que logras es cambiar la carrera por conseguir chips más rápidos y eficientes por conseguir construir muchos equipos baratos que trabajen en conjunto. Me imagino equipos tipo Rasberry Pi o Arduino con sus propietarios compitiendo por lograr una granja de ellos lo mayor posible e invirtiendo cantidades similares a las actuales, es decir, lo que pueda permitirse cada minero. Cambias el riesgo de concentración de potencia de hash por concentración de equipos baratos y tendríamos la carrera tecnológica en el espacio de almacenamiento que, o se encuentra un resquicio en el software de modo que muchos nodos puedan compartir una misma base de datos (la cadena de bloques) o el que disponga de una tecnología que abarate el almacenar cientos de veces la cadena de bloques en cientos de nodos podrá lograr un mayor número de estos y controlar un porcentaje mayor de dicha red.


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.

El mecanismo que me falta por explicar implica que la red ve a cada IP como un único nodo; los equipos tras una NAT salen con la misma IP, por tanto son el mismo nodo; no serviría tener cientos de ordenadores tras una NAT, sino con una IP directa a internet. Habría que contratar servidores dedicados con su propia IP. Y eso es caro.

Habrá gente que se pueda permitir tal dispendio, pero dudo mucho que sea más fácil conseguir superioridad así, que con el sistema actual a base de invertir en GH/s.

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.

En cuanto a los pools de minería seguirían existiendo porque dicho diseño no resuelve el problema por el que la gente se asocia a un pool y es la muy baja probabilidad de encontrar un bloque en un corto periodo de tiempo. Puesto que en este modelo esto se va a dar de la misma forma, la gente sumaría sus nodos al los de un gran pool minero para que se repartan proporcionalmente los bloques que encuentre el pool (que lo va a hacer en gran medida porque va a sumar una enorme cantidad de nodos trabajando para él) y así disminuir el tiempo de espera de varias semanas o meses para hallar un bloque mientras gastas electricidad y no sube el balance de dinero de tu monedero.

Je, je... eso se soluciona con lo que aún no he explicado. Pero demuestra que le das a la cabeza y que has reflexionado sobre el asunto. Muchas gracias.

Espero tu propuesta, pero solamente creo que vas a poder evitar la concentración del minado en pools si logras que la recompensa a los mineros se produzca de manera proporcional a su aporte en cada bloque que se encuentre.

Nubarius
Sr. Member
****
Offline Offline

Activity: 310
Merit: 253


View Profile
April 28, 2013, 03:33:12 PM
 #14

En otro hilo he expresado mi opinión de que bitcoin tiene un problema de diseño en la generación de bloques mediante la "prueba de trabajo". Este problema se manifiesta con dos síntomas:

  • La absurda carrera a ninguna parte de la potencia de cálculo, que ahora experimenta un repunte importante con los ASIC: es como el juego de la cuerda, con dos equipos tirando de ella; de repente uno ata un burro y parece que va a ganar, hasta que el otro equipo ata otro burro; después un caballo, después un tractor, después un camión... y ambos equipos siguen exactamente donde estaban al principio, pero habiendo invertido estérilmente en todos esos recursos. Pues bien:  ¿en qué beneficia esa carrera a bitcoin? ¿acaso es más seguro con más potencia de cálculo? ¿Para qué gastar tanta energía y recursos tontamente?
  • Favorece la creación de "pools" centralizados, rompiendo el carácter distribuido de la red. Eso no sólo no ayuda al proyecto, sino que lo perjudica gravemente

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.

[...]

Por tanto, despues de nuestros 10.000 intentos, esperamos 1 segundo y volvemos a intentarlo. El problema es que no es necesario esperar... ¡porque no nos da tiempo a desbordar el contador real, que contiene 32 cifras binarias! Y 32 cifras binarias supone la friolera de probar 2^32 = 4x10^9 hashes antes de que el contador de tiempo se incremente. Es decir, tendríamos que tener una potencia de cálculo de 4 GH/s para desbordar el contador "nonce" antes de que se incremente el contador temporal. Esto favorece repartir el trabajo en "mineros", asignando a cada uno una porción del "nonce".

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. 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.

Pues bien, mi propuesta es rebajar el "nonce" a 16 bits, que es equivalente a 2^16 = 65.536 hashes. Por tanto, con una potencia mínima de 65 kH/s, fácilmente conseguible incluso con CPUs, cada nodo puede desbordar su "nonce" y esperar a que el contador de tiempo se incremente. Salvo que sea muy impaciente (que lo será, si hay BTCs de recompensa de por medio) y decida manipular la otra parte de la cabecera que es manipulable: el "hash" de las transacciones; en particular, la transacción de generación, que es tremendamente voluble y cuya manipulación altera la cabecera del bloque a discreción.

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.

Quote
Pues bien:  ¿en qué beneficia esa carrera a bitcoin? ¿acaso es más seguro con más potencia de cálculo? ¿Para qué gastar tanta energía y recursos tontamente?

Sí, cuanta más potencia de calculo, más segura es la red Bitcoin.


Eso no es verdad.

La red es más segura con más nodos, no necesariamente con más potencia de cálculo.

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.
Nubarius
Sr. Member
****
Offline Offline

Activity: 310
Merit: 253


View Profile
April 28, 2013, 03:57:46 PM
 #15

Una cosa que me había dejado en mi mensaje anterior, que publiqué por error antes de tiempo:

Al no poder forzar la creación de hashes, cada nodo entra en una especie de lotería en que todos tienen el mismo número de boletos y las recompensas se van repartiendo al azar entre todos. El poder de cálculo de la red es simplemente 65 * (número_de_nodos) kH/s. Y, lo que es más importante, no tiene sentido la minería en "pools", puesto que cada nodo puede cumplir por sí mismo la máxima tasa de minado eficiente.

Como tú mismo y otros hemos comentado, existen otras maneras de recalcular los valores hash sin esperar a incrementar el contador de tiempo, por lo que las restricciones al rango de valores del nonce simplemente llevarían a los mineros a recurrir a otras estrategias válidas para poder calcular valores hash sin pausa.

El problema que veo, como decía en mi anterior mensaje, estaría en pretender sustituir la idea de "poder computacional del conjunto de nodos" por el concepto aparentemente más simple de "número de nodos" y que sea este último parámetro el determinante para la lotería de los bloques. Tengo la impresión de que eso (diferenciar los nodos individuales) no es posible.
Shevek (OP)
Sr. Member
****
Offline Offline

Activity: 252
Merit: 250



View Profile
April 28, 2013, 04:46:16 PM
Last edit: April 28, 2013, 08:08:26 PM by Shevek
 #16


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?  Shocked 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.

Proposals for improving bitcoin are like asses: everybody has one
1SheveKuPHpzpLqSvPSavik9wnC51voBa
cocoloco
Newbie
*
Offline Offline

Activity: 1
Merit: 0


View Profile
April 28, 2013, 06:07:02 PM
 #17

a ver si entendi algo. si el "nonce" es de 16 bits nadamas, no aumentarían las chances de que un bloque sea no-hasheable. Es decir que no podamos generar un hash menor al target. Ya que poseemos solamente 2^16 combinaciones posibles...
Shawshank
Legendary
*
Offline Offline

Activity: 1623
Merit: 1608



View Profile
April 28, 2013, 06:17:58 PM
 #18

Shevek, entiendo que tu propuesta tiene el objetivo de incentivar a que la red aumente en tamaño para ser más estable. Una idea parecida sería que los nodos validadores, por el hecho de validar transacciones y bloques (no minar) se llevaran una parte de la recompensa de los mineros. El problema es que crear nodos nuevos es barato comparado con el coste de minar, que asciende a 360.000 euros diarios (3600 bitcoins/día *100 euros/bitcoin).

Entiendo también que tu propuesta de que los mineros tengan que parar durante un tiempo porque han desbordado el nonce, tiene un componente de "lotería". El problema es que una recompensa basada en lotería no incentiva a que seas honesto. Por ejemplo, una persona con un interés en Bitcoin fracase, podría crear sin esfuerzo cientos de miles de nodos, esperar que le toque la "lotería" y ser deshonesto con su bloque.

Al final, todo se resume en que una persona que pone alma, vida y corazón, en definitiva que trabaja a tope, tendrá un incentivo claro en que en aquello en que trabaja sea un éxito. Aquél que le llega la oportunidad en modo de lotería, no.

Lightning Address: shawshank@getalby.com
Shawshank
Legendary
*
Offline Offline

Activity: 1623
Merit: 1608



View Profile
April 28, 2013, 06:58:00 PM
 #19

Shevek, una cosa que creo que sí podría funcionar, y que va en línea con tu planteamiento, es que los 360.000 euros que se invierten diariamente en la red mediante prueba de trabajo SHA-256, se dedicara a una lotería de "un nodo, un voto". En ese caso, el coste del mantenimiento de los millones de nodos validadores que entrarían en esta lotería de "un nodo, un voto", sería también de 360.000 euros a día de hoy. (3600 bitcoins/día * 100 euros/bitcoin). El problema es dar con el algoritmo que resuelva de manera fiable, sin trucos, esa aplicación de "un nodo, un voto".

La base filosófica de todo esto, de la que no podemos escaparnos: cuando hay confianza en el emisor de moneda, el coste de mantener el sistema puede acercarse a cero. Cuando quieres eliminar completamente la confianza de la ecuación, como hace Bitcoin, el coste en recursos del sistema es aproximadamente igual a la producción de nueva moneda más comisiones de transferencia.

Lightning Address: shawshank@getalby.com
Twerka
Full Member
***
Offline Offline

Activity: 154
Merit: 100


View Profile
April 28, 2013, 08:50:05 PM
 #20

Shevek, si crees realmente que funciona, ¿qué deberías modificar para hacerlo realidad? Porque creo que tomando como base el sistema de bitcoin podrias modificarlo para hacer lo que propones, y luego crear los clientes.

Lo digo porque viendo el hilo, gastás menos energía intentandolo que explicandolo.

Y tal como está ahora, el sistema bitcoin beneficia a los que más dinero fiat tienen. Si sos multimillonario, te compras 1000 computadoras con 4 7990, y haces 10000 veces más bitcoin que el pobre hombre que apenas tiene dinero para un Sempron y una 4850.

The worst enemy of Bitcoin is Mt.Gox exchange.
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!