*Tema mítico* : Hilo oficial de Bitcoin-XIII

remonster

Madmaxista
Desde
3 Nov 2012
Mensajes
6.082
Reputación
11.333
Esta solución es absurda porque, un nuevo nodo que se añade a la red, o uno que se reconecta, no dispone todavía de "mempool" y, por lo tanto, no se encuentra en sincronía suficiente con la red como para poder tener criterio suficiente como para descartar o no tan alegremente un bloque.

El único elemento del que dispone un nodo recién conectado para encontrar sincronía con la red, son las normas del protocolo. Esas normas están en el código de Bitcoin son precísamente las que estipulan que el ÚNICO E INFALSIFICABLE método para poder tener garantías de hayarse en sincronía con la red, es la prueba de trabajo acumulada en la cadena de bloques.

Lo siento Remonster, pero con ese BIP estarías metiendo una ventana de ataque cojonuda en el sistema.

Además ya existen mecanismos de mercado efectivos para hacer antirentable un ataque como el que decís por parte de los mineros.

Por cierto, yo no puedo ayudarte porque estoy a 6000 km de distancia de mi nodo y, para evitar sustos, lo tengo apagado.

Quizás puedas contar con él a partir de mediados de enero :XX:
No hay ningún problema con que los nodos muy nuevos no acepten algunos nuevos bloques. Sin ellos la propagación de la red no se fragiliza. De hecho tampoco aceptan nuevos bloques hasta que no han sincronizado la blockchain.

La mempool se sincroniza muy rápidamente, mucho más que la sincronización de la blockchain.

Dónde está el vector de ataque del que hablas?
 

Sr.Mojón

Madmaxista
Desde
30 Mar 2011
Mensajes
15.740
Reputación
46.627
No hay ningún problema con que los nodos muy nuevos no acepten algunos nuevos bloques. Sin ellos la propagación de la red no se fragiliza. De hecho tampoco aceptan nuevos bloques hasta que no han sincronizado la blockchain.

La mempool se sincroniza muy rápidamente, mucho más que la sincronización de la blockchain.

Dónde está el vector de ataque del que hablas?
El vector de ataque es que estás permitiendo un sybil attack hacia los nuevos nodos o hacia los que se reconectan de nuevo porque, para falsificar la información de la cadena de bloques, hace falta gastar un recurso escaso e irrecuperable, pero para falsificar transacciones no es necesario gastar nada.

Los nodos no pueden tomar decisiones sobre la veracidad o no de lo últimos bloques de la cadena en base a información fácilmente falsificable como son las transacciones.

Cuando a mediados de enero mi nodo se reconecte a la red Bitcoin, recibirá imnmediatamente dos tipos de información...información sobre la cadena de bloques e información sobre las transacciones que van pululando por la red en ese momento. Y ambos tipos de información me está llegando desde unos nodos que, sobre el papel, no cuestan apenas nada de poner en la red.

¿Cuál de los dos tipos de información me ofrece más garantías de que se encuentra en sincronía con el resto de información que comparte el resto de nodos legítimos del sistema?

Sin duda la información que me llega a través de la cadena de bloques y mi nodo sólo debería empezar a tomar decisiones a partir de ella.

¿Por qué? Pues porque inundar la red con nodos falsos es baratísimo. Porque, además de eso, los nodos legítimos pueden mostrar comportamiento maligno en determinadas circunstancias que los harían indetectables frente al resto de nodos legítimos, como por ejemplo únicamente actuar como nodos venenosos frente a un nodo cuando las 8 conexiones de éste hayan caído bajo el control de esta subred maligna.

Imagínate que yo controlase el 15% de todos los nodos de la red Bitcoin. Puedo decirles que se comporten de forma legítima con el resto de nodos y que sólamente se comporten de forma maligna cuando las 8 conexiones de un nodo hayan caído bajo mi control. ¿Qué me costaría a mi lanzarle entonces a ese nodo información falsa o sesgada sobre las transacciones de la mempool? No me costaría nada. Imagínate que, sabiendo que los mineros elegirán el meter en la blockchain aquellas transacciones en el rango superior de comisiones, decido únicamente pasar información maligna de transacciones de bajas comisiones. ¿Qué me ha costado atacar al nodo que ha caído bajo mi control? Nada de nada. Ni siquiera son transacciones construídas por mi.

Cuando un minero mine un bloque y, lógicamente, incluya en él las transacciones de la mempool con comisiones altas y yo le haga llegar ese bloque al nodo "bajo mi control", éste verá varias cosas a la vez:

1. Que el bloque es perfectamente válido porque está minado con la elevada dificultad de la red.

2. Que, de las transacciones incluidas en el bloque, ninguna se encontraba en la información de la mempool que mi comportamiento maligno le ha pasado.

Por lo tanto, el nodo descarta el bloque pensando que forma parte de un ataque "selfish" realizado por un minero y se queda esperando a que el resto de nodos se comporten igual que él y lo declaren huérfano también.

Sin embargo esto no va a ocurrir porque es él el que está extrayendo conclusiones erróneas a partir de información falsa y baratamente manipulable que yo le estoy haciendo llegar.

¿Qué costaría entonces inundar la red de nodos malignos que sólamente transmitiesen a través de sus conexiones aquellas transacciones que se encuentran en los percentiles inferiores de comisiones? No costaría nada y todos aquellos nodos que se conectasen a ellos estarían descartando bloques en base a información sesgada.

¿Se podría incorporar alguna modificación en el código de Bitcoin para detectar y banear las conexiones a nodos que se comportasen de esta forma? Pues no. Es imposible porque un nuevo nodo o uno que se reconecta, no tiene mempool y no puede deducir si los nodos a los que se ha conectado están enviándole únicamente transacciones en el percentil inferior de la mempool de los nodos legítimos de la red.

Los nodos sólo pueden tomar decisiones respecto a Bitcoin (incluyendo el incluir a otros nodos en una lista negra) con información que sea muy costosa de falsificar y, sobretodo, con información que sea áltamente probable que se encuentre compartida y en sincronía con el resto de nodos de la red, esto es, con la información que les llega a partir de la cadena de bloques.

El resto son ganas de meter ventanas de ataque susceptibles a sybil attacks.

Por último decirte que, si te fijas, todo esto de lo que estamos hablando se parece mucho a lo que estuvimos con Maidsafe y otras monedas PoS. La única forma de que tu nodo pueda tener la certidumbre de que las decisiones que él está tomando, van a ser compartidas y sincronizadas por el resto de nodos de la red, es cuando la información de la que partes para tomar dichas decisiones viene protegida por una prueba de trabajo encadenada.
 
Última edición:

remonster

Madmaxista
Desde
3 Nov 2012
Mensajes
6.082
Reputación
11.333
El vector de ataque es que estás permitiendo un sybil attack hacia los nuevos nodos o hacia los que se reconectan de nuevo porque, para falsificar la información de la cadena de bloques, hace falta gastar un recurso escaso e irrecuperable, pero para falsificar transacciones no es necesario gastar nada.

Los nodos no pueden tomar decisiones sobre la veracidad o no de lo últimos bloques de la cadena en base a información fácilmente falsificable como son las transacciones.

Cuando a mediados de enero mi nodo se reconecte a la red Bitcoin, recibirá imnmediatamente dos tipos de información...información sobre la cadena de bloques e información sobre las transacciones que van pululando por la red en ese momento. Y ambos tipos de información me está llegando desde unos nodos que, sobre el papel, no cuestan apenas nada de poner en la red.

¿Cuál de los dos tipos de información me ofrece más garantías de que se encuentra en sincronía con el resto de información que comparte el resto de nodos legítimos del sistema?

Sin duda la información que me llega a través de la cadena de bloques y mi nodo sólo debería empezar a tomar decisiones a partir de ella.

¿Por qué? Pues porque inundar la red con nodos falsos es baratísimo. Porque, además de eso, los nodos legítimos pueden mostrar comportamiento maligno en determinadas circunstancias que los harían indetectables frente al resto de nodos legítimos, como por ejemplo únicamente actuar como nodos venenosos frente a un nodo cuando las 8 conexiones de éste hayan caído bajo el control de esta subred maligna.

Imagínate que yo controlase el 15% de todos los nodos de la red Bitcoin. Puedo decirles que se comporten de forma legítima con el resto de nodos y que sólamente se comporten de forma maligna cuando las 8 conexiones de un nodo hayan caído bajo mi control. ¿Qué me costaría a mi lanzarle entonces a ese nodo información falsa o sesgada sobre las transacciones de la mempool? No me costaría nada. Imagínate que, sabiendo que los mineros elegirán el meter en la blockchain aquellas transacciones en el rango superior de comisiones, decido únicamente pasar información maligna de transacciones de bajas comisiones. ¿Qué me ha costado atacar al nodo que ha caído bajo mi control? Nada de nada. Ni siquiera son transacciones construídas por mi.

Cuando un minero mine un bloque y, lógicamente, incluya en él las transacciones de la mempool con comisiones altas y yo le haga llegar ese bloque al nodo "bajo mi control", éste verá varias cosas a la vez:

1. Que el bloque es perfectamente válido porque está minado con la elevada dificultad de la red.

2. Que, de las transacciones incluidas en el bloque, ninguna se encontraba en la información de la mempool que mi comportamiento maligno le ha pasado.

Por lo tanto, el nodo descarta el bloque pensando que forma parte de un ataque "selfish" realizado por un minero y se queda esperando a que el resto de nodos se comporten igual que él y lo declaren huérfano también.

Sin embargo esto no va a ocurrir porque es él el que está extrayendo conclusiones erróneas a partir de información falsa y baratamente manipulable que yo le estoy haciendo llegar.

¿Qué costaría entonces inundar la red de nodos malignos que sólamente transmitiesen a través de sus conexiones aquellas transacciones que se encuentran en los percentiles inferiores de comisiones? No costaría nada y todos aquellos nodos que se conectasen a ellos estarían descartando bloques en base a información sesgada.

¿Se podría incorporar alguna modificación en el código de Bitcoin para detectar y banear las conexiones a nodos que se comportasen de esta forma? Pues no. Es imposible porque un nuevo nodo o uno que se reconecta, no tiene mempool y no puede deducir si los nodos a los que se ha conectado están enviándole únicamente transacciones en el percentil inferior de la mempool de los nodos legítimos de la red.

Los nodos sólo pueden tomar decisiones respecto a Bitcoin (incluyendo el incluir a otros nodos en una lista negra) con información que sea muy costosa de falsificar y, sobretodo, con información que sea áltamente probable que se encuentre compartida y en sincronía con el resto de nodos de la red, esto es, con la información que les llega a partir de la cadena de bloques.

El resto son ganas de meter ventanas de ataque susceptibles a sybil attacks.

Por último decirte que, si te fijas, todo esto de lo que estamos hablando se parece mucho a lo que estuvimos con Maidsafe y otras monedas PoS. La única forma de que tu nodo pueda tener la certidumbre de que las decisiones que él está tomando, van a ser compartidas y sincronizadas por el resto de nodos de la red, es cuando la información de la que partes para tomar dichas decisiones viene protegida por una prueba de trabajo encadenada.
Creo que no has entendido lo que propongo.

Un nuevo bloque validado con un gran número de tx desconocidas, ni se retransmite, ni se acepta como válido provisionalemente. Sin embargo, si la blockchain crece más de 2 bloques (o tres, o un threshold que se determine), sí que se acepta.

Lo único que hace el nodo es poner en cuarentena un bloque sospechoso. Eso da tiempo a mineros honestos a invalidarlo y descentiva a los mineros deshonestos rellenar su bloque con txs propias.

Al final las decisiones finales se toman gracias a la blockchain más larga. No veo dónde está el problema.
 

ninfireblade

Madmaxista
Desde
18 Jul 2008
Mensajes
3.319
Reputación
4.786
El vector de ataque es que estás permitiendo un sybil attack hacia los nuevos nodos o hacia los que se reconectan de nuevo porque, para falsificar la información de la cadena de bloques, hace falta gastar un recurso escaso e irrecuperable, pero para falsificar transacciones no es necesario gastar nada.

Los nodos no pueden tomar decisiones sobre la veracidad o no de lo últimos bloques de la cadena en base a información fácilmente falsificable como son las transacciones.

Cuando a mediados de enero mi nodo se reconecte a la red Bitcoin, recibirá imnmediatamente dos tipos de información...información sobre la cadena de bloques e información sobre las transacciones que van pululando por la red en ese momento. Y ambos tipos de información me está llegando desde unos nodos que, sobre el papel, no cuestan apenas nada de poner en la red.

¿Cuál de los dos tipos de información me ofrece más garantías de que se encuentra en sincronía con el resto de información que comparte el resto de nodos legítimos del sistema?

Sin duda la información que me llega a través de la cadena de bloques y mi nodo sólo debería empezar a tomar decisiones a partir de ella.

¿Por qué? Pues porque inundar la red con nodos falsos es baratísimo. Porque, además de eso, los nodos legítimos pueden mostrar comportamiento maligno en determinadas circunstancias que los harían indetectables frente al resto de nodos legítimos, como por ejemplo únicamente actuar como nodos venenosos frente a un nodo cuando las 8 conexiones de éste hayan caído bajo el control de esta subred maligna.

Imagínate que yo controlase el 15% de todos los nodos de la red Bitcoin. Puedo decirles que se comporten de forma legítima con el resto de nodos y que sólamente se comporten de forma maligna cuando las 8 conexiones de un nodo hayan caído bajo mi control. ¿Qué me costaría a mi lanzarle entonces a ese nodo información falsa o sesgada sobre las transacciones de la mempool? No me costaría nada. Imagínate que, sabiendo que los mineros elegirán el meter en la blockchain aquellas transacciones en el rango superior de comisiones, decido únicamente pasar información maligna de transacciones de bajas comisiones. ¿Qué me ha costado atacar al nodo que ha caído bajo mi control? Nada de nada. Ni siquiera son transacciones construídas por mi.

Cuando un minero mine un bloque y, lógicamente, incluya en él las transacciones de la mempool con comisiones altas y yo le haga llegar ese bloque al nodo "bajo mi control", éste verá varias cosas a la vez:

1. Que el bloque es perfectamente válido porque está minado con la elevada dificultad de la red.

2. Que, de las transacciones incluidas en el bloque, ninguna se encontraba en la información de la mempool que mi comportamiento maligno le ha pasado.

Por lo tanto, el nodo descarta el bloque pensando que forma parte de un ataque "selfish" realizado por un minero y se queda esperando a que el resto de nodos se comporten igual que él y lo declaren huérfano también.

Sin embargo esto no va a ocurrir porque es él el que está extrayendo conclusiones erróneas a partir de información falsa y baratamente manipulable que yo le estoy haciendo llegar.

¿Qué costaría entonces inundar la red de nodos malignos que sólamente transmitiesen a través de sus conexiones aquellas transacciones que se encuentran en los percentiles inferiores de comisiones? No costaría nada y todos aquellos nodos que se conectasen a ellos estarían descartando bloques en base a información sesgada.

¿Se podría incorporar alguna modificación en el código de Bitcoin para detectar y banear las conexiones a nodos que se comportasen de esta forma? Pues no. Es imposible porque un nuevo nodo o uno que se reconecta, no tiene mempool y no puede deducir si los nodos a los que se ha conectado están enviándole únicamente transacciones en el percentil inferior de la mempool de los nodos legítimos de la red.

Los nodos sólo pueden tomar decisiones respecto a Bitcoin (incluyendo el incluir a otros nodos en una lista negra) con información que sea muy costosa de falsificar y, sobretodo, con información que sea áltamente probable que se encuentre compartida y en sincronía con el resto de nodos de la red, esto es, con la información que les llega a partir de la cadena de bloques.

El resto son ganas de meter ventanas de ataque susceptibles a sybil attacks.

Por último decirte que, si te fijas, todo esto de lo que estamos hablando se parece mucho a lo que estuvimos con Maidsafe y otras monedas PoS. La única forma de que tu nodo pueda tener la certidumbre de que las decisiones que él está tomando, van a ser compartidas y sincronizadas por el resto de nodos de la red, es cuando la información de la que partes para tomar dichas decisiones viene protegida por una prueba de trabajo encadenada.

Segun tu hipotesis de que el nuevo nodo tenga sus 8 conexiones conectadas con la red maligna entonces ese nodo no forma parte de la red bitcoin ya que no esta conectada a ella. Y en ese caso, si el nodo no valida un bloque tampoco pasa nada ya que no se lo va a poder comunicar a nadie.
 

Sr.Mojón

Madmaxista
Desde
30 Mar 2011
Mensajes
15.740
Reputación
46.627
Segun tu hipotesis de que el nuevo nodo tenga sus 8 conexiones conectadas con la red maligna entonces ese nodo no forma parte de la red bitcoin ya que no esta conectada a ella. Y en ese caso, si el nodo no valida un bloque tampoco pasa nada ya que no se lo va a poder comunicar a nadie.
Sí, pero ya tienes a un tío fuera de la red y el coste de ese ataque me ha supuesto 0€. Con ese nuevo conjunto de reglas habéis permitido que los nodos puedan ser engañados y puedan declarar en cuarentena o incluso declarar como ilegítima, una información que cuesta mucho construir y proteger (la cadena de bloques), empleando para ello información que es muy fácil de manipular y sesgar (la mempool).
 
Última edición:

Hamster

Madmaxista
Desde
8 Jul 2010
Mensajes
446
Reputación
815
Lugar
Comunidad Valenciana
Para los que no creen que haya spam en la mempool:

Twitter

Algunos ejemplos de spam:

Bitcoin Address 1Po1oWkD2LmodfkBYiAktwh76vkF93LKnh

BLOCKTRAIL | Bitcoin API and Block Explorer

Cuánto cuesta spamear la mempool? 10 millones de dólares al día.

Quién puede gastarse ese dinero? Responde tu mismo.
Eso es una dirección que está enviando transacciones con una comisión superior a la cantidad enviada!!?? Y además sin parar. No? (Es que estoy empezando y no sé si lo entiendo bien)
 

remonster

Madmaxista
Desde
3 Nov 2012
Mensajes
6.082
Reputación
11.333
Sí, pero ya tienes a un tío fuera de la red y el coste de ese ataque me ha supuesto 0€. Con ese nuevo conjunto de reglas habéis permitido que los nodos puedan ser engañados y puedan declarar en cuarentena o incluso declarar como ilegítima una información que cuesta mucho construir y proteger (la cadena de bloques), empleando para ello información que es muy fácil de manipular y sesgar (la mempool).
Ese ataque, el rodear un nodo de nodos malignos, siempre se puede hacer a coste 0.

En mi propuesta la decisión final se toma con la información de la blockchain, no de la mempool. La información de la mempool sólo se usa para poner bloques nuevos en cuarentena, lo cual me parece apropiado. Si tu nodo está rodeado de nodos malignos te pueden pasar cosas peores.
 

ninfireblade

Madmaxista
Desde
18 Jul 2008
Mensajes
3.319
Reputación
4.786
Sí, pero ya tienes a un tío fuera de la red y el coste de ese ataque me ha supuesto 0€. Con ese nuevo conjunto de reglas habéis permitido que los nodos puedan ser engañados y puedan declarar en cuarentena o incluso declarar como ilegítima una información que cuesta mucho construir y proteger (la cadena de bloques), empleando para ello información que es muy fácil de manipular y sesgar (la mempool).

Pero es que es casi imposible conseguir que un nodo abra 8 conexiones con tu red. En el codigo de bitcoin estan hardcodeadas las ips de cientos de nodos a las que se puede conectar. No me imagino que nadie pueda colar ahi sus ips y que encima se de la casualidad de que las 8 conexiones que abra el cliente sean de su red.
 

Sr.Mojón

Madmaxista
Desde
30 Mar 2011
Mensajes
15.740
Reputación
46.627
Creo que no has entendido lo que propongo.

Un nuevo bloque validado con un gran número de tx desconocidas, ni se retransmite, ni se acepta como válido provisionalemente. Sin embargo, si la blockchain crece más de 2 bloques (o tres, o un threshold que se determine), sí que se acepta.

Lo único que hace el nodo es poner en cuarentena un bloque sospechoso. Eso da tiempo a mineros honestos a invalidarlo y descentiva a los mineros deshonestos rellenar su bloque con txs propias.

Al final las decisiones finales se toman gracias a la blockchain más larga. No veo dónde está el problema.
Muy bien, voy a seguir actuando como abogado del diablo.

Supongamos que introducimos ese parámetro que tú dices y lo ponemos en, supongamos, un threshold de 3 bloques de cuarentena. Voy a empezar a ponerte ejemplos de problemas con consecuencias que pueden derivar en catástrofes.

1. Para empezar, estás introduciendo un nuevo límite arbitrario. ¿A partir de qué umbral de transacciones en el bloque que difieran de la mempool puede un nodo considerar que el bloque merece ir a cuarentena? ¿Es un límite de número de transacciones o es un límite de peso?.

2. No conviene olvidar que los mineros también son nodos. Si introduces un umbral a partir del cual un nodo puede determinar que los tres últimos bloques, o incluso el último bloque, es susceptible de ser incluído en una cuarentena que podría incluso terminar en un rechazo del bloque, ¿Por qué empezar a minar sobre ese nuevo bloque en lugar de seguir haciéndolo sobre el anterior? ¿Cuál es el límite de riesgo que un pool puede asumir para minar sobre un bloque susceptible de ser puesto en cuarentena por el resto de nodos y, sobretodo, por el resto de nodos mineros?

Imagínate que el límite en el protocolo a partir del cual un bloque es susceptible de ser tratado como "ataque de un minero" es del 50% de transacciones en la mempool. Yo soy un pool de minado y me llega un bloque recién minado con sólo un 60% de transacciones que antes estaban en mi mempool. ¿Me arriesgo a minar sobre ese bloque o mejor sigo minando sobre el anterior? ¿Qué pasa si mi mempool es distinta de la mempool de un gran porcentaje de nodos de la red y resulta que yo estoy dando como válido un bloque recién minado, me pongo a minar sobre él, pero resulta que el resto de nodos ya lo ha puesto en cuarentena o rechazado? Estaría tirando la energía de mi minero a la basura porque, si mino un bloque sobre él, ambos serán rechazados por la red de nodos.

3. Bien, ahora pongámonos en la piel de los mineros súper competitivos de hoy en día y con una recompensa de minado de bloque tan alta como la que todavía tenemos. ¿Puedo utilizar la nueva ventana de ataque que propones para mejorar injustamente mis posibilidades frente a los mineros competidores, incluso aunque sea moliendo a la red Bitcoin? Por supuesto. Inundo la red de nodos venenosos falsos que sólamente retransmitan información sobre la mempool de percentil de transacciones con comisiones más bajas y yo sólo me encargo de minar bloques incluyendo comisiones bajas. Como la recompensa por minar un bloque todavía es alta comparada con la parte de las comisiones, puedo asumir esa merma en los ingresos porque, si mis competidores se comportan como entidades racionales, incluirán el percentil superior de las transacciones en los bloques y, entonces, la retransmisión de los bloques a través de mis nodos venenosos y a través de todos aquellos nodos legítimos que yo haya conseguido engañar, será lenta o, incluso, lo descartarán, dando ventaja a los bloques que yo mine con bajas comisiones.

¿Resultado si todos los mineros se comportan igual para competir contra mi estrategia? Una red inundada con nodos venenosos, que sólamente retransmiten las transacciones del pool de memoria en los percentiles inferiores de comisión y una situación absurda en la que, si quieres que tus transacciones entren en los bloques, tienes que enviarlas con la menor comisión posible, pero esto hace posible que cualquiera pueda spamear la red.

Lo siento, pero sigo en mis trece. Ningún nodo puede decidir cosas tan importantes como la validez o no de un bloque, o la puesta en cuarentena o no de un bloque, basándose únicamente en información fácil y barata de sesgar, manipular o falsificar, como son las transacciones de la mempool. Estaríais introduciendo ventanas de ataque y una cantidad de incertidumbre tan elevada en el sistema que da miedo de sólo pensarlo.

---------- Post added 24-dic-2017 at 13:51 ----------

Pero es que es casi imposible conseguir que un nodo abra 8 conexiones con tu red. En el codigo de bitcoin estan hardcodeadas las ips de cientos de nodos a las que se puede conectar. No me imagino que nadie pueda colar ahi sus ips y que encima se de la casualidad de que las 8 conexiones que abra el cliente sean de su red.
Eso es lo que de toda la vida se ha llamado sybil attack y la blockchain se inventó, precísamente, para luchar contra ese tipo de ataque (entre otras cosas).

Es demasiado barato inundar la red con nodos venenosos de diferentes rangos de IP comparado con lo costoso que resulta intentar falsificar la cadena de bloques.

Lo siento, pero estáis cayendo en las trampas de pensamiento de las que echan mano los defensores del PoS.

---------- Post added 24-dic-2017 at 14:05 ----------

Y otra cosa más. Es extremadamente probable que todos nuestros nodos estén compartiendo exactamente la misma cadena de bloques. ¿Qué probabilidad hay de que también estén compartiendo la misma mempool?

Ya os digo yo que la probabilidad es mucho, pero mucho, mucho, más baja. Para empezar, el tamaño de la mempool es variable y cada uno podemos seleccionar el que nos apetezca. Cada uno de nosotros puede añadir un límite inferior de comisiones a partir del cual las transacciones son desechadas de la mempool (las podemos considerar como spam) y dejar de retransmitirlas. ¿Cómo coordinamos eso? Lo que yo considero spam, para otra persona puede no serlo, y darle tanta importancia a la mempool como para poder declarar un bloque en cuarentena nos obliga a todos a tener que coincidir en los parámetros de nuestras mempools.
 
Última edición:

sirpask

Será en Octubre
Desde
16 Oct 2009
Mensajes
51.598
Reputación
115.886
Muy bien, voy a seguir actuando como abogado del diablo.

Supongamos que introducimos ese parámetro que tú dices y lo ponemos en, supongamos, un threshold de 3 bloques de cuarentena. Voy a empezar a ponerte ejemplos de problemas con consecuencias que pueden derivar en catástrofes.

1. Para empezar, estás introduciendo un nuevo límite arbitrario. ¿A partir de qué umbral de transacciones en el bloque que difieran de la mempool puede un nodo considerar que el bloque merece ir a cuarentena? ¿Es un límite de número de transacciones o es un límite de peso?.

2. No conviene olvidar que los mineros también son nodos. Si introduces un umbral a partir del cual un nodo puede determinar que los tres últimos bloques, o incluso el último bloque, es susceptible de ser incluído en una cuarentena que podría incluso terminar en un rechazo del bloque, ¿Por qué empezar a minar sobre ese nuevo bloque en lugar de seguir haciéndolo sobre el anterior? ¿Cuál es el límite de riesgo que un pool puede asumir para minar sobre un bloque susceptible de ser puesto en cuarentena por el resto de nodos y, sobretodo, por el resto de nodos mineros?

Imagínate que el límite en el protocolo a partir del cual un bloque es susceptible de ser tratado como "ataque de un minero" es del 50% de transacciones en la mempool. Yo soy un pool de minado y me llega un bloque recién minado con sólo un 60% de transacciones que antes estaban en mi mempool. ¿Me arriesgo a minar sobre ese bloque o mejor sigo minando sobre el anterior? ¿Qué pasa si mi mempool es distinta de la mempool de un gran porcentaje de nodos de la red y resulta que yo estoy dando como válido un bloque recién minado, me pongo a minar sobre él, pero resulta que el resto de nodos ya lo ha puesto en cuarentena o rechazado? Estaría tirando la energía de mi minero a la basura porque, si mino un bloque sobre él, ambos serán rechazados por la red de nodos.

3. Bien, ahora pongámonos en la piel de los mineros súper competitivos de hoy en día y con una recompensa de minado de bloque tan alta como la que todavía tenemos. ¿Puedo utilizar la nueva ventana de ataque que propones para mejorar injustamente mis posibilidades frente a los mineros competidores, incluso aunque sea moliendo a la red Bitcoin? Por supuesto. Inundo la red de nodos venenosos falsos que sólamente retransmitan información sobre la mempool de percentil de transacciones con comisiones más bajas y yo sólo me encargo de minar bloques incluyendo comisiones bajas. Como la recompensa por minar un bloque todavía es alta comparada con la parte de las comisiones, puedo asumir esa merma en los ingresos porque, si mis competidores se comportan como entidades racionales, incluirán el percentil superior de las transacciones en los bloques y, entonces, la retransmisión de los bloques a través de mis nodos venenosos y a través de todos aquellos nodos legítimos que yo haya conseguido engañar, será lenta o, incluso, lo descartarán, dando ventaja a los bloques que yo mine con bajas comisiones.

¿Resultado si todos los mineros se comportan igual para competir contra mi estrategia? Una red inundada con nodos venenosos, que sólamente retransmiten las transacciones del pool de memoria en los percentiles inferiores de comisión y una situación absurda en la que, si quieres que tus transacciones entren en los bloques, tienes que enviarlas con la menor comisión posible, pero esto hace posible que cualquiera pueda spamear la red.

Lo siento, pero sigo en mis trece. Ningún nodo puede decidir cosas tan importantes como la validez o no de un bloque, o la puesta en cuarentena o no de un bloque, basándose únicamente en información fácil y barata de sesgar, manipular o falsificar, como son las transacciones de la mempool. Estaríais introduciendo ventanas de ataque y una cantidad de incertidumbre tan elevada en el sistema que da miedo de sólo pensarlo.

---------- Post added 24-dic-2017 at 13:51 ----------

Eso es lo que de toda la vida se ha llamado sybil attack y la blockchain se inventó, precísamente, para luchar contra ese tipo de ataque (entre otras cosas).

Es demasiado barato inundar la red con nodos venenosos de diferentes rangos de IP comparado con lo costoso que resulta intentar falsificar la cadena de bloques.

Lo siento, pero estáis cayendo en las trampas de pensamiento de las que echan mano los defensores del PoS.

---------- Post added 24-dic-2017 at 14:05 ----------

Y otra cosa más. Es extremadamente probable que todos nuestros nodos estén compartiendo exactamente la misma cadena de bloques. ¿Qué probabilidad hay de que también estén compartiendo la misma mempool?

Ya os digo yo que la probabilidad es mucho, pero mucho, mucho, más baja. Para empezar, el tamaño de la mempool es variable y cada uno podemos seleccionar el que nos apetezca. Cada uno de nosotros puede añadir un límite inferior de comisiones a partir del cual las transacciones son desechadas de la mempool (las podemos considerar como spam) y dejar de retransmitirlas. ¿Cómo coordinamos eso? Lo que yo considero spam, para otra persona puede no serlo y darle tanta importancia a la mempool como para poder declarar un bloque en cuarentena nos obliga a todos a tener que coincidir en los parámetros de nuestras mempools.
Pero en los nodos podras poner al menos una ip de un nodo de confianza a capon ¿no?, en Caso del POS, puedes poner la empresa que lo ha fabricado como sincera... jejeje
 

destru

Madmaxista
Desde
18 Oct 2016
Mensajes
812
Reputación
1.064
Yo hasta ahora confiaba en que el bitcoin se iría imponiendo poco a poco y sería la moneda del futuro. Es una moneda infalsificable, limitada, sin necesidad de bancos, transparente, nadie la controla, todo muy bonito, pero todo eso la haría única si fuese la única criptomoneda, pero si luego resulta que pueden sacar otra criptomoneda igual o incluso mejorarla, ya no es algo limitado, entonces el bitcoin no vale para tanto, ya que siempre te puedes pasar al bitcoin 2.0, al 3.0, y así sucesivamente o cualquier otra criptomoneda que lo mejore, por lo tanto, la blockchain triunfará, pero cambiará la moneda. Quizás no esté en lo cierto, pero ¿no hay ninguna criptomoneda mejor que el bitcoin?