Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
0:44
156 de 156
John McAfee
@officialmcafee
christmas.
I'm very impressed from
your work! Thanks!
Robin
Gestern 10:50
I have taken a look. It is a
good coin. I can promote
your coin for an up front
fee of 25 Bitcoins plus
15% of the coins.
ife
he
05:28
AnnackSecurity IT - 2.9k
24.12.17 a las 00:23
Pásame el script si quieres, yo tengo nodo activo.Basta proponer un BIP para que cada nodo rechace el último bloque con un % elevado de txs que no vea en su mempool.
Teniendo en cuenta que la mayoría de wallets se fijan únicamente en el coste media de tx por bloque, la técnica que he descrito permite aumentar está media de forma importante y por tanto automáticamente aumentar las comisiones en los próximos bloques.
El problema es que estos carbon lo están haciendo entre varios pools de minado. No os sorprenderá si os digo que Antminer son los que tienen mayor %...
Necesito un par de voluntarios con nodos para verificar que lo que ve mi mempool es similar a la vuestra (es decir, que lo que las txs que mi nodo no ve son más o menos las mismas que las vuestras). Os paso un script en python para hacer fotos de la mempool y hay que hacerlo durante unos días. Voluntarios?
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 cojinuda 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?
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 zain) 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.
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 zain) 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.
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).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.
Para los que no creen que haya spam en la mempool:
Tienes que estar registrado para ver este contenido
Algunos ejemplos de spam:
Tienes que estar registrado para ver este contenido
Tienes que estar registrado para ver este contenido
Cuánto cuesta spamear la mempool? 10 millones de dólares al día.
Quién puede gastarse ese dinero? Responde tu mismo.
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).
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).
Muy bien, voy a seguir actuando como abogado del diablo.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.
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).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.
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... jejejeMuy 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 cochambre 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.
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?
¿no hay ninguna criptomoneda mejor que el bitcoin?
Jorobar han resumido 1 año de discusión en este hilo con su explicacion ,
Tu lógica es impecable. Todo esto era valido cuando ibamos a contar con 21 millones de monedas para todas nuestras necesidades de mover dinero, pero eso ya no es asi por lo que dices.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?
Una vez escuchando a Adam B. Levine en el podcast "let's talk bitcoin", (no recuerdo en que episodio) dijo algo como que, para crear algo que pudiera reemplazar a bitcoin, el cambio tenía que suponer algo tan brutal como la distancia entre el dinero-fiat y el bitcoin.
Conviene recordar que bitcoin está constituído por varios "engranajes" que se pueden cambiar de ser necesario para mejorarlo. Veo que no mucha gente logra entenderlo.
Saludos.