Junio 14, 2018Alberto Garoffolo, Pier Stabilini, Robert Viglione, and Uri Stav
PROPUESTA PARA MODIFICAR EL CONSENSO DE SATOSHI
PARA MEJORAR LA PROTECCIÓN ANTE LOS ATAQUES DEL 51% Un Sistema de Penalización por Entrega tardía de bloque
INTRODUCTION
The longest chain rule, or Satoshi Consensus, worked well in the relatively decentralized
environment in which it was introduced in 2009. Mining resources have since concentrated and
dropped in cost for lease, such that the original dominant strategy of playing by the rules no longer
holds for all proof-of-work (PoW) blockchains that rely on the longest chain rule. As recent events
have proven, in some circumstances it can be economically feasible to launch 51% attacks on
operational public blockchain networks. This paper proposes a novel adjustment to Satoshi
Consensus that makes it exponentially more costly, and hence unlikely, to launch such attacks for
any proof-of-work mineable cryptocurrency system.
The common method for performing a double spend attack is as such:
Execute a transaction T1 sending coins from address A to an exchange address on the current
public chain
Privately mine a block on a parallel forked chain containing a transaction T2 sending coins from
address A to another address
Wait for T1 to be confirmed by the exchange and in the meantime continue to mine privately the
parallel chain at a faster rate than the public chain
Trade the confirmed coins on the exchange, then withdraw funds to private address B
Broadcast to the network the private chain that is longer than the public one
at this point, the network will adopt the attackers private chain as the new public chain (as it is
longer) and miners will start mining on the newly reorganised public chain.
T1 is no longer valid and the attacker already used the coins fraudulently
To summarize, these attacks are possible because the system allows to “overwrite” the current
node view of the blockchain history with the new one after a user accepted a specific transaction
(e.g. after the Exchange waited for the confirmation time). This obeys Satoshi's principles given in
the Bitcoin white paper and implemented by most of PoW cryptocurrencies. Block generation in
PoW consensus is a stochastic process and honest miners can generate blocks in parallel on the
same height (with probability depending on block generation time and network delays), for which
Satoshi Consensus has a simple method to adjudicate by ultimately defaulting to the chain with the
most accumulated work. Thus, pruning shorter branches with lower accumulated work has been
an efficient way to keep the linear sequence of blocks across these distributed systems.
Satoshi's white paper is based on the assumption that a majority of computational power is controlled by
honest nodes ("one-CPU-one-vote" principle), and within this assumption it is almost impossible to
create any reasonable length adversarial branch to implement the double spend attack. Conventional
heuristics have converged on the idea that it is su�cient to wait for several con�rmation blocks to get
very low probability of transaction cancellation.
Many things changed since publishing the Bitcoin white paper. Some of the most signi�cant changes
that jeopardize the longest chain rule, are the appearance of ASIC miners and other computation boost
techniques that completely break the "one-CPU-one-vote" principle. Many cryptocurrencies share the
same mining algorithm, but have extreme di�erences in hashrate, which allows for the computation of
one cryptocurrency mining pool to potentially be used to attack another chain.
Thus, we see that Satoshi's assumption about honest majority of computational power and the
impossibility of long adversarial branches may be broken in the modern environment, evidenced by the
latest 51% attacks on several cryptocurrencies. We need a more advanced and more comprehensive
system that satis�es modern conditions. The core PoW consensus requires corrections to provide secure
services, while still allowing the possibility of honest miners generating con�icting blocks, and legitimate
network delayed synchronization.
To achieve this goal we have identi�ed a modi�cation that signi�cantly increases resources needed for a
successful double spend attack (with no changes in honest hash rate) and shifts the cost of an attack to
become economically senseless. Moreover, the increase of resources needed to make a successful attack
will not require increased con�rmation adjustments by receiving parties, including exchanges.
THE DELAYED BLOCK SUBMISSION PENALTY APPROACH
Considering that private mining is the source of a double spending attack, to make it less effective we
introduce a penalty in the form of a block acceptance delay in relation to the amount of time the block
has been hidden from the public network. Time being measured in block intervals, not temporally via
timestamp.
For example, let’s assume to have the following block reception scenario:
NBi = Normal block
MBi = Malicious block
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Time
Figure 1
In the current system, blocks NB117, NB118, NB119, NB120 are not going to be mined because as soon
as the network received block MB119, the malicious chain becomes the active one and the network
will start mining from block MB119 abandoning the normal chain.
To prevent this, we introduce a fork acceptance delay related to the amount of time the fork has been
hidden from the public network. This delay represents the number of blocks for which the adoption of
the new parallel chain will be postponed. For an adversary it means that he will need to continue to
mine the malicious fork even after revealing it and until the moment when the delay is finished.
For example, let’s consider the following delay function DF. To define DF we first introduce BDi which
effectively represents block reception delay defined as a difference between current main chain
height and height of the received block (e.g. BDmb100=16, BDmb101=15, …, BDmb115=1, BDmb116=0,
BDmb117=-1, BDmb118=-1) or -1 in case the height of the received block is greater than the current main
chain height.
The delay function DF in this case for the whole forked chain will be represented as the SUM of
BDmb[i] values, where i represents indices of the blocks in the forked chain.
In the following example on Figure 2, the delay DF(MB100,...,MB119) = 16+15+14+13+12+....1+0-1-1-1 = 136
- 3 = 133 blocks. So the adversary will need to keep mining his fork after it became public for another
133 blocks until it will be accepted by other nodes.
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Pmb 133 - 132 - 131 - 130
Time
Figure 2
With such a delay function, if we assume for example to adopt a 20 block confirmation time, a 21 block
delay punishment would be 21 * (21 + 1) / 2 = 231, then the minimum number of blocks to be mined to
perform the attack would be 231 + 21 = 252 blocks
Please note that the confirmation time cannot start until a fork is in progress.
Proper tuning of the delay function will complicate an attack to the point of infeasibility since it will
require significantly more resources and will also give an additional opportunity to react on the fork
before its final adoption. The network will learn of the contentious fork and it will have to reduce the
full delay function (DF = 0) before the network defaults to the chain as truth. During this period,
network participants, such as exchanges, can freeze potentially fraudulent deposits until the issue has
been resolved, e.g. either the attempted fraudulent chain is abandoned, or it has successfully driven
DF � 0 through brute force. Honest miners continue to add to the active chain.
The delay function may also consider current mining difficulty (d) to provide better protection for coins
with low hashrate (e.g. increasing delay by a factor inversely proportional to the current difficulty).
Such an augmenting factor to DF’ = DF * f(d) can be ignored by setting f(d) = 1, but any sensible
functional form can be substituted in that has the properties of low impact for the range of honest
simultaneous block contention, then scales exponentially outside any reasonable range for which we
can assign dishonest motives.
Although the introduced feature complicates the whole specter of mining attacks (those executed by
mining private parallel forks), it does not prevent the network from converging in case of a natural split
(e.g. when some parts of the world are completely segregated from each other for some time). The
period of convergence will be longer than the pure longest chain rule, but honest miners will work on
converging chains by driving DF � 0.
Note that if an adversary mines his chain publicly the delay will not be applied, but in this case
everyone can see the fork and is able to take preventive measures (e.g. exchanges will increase
confirmation periods, etc.).
CONCLUSION
The operating environment for cryptocurrency systems has changed significantly from its origins in
2009 when mining power was far more decentralized. Satoshi Consensus, or the longest chain rule,
worked well to adjudicate natural chain forks by simply deferring to the chain with the most
accumulated work. Both technical limitations and economic incentives combined to render the
longest chain rule the dominant strategy for any miner, whether honest or nefarious. This is no longer
the case and public blockchains need to upgrade consensus rules to make it far more costly to
succeed with double spending.
This proposal gives one such method that has a simple form that is, itself, quite promising, but which
can be generalized with a scaling function to make it both technically infeasible and economically
disastrous to attempt double spending. The method permits adjudication of honest miners
simultaneously solving blocks, as well as legitimate network fractures that resolve over time. No
attack vector should ever be considered permanently neutralized, but this method certainly renders
one common method far less likely. Additional research into layered defense strategies, such as
introducing interval block notarization schemes on top of this penalty system could make the system
even more secure and should be investigated.
ACKNOWLEDGEMENTS
SPECIAL THANKS
to the team and community for contributing:
@cronic, Peter Stewart, @ultimateblockage,
Rosario Pabst, Rowan Stone, Gustavo Fialho and Vitalik Demin.
Creatives by Lucy Wang, Linda Baksija and Marko Orčić.
•
••
•
•
•
•
INTRODUCCIÓN
La regla de la cadena más larga o el Consenso de Satoshi, funcionó bien en el entorno
relativamente descentralizado en el que se introdujo en 2009. Desde entonces, los recursos
mineros se han estado concentrando, produciendo una disminución de costos de renta, de tal
manera que la estrategia inicial que había planteado Satoshi ya no es válida para todas las
cadenas de bloque de prueba de trabajo (PoW) que dependen de la regla de cadena más larga.
Como los eventos recientes han demostrado, en algunas circunstancias puede ser
económicamente factible lanzar un ataque del 51% contra las redes públicas operativas de
blockchain. Este documento propone un nuevo ajuste al Consenso de Satoshi que hace que sea
exponencialmente más costoso y por lo tanto menos probable, lanzar ataques para cualquier
sistema de criptomoneda minable de prueba de trabajo (PoW).
El método más común para realizar un ataque de doble gasto es el siguiente:
Ejecutar una transacción T1 que envía monedas desde la dirección A a una dirección de centro
cambiario en la actual cadena de bloques pública.
Minar en privado un bloque en una cadena bifurcada en paralelo a la pública que contiene una
transacción T2 que envía monedas de la dirección A a otra dirección.
Esperar a que T1 sea confirmado por el centro cambiario. Mientras se continua minando de
manera privada la cadena paralela a un ritmo más rápido que la cadena pública.
Cambiar las monedas confirmadas en el centro cambiario, luego retirar los fondos a la dirección
privada B
Transmitir o anunciar a la red la cadena privada que es más larga que la pública.
En este punto, la red adoptará la cadena privada de atacantes como la nueva cadena pública
(ya que es más larga). Los mineros comenzarán a minar en la cadena pública recientemente
reorganizada.
T1 ya no es válida y el atacante ya usó las monedas fraudulentamente
En resumen, estos ataques son posibles porque el sistema permite "sobrescribir" la vista actual del
historial de la cadena de bloques del nodo con una nueva cadena más larga, después de que se
haya aceptado una transacción específica (por ejemplo, después de que el centro cambiario
esperó el tiempo de confirmación). Esto obedece a los principios de Satoshi que estableció en el
libro blanco de Bitcoin e implementados por la mayoría de las criptomonedas de prueba de trabajo
(PoW). La generación de bloques en un consenso de prueba de trabajo (PoW) es un proceso
estocástico y los mineros que son honestos pueden también generar bloques en paralelo a la
misma altura de la otra cadena (dependiendo del tiempo de generación de bloques y retrasos de
red), para lo cual el consenso de Satoshi tiene un método simple para solucionar la presencia de
dos cadenas escogiendo a la cadena con el mayor trabajo acumulado. Por lo tanto, cortando
ramas de la cadena corta con menos trabajo acumulado. Esto ha sido una forma eficiente de
mantener una secuencia lineal de bloques en estos sistemas distribuidos.
El libro blanco de Satoshi se basa en la suposición de que la mayoría del poder de cómputo está
controlado por nodos que son honestos (el principio de "una CPU por cada voto"), dentro de esta
suposición es casi imposible crear una rama adversaria de longitud razonable para implementar el
ataque de doble gasto. El método heurístico convencional consiste en la idea de que es suficiente
esperar varios bloques de confirmación para obtener una probabilidad muy baja de cancelación
de la transacción.
Muchas cosas cambiaron desde la publicación del libro blanco de Bitcoin. Algunos de los cambios
más importantes que ponen en peligro la regla de la cadena más larga son la aparición de los
circuitos integrados ASIC y otras técnicas de cómputo que rompen por completo el principio de
"una CPU por cada voto". Muchas criptomonedas comparten el mismo algoritmo de minería, pero
tienen diferencias muy marcadas en el hashrate , lo que permite que el poder computacional de un
grupo de minería (Mining Pool) pueda ser utilizado para atacar otra cadena.
Por lo tanto, vemos que la suposiciones de Satoshi sobre la mayoría del poder computacional
honesto y la imposibilidad de que existan largas ramas adversarias ya no son validas en el entorno
actual, evidenciado por los últimos ataques del 51% en varias criptomonedas. Necesitamos un
sistema más avanzado y más completo que satisfaga los requerimientos y condiciones actuales.
El consenso de prueba de trabajo (PoW ) central requiere correcciones para proporcionar servicios
seguros, al mismo tiempo que permita la posibilidad de que mineros honestos generen bloques
conflictivos y legitimar la sincronización retrasada de la red.
Para lograr este objetivo, hemos identificado una área de oportunidad que aumentaría
significativamente los recursos necesarios para un ataque exitoso de doble gasto (sin cambios en
la hashrate de mineros honestos). Esta modificación cambiaría el costo de un ataque para que no
tenga sentido económico realizarlo. Además, el aumento de los recursos necesarios para realizar
un ataque exitoso causara que las partes receptoras y los centros cambiarios no tengan que
modificar sus ajustes de cantidad de confirmaciones para liberar una transacción.
EL ENFOQUE DE PENALIZACIÓN POR ENVÍO RETRASADO
Considerando que la minería privada es la fuente de un ataque de doble gasto, para hacerlo
menos efectivo, introducimos una penalización en forma de un retraso de aceptación de bloque en
relación con la cantidad de tiempo que el bloque ha estado oculto de la red pública. El tiempo se
mide en intervalos de bloques, no se medirá temporalmente con una estampa de tiempo.
Supongamos que se tiene el siguiente escenario de recepción de bloque en la cadena:
BNi = Bloque Normal
BMi = Bloque Malicioso
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Tiempo
Figura 1
En el sistema actual, los bloques BN117, BN118, BN119, BN120 no serán minados porque tan pronto
como la red recibió el bloque BM119, la cadena maliciosa se convierte en la activa y la red
comenzará a minar desde el bloque BM119 abandonando la cadena original.
Para evitar esto, presentamos un retraso de aceptación de una bifurcación de la cadena de bloque
actual, proporcional a la cantidad de tiempo que la bifurcación se haya ocultado de la red pública.
Este retraso representa el número de bloques para los cuales se pospondrá la adopción de la
nueva cadena. Para un atacante, significa que tendrá que seguir minando la bifurcación de la
cadena de bloques maliciosa incluso después de revelarlo hasta el momento en que el retraso
haya terminado.
Por ejemplo, consideremos la siguiente función de retraso FR. Para definir FR primero presentamos
el parámetro RBi que representa el retraso de recepción de bloque mediante una diferencia entre
la altura actual de la cadena principal y la altura del bloque recibido (Ejemplo: RBBM100 = 16,
RBBM101 = 15, ..., RBBM115 = 1, RBBM116= 0, RBBM117 = -1, RBBM118 = -1) o -1 en caso de que la altura del
bloque recibido sea mayor que la altura actual de la cadena principal.
La función de retraso FR en este caso para toda la cadena bifurcada se representará como la
SUMA de valores RBBMi, donde i representa los índices de los bloques en la cadena bifurcada.
En el siguiente ejemplo de la Figura 2, el valor de FR (MB100, ..., MB119) = 16 + 15 + 14 + 13 + 12 + ....
1 + 0-1-1-1 = 136 - 3 = 133 bloques. Por lo tanto, el atacante tendrá que seguir minando su bifurcación
después de que se haya hecho pública por otros 133 bloques para que pueda ser aceptada por
otros nodos como la cadena principal.
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Pmb 133 - 132 - 131 - 130
Tiempo
Figure 2.
Con la función de retraso presentado anteriormente, si suponemos, que se adoptara un tiempo de
confirmación de 20 bloques, un castigo de demora de 21 bloques sería 21 * (21 + 1) / 2 = 231, que
significa que el número mínimo de bloques que se tendrán que minar para poder realizar el ataque
serían 231 + 21 = 252 bloques.
Tenga en cuenta que el tiempo de confirmación no puede comenzar hasta que una bifurcación esté
en progreso.
El ajuste adecuado de la función de retardo complicará un ataque hasta el punto de que no sea
factible ya que requerirá una cantidad de recursos significativamente mayor y también dará una
oportunidad adicional de reaccionar en la bifurcación de la cadena de bloques antes de su
adopción final. La red se enterará sobre la bifurcación paralela y el atacante deberá seguir
minando hasta reducir la función de retardo completamente (DF = 0) antes de que la red adopte la
cadena paralela como la más larga. Durante este período, los participantes de la red, como los
centros cambiarios, pueden congelar depósitos potencialmente fraudulentos hasta que se
resuelva el problema. Supongamos que el intento de cadena fraudulenta se abandona, o se ha
conducido con éxito el tiempo de retraso (DF = 0) a través de la fuerza bruta. Los mineros honestos
continuarán agregando a la cadena activa mientras el tiempo de retraso se consume.
La función de retraso también puede considerar la dificultad actual de minería (d) para
proporcionar una mejor protección para las monedas con bajo índice de hashrate (por ejemplo, el
aumento de la función de retraso se vería afectada de manera inversamente proporcional a la
dificultad actual de minado). Tal factor de aumento se podría ver reflejado de tal manera: DF'= DF
* f (d) puede ignorarse estableciendo f (d) = 1, pero puede sustituirse acuerdo a las necesidades,
mismo que tiene las propiedades de bajo impacto para el rango de bifurcación paralela de bloque
honesta, también puede escalar exponencialmente fuera de cualquier rango razonable para los
mineros deshonestos.
Aunque la característica introducida complica todo el espectro de ataques de minería (los que
ejecutan minando bifurcaciones paralelas de manera privada), no impide que la red adopte una
nueva cadena de bloques más larga en caso de una división natural (por ejemplo, cuando en
algunas partes del mundo están completamente segregadas entre sí por algún tiempo
determinado). El período de adopción de una cadena más larga será más prolongado que la regla
del consenso de Satoshi, pero los mineros honestos trabajarán en la cadena paralela hasta
conducir a DF=0.
Tenga en cuenta que si un adversario mina su cadena públicamente, no se aplicará la demora, pero en
este caso todos pueden ver la bifurcación y tomar medidas preventivas (por ejemplo, los centros
cambiarios aumentarán los períodos de confirmación, etc.).
CONCLUSIÓN
El entorno operativo para las criptomonedas ha cambiado significativamente desde sus orígenes en 2009,
cuando la minería estaba mucho más descentralizada. El Consenso de Satoshi, o la regla de la cadena
más larga, funcionó bien para adjudicar las bifurcaciones de cadenas naturales al simplemente adoptar
la cadena con el mayor trabajo acumulado. Tanto las limitaciones técnicas como los incentivos
económicos se combinan para hacer que la cadena más larga gobierne la estrategia dominante para
cualquier minero, ya sea honesto o con malas intenciones. Este ya no es el caso y las cadenas de bloque
públicas necesitan actualizar las reglas de consenso para que sea mucho más costoso tener éxito con los
ataques de doble gasto.
Esta propuesta brinda uno de esos métodos que tiene una forma simple que, en sí misma, es bastante
prometedora, pero que se puede generalizar con una función de escalado para que sea técnicamente
inviable y económicamente desastroso para intentar el gasto doble. El método permite que los que minan
de manera honesta puedan resolver bloques de manera paralela, así como en el caso de las fracturas de
red legítimas que se resuelven con el tiempo. Ninguna estrategia de ataque debe considerarse
neutralizada permanentemente, pero este método ciertamente hace menos probable un método común
de ataque. La investigación adicional en estrategias de defensa en capas, como la introducción de
esquemas de notarización de bloque de intervalo en la parte superior de este sistema de penalización
podría hacer que el sistema sea aún más seguro y una investigación de implementación se debería de
llevar acabo.
2
INTRODUCTION
The longest chain rule, or Satoshi Consensus, worked well in the relatively decentralized
environment in which it was introduced in 2009. Mining resources have since concentrated and
dropped in cost for lease, such that the original dominant strategy of playing by the rules no longer
holds for all proof-of-work (PoW) blockchains that rely on the longest chain rule. As recent events
have proven, in some circumstances it can be economically feasible to launch 51% attacks on
operational public blockchain networks. This paper proposes a novel adjustment to Satoshi
Consensus that makes it exponentially more costly, and hence unlikely, to launch such attacks for
any proof-of-work mineable cryptocurrency system.
The common method for performing a double spend attack is as such:
Execute a transaction T1 sending coins from address A to an exchange address on the current
public chain
Privately mine a block on a parallel forked chain containing a transaction T2 sending coins from
address A to another address
Wait for T1 to be confirmed by the exchange and in the meantime continue to mine privately the
parallel chain at a faster rate than the public chain
Trade the confirmed coins on the exchange, then withdraw funds to private address B
Broadcast to the network the private chain that is longer than the public one
at this point, the network will adopt the attackers private chain as the new public chain (as it is
longer) and miners will start mining on the newly reorganised public chain.
T1 is no longer valid and the attacker already used the coins fraudulently
To summarize, these attacks are possible because the system allows to “overwrite” the current
node view of the blockchain history with the new one after a user accepted a specific transaction
(e.g. after the Exchange waited for the confirmation time). This obeys Satoshi's principles given in
the Bitcoin white paper and implemented by most of PoW cryptocurrencies. Block generation in
PoW consensus is a stochastic process and honest miners can generate blocks in parallel on the
same height (with probability depending on block generation time and network delays), for which
Satoshi Consensus has a simple method to adjudicate by ultimately defaulting to the chain with the
most accumulated work. Thus, pruning shorter branches with lower accumulated work has been
an efficient way to keep the linear sequence of blocks across these distributed systems.
Satoshi's white paper is based on the assumption that a majority of computational power is controlled by
honest nodes ("one-CPU-one-vote" principle), and within this assumption it is almost impossible to
create any reasonable length adversarial branch to implement the double spend attack. Conventional
heuristics have converged on the idea that it is su�cient to wait for several con�rmation blocks to get
very low probability of transaction cancellation.
Many things changed since publishing the Bitcoin white paper. Some of the most signi�cant changes
that jeopardize the longest chain rule, are the appearance of ASIC miners and other computation boost
techniques that completely break the "one-CPU-one-vote" principle. Many cryptocurrencies share the
same mining algorithm, but have extreme di�erences in hashrate, which allows for the computation of
one cryptocurrency mining pool to potentially be used to attack another chain.
Thus, we see that Satoshi's assumption about honest majority of computational power and the
impossibility of long adversarial branches may be broken in the modern environment, evidenced by the
latest 51% attacks on several cryptocurrencies. We need a more advanced and more comprehensive
system that satis�es modern conditions. The core PoW consensus requires corrections to provide secure
services, while still allowing the possibility of honest miners generating con�icting blocks, and legitimate
network delayed synchronization.
To achieve this goal we have identi�ed a modi�cation that signi�cantly increases resources needed for a
successful double spend attack (with no changes in honest hash rate) and shifts the cost of an attack to
become economically senseless. Moreover, the increase of resources needed to make a successful attack
will not require increased con�rmation adjustments by receiving parties, including exchanges.
THE DELAYED BLOCK SUBMISSION PENALTY APPROACH
Considering that private mining is the source of a double spending attack, to make it less effective we
introduce a penalty in the form of a block acceptance delay in relation to the amount of time the block
has been hidden from the public network. Time being measured in block intervals, not temporally via
timestamp.
For example, let’s assume to have the following block reception scenario:
NBi = Normal block
MBi = Malicious block
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Time
Figure 1
In the current system, blocks NB117, NB118, NB119, NB120 are not going to be mined because as soon
as the network received block MB119, the malicious chain becomes the active one and the network
will start mining from block MB119 abandoning the normal chain.
To prevent this, we introduce a fork acceptance delay related to the amount of time the fork has been
hidden from the public network. This delay represents the number of blocks for which the adoption of
the new parallel chain will be postponed. For an adversary it means that he will need to continue to
mine the malicious fork even after revealing it and until the moment when the delay is finished.
For example, let’s consider the following delay function DF. To define DF we first introduce BDi which
effectively represents block reception delay defined as a difference between current main chain
height and height of the received block (e.g. BDmb100=16, BDmb101=15, …, BDmb115=1, BDmb116=0,
BDmb117=-1, BDmb118=-1) or -1 in case the height of the received block is greater than the current main
chain height.
The delay function DF in this case for the whole forked chain will be represented as the SUM of
BDmb[i] values, where i represents indices of the blocks in the forked chain.
In the following example on Figure 2, the delay DF(MB100,...,MB119) = 16+15+14+13+12+....1+0-1-1-1 = 136
- 3 = 133 blocks. So the adversary will need to keep mining his fork after it became public for another
133 blocks until it will be accepted by other nodes.
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Pmb 133 - 132 - 131 - 130
Time
Figure 2
With such a delay function, if we assume for example to adopt a 20 block confirmation time, a 21 block
delay punishment would be 21 * (21 + 1) / 2 = 231, then the minimum number of blocks to be mined to
perform the attack would be 231 + 21 = 252 blocks
Please note that the confirmation time cannot start until a fork is in progress.
Proper tuning of the delay function will complicate an attack to the point of infeasibility since it will
require significantly more resources and will also give an additional opportunity to react on the fork
before its final adoption. The network will learn of the contentious fork and it will have to reduce the
full delay function (DF = 0) before the network defaults to the chain as truth. During this period,
network participants, such as exchanges, can freeze potentially fraudulent deposits until the issue has
been resolved, e.g. either the attempted fraudulent chain is abandoned, or it has successfully driven
DF � 0 through brute force. Honest miners continue to add to the active chain.
The delay function may also consider current mining difficulty (d) to provide better protection for coins
with low hashrate (e.g. increasing delay by a factor inversely proportional to the current difficulty).
Such an augmenting factor to DF’ = DF * f(d) can be ignored by setting f(d) = 1, but any sensible
functional form can be substituted in that has the properties of low impact for the range of honest
simultaneous block contention, then scales exponentially outside any reasonable range for which we
can assign dishonest motives.
Although the introduced feature complicates the whole specter of mining attacks (those executed by
mining private parallel forks), it does not prevent the network from converging in case of a natural split
(e.g. when some parts of the world are completely segregated from each other for some time). The
period of convergence will be longer than the pure longest chain rule, but honest miners will work on
converging chains by driving DF � 0.
Note that if an adversary mines his chain publicly the delay will not be applied, but in this case
everyone can see the fork and is able to take preventive measures (e.g. exchanges will increase
confirmation periods, etc.).
CONCLUSION
The operating environment for cryptocurrency systems has changed significantly from its origins in
2009 when mining power was far more decentralized. Satoshi Consensus, or the longest chain rule,
worked well to adjudicate natural chain forks by simply deferring to the chain with the most
accumulated work. Both technical limitations and economic incentives combined to render the
longest chain rule the dominant strategy for any miner, whether honest or nefarious. This is no longer
the case and public blockchains need to upgrade consensus rules to make it far more costly to
succeed with double spending.
This proposal gives one such method that has a simple form that is, itself, quite promising, but which
can be generalized with a scaling function to make it both technically infeasible and economically
disastrous to attempt double spending. The method permits adjudication of honest miners
simultaneously solving blocks, as well as legitimate network fractures that resolve over time. No
attack vector should ever be considered permanently neutralized, but this method certainly renders
one common method far less likely. Additional research into layered defense strategies, such as
introducing interval block notarization schemes on top of this penalty system could make the system
even more secure and should be investigated.
ACKNOWLEDGEMENTS
SPECIAL THANKS
to the team and community for contributing:
@cronic, Peter Stewart, @ultimateblockage,
Rosario Pabst, Rowan Stone, Gustavo Fialho and Vitalik Demin.
Creatives by Lucy Wang, Linda Baksija and Marko Orčić.
INTRODUCCIÓN
La regla de la cadena más larga o el Consenso de Satoshi, funcionó bien en el entorno
relativamente descentralizado en el que se introdujo en 2009. Desde entonces, los recursos
mineros se han estado concentrando, produciendo una disminución de costos de renta, de tal
manera que la estrategia inicial que había planteado Satoshi ya no es válida para todas las
cadenas de bloque de prueba de trabajo (PoW) que dependen de la regla de cadena más larga.
Como los eventos recientes han demostrado, en algunas circunstancias puede ser
económicamente factible lanzar un ataque del 51% contra las redes públicas operativas de
blockchain. Este documento propone un nuevo ajuste al Consenso de Satoshi que hace que sea
exponencialmente más costoso y por lo tanto menos probable, lanzar ataques para cualquier
sistema de criptomoneda minable de prueba de trabajo (PoW).
El método más común para realizar un ataque de doble gasto es el siguiente:
Ejecutar una transacción T1 que envía monedas desde la dirección A a una dirección de centro
cambiario en la actual cadena de bloques pública.
Minar en privado un bloque en una cadena bifurcada en paralelo a la pública que contiene una
transacción T2 que envía monedas de la dirección A a otra dirección.
Esperar a que T1 sea confirmado por el centro cambiario. Mientras se continua minando de
manera privada la cadena paralela a un ritmo más rápido que la cadena pública.
Cambiar las monedas confirmadas en el centro cambiario, luego retirar los fondos a la dirección
privada B
Transmitir o anunciar a la red la cadena privada que es más larga que la pública.
En este punto, la red adoptará la cadena privada de atacantes como la nueva cadena pública
(ya que es más larga). Los mineros comenzarán a minar en la cadena pública recientemente
reorganizada.
T1 ya no es válida y el atacante ya usó las monedas fraudulentamente
En resumen, estos ataques son posibles porque el sistema permite "sobrescribir" la vista actual del
historial de la cadena de bloques del nodo con una nueva cadena más larga, después de que se
haya aceptado una transacción específica (por ejemplo, después de que el centro cambiario
esperó el tiempo de confirmación). Esto obedece a los principios de Satoshi que estableció en el
libro blanco de Bitcoin e implementados por la mayoría de las criptomonedas de prueba de trabajo
(PoW). La generación de bloques en un consenso de prueba de trabajo (PoW) es un proceso
estocástico y los mineros que son honestos pueden también generar bloques en paralelo a la
misma altura de la otra cadena (dependiendo del tiempo de generación de bloques y retrasos de
red), para lo cual el consenso de Satoshi tiene un método simple para solucionar la presencia de
dos cadenas escogiendo a la cadena con el mayor trabajo acumulado. Por lo tanto, cortando
ramas de la cadena corta con menos trabajo acumulado. Esto ha sido una forma eficiente de
mantener una secuencia lineal de bloques en estos sistemas distribuidos.
El libro blanco de Satoshi se basa en la suposición de que la mayoría del poder de cómputo está
controlado por nodos que son honestos (el principio de "una CPU por cada voto"), dentro de esta
suposición es casi imposible crear una rama adversaria de longitud razonable para implementar el
ataque de doble gasto. El método heurístico convencional consiste en la idea de que es suficiente
esperar varios bloques de confirmación para obtener una probabilidad muy baja de cancelación
de la transacción.
Muchas cosas cambiaron desde la publicación del libro blanco de Bitcoin. Algunos de los cambios
más importantes que ponen en peligro la regla de la cadena más larga son la aparición de los
circuitos integrados ASIC y otras técnicas de cómputo que rompen por completo el principio de
"una CPU por cada voto". Muchas criptomonedas comparten el mismo algoritmo de minería, pero
tienen diferencias muy marcadas en el hashrate , lo que permite que el poder computacional de un
grupo de minería (Mining Pool) pueda ser utilizado para atacar otra cadena.
Por lo tanto, vemos que la suposiciones de Satoshi sobre la mayoría del poder computacional
honesto y la imposibilidad de que existan largas ramas adversarias ya no son validas en el entorno
actual, evidenciado por los últimos ataques del 51% en varias criptomonedas. Necesitamos un
sistema más avanzado y más completo que satisfaga los requerimientos y condiciones actuales.
El consenso de prueba de trabajo (PoW ) central requiere correcciones para proporcionar servicios
seguros, al mismo tiempo que permita la posibilidad de que mineros honestos generen bloques
conflictivos y legitimar la sincronización retrasada de la red.
Para lograr este objetivo, hemos identificado una área de oportunidad que aumentaría
significativamente los recursos necesarios para un ataque exitoso de doble gasto (sin cambios en
la hashrate de mineros honestos). Esta modificación cambiaría el costo de un ataque para que no
tenga sentido económico realizarlo. Además, el aumento de los recursos necesarios para realizar
un ataque exitoso causara que las partes receptoras y los centros cambiarios no tengan que
modificar sus ajustes de cantidad de confirmaciones para liberar una transacción.
EL ENFOQUE DE PENALIZACIÓN POR ENVÍO RETRASADO
Considerando que la minería privada es la fuente de un ataque de doble gasto, para hacerlo
menos efectivo, introducimos una penalización en forma de un retraso de aceptación de bloque en
relación con la cantidad de tiempo que el bloque ha estado oculto de la red pública. El tiempo se
mide en intervalos de bloques, no se medirá temporalmente con una estampa de tiempo.
Supongamos que se tiene el siguiente escenario de recepción de bloque en la cadena:
BNi = Bloque Normal
BMi = Bloque Malicioso
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Tiempo
Figura 1
En el sistema actual, los bloques BN117, BN118, BN119, BN120 no serán minados porque tan pronto
como la red recibió el bloque BM119, la cadena maliciosa se convierte en la activa y la red
comenzará a minar desde el bloque BM119 abandonando la cadena original.
Para evitar esto, presentamos un retraso de aceptación de una bifurcación de la cadena de bloque
actual, proporcional a la cantidad de tiempo que la bifurcación se haya ocultado de la red pública.
Este retraso representa el número de bloques para los cuales se pospondrá la adopción de la
nueva cadena. Para un atacante, significa que tendrá que seguir minando la bifurcación de la
cadena de bloques maliciosa incluso después de revelarlo hasta el momento en que el retraso
haya terminado.
Por ejemplo, consideremos la siguiente función de retraso FR. Para definir FR primero presentamos
el parámetro RBi que representa el retraso de recepción de bloque mediante una diferencia entre
la altura actual de la cadena principal y la altura del bloque recibido (Ejemplo: RBBM100 = 16,
RBBM101 = 15, ..., RBBM115 = 1, RBBM116= 0, RBBM117 = -1, RBBM118 = -1) o -1 en caso de que la altura del
bloque recibido sea mayor que la altura actual de la cadena principal.
La función de retraso FR en este caso para toda la cadena bifurcada se representará como la
SUMA de valores RBBMi, donde i representa los índices de los bloques en la cadena bifurcada.
En el siguiente ejemplo de la Figura 2, el valor de FR (MB100, ..., MB119) = 16 + 15 + 14 + 13 + 12 + ....
1 + 0-1-1-1 = 136 - 3 = 133 bloques. Por lo tanto, el atacante tendrá que seguir minando su bifurcación
después de que se haya hecho pública por otros 133 bloques para que pueda ser aceptada por
otros nodos como la cadena principal.
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Pmb 133 - 132 - 131 - 130
Tiempo
Figure 2.
Con la función de retraso presentado anteriormente, si suponemos, que se adoptara un tiempo de
confirmación de 20 bloques, un castigo de demora de 21 bloques sería 21 * (21 + 1) / 2 = 231, que
significa que el número mínimo de bloques que se tendrán que minar para poder realizar el ataque
serían 231 + 21 = 252 bloques.
Tenga en cuenta que el tiempo de confirmación no puede comenzar hasta que una bifurcación esté
en progreso.
El ajuste adecuado de la función de retardo complicará un ataque hasta el punto de que no sea
factible ya que requerirá una cantidad de recursos significativamente mayor y también dará una
oportunidad adicional de reaccionar en la bifurcación de la cadena de bloques antes de su
adopción final. La red se enterará sobre la bifurcación paralela y el atacante deberá seguir
minando hasta reducir la función de retardo completamente (DF = 0) antes de que la red adopte la
cadena paralela como la más larga. Durante este período, los participantes de la red, como los
centros cambiarios, pueden congelar depósitos potencialmente fraudulentos hasta que se
resuelva el problema. Supongamos que el intento de cadena fraudulenta se abandona, o se ha
conducido con éxito el tiempo de retraso (DF = 0) a través de la fuerza bruta. Los mineros honestos
continuarán agregando a la cadena activa mientras el tiempo de retraso se consume.
La función de retraso también puede considerar la dificultad actual de minería (d) para
proporcionar una mejor protección para las monedas con bajo índice de hashrate (por ejemplo, el
aumento de la función de retraso se vería afectada de manera inversamente proporcional a la
dificultad actual de minado). Tal factor de aumento se podría ver reflejado de tal manera: DF'= DF
* f (d) puede ignorarse estableciendo f (d) = 1, pero puede sustituirse acuerdo a las necesidades,
mismo que tiene las propiedades de bajo impacto para el rango de bifurcación paralela de bloque
honesta, también puede escalar exponencialmente fuera de cualquier rango razonable para los
mineros deshonestos.
Aunque la característica introducida complica todo el espectro de ataques de minería (los que
ejecutan minando bifurcaciones paralelas de manera privada), no impide que la red adopte una
nueva cadena de bloques más larga en caso de una división natural (por ejemplo, cuando en
algunas partes del mundo están completamente segregadas entre sí por algún tiempo
determinado). El período de adopción de una cadena más larga será más prolongado que la regla
del consenso de Satoshi, pero los mineros honestos trabajarán en la cadena paralela hasta
conducir a DF=0.
Tenga en cuenta que si un adversario mina su cadena públicamente, no se aplicará la demora, pero en
este caso todos pueden ver la bifurcación y tomar medidas preventivas (por ejemplo, los centros
cambiarios aumentarán los períodos de confirmación, etc.).
CONCLUSIÓN
El entorno operativo para las criptomonedas ha cambiado significativamente desde sus orígenes en 2009,
cuando la minería estaba mucho más descentralizada. El Consenso de Satoshi, o la regla de la cadena
más larga, funcionó bien para adjudicar las bifurcaciones de cadenas naturales al simplemente adoptar
la cadena con el mayor trabajo acumulado. Tanto las limitaciones técnicas como los incentivos
económicos se combinan para hacer que la cadena más larga gobierne la estrategia dominante para
cualquier minero, ya sea honesto o con malas intenciones. Este ya no es el caso y las cadenas de bloque
públicas necesitan actualizar las reglas de consenso para que sea mucho más costoso tener éxito con los
ataques de doble gasto.
Esta propuesta brinda uno de esos métodos que tiene una forma simple que, en sí misma, es bastante
prometedora, pero que se puede generalizar con una función de escalado para que sea técnicamente
inviable y económicamente desastroso para intentar el gasto doble. El método permite que los que minan
de manera honesta puedan resolver bloques de manera paralela, así como en el caso de las fracturas de
red legítimas que se resuelven con el tiempo. Ninguna estrategia de ataque debe considerarse
neutralizada permanentemente, pero este método ciertamente hace menos probable un método común
de ataque. La investigación adicional en estrategias de defensa en capas, como la introducción de
esquemas de notarización de bloque de intervalo en la parte superior de este sistema de penalización
podría hacer que el sistema sea aún más seguro y una investigación de implementación se debería de
llevar acabo.
3
INTRODUCTION
The longest chain rule, or Satoshi Consensus, worked well in the relatively decentralized
environment in which it was introduced in 2009. Mining resources have since concentrated and
dropped in cost for lease, such that the original dominant strategy of playing by the rules no longer
holds for all proof-of-work (PoW) blockchains that rely on the longest chain rule. As recent events
have proven, in some circumstances it can be economically feasible to launch 51% attacks on
operational public blockchain networks. This paper proposes a novel adjustment to Satoshi
Consensus that makes it exponentially more costly, and hence unlikely, to launch such attacks for
any proof-of-work mineable cryptocurrency system.
The common method for performing a double spend attack is as such:
Execute a transaction T1 sending coins from address A to an exchange address on the current
public chain
Privately mine a block on a parallel forked chain containing a transaction T2 sending coins from
address A to another address
Wait for T1 to be confirmed by the exchange and in the meantime continue to mine privately the
parallel chain at a faster rate than the public chain
Trade the confirmed coins on the exchange, then withdraw funds to private address B
Broadcast to the network the private chain that is longer than the public one
at this point, the network will adopt the attackers private chain as the new public chain (as it is
longer) and miners will start mining on the newly reorganised public chain.
T1 is no longer valid and the attacker already used the coins fraudulently
To summarize, these attacks are possible because the system allows to “overwrite” the current
node view of the blockchain history with the new one after a user accepted a specific transaction
(e.g. after the Exchange waited for the confirmation time). This obeys Satoshi's principles given in
the Bitcoin white paper and implemented by most of PoW cryptocurrencies. Block generation in
PoW consensus is a stochastic process and honest miners can generate blocks in parallel on the
same height (with probability depending on block generation time and network delays), for which
Satoshi Consensus has a simple method to adjudicate by ultimately defaulting to the chain with the
most accumulated work. Thus, pruning shorter branches with lower accumulated work has been
an efficient way to keep the linear sequence of blocks across these distributed systems.
Satoshi's white paper is based on the assumption that a majority of computational power is controlled by
honest nodes ("one-CPU-one-vote" principle), and within this assumption it is almost impossible to
create any reasonable length adversarial branch to implement the double spend attack. Conventional
heuristics have converged on the idea that it is su�cient to wait for several con�rmation blocks to get
very low probability of transaction cancellation.
Many things changed since publishing the Bitcoin white paper. Some of the most signi�cant changes
that jeopardize the longest chain rule, are the appearance of ASIC miners and other computation boost
techniques that completely break the "one-CPU-one-vote" principle. Many cryptocurrencies share the
same mining algorithm, but have extreme di�erences in hashrate, which allows for the computation of
one cryptocurrency mining pool to potentially be used to attack another chain.
Thus, we see that Satoshi's assumption about honest majority of computational power and the
impossibility of long adversarial branches may be broken in the modern environment, evidenced by the
latest 51% attacks on several cryptocurrencies. We need a more advanced and more comprehensive
system that satis�es modern conditions. The core PoW consensus requires corrections to provide secure
services, while still allowing the possibility of honest miners generating con�icting blocks, and legitimate
network delayed synchronization.
To achieve this goal we have identi�ed a modi�cation that signi�cantly increases resources needed for a
successful double spend attack (with no changes in honest hash rate) and shifts the cost of an attack to
become economically senseless. Moreover, the increase of resources needed to make a successful attack
will not require increased con�rmation adjustments by receiving parties, including exchanges.
THE DELAYED BLOCK SUBMISSION PENALTY APPROACH
Considering that private mining is the source of a double spending attack, to make it less effective we
introduce a penalty in the form of a block acceptance delay in relation to the amount of time the block
has been hidden from the public network. Time being measured in block intervals, not temporally via
timestamp.
For example, let’s assume to have the following block reception scenario:
NBi = Normal block
MBi = Malicious block
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Time
Figure 1
In the current system, blocks NB117, NB118, NB119, NB120 are not going to be mined because as soon
as the network received block MB119, the malicious chain becomes the active one and the network
will start mining from block MB119 abandoning the normal chain.
To prevent this, we introduce a fork acceptance delay related to the amount of time the fork has been
hidden from the public network. This delay represents the number of blocks for which the adoption of
the new parallel chain will be postponed. For an adversary it means that he will need to continue to
mine the malicious fork even after revealing it and until the moment when the delay is finished.
For example, let’s consider the following delay function DF. To define DF we first introduce BDi which
effectively represents block reception delay defined as a difference between current main chain
height and height of the received block (e.g. BDmb100=16, BDmb101=15, …, BDmb115=1, BDmb116=0,
BDmb117=-1, BDmb118=-1) or -1 in case the height of the received block is greater than the current main
chain height.
The delay function DF in this case for the whole forked chain will be represented as the SUM of
BDmb[i] values, where i represents indices of the blocks in the forked chain.
In the following example on Figure 2, the delay DF(MB100,...,MB119) = 16+15+14+13+12+....1+0-1-1-1 = 136
- 3 = 133 blocks. So the adversary will need to keep mining his fork after it became public for another
133 blocks until it will be accepted by other nodes.
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Pmb 133 - 132 - 131 - 130
Time
Figure 2
With such a delay function, if we assume for example to adopt a 20 block confirmation time, a 21 block
delay punishment would be 21 * (21 + 1) / 2 = 231, then the minimum number of blocks to be mined to
perform the attack would be 231 + 21 = 252 blocks
Please note that the confirmation time cannot start until a fork is in progress.
Proper tuning of the delay function will complicate an attack to the point of infeasibility since it will
require significantly more resources and will also give an additional opportunity to react on the fork
before its final adoption. The network will learn of the contentious fork and it will have to reduce the
full delay function (DF = 0) before the network defaults to the chain as truth. During this period,
network participants, such as exchanges, can freeze potentially fraudulent deposits until the issue has
been resolved, e.g. either the attempted fraudulent chain is abandoned, or it has successfully driven
DF � 0 through brute force. Honest miners continue to add to the active chain.
The delay function may also consider current mining difficulty (d) to provide better protection for coins
with low hashrate (e.g. increasing delay by a factor inversely proportional to the current difficulty).
Such an augmenting factor to DF’ = DF * f(d) can be ignored by setting f(d) = 1, but any sensible
functional form can be substituted in that has the properties of low impact for the range of honest
simultaneous block contention, then scales exponentially outside any reasonable range for which we
can assign dishonest motives.
Although the introduced feature complicates the whole specter of mining attacks (those executed by
mining private parallel forks), it does not prevent the network from converging in case of a natural split
(e.g. when some parts of the world are completely segregated from each other for some time). The
period of convergence will be longer than the pure longest chain rule, but honest miners will work on
converging chains by driving DF � 0.
Note that if an adversary mines his chain publicly the delay will not be applied, but in this case
everyone can see the fork and is able to take preventive measures (e.g. exchanges will increase
confirmation periods, etc.).
CONCLUSION
The operating environment for cryptocurrency systems has changed significantly from its origins in
2009 when mining power was far more decentralized. Satoshi Consensus, or the longest chain rule,
worked well to adjudicate natural chain forks by simply deferring to the chain with the most
accumulated work. Both technical limitations and economic incentives combined to render the
longest chain rule the dominant strategy for any miner, whether honest or nefarious. This is no longer
the case and public blockchains need to upgrade consensus rules to make it far more costly to
succeed with double spending.
This proposal gives one such method that has a simple form that is, itself, quite promising, but which
can be generalized with a scaling function to make it both technically infeasible and economically
disastrous to attempt double spending. The method permits adjudication of honest miners
simultaneously solving blocks, as well as legitimate network fractures that resolve over time. No
attack vector should ever be considered permanently neutralized, but this method certainly renders
one common method far less likely. Additional research into layered defense strategies, such as
introducing interval block notarization schemes on top of this penalty system could make the system
even more secure and should be investigated.
ACKNOWLEDGEMENTS
SPECIAL THANKS
to the team and community for contributing:
@cronic, Peter Stewart, @ultimateblockage,
Rosario Pabst, Rowan Stone, Gustavo Fialho and Vitalik Demin.
Creatives by Lucy Wang, Linda Baksija and Marko Orčić.
INTRODUCCIÓN
La regla de la cadena más larga o el Consenso de Satoshi, funcionó bien en el entorno
relativamente descentralizado en el que se introdujo en 2009. Desde entonces, los recursos
mineros se han estado concentrando, produciendo una disminución de costos de renta, de tal
manera que la estrategia inicial que había planteado Satoshi ya no es válida para todas las
cadenas de bloque de prueba de trabajo (PoW) que dependen de la regla de cadena más larga.
Como los eventos recientes han demostrado, en algunas circunstancias puede ser
económicamente factible lanzar un ataque del 51% contra las redes públicas operativas de
blockchain. Este documento propone un nuevo ajuste al Consenso de Satoshi que hace que sea
exponencialmente más costoso y por lo tanto menos probable, lanzar ataques para cualquier
sistema de criptomoneda minable de prueba de trabajo (PoW).
El método más común para realizar un ataque de doble gasto es el siguiente:
Ejecutar una transacción T1 que envía monedas desde la dirección A a una dirección de centro
cambiario en la actual cadena de bloques pública.
Minar en privado un bloque en una cadena bifurcada en paralelo a la pública que contiene una
transacción T2 que envía monedas de la dirección A a otra dirección.
Esperar a que T1 sea confirmado por el centro cambiario. Mientras se continua minando de
manera privada la cadena paralela a un ritmo más rápido que la cadena pública.
Cambiar las monedas confirmadas en el centro cambiario, luego retirar los fondos a la dirección
privada B
Transmitir o anunciar a la red la cadena privada que es más larga que la pública.
En este punto, la red adoptará la cadena privada de atacantes como la nueva cadena pública
(ya que es más larga). Los mineros comenzarán a minar en la cadena pública recientemente
reorganizada.
T1 ya no es válida y el atacante ya usó las monedas fraudulentamente
En resumen, estos ataques son posibles porque el sistema permite "sobrescribir" la vista actual del
historial de la cadena de bloques del nodo con una nueva cadena más larga, después de que se
haya aceptado una transacción específica (por ejemplo, después de que el centro cambiario
esperó el tiempo de confirmación). Esto obedece a los principios de Satoshi que estableció en el
libro blanco de Bitcoin e implementados por la mayoría de las criptomonedas de prueba de trabajo
(PoW). La generación de bloques en un consenso de prueba de trabajo (PoW) es un proceso
estocástico y los mineros que son honestos pueden también generar bloques en paralelo a la
misma altura de la otra cadena (dependiendo del tiempo de generación de bloques y retrasos de
red), para lo cual el consenso de Satoshi tiene un método simple para solucionar la presencia de
dos cadenas escogiendo a la cadena con el mayor trabajo acumulado. Por lo tanto, cortando
ramas de la cadena corta con menos trabajo acumulado. Esto ha sido una forma eficiente de
mantener una secuencia lineal de bloques en estos sistemas distribuidos.
El libro blanco de Satoshi se basa en la suposición de que la mayoría del poder de cómputo está
controlado por nodos que son honestos (el principio de "una CPU por cada voto"), dentro de esta
suposición es casi imposible crear una rama adversaria de longitud razonable para implementar el
ataque de doble gasto. El método heurístico convencional consiste en la idea de que es suficiente
esperar varios bloques de confirmación para obtener una probabilidad muy baja de cancelación
de la transacción.
Muchas cosas cambiaron desde la publicación del libro blanco de Bitcoin. Algunos de los cambios
más importantes que ponen en peligro la regla de la cadena más larga son la aparición de los
circuitos integrados ASIC y otras técnicas de cómputo que rompen por completo el principio de
"una CPU por cada voto". Muchas criptomonedas comparten el mismo algoritmo de minería, pero
tienen diferencias muy marcadas en el hashrate , lo que permite que el poder computacional de un
grupo de minería (Mining Pool) pueda ser utilizado para atacar otra cadena.
Por lo tanto, vemos que la suposiciones de Satoshi sobre la mayoría del poder computacional
honesto y la imposibilidad de que existan largas ramas adversarias ya no son validas en el entorno
actual, evidenciado por los últimos ataques del 51% en varias criptomonedas. Necesitamos un
sistema más avanzado y más completo que satisfaga los requerimientos y condiciones actuales.
El consenso de prueba de trabajo (PoW ) central requiere correcciones para proporcionar servicios
seguros, al mismo tiempo que permita la posibilidad de que mineros honestos generen bloques
conflictivos y legitimar la sincronización retrasada de la red.
Para lograr este objetivo, hemos identificado una área de oportunidad que aumentaría
significativamente los recursos necesarios para un ataque exitoso de doble gasto (sin cambios en
la hashrate de mineros honestos). Esta modificación cambiaría el costo de un ataque para que no
tenga sentido económico realizarlo. Además, el aumento de los recursos necesarios para realizar
un ataque exitoso causara que las partes receptoras y los centros cambiarios no tengan que
modificar sus ajustes de cantidad de confirmaciones para liberar una transacción.
EL ENFOQUE DE PENALIZACIÓN POR ENVÍO RETRASADO
Considerando que la minería privada es la fuente de un ataque de doble gasto, para hacerlo
menos efectivo, introducimos una penalización en forma de un retraso de aceptación de bloque en
relación con la cantidad de tiempo que el bloque ha estado oculto de la red pública. El tiempo se
mide en intervalos de bloques, no se medirá temporalmente con una estampa de tiempo.
Supongamos que se tiene el siguiente escenario de recepción de bloque en la cadena:
BNi = Bloque Normal
BMi = Bloque Malicioso
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Tiempo
Figura 1
En el sistema actual, los bloques BN117, BN118, BN119, BN120 no serán minados porque tan pronto
como la red recibió el bloque BM119, la cadena maliciosa se convierte en la activa y la red
comenzará a minar desde el bloque BM119 abandonando la cadena original.
Para evitar esto, presentamos un retraso de aceptación de una bifurcación de la cadena de bloque
actual, proporcional a la cantidad de tiempo que la bifurcación se haya ocultado de la red pública.
Este retraso representa el número de bloques para los cuales se pospondrá la adopción de la
nueva cadena. Para un atacante, significa que tendrá que seguir minando la bifurcación de la
cadena de bloques maliciosa incluso después de revelarlo hasta el momento en que el retraso
haya terminado.
Por ejemplo, consideremos la siguiente función de retraso FR. Para definir FR primero presentamos
el parámetro RBi que representa el retraso de recepción de bloque mediante una diferencia entre
la altura actual de la cadena principal y la altura del bloque recibido (Ejemplo: RBBM100 = 16,
RBBM101 = 15, ..., RBBM115 = 1, RBBM116= 0, RBBM117 = -1, RBBM118 = -1) o -1 en caso de que la altura del
bloque recibido sea mayor que la altura actual de la cadena principal.
La función de retraso FR en este caso para toda la cadena bifurcada se representará como la
SUMA de valores RBBMi, donde i representa los índices de los bloques en la cadena bifurcada.
En el siguiente ejemplo de la Figura 2, el valor de FR (MB100, ..., MB119) = 16 + 15 + 14 + 13 + 12 + ....
1 + 0-1-1-1 = 136 - 3 = 133 bloques. Por lo tanto, el atacante tendrá que seguir minando su bifurcación
después de que se haya hecho pública por otros 133 bloques para que pueda ser aceptada por
otros nodos como la cadena principal.
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Pmb 133 - 132 - 131 - 130
Tiempo
Figure 2.
Con la función de retraso presentado anteriormente, si suponemos, que se adoptara un tiempo de
confirmación de 20 bloques, un castigo de demora de 21 bloques sería 21 * (21 + 1) / 2 = 231, que
significa que el número mínimo de bloques que se tendrán que minar para poder realizar el ataque
serían 231 + 21 = 252 bloques.
Tenga en cuenta que el tiempo de confirmación no puede comenzar hasta que una bifurcación esté
en progreso.
El ajuste adecuado de la función de retardo complicará un ataque hasta el punto de que no sea
factible ya que requerirá una cantidad de recursos significativamente mayor y también dará una
oportunidad adicional de reaccionar en la bifurcación de la cadena de bloques antes de su
adopción final. La red se enterará sobre la bifurcación paralela y el atacante deberá seguir
minando hasta reducir la función de retardo completamente (DF = 0) antes de que la red adopte la
cadena paralela como la más larga. Durante este período, los participantes de la red, como los
centros cambiarios, pueden congelar depósitos potencialmente fraudulentos hasta que se
resuelva el problema. Supongamos que el intento de cadena fraudulenta se abandona, o se ha
conducido con éxito el tiempo de retraso (DF = 0) a través de la fuerza bruta. Los mineros honestos
continuarán agregando a la cadena activa mientras el tiempo de retraso se consume.
La función de retraso también puede considerar la dificultad actual de minería (d) para
proporcionar una mejor protección para las monedas con bajo índice de hashrate (por ejemplo, el
aumento de la función de retraso se vería afectada de manera inversamente proporcional a la
dificultad actual de minado). Tal factor de aumento se podría ver reflejado de tal manera: DF'= DF
* f (d) puede ignorarse estableciendo f (d) = 1, pero puede sustituirse acuerdo a las necesidades,
mismo que tiene las propiedades de bajo impacto para el rango de bifurcación paralela de bloque
honesta, también puede escalar exponencialmente fuera de cualquier rango razonable para los
mineros deshonestos.
Aunque la característica introducida complica todo el espectro de ataques de minería (los que
ejecutan minando bifurcaciones paralelas de manera privada), no impide que la red adopte una
nueva cadena de bloques más larga en caso de una división natural (por ejemplo, cuando en
algunas partes del mundo están completamente segregadas entre sí por algún tiempo
determinado). El período de adopción de una cadena más larga será más prolongado que la regla
del consenso de Satoshi, pero los mineros honestos trabajarán en la cadena paralela hasta
conducir a DF=0.
Tenga en cuenta que si un adversario mina su cadena públicamente, no se aplicará la demora, pero en
este caso todos pueden ver la bifurcación y tomar medidas preventivas (por ejemplo, los centros
cambiarios aumentarán los períodos de confirmación, etc.).
CONCLUSIÓN
El entorno operativo para las criptomonedas ha cambiado significativamente desde sus orígenes en 2009,
cuando la minería estaba mucho más descentralizada. El Consenso de Satoshi, o la regla de la cadena
más larga, funcionó bien para adjudicar las bifurcaciones de cadenas naturales al simplemente adoptar
la cadena con el mayor trabajo acumulado. Tanto las limitaciones técnicas como los incentivos
económicos se combinan para hacer que la cadena más larga gobierne la estrategia dominante para
cualquier minero, ya sea honesto o con malas intenciones. Este ya no es el caso y las cadenas de bloque
públicas necesitan actualizar las reglas de consenso para que sea mucho más costoso tener éxito con los
ataques de doble gasto.
Esta propuesta brinda uno de esos métodos que tiene una forma simple que, en sí misma, es bastante
prometedora, pero que se puede generalizar con una función de escalado para que sea técnicamente
inviable y económicamente desastroso para intentar el gasto doble. El método permite que los que minan
de manera honesta puedan resolver bloques de manera paralela, así como en el caso de las fracturas de
red legítimas que se resuelven con el tiempo. Ninguna estrategia de ataque debe considerarse
neutralizada permanentemente, pero este método ciertamente hace menos probable un método común
de ataque. La investigación adicional en estrategias de defensa en capas, como la introducción de
esquemas de notarización de bloque de intervalo en la parte superior de este sistema de penalización
podría hacer que el sistema sea aún más seguro y una investigación de implementación se debería de
llevar acabo.
4
INTRODUCTION
The longest chain rule, or Satoshi Consensus, worked well in the relatively decentralized
environment in which it was introduced in 2009. Mining resources have since concentrated and
dropped in cost for lease, such that the original dominant strategy of playing by the rules no longer
holds for all proof-of-work (PoW) blockchains that rely on the longest chain rule. As recent events
have proven, in some circumstances it can be economically feasible to launch 51% attacks on
operational public blockchain networks. This paper proposes a novel adjustment to Satoshi
Consensus that makes it exponentially more costly, and hence unlikely, to launch such attacks for
any proof-of-work mineable cryptocurrency system.
The common method for performing a double spend attack is as such:
Execute a transaction T1 sending coins from address A to an exchange address on the current
public chain
Privately mine a block on a parallel forked chain containing a transaction T2 sending coins from
address A to another address
Wait for T1 to be confirmed by the exchange and in the meantime continue to mine privately the
parallel chain at a faster rate than the public chain
Trade the confirmed coins on the exchange, then withdraw funds to private address B
Broadcast to the network the private chain that is longer than the public one
at this point, the network will adopt the attackers private chain as the new public chain (as it is
longer) and miners will start mining on the newly reorganised public chain.
T1 is no longer valid and the attacker already used the coins fraudulently
To summarize, these attacks are possible because the system allows to “overwrite” the current
node view of the blockchain history with the new one after a user accepted a specific transaction
(e.g. after the Exchange waited for the confirmation time). This obeys Satoshi's principles given in
the Bitcoin white paper and implemented by most of PoW cryptocurrencies. Block generation in
PoW consensus is a stochastic process and honest miners can generate blocks in parallel on the
same height (with probability depending on block generation time and network delays), for which
Satoshi Consensus has a simple method to adjudicate by ultimately defaulting to the chain with the
most accumulated work. Thus, pruning shorter branches with lower accumulated work has been
an efficient way to keep the linear sequence of blocks across these distributed systems.
Satoshi's white paper is based on the assumption that a majority of computational power is controlled by
honest nodes ("one-CPU-one-vote" principle), and within this assumption it is almost impossible to
create any reasonable length adversarial branch to implement the double spend attack. Conventional
heuristics have converged on the idea that it is su�cient to wait for several con�rmation blocks to get
very low probability of transaction cancellation.
Many things changed since publishing the Bitcoin white paper. Some of the most signi�cant changes
that jeopardize the longest chain rule, are the appearance of ASIC miners and other computation boost
techniques that completely break the "one-CPU-one-vote" principle. Many cryptocurrencies share the
same mining algorithm, but have extreme di�erences in hashrate, which allows for the computation of
one cryptocurrency mining pool to potentially be used to attack another chain.
Thus, we see that Satoshi's assumption about honest majority of computational power and the
impossibility of long adversarial branches may be broken in the modern environment, evidenced by the
latest 51% attacks on several cryptocurrencies. We need a more advanced and more comprehensive
system that satis�es modern conditions. The core PoW consensus requires corrections to provide secure
services, while still allowing the possibility of honest miners generating con�icting blocks, and legitimate
network delayed synchronization.
To achieve this goal we have identi�ed a modi�cation that signi�cantly increases resources needed for a
successful double spend attack (with no changes in honest hash rate) and shifts the cost of an attack to
become economically senseless. Moreover, the increase of resources needed to make a successful attack
will not require increased con�rmation adjustments by receiving parties, including exchanges.
THE DELAYED BLOCK SUBMISSION PENALTY APPROACH
Considering that private mining is the source of a double spending attack, to make it less effective we
introduce a penalty in the form of a block acceptance delay in relation to the amount of time the block
has been hidden from the public network. Time being measured in block intervals, not temporally via
timestamp.
For example, let’s assume to have the following block reception scenario:
NBi = Normal block
MBi = Malicious block
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Time
Figure 1
In the current system, blocks NB117, NB118, NB119, NB120 are not going to be mined because as soon
as the network received block MB119, the malicious chain becomes the active one and the network
will start mining from block MB119 abandoning the normal chain.
To prevent this, we introduce a fork acceptance delay related to the amount of time the fork has been
hidden from the public network. This delay represents the number of blocks for which the adoption of
the new parallel chain will be postponed. For an adversary it means that he will need to continue to
mine the malicious fork even after revealing it and until the moment when the delay is finished.
For example, let’s consider the following delay function DF. To define DF we first introduce BDi which
effectively represents block reception delay defined as a difference between current main chain
height and height of the received block (e.g. BDmb100=16, BDmb101=15, …, BDmb115=1, BDmb116=0,
BDmb117=-1, BDmb118=-1) or -1 in case the height of the received block is greater than the current main
chain height.
The delay function DF in this case for the whole forked chain will be represented as the SUM of
BDmb[i] values, where i represents indices of the blocks in the forked chain.
In the following example on Figure 2, the delay DF(MB100,...,MB119) = 16+15+14+13+12+....1+0-1-1-1 = 136
- 3 = 133 blocks. So the adversary will need to keep mining his fork after it became public for another
133 blocks until it will be accepted by other nodes.
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Pmb 133 - 132 - 131 - 130
Time
Figure 2
With such a delay function, if we assume for example to adopt a 20 block confirmation time, a 21 block
delay punishment would be 21 * (21 + 1) / 2 = 231, then the minimum number of blocks to be mined to
perform the attack would be 231 + 21 = 252 blocks
Please note that the confirmation time cannot start until a fork is in progress.
Proper tuning of the delay function will complicate an attack to the point of infeasibility since it will
require significantly more resources and will also give an additional opportunity to react on the fork
before its final adoption. The network will learn of the contentious fork and it will have to reduce the
full delay function (DF = 0) before the network defaults to the chain as truth. During this period,
network participants, such as exchanges, can freeze potentially fraudulent deposits until the issue has
been resolved, e.g. either the attempted fraudulent chain is abandoned, or it has successfully driven
DF � 0 through brute force. Honest miners continue to add to the active chain.
The delay function may also consider current mining difficulty (d) to provide better protection for coins
with low hashrate (e.g. increasing delay by a factor inversely proportional to the current difficulty).
Such an augmenting factor to DF’ = DF * f(d) can be ignored by setting f(d) = 1, but any sensible
functional form can be substituted in that has the properties of low impact for the range of honest
simultaneous block contention, then scales exponentially outside any reasonable range for which we
can assign dishonest motives.
Although the introduced feature complicates the whole specter of mining attacks (those executed by
mining private parallel forks), it does not prevent the network from converging in case of a natural split
(e.g. when some parts of the world are completely segregated from each other for some time). The
period of convergence will be longer than the pure longest chain rule, but honest miners will work on
converging chains by driving DF � 0.
Note that if an adversary mines his chain publicly the delay will not be applied, but in this case
everyone can see the fork and is able to take preventive measures (e.g. exchanges will increase
confirmation periods, etc.).
CONCLUSION
The operating environment for cryptocurrency systems has changed significantly from its origins in
2009 when mining power was far more decentralized. Satoshi Consensus, or the longest chain rule,
worked well to adjudicate natural chain forks by simply deferring to the chain with the most
accumulated work. Both technical limitations and economic incentives combined to render the
longest chain rule the dominant strategy for any miner, whether honest or nefarious. This is no longer
the case and public blockchains need to upgrade consensus rules to make it far more costly to
succeed with double spending.
This proposal gives one such method that has a simple form that is, itself, quite promising, but which
can be generalized with a scaling function to make it both technically infeasible and economically
disastrous to attempt double spending. The method permits adjudication of honest miners
simultaneously solving blocks, as well as legitimate network fractures that resolve over time. No
attack vector should ever be considered permanently neutralized, but this method certainly renders
one common method far less likely. Additional research into layered defense strategies, such as
introducing interval block notarization schemes on top of this penalty system could make the system
even more secure and should be investigated.
ACKNOWLEDGEMENTS
SPECIAL THANKS
to the team and community for contributing:
@cronic, Peter Stewart, @ultimateblockage,
Rosario Pabst, Rowan Stone, Gustavo Fialho and Vitalik Demin.
Creatives by Lucy Wang, Linda Baksija and Marko Orčić.
INTRODUCCIÓN
La regla de la cadena más larga o el Consenso de Satoshi, funcionó bien en el entorno
relativamente descentralizado en el que se introdujo en 2009. Desde entonces, los recursos
mineros se han estado concentrando, produciendo una disminución de costos de renta, de tal
manera que la estrategia inicial que había planteado Satoshi ya no es válida para todas las
cadenas de bloque de prueba de trabajo (PoW) que dependen de la regla de cadena más larga.
Como los eventos recientes han demostrado, en algunas circunstancias puede ser
económicamente factible lanzar un ataque del 51% contra las redes públicas operativas de
blockchain. Este documento propone un nuevo ajuste al Consenso de Satoshi que hace que sea
exponencialmente más costoso y por lo tanto menos probable, lanzar ataques para cualquier
sistema de criptomoneda minable de prueba de trabajo (PoW).
El método más común para realizar un ataque de doble gasto es el siguiente:
Ejecutar una transacción T1 que envía monedas desde la dirección A a una dirección de centro
cambiario en la actual cadena de bloques pública.
Minar en privado un bloque en una cadena bifurcada en paralelo a la pública que contiene una
transacción T2 que envía monedas de la dirección A a otra dirección.
Esperar a que T1 sea confirmado por el centro cambiario. Mientras se continua minando de
manera privada la cadena paralela a un ritmo más rápido que la cadena pública.
Cambiar las monedas confirmadas en el centro cambiario, luego retirar los fondos a la dirección
privada B
Transmitir o anunciar a la red la cadena privada que es más larga que la pública.
En este punto, la red adoptará la cadena privada de atacantes como la nueva cadena pública
(ya que es más larga). Los mineros comenzarán a minar en la cadena pública recientemente
reorganizada.
T1 ya no es válida y el atacante ya usó las monedas fraudulentamente
En resumen, estos ataques son posibles porque el sistema permite "sobrescribir" la vista actual del
historial de la cadena de bloques del nodo con una nueva cadena más larga, después de que se
haya aceptado una transacción específica (por ejemplo, después de que el centro cambiario
esperó el tiempo de confirmación). Esto obedece a los principios de Satoshi que estableció en el
libro blanco de Bitcoin e implementados por la mayoría de las criptomonedas de prueba de trabajo
(PoW). La generación de bloques en un consenso de prueba de trabajo (PoW) es un proceso
estocástico y los mineros que son honestos pueden también generar bloques en paralelo a la
misma altura de la otra cadena (dependiendo del tiempo de generación de bloques y retrasos de
red), para lo cual el consenso de Satoshi tiene un método simple para solucionar la presencia de
dos cadenas escogiendo a la cadena con el mayor trabajo acumulado. Por lo tanto, cortando
ramas de la cadena corta con menos trabajo acumulado. Esto ha sido una forma eficiente de
mantener una secuencia lineal de bloques en estos sistemas distribuidos.
El libro blanco de Satoshi se basa en la suposición de que la mayoría del poder de cómputo está
controlado por nodos que son honestos (el principio de "una CPU por cada voto"), dentro de esta
suposición es casi imposible crear una rama adversaria de longitud razonable para implementar el
ataque de doble gasto. El método heurístico convencional consiste en la idea de que es suficiente
esperar varios bloques de confirmación para obtener una probabilidad muy baja de cancelación
de la transacción.
Muchas cosas cambiaron desde la publicación del libro blanco de Bitcoin. Algunos de los cambios
más importantes que ponen en peligro la regla de la cadena más larga son la aparición de los
circuitos integrados ASIC y otras técnicas de cómputo que rompen por completo el principio de
"una CPU por cada voto". Muchas criptomonedas comparten el mismo algoritmo de minería, pero
tienen diferencias muy marcadas en el hashrate , lo que permite que el poder computacional de un
grupo de minería (Mining Pool) pueda ser utilizado para atacar otra cadena.
Por lo tanto, vemos que la suposiciones de Satoshi sobre la mayoría del poder computacional
honesto y la imposibilidad de que existan largas ramas adversarias ya no son validas en el entorno
actual, evidenciado por los últimos ataques del 51% en varias criptomonedas. Necesitamos un
sistema más avanzado y más completo que satisfaga los requerimientos y condiciones actuales.
El consenso de prueba de trabajo (PoW ) central requiere correcciones para proporcionar servicios
seguros, al mismo tiempo que permita la posibilidad de que mineros honestos generen bloques
conflictivos y legitimar la sincronización retrasada de la red.
Para lograr este objetivo, hemos identificado una área de oportunidad que aumentaría
significativamente los recursos necesarios para un ataque exitoso de doble gasto (sin cambios en
la hashrate de mineros honestos). Esta modificación cambiaría el costo de un ataque para que no
tenga sentido económico realizarlo. Además, el aumento de los recursos necesarios para realizar
un ataque exitoso causara que las partes receptoras y los centros cambiarios no tengan que
modificar sus ajustes de cantidad de confirmaciones para liberar una transacción.
EL ENFOQUE DE PENALIZACIÓN POR ENVÍO RETRASADO
Considerando que la minería privada es la fuente de un ataque de doble gasto, para hacerlo
menos efectivo, introducimos una penalización en forma de un retraso de aceptación de bloque en
relación con la cantidad de tiempo que el bloque ha estado oculto de la red pública. El tiempo se
mide en intervalos de bloques, no se medirá temporalmente con una estampa de tiempo.
Supongamos que se tiene el siguiente escenario de recepción de bloque en la cadena:
BNi = Bloque Normal
BMi = Bloque Malicioso
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Tiempo
Figura 1
En el sistema actual, los bloques BN117, BN118, BN119, BN120 no serán minados porque tan pronto
como la red recibió el bloque BM119, la cadena maliciosa se convierte en la activa y la red
comenzará a minar desde el bloque BM119 abandonando la cadena original.
Para evitar esto, presentamos un retraso de aceptación de una bifurcación de la cadena de bloque
actual, proporcional a la cantidad de tiempo que la bifurcación se haya ocultado de la red pública.
Este retraso representa el número de bloques para los cuales se pospondrá la adopción de la
nueva cadena. Para un atacante, significa que tendrá que seguir minando la bifurcación de la
cadena de bloques maliciosa incluso después de revelarlo hasta el momento en que el retraso
haya terminado.
Por ejemplo, consideremos la siguiente función de retraso FR. Para definir FR primero presentamos
el parámetro RBi que representa el retraso de recepción de bloque mediante una diferencia entre
la altura actual de la cadena principal y la altura del bloque recibido (Ejemplo: RBBM100 = 16,
RBBM101 = 15, ..., RBBM115 = 1, RBBM116= 0, RBBM117 = -1, RBBM118 = -1) o -1 en caso de que la altura del
bloque recibido sea mayor que la altura actual de la cadena principal.
La función de retraso FR en este caso para toda la cadena bifurcada se representará como la
SUMA de valores RBBMi, donde i representa los índices de los bloques en la cadena bifurcada.
En el siguiente ejemplo de la Figura 2, el valor de FR (MB100, ..., MB119) = 16 + 15 + 14 + 13 + 12 + ....
1 + 0-1-1-1 = 136 - 3 = 133 bloques. Por lo tanto, el atacante tendrá que seguir minando su bifurcación
después de que se haya hecho pública por otros 133 bloques para que pueda ser aceptada por
otros nodos como la cadena principal.
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Pmb 133 - 132 - 131 - 130
Tiempo
Figure 2.
Con la función de retraso presentado anteriormente, si suponemos, que se adoptara un tiempo de
confirmación de 20 bloques, un castigo de demora de 21 bloques sería 21 * (21 + 1) / 2 = 231, que
significa que el número mínimo de bloques que se tendrán que minar para poder realizar el ataque
serían 231 + 21 = 252 bloques.
Tenga en cuenta que el tiempo de confirmación no puede comenzar hasta que una bifurcación esté
en progreso.
El ajuste adecuado de la función de retardo complicará un ataque hasta el punto de que no sea
factible ya que requerirá una cantidad de recursos significativamente mayor y también dará una
oportunidad adicional de reaccionar en la bifurcación de la cadena de bloques antes de su
adopción final. La red se enterará sobre la bifurcación paralela y el atacante deberá seguir
minando hasta reducir la función de retardo completamente (DF = 0) antes de que la red adopte la
cadena paralela como la más larga. Durante este período, los participantes de la red, como los
centros cambiarios, pueden congelar depósitos potencialmente fraudulentos hasta que se
resuelva el problema. Supongamos que el intento de cadena fraudulenta se abandona, o se ha
conducido con éxito el tiempo de retraso (DF = 0) a través de la fuerza bruta. Los mineros honestos
continuarán agregando a la cadena activa mientras el tiempo de retraso se consume.
La función de retraso también puede considerar la dificultad actual de minería (d) para
proporcionar una mejor protección para las monedas con bajo índice de hashrate (por ejemplo, el
aumento de la función de retraso se vería afectada de manera inversamente proporcional a la
dificultad actual de minado). Tal factor de aumento se podría ver reflejado de tal manera: DF'= DF
* f (d) puede ignorarse estableciendo f (d) = 1, pero puede sustituirse acuerdo a las necesidades,
mismo que tiene las propiedades de bajo impacto para el rango de bifurcación paralela de bloque
honesta, también puede escalar exponencialmente fuera de cualquier rango razonable para los
mineros deshonestos.
Aunque la característica introducida complica todo el espectro de ataques de minería (los que
ejecutan minando bifurcaciones paralelas de manera privada), no impide que la red adopte una
nueva cadena de bloques más larga en caso de una división natural (por ejemplo, cuando en
algunas partes del mundo están completamente segregadas entre sí por algún tiempo
determinado). El período de adopción de una cadena más larga será más prolongado que la regla
del consenso de Satoshi, pero los mineros honestos trabajarán en la cadena paralela hasta
conducir a DF=0.
Tenga en cuenta que si un adversario mina su cadena públicamente, no se aplicará la demora, pero en
este caso todos pueden ver la bifurcación y tomar medidas preventivas (por ejemplo, los centros
cambiarios aumentarán los períodos de confirmación, etc.).
CONCLUSIÓN
El entorno operativo para las criptomonedas ha cambiado significativamente desde sus orígenes en 2009,
cuando la minería estaba mucho más descentralizada. El Consenso de Satoshi, o la regla de la cadena
más larga, funcionó bien para adjudicar las bifurcaciones de cadenas naturales al simplemente adoptar
la cadena con el mayor trabajo acumulado. Tanto las limitaciones técnicas como los incentivos
económicos se combinan para hacer que la cadena más larga gobierne la estrategia dominante para
cualquier minero, ya sea honesto o con malas intenciones. Este ya no es el caso y las cadenas de bloque
públicas necesitan actualizar las reglas de consenso para que sea mucho más costoso tener éxito con los
ataques de doble gasto.
Esta propuesta brinda uno de esos métodos que tiene una forma simple que, en sí misma, es bastante
prometedora, pero que se puede generalizar con una función de escalado para que sea técnicamente
inviable y económicamente desastroso para intentar el gasto doble. El método permite que los que minan
de manera honesta puedan resolver bloques de manera paralela, así como en el caso de las fracturas de
red legítimas que se resuelven con el tiempo. Ninguna estrategia de ataque debe considerarse
neutralizada permanentemente, pero este método ciertamente hace menos probable un método común
de ataque. La investigación adicional en estrategias de defensa en capas, como la introducción de
esquemas de notarización de bloque de intervalo en la parte superior de este sistema de penalización
podría hacer que el sistema sea aún más seguro y una investigación de implementación se debería de
llevar acabo.
5
INTRODUCTION
The longest chain rule, or Satoshi Consensus, worked well in the relatively decentralized
environment in which it was introduced in 2009. Mining resources have since concentrated and
dropped in cost for lease, such that the original dominant strategy of playing by the rules no longer
holds for all proof-of-work (PoW) blockchains that rely on the longest chain rule. As recent events
have proven, in some circumstances it can be economically feasible to launch 51% attacks on
operational public blockchain networks. This paper proposes a novel adjustment to Satoshi
Consensus that makes it exponentially more costly, and hence unlikely, to launch such attacks for
any proof-of-work mineable cryptocurrency system.
The common method for performing a double spend attack is as such:
Execute a transaction T1 sending coins from address A to an exchange address on the current
public chain
Privately mine a block on a parallel forked chain containing a transaction T2 sending coins from
address A to another address
Wait for T1 to be confirmed by the exchange and in the meantime continue to mine privately the
parallel chain at a faster rate than the public chain
Trade the confirmed coins on the exchange, then withdraw funds to private address B
Broadcast to the network the private chain that is longer than the public one
at this point, the network will adopt the attackers private chain as the new public chain (as it is
longer) and miners will start mining on the newly reorganised public chain.
T1 is no longer valid and the attacker already used the coins fraudulently
To summarize, these attacks are possible because the system allows to “overwrite” the current
node view of the blockchain history with the new one after a user accepted a specific transaction
(e.g. after the Exchange waited for the confirmation time). This obeys Satoshi's principles given in
the Bitcoin white paper and implemented by most of PoW cryptocurrencies. Block generation in
PoW consensus is a stochastic process and honest miners can generate blocks in parallel on the
same height (with probability depending on block generation time and network delays), for which
Satoshi Consensus has a simple method to adjudicate by ultimately defaulting to the chain with the
most accumulated work. Thus, pruning shorter branches with lower accumulated work has been
an efficient way to keep the linear sequence of blocks across these distributed systems.
Satoshi's white paper is based on the assumption that a majority of computational power is controlled by
honest nodes ("one-CPU-one-vote" principle), and within this assumption it is almost impossible to
create any reasonable length adversarial branch to implement the double spend attack. Conventional
heuristics have converged on the idea that it is su�cient to wait for several con�rmation blocks to get
very low probability of transaction cancellation.
Many things changed since publishing the Bitcoin white paper. Some of the most signi�cant changes
that jeopardize the longest chain rule, are the appearance of ASIC miners and other computation boost
techniques that completely break the "one-CPU-one-vote" principle. Many cryptocurrencies share the
same mining algorithm, but have extreme di�erences in hashrate, which allows for the computation of
one cryptocurrency mining pool to potentially be used to attack another chain.
Thus, we see that Satoshi's assumption about honest majority of computational power and the
impossibility of long adversarial branches may be broken in the modern environment, evidenced by the
latest 51% attacks on several cryptocurrencies. We need a more advanced and more comprehensive
system that satis�es modern conditions. The core PoW consensus requires corrections to provide secure
services, while still allowing the possibility of honest miners generating con�icting blocks, and legitimate
network delayed synchronization.
To achieve this goal we have identi�ed a modi�cation that signi�cantly increases resources needed for a
successful double spend attack (with no changes in honest hash rate) and shifts the cost of an attack to
become economically senseless. Moreover, the increase of resources needed to make a successful attack
will not require increased con�rmation adjustments by receiving parties, including exchanges.
THE DELAYED BLOCK SUBMISSION PENALTY APPROACH
Considering that private mining is the source of a double spending attack, to make it less effective we
introduce a penalty in the form of a block acceptance delay in relation to the amount of time the block
has been hidden from the public network. Time being measured in block intervals, not temporally via
timestamp.
For example, let’s assume to have the following block reception scenario:
NBi = Normal block
MBi = Malicious block
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Time
Figure 1
In the current system, blocks NB117, NB118, NB119, NB120 are not going to be mined because as soon
as the network received block MB119, the malicious chain becomes the active one and the network
will start mining from block MB119 abandoning the normal chain.
To prevent this, we introduce a fork acceptance delay related to the amount of time the fork has been
hidden from the public network. This delay represents the number of blocks for which the adoption of
the new parallel chain will be postponed. For an adversary it means that he will need to continue to
mine the malicious fork even after revealing it and until the moment when the delay is finished.
For example, let’s consider the following delay function DF. To define DF we first introduce BDi which
effectively represents block reception delay defined as a difference between current main chain
height and height of the received block (e.g. BDmb100=16, BDmb101=15, …, BDmb115=1, BDmb116=0,
BDmb117=-1, BDmb118=-1) or -1 in case the height of the received block is greater than the current main
chain height.
The delay function DF in this case for the whole forked chain will be represented as the SUM of
BDmb[i] values, where i represents indices of the blocks in the forked chain.
In the following example on Figure 2, the delay DF(MB100,...,MB119) = 16+15+14+13+12+....1+0-1-1-1 = 136
- 3 = 133 blocks. So the adversary will need to keep mining his fork after it became public for another
133 blocks until it will be accepted by other nodes.
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Pmb 133 - 132 - 131 - 130
Time
Figure 2
With such a delay function, if we assume for example to adopt a 20 block confirmation time, a 21 block
delay punishment would be 21 * (21 + 1) / 2 = 231, then the minimum number of blocks to be mined to
perform the attack would be 231 + 21 = 252 blocks
Please note that the confirmation time cannot start until a fork is in progress.
Proper tuning of the delay function will complicate an attack to the point of infeasibility since it will
require significantly more resources and will also give an additional opportunity to react on the fork
before its final adoption. The network will learn of the contentious fork and it will have to reduce the
full delay function (DF = 0) before the network defaults to the chain as truth. During this period,
network participants, such as exchanges, can freeze potentially fraudulent deposits until the issue has
been resolved, e.g. either the attempted fraudulent chain is abandoned, or it has successfully driven
DF � 0 through brute force. Honest miners continue to add to the active chain.
The delay function may also consider current mining difficulty (d) to provide better protection for coins
with low hashrate (e.g. increasing delay by a factor inversely proportional to the current difficulty).
Such an augmenting factor to DF’ = DF * f(d) can be ignored by setting f(d) = 1, but any sensible
functional form can be substituted in that has the properties of low impact for the range of honest
simultaneous block contention, then scales exponentially outside any reasonable range for which we
can assign dishonest motives.
Although the introduced feature complicates the whole specter of mining attacks (those executed by
mining private parallel forks), it does not prevent the network from converging in case of a natural split
(e.g. when some parts of the world are completely segregated from each other for some time). The
period of convergence will be longer than the pure longest chain rule, but honest miners will work on
converging chains by driving DF � 0.
Note that if an adversary mines his chain publicly the delay will not be applied, but in this case
everyone can see the fork and is able to take preventive measures (e.g. exchanges will increase
confirmation periods, etc.).
CONCLUSION
The operating environment for cryptocurrency systems has changed significantly from its origins in
2009 when mining power was far more decentralized. Satoshi Consensus, or the longest chain rule,
worked well to adjudicate natural chain forks by simply deferring to the chain with the most
accumulated work. Both technical limitations and economic incentives combined to render the
longest chain rule the dominant strategy for any miner, whether honest or nefarious. This is no longer
the case and public blockchains need to upgrade consensus rules to make it far more costly to
succeed with double spending.
This proposal gives one such method that has a simple form that is, itself, quite promising, but which
can be generalized with a scaling function to make it both technically infeasible and economically
disastrous to attempt double spending. The method permits adjudication of honest miners
simultaneously solving blocks, as well as legitimate network fractures that resolve over time. No
attack vector should ever be considered permanently neutralized, but this method certainly renders
one common method far less likely. Additional research into layered defense strategies, such as
introducing interval block notarization schemes on top of this penalty system could make the system
even more secure and should be investigated.
ACKNOWLEDGEMENTS
SPECIAL THANKS
to the team and community for contributing:
@cronic, Peter Stewart, @ultimateblockage,
Rosario Pabst, Rowan Stone, Gustavo Fialho and Vitalik Demin.
Creatives by Lucy Wang, Linda Baksija and Marko Orčić.
INTRODUCCIÓN
La regla de la cadena más larga o el Consenso de Satoshi, funcionó bien en el entorno
relativamente descentralizado en el que se introdujo en 2009. Desde entonces, los recursos
mineros se han estado concentrando, produciendo una disminución de costos de renta, de tal
manera que la estrategia inicial que había planteado Satoshi ya no es válida para todas las
cadenas de bloque de prueba de trabajo (PoW) que dependen de la regla de cadena más larga.
Como los eventos recientes han demostrado, en algunas circunstancias puede ser
económicamente factible lanzar un ataque del 51% contra las redes públicas operativas de
blockchain. Este documento propone un nuevo ajuste al Consenso de Satoshi que hace que sea
exponencialmente más costoso y por lo tanto menos probable, lanzar ataques para cualquier
sistema de criptomoneda minable de prueba de trabajo (PoW).
El método más común para realizar un ataque de doble gasto es el siguiente:
Ejecutar una transacción T1 que envía monedas desde la dirección A a una dirección de centro
cambiario en la actual cadena de bloques pública.
Minar en privado un bloque en una cadena bifurcada en paralelo a la pública que contiene una
transacción T2 que envía monedas de la dirección A a otra dirección.
Esperar a que T1 sea confirmado por el centro cambiario. Mientras se continua minando de
manera privada la cadena paralela a un ritmo más rápido que la cadena pública.
Cambiar las monedas confirmadas en el centro cambiario, luego retirar los fondos a la dirección
privada B
Transmitir o anunciar a la red la cadena privada que es más larga que la pública.
En este punto, la red adoptará la cadena privada de atacantes como la nueva cadena pública
(ya que es más larga). Los mineros comenzarán a minar en la cadena pública recientemente
reorganizada.
T1 ya no es válida y el atacante ya usó las monedas fraudulentamente
En resumen, estos ataques son posibles porque el sistema permite "sobrescribir" la vista actual del
historial de la cadena de bloques del nodo con una nueva cadena más larga, después de que se
haya aceptado una transacción específica (por ejemplo, después de que el centro cambiario
esperó el tiempo de confirmación). Esto obedece a los principios de Satoshi que estableció en el
libro blanco de Bitcoin e implementados por la mayoría de las criptomonedas de prueba de trabajo
(PoW). La generación de bloques en un consenso de prueba de trabajo (PoW) es un proceso
estocástico y los mineros que son honestos pueden también generar bloques en paralelo a la
misma altura de la otra cadena (dependiendo del tiempo de generación de bloques y retrasos de
red), para lo cual el consenso de Satoshi tiene un método simple para solucionar la presencia de
dos cadenas escogiendo a la cadena con el mayor trabajo acumulado. Por lo tanto, cortando
ramas de la cadena corta con menos trabajo acumulado. Esto ha sido una forma eficiente de
mantener una secuencia lineal de bloques en estos sistemas distribuidos.
El libro blanco de Satoshi se basa en la suposición de que la mayoría del poder de cómputo está
controlado por nodos que son honestos (el principio de "una CPU por cada voto"), dentro de esta
suposición es casi imposible crear una rama adversaria de longitud razonable para implementar el
ataque de doble gasto. El método heurístico convencional consiste en la idea de que es suficiente
esperar varios bloques de confirmación para obtener una probabilidad muy baja de cancelación
de la transacción.
Muchas cosas cambiaron desde la publicación del libro blanco de Bitcoin. Algunos de los cambios
más importantes que ponen en peligro la regla de la cadena más larga son la aparición de los
circuitos integrados ASIC y otras técnicas de cómputo que rompen por completo el principio de
"una CPU por cada voto". Muchas criptomonedas comparten el mismo algoritmo de minería, pero
tienen diferencias muy marcadas en el hashrate , lo que permite que el poder computacional de un
grupo de minería (Mining Pool) pueda ser utilizado para atacar otra cadena.
Por lo tanto, vemos que la suposiciones de Satoshi sobre la mayoría del poder computacional
honesto y la imposibilidad de que existan largas ramas adversarias ya no son validas en el entorno
actual, evidenciado por los últimos ataques del 51% en varias criptomonedas. Necesitamos un
sistema más avanzado y más completo que satisfaga los requerimientos y condiciones actuales.
El consenso de prueba de trabajo (PoW ) central requiere correcciones para proporcionar servicios
seguros, al mismo tiempo que permita la posibilidad de que mineros honestos generen bloques
conflictivos y legitimar la sincronización retrasada de la red.
Para lograr este objetivo, hemos identificado una área de oportunidad que aumentaría
significativamente los recursos necesarios para un ataque exitoso de doble gasto (sin cambios en
la hashrate de mineros honestos). Esta modificación cambiaría el costo de un ataque para que no
tenga sentido económico realizarlo. Además, el aumento de los recursos necesarios para realizar
un ataque exitoso causara que las partes receptoras y los centros cambiarios no tengan que
modificar sus ajustes de cantidad de confirmaciones para liberar una transacción.
EL ENFOQUE DE PENALIZACIÓN POR ENVÍO RETRASADO
Considerando que la minería privada es la fuente de un ataque de doble gasto, para hacerlo
menos efectivo, introducimos una penalización en forma de un retraso de aceptación de bloque en
relación con la cantidad de tiempo que el bloque ha estado oculto de la red pública. El tiempo se
mide en intervalos de bloques, no se medirá temporalmente con una estampa de tiempo.
Supongamos que se tiene el siguiente escenario de recepción de bloque en la cadena:
BNi = Bloque Normal
BMi = Bloque Malicioso
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Tiempo
Figura 1
En el sistema actual, los bloques BN117, BN118, BN119, BN120 no serán minados porque tan pronto
como la red recibió el bloque BM119, la cadena maliciosa se convierte en la activa y la red
comenzará a minar desde el bloque BM119 abandonando la cadena original.
Para evitar esto, presentamos un retraso de aceptación de una bifurcación de la cadena de bloque
actual, proporcional a la cantidad de tiempo que la bifurcación se haya ocultado de la red pública.
Este retraso representa el número de bloques para los cuales se pospondrá la adopción de la
nueva cadena. Para un atacante, significa que tendrá que seguir minando la bifurcación de la
cadena de bloques maliciosa incluso después de revelarlo hasta el momento en que el retraso
haya terminado.
Por ejemplo, consideremos la siguiente función de retraso FR. Para definir FR primero presentamos
el parámetro RBi que representa el retraso de recepción de bloque mediante una diferencia entre
la altura actual de la cadena principal y la altura del bloque recibido (Ejemplo: RBBM100 = 16,
RBBM101 = 15, ..., RBBM115 = 1, RBBM116= 0, RBBM117 = -1, RBBM118 = -1) o -1 en caso de que la altura del
bloque recibido sea mayor que la altura actual de la cadena principal.
La función de retraso FR en este caso para toda la cadena bifurcada se representará como la
SUMA de valores RBBMi, donde i representa los índices de los bloques en la cadena bifurcada.
En el siguiente ejemplo de la Figura 2, el valor de FR (MB100, ..., MB119) = 16 + 15 + 14 + 13 + 12 + ....
1 + 0-1-1-1 = 136 - 3 = 133 bloques. Por lo tanto, el atacante tendrá que seguir minando su bifurcación
después de que se haya hecho pública por otros 133 bloques para que pueda ser aceptada por
otros nodos como la cadena principal.
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Pmb 133 - 132 - 131 - 130
Tiempo
Figure 2.
Con la función de retraso presentado anteriormente, si suponemos, que se adoptara un tiempo de
confirmación de 20 bloques, un castigo de demora de 21 bloques sería 21 * (21 + 1) / 2 = 231, que
significa que el número mínimo de bloques que se tendrán que minar para poder realizar el ataque
serían 231 + 21 = 252 bloques.
Tenga en cuenta que el tiempo de confirmación no puede comenzar hasta que una bifurcación esté
en progreso.
El ajuste adecuado de la función de retardo complicará un ataque hasta el punto de que no sea
factible ya que requerirá una cantidad de recursos significativamente mayor y también dará una
oportunidad adicional de reaccionar en la bifurcación de la cadena de bloques antes de su
adopción final. La red se enterará sobre la bifurcación paralela y el atacante deberá seguir
minando hasta reducir la función de retardo completamente (DF = 0) antes de que la red adopte la
cadena paralela como la más larga. Durante este período, los participantes de la red, como los
centros cambiarios, pueden congelar depósitos potencialmente fraudulentos hasta que se
resuelva el problema. Supongamos que el intento de cadena fraudulenta se abandona, o se ha
conducido con éxito el tiempo de retraso (DF = 0) a través de la fuerza bruta. Los mineros honestos
continuarán agregando a la cadena activa mientras el tiempo de retraso se consume.
La función de retraso también puede considerar la dificultad actual de minería (d) para
proporcionar una mejor protección para las monedas con bajo índice de hashrate (por ejemplo, el
aumento de la función de retraso se vería afectada de manera inversamente proporcional a la
dificultad actual de minado). Tal factor de aumento se podría ver reflejado de tal manera: DF'= DF
* f (d) puede ignorarse estableciendo f (d) = 1, pero puede sustituirse acuerdo a las necesidades,
mismo que tiene las propiedades de bajo impacto para el rango de bifurcación paralela de bloque
honesta, también puede escalar exponencialmente fuera de cualquier rango razonable para los
mineros deshonestos.
Aunque la característica introducida complica todo el espectro de ataques de minería (los que
ejecutan minando bifurcaciones paralelas de manera privada), no impide que la red adopte una
nueva cadena de bloques más larga en caso de una división natural (por ejemplo, cuando en
algunas partes del mundo están completamente segregadas entre sí por algún tiempo
determinado). El período de adopción de una cadena más larga será más prolongado que la regla
del consenso de Satoshi, pero los mineros honestos trabajarán en la cadena paralela hasta
conducir a DF=0.
Tenga en cuenta que si un adversario mina su cadena públicamente, no se aplicará la demora, pero en
este caso todos pueden ver la bifurcación y tomar medidas preventivas (por ejemplo, los centros
cambiarios aumentarán los períodos de confirmación, etc.).
CONCLUSIÓN
El entorno operativo para las criptomonedas ha cambiado significativamente desde sus orígenes en 2009,
cuando la minería estaba mucho más descentralizada. El Consenso de Satoshi, o la regla de la cadena
más larga, funcionó bien para adjudicar las bifurcaciones de cadenas naturales al simplemente adoptar
la cadena con el mayor trabajo acumulado. Tanto las limitaciones técnicas como los incentivos
económicos se combinan para hacer que la cadena más larga gobierne la estrategia dominante para
cualquier minero, ya sea honesto o con malas intenciones. Este ya no es el caso y las cadenas de bloque
públicas necesitan actualizar las reglas de consenso para que sea mucho más costoso tener éxito con los
ataques de doble gasto.
Esta propuesta brinda uno de esos métodos que tiene una forma simple que, en sí misma, es bastante
prometedora, pero que se puede generalizar con una función de escalado para que sea técnicamente
inviable y económicamente desastroso para intentar el gasto doble. El método permite que los que minan
de manera honesta puedan resolver bloques de manera paralela, así como en el caso de las fracturas de
red legítimas que se resuelven con el tiempo. Ninguna estrategia de ataque debe considerarse
neutralizada permanentemente, pero este método ciertamente hace menos probable un método común
de ataque. La investigación adicional en estrategias de defensa en capas, como la introducción de
esquemas de notarización de bloque de intervalo en la parte superior de este sistema de penalización
podría hacer que el sistema sea aún más seguro y una investigación de implementación se debería de
llevar acabo.
6
INTRODUCTION
The longest chain rule, or Satoshi Consensus, worked well in the relatively decentralized
environment in which it was introduced in 2009. Mining resources have since concentrated and
dropped in cost for lease, such that the original dominant strategy of playing by the rules no longer
holds for all proof-of-work (PoW) blockchains that rely on the longest chain rule. As recent events
have proven, in some circumstances it can be economically feasible to launch 51% attacks on
operational public blockchain networks. This paper proposes a novel adjustment to Satoshi
Consensus that makes it exponentially more costly, and hence unlikely, to launch such attacks for
any proof-of-work mineable cryptocurrency system.
The common method for performing a double spend attack is as such:
Execute a transaction T1 sending coins from address A to an exchange address on the current
public chain
Privately mine a block on a parallel forked chain containing a transaction T2 sending coins from
address A to another address
Wait for T1 to be confirmed by the exchange and in the meantime continue to mine privately the
parallel chain at a faster rate than the public chain
Trade the confirmed coins on the exchange, then withdraw funds to private address B
Broadcast to the network the private chain that is longer than the public one
at this point, the network will adopt the attackers private chain as the new public chain (as it is
longer) and miners will start mining on the newly reorganised public chain.
T1 is no longer valid and the attacker already used the coins fraudulently
To summarize, these attacks are possible because the system allows to “overwrite” the current
node view of the blockchain history with the new one after a user accepted a specific transaction
(e.g. after the Exchange waited for the confirmation time). This obeys Satoshi's principles given in
the Bitcoin white paper and implemented by most of PoW cryptocurrencies. Block generation in
PoW consensus is a stochastic process and honest miners can generate blocks in parallel on the
same height (with probability depending on block generation time and network delays), for which
Satoshi Consensus has a simple method to adjudicate by ultimately defaulting to the chain with the
most accumulated work. Thus, pruning shorter branches with lower accumulated work has been
an efficient way to keep the linear sequence of blocks across these distributed systems.
Satoshi's white paper is based on the assumption that a majority of computational power is controlled by
honest nodes ("one-CPU-one-vote" principle), and within this assumption it is almost impossible to
create any reasonable length adversarial branch to implement the double spend attack. Conventional
heuristics have converged on the idea that it is su�cient to wait for several con�rmation blocks to get
very low probability of transaction cancellation.
Many things changed since publishing the Bitcoin white paper. Some of the most signi�cant changes
that jeopardize the longest chain rule, are the appearance of ASIC miners and other computation boost
techniques that completely break the "one-CPU-one-vote" principle. Many cryptocurrencies share the
same mining algorithm, but have extreme di�erences in hashrate, which allows for the computation of
one cryptocurrency mining pool to potentially be used to attack another chain.
Thus, we see that Satoshi's assumption about honest majority of computational power and the
impossibility of long adversarial branches may be broken in the modern environment, evidenced by the
latest 51% attacks on several cryptocurrencies. We need a more advanced and more comprehensive
system that satis�es modern conditions. The core PoW consensus requires corrections to provide secure
services, while still allowing the possibility of honest miners generating con�icting blocks, and legitimate
network delayed synchronization.
To achieve this goal we have identi�ed a modi�cation that signi�cantly increases resources needed for a
successful double spend attack (with no changes in honest hash rate) and shifts the cost of an attack to
become economically senseless. Moreover, the increase of resources needed to make a successful attack
will not require increased con�rmation adjustments by receiving parties, including exchanges.
THE DELAYED BLOCK SUBMISSION PENALTY APPROACH
Considering that private mining is the source of a double spending attack, to make it less effective we
introduce a penalty in the form of a block acceptance delay in relation to the amount of time the block
has been hidden from the public network. Time being measured in block intervals, not temporally via
timestamp.
For example, let’s assume to have the following block reception scenario:
NBi = Normal block
MBi = Malicious block
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Time
Figure 1
In the current system, blocks NB117, NB118, NB119, NB120 are not going to be mined because as soon
as the network received block MB119, the malicious chain becomes the active one and the network
will start mining from block MB119 abandoning the normal chain.
To prevent this, we introduce a fork acceptance delay related to the amount of time the fork has been
hidden from the public network. This delay represents the number of blocks for which the adoption of
the new parallel chain will be postponed. For an adversary it means that he will need to continue to
mine the malicious fork even after revealing it and until the moment when the delay is finished.
For example, let’s consider the following delay function DF. To define DF we first introduce BDi which
effectively represents block reception delay defined as a difference between current main chain
height and height of the received block (e.g. BDmb100=16, BDmb101=15, …, BDmb115=1, BDmb116=0,
BDmb117=-1, BDmb118=-1) or -1 in case the height of the received block is greater than the current main
chain height.
The delay function DF in this case for the whole forked chain will be represented as the SUM of
BDmb[i] values, where i represents indices of the blocks in the forked chain.
In the following example on Figure 2, the delay DF(MB100,...,MB119) = 16+15+14+13+12+....1+0-1-1-1 = 136
- 3 = 133 blocks. So the adversary will need to keep mining his fork after it became public for another
133 blocks until it will be accepted by other nodes.
NB100 - NB101 - NB102 - NB103 - NB104 - [...] - NB116 - NB117 - NB118 - NB119 - NB120
MB100
MB101
MB102
[ ... ]
MB119 - MB120 - MB121 - MB122
Pmb 133 - 132 - 131 - 130
Time
Figure 2
With such a delay function, if we assume for example to adopt a 20 block confirmation time, a 21 block
delay punishment would be 21 * (21 + 1) / 2 = 231, then the minimum number of blocks to be mined to
perform the attack would be 231 + 21 = 252 blocks
Please note that the confirmation time cannot start until a fork is in progress.
Proper tuning of the delay function will complicate an attack to the point of infeasibility since it will
require significantly more resources and will also give an additional opportunity to react on the fork
before its final adoption. The network will learn of the contentious fork and it will have to reduce the
full delay function (DF = 0) before the network defaults to the chain as truth. During this period,
network participants, such as exchanges, can freeze potentially fraudulent deposits until the issue has
been resolved, e.g. either the attempted fraudulent chain is abandoned, or it has successfully driven
DF � 0 through brute force. Honest miners continue to add to the active chain.
The delay function may also consider current mining difficulty (d) to provide better protection for coins
with low hashrate (e.g. increasing delay by a factor inversely proportional to the current difficulty).
Such an augmenting factor to DF’ = DF * f(d) can be ignored by setting f(d) = 1, but any sensible
functional form can be substituted in that has the properties of low impact for the range of honest
simultaneous block contention, then scales exponentially outside any reasonable range for which we
can assign dishonest motives.
Although the introduced feature complicates the whole specter of mining attacks (those executed by
mining private parallel forks), it does not prevent the network from converging in case of a natural split
(e.g. when some parts of the world are completely segregated from each other for some time). The
period of convergence will be longer than the pure longest chain rule, but honest miners will work on
converging chains by driving DF � 0.
Note that if an adversary mines his chain publicly the delay will not be applied, but in this case
everyone can see the fork and is able to take preventive measures (e.g. exchanges will increase
confirmation periods, etc.).
CONCLUSION
The operating environment for cryptocurrency systems has changed significantly from its origins in
2009 when mining power was far more decentralized. Satoshi Consensus, or the longest chain rule,
worked well to adjudicate natural chain forks by simply deferring to the chain with the most
accumulated work. Both technical limitations and economic incentives combined to render the
longest chain rule the dominant strategy for any miner, whether honest or nefarious. This is no longer
the case and public blockchains need to upgrade consensus rules to make it far more costly to
succeed with double spending.
This proposal gives one such method that has a simple form that is, itself, quite promising, but which
can be generalized with a scaling function to make it both technically infeasible and economically
disastrous to attempt double spending. The method permits adjudication of honest miners
simultaneously solving blocks, as well as legitimate network fractures that resolve over time. No
attack vector should ever be considered permanently neutralized, but this method certainly renders
one common method far less likely. Additional research into layered defense strategies, such as
introducing interval block notarization schemes on top of this penalty system could make the system
even more secure and should be investigated.
ACKNOWLEDGEMENTS
SPECIAL THANKS
to the team and community for contributing:
@cronic, Peter Stewart, @ultimateblockage,
Rosario Pabst, Rowan Stone, Gustavo Fialho and Vitalik Demin.
Creatives by Lucy Wang, Linda Baksija and Marko Orčić.
INTRODUCCIÓN
La regla de la cadena más larga o el Consenso de Satoshi, funcionó bien en el entorno
relativamente descentralizado en el que se introdujo en 2009. Desde entonces, los recursos
mineros se han estado concentrando, produciendo una disminución de costos de renta, de tal
manera que la estrategia inicial que había planteado Satoshi ya no es válida para todas las
cadenas de bloque de prueba de trabajo (PoW) que dependen de la regla de cadena más larga.
Como los eventos recientes han demostrado, en algunas circunstancias puede ser
económicamente factible lanzar un ataque del 51% contra las redes públicas operativas de
blockchain. Este documento propone un nuevo ajuste al Consenso de Satoshi que hace que sea
exponencialmente más costoso y por lo tanto menos probable, lanzar ataques para cualquier
sistema de criptomoneda minable de prueba de trabajo (PoW).
El método más común para realizar un ataque de doble gasto es el siguiente:
Ejecutar una transacción T1 que envía monedas desde la dirección A a una dirección de centro
cambiario en la actual cadena de bloques pública.
Minar en privado un bloque en una cadena bifurcada en paralelo a la pública que contiene una
transacción T2 que envía monedas de la dirección A a otra dirección.
Esperar a que T1 sea confirmado por el centro cambiario. Mientras se continua minando de
manera privada la cadena paralela a un ritmo más rápido que la cadena pública.
Cambiar las monedas confirmadas en el centro cambiario, luego retirar los fondos a la dirección
privada B
Transmitir o anunciar a la red la cadena privada que es más larga que la pública.
En este punto, la red adoptará la cadena privada de atacantes como la nueva cadena pública
(ya que es más larga). Los mineros comenzarán a minar en la cadena pública recientemente
reorganizada.
T1 ya no es válida y el atacante ya usó las monedas fraudulentamente
En resumen, estos ataques son posibles porque el sistema permite "sobrescribir" la vista actual del
historial de la cadena de bloques del nodo con una nueva cadena más larga, después de que se
haya aceptado una transacción específica (por ejemplo, después de que el centro cambiario
esperó el tiempo de confirmación). Esto obedece a los principios de Satoshi que estableció en el
libro blanco de Bitcoin e implementados por la mayoría de las criptomonedas de prueba de trabajo
(PoW). La generación de bloques en un consenso de prueba de trabajo (PoW) es un proceso
estocástico y los mineros que son honestos pueden también generar bloques en paralelo a la
misma altura de la otra cadena (dependiendo del tiempo de generación de bloques y retrasos de
red), para lo cual el consenso de Satoshi tiene un método simple para solucionar la presencia de
dos cadenas escogiendo a la cadena con el mayor trabajo acumulado. Por lo tanto, cortando
ramas de la cadena corta con menos trabajo acumulado. Esto ha sido una forma eficiente de
mantener una secuencia lineal de bloques en estos sistemas distribuidos.
El libro blanco de Satoshi se basa en la suposición de que la mayoría del poder de cómputo está
controlado por nodos que son honestos (el principio de "una CPU por cada voto"), dentro de esta
suposición es casi imposible crear una rama adversaria de longitud razonable para implementar el
ataque de doble gasto. El método heurístico convencional consiste en la idea de que es suficiente
esperar varios bloques de confirmación para obtener una probabilidad muy baja de cancelación
de la transacción.
Muchas cosas cambiaron desde la publicación del libro blanco de Bitcoin. Algunos de los cambios
más importantes que ponen en peligro la regla de la cadena más larga son la aparición de los
circuitos integrados ASIC y otras técnicas de cómputo que rompen por completo el principio de
"una CPU por cada voto". Muchas criptomonedas comparten el mismo algoritmo de minería, pero
tienen diferencias muy marcadas en el hashrate , lo que permite que el poder computacional de un
grupo de minería (Mining Pool) pueda ser utilizado para atacar otra cadena.
Por lo tanto, vemos que la suposiciones de Satoshi sobre la mayoría del poder computacional
honesto y la imposibilidad de que existan largas ramas adversarias ya no son validas en el entorno
actual, evidenciado por los últimos ataques del 51% en varias criptomonedas. Necesitamos un
sistema más avanzado y más completo que satisfaga los requerimientos y condiciones actuales.
El consenso de prueba de trabajo (PoW ) central requiere correcciones para proporcionar servicios
seguros, al mismo tiempo que permita la posibilidad de que mineros honestos generen bloques
conflictivos y legitimar la sincronización retrasada de la red.
Para lograr este objetivo, hemos identificado una área de oportunidad que aumentaría
significativamente los recursos necesarios para un ataque exitoso de doble gasto (sin cambios en
la hashrate de mineros honestos). Esta modificación cambiaría el costo de un ataque para que no
tenga sentido económico realizarlo. Además, el aumento de los recursos necesarios para realizar
un ataque exitoso causara que las partes receptoras y los centros cambiarios no tengan que
modificar sus ajustes de cantidad de confirmaciones para liberar una transacción.
EL ENFOQUE DE PENALIZACIÓN POR ENVÍO RETRASADO
Considerando que la minería privada es la fuente de un ataque de doble gasto, para hacerlo
menos efectivo, introducimos una penalización en forma de un retraso de aceptación de bloque en
relación con la cantidad de tiempo que el bloque ha estado oculto de la red pública. El tiempo se
mide en intervalos de bloques, no se medirá temporalmente con una estampa de tiempo.
Supongamos que se tiene el siguiente escenario de recepción de bloque en la cadena:
BNi = Bloque Normal
BMi = Bloque Malicioso
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Tiempo
Figura 1
En el sistema actual, los bloques BN117, BN118, BN119, BN120 no serán minados porque tan pronto
como la red recibió el bloque BM119, la cadena maliciosa se convierte en la activa y la red
comenzará a minar desde el bloque BM119 abandonando la cadena original.
Para evitar esto, presentamos un retraso de aceptación de una bifurcación de la cadena de bloque
actual, proporcional a la cantidad de tiempo que la bifurcación se haya ocultado de la red pública.
Este retraso representa el número de bloques para los cuales se pospondrá la adopción de la
nueva cadena. Para un atacante, significa que tendrá que seguir minando la bifurcación de la
cadena de bloques maliciosa incluso después de revelarlo hasta el momento en que el retraso
haya terminado.
Por ejemplo, consideremos la siguiente función de retraso FR. Para definir FR primero presentamos
el parámetro RBi que representa el retraso de recepción de bloque mediante una diferencia entre
la altura actual de la cadena principal y la altura del bloque recibido (Ejemplo: RBBM100 = 16,
RBBM101 = 15, ..., RBBM115 = 1, RBBM116= 0, RBBM117 = -1, RBBM118 = -1) o -1 en caso de que la altura del
bloque recibido sea mayor que la altura actual de la cadena principal.
La función de retraso FR en este caso para toda la cadena bifurcada se representará como la
SUMA de valores RBBMi, donde i representa los índices de los bloques en la cadena bifurcada.
En el siguiente ejemplo de la Figura 2, el valor de FR (MB100, ..., MB119) = 16 + 15 + 14 + 13 + 12 + ....
1 + 0-1-1-1 = 136 - 3 = 133 bloques. Por lo tanto, el atacante tendrá que seguir minando su bifurcación
después de que se haya hecho pública por otros 133 bloques para que pueda ser aceptada por
otros nodos como la cadena principal.
BN100 - BN101 - BN102 - BN103 - BN104 - [...] - BN116 - BN117 - BN118 - BN119 - BN120
BM100
BM101
BM102
[ ... ]
BM119 - BM120 - BM121 - BM122
Pmb 133 - 132 - 131 - 130
Tiempo
Figure 2.
Con la función de retraso presentado anteriormente, si suponemos, que se adoptara un tiempo de
confirmación de 20 bloques, un castigo de demora de 21 bloques sería 21 * (21 + 1) / 2 = 231, que
significa que el número mínimo de bloques que se tendrán que minar para poder realizar el ataque
serían 231 + 21 = 252 bloques.
Tenga en cuenta que el tiempo de confirmación no puede comenzar hasta que una bifurcación esté
en progreso.
El ajuste adecuado de la función de retardo complicará un ataque hasta el punto de que no sea
factible ya que requerirá una cantidad de recursos significativamente mayor y también dará una
oportunidad adicional de reaccionar en la bifurcación de la cadena de bloques antes de su
adopción final. La red se enterará sobre la bifurcación paralela y el atacante deberá seguir
minando hasta reducir la función de retardo completamente (DF = 0) antes de que la red adopte la
cadena paralela como la más larga. Durante este período, los participantes de la red, como los
centros cambiarios, pueden congelar depósitos potencialmente fraudulentos hasta que se
resuelva el problema. Supongamos que el intento de cadena fraudulenta se abandona, o se ha
conducido con éxito el tiempo de retraso (DF = 0) a través de la fuerza bruta. Los mineros honestos
continuarán agregando a la cadena activa mientras el tiempo de retraso se consume.
La función de retraso también puede considerar la dificultad actual de minería (d) para
proporcionar una mejor protección para las monedas con bajo índice de hashrate (por ejemplo, el
aumento de la función de retraso se vería afectada de manera inversamente proporcional a la
dificultad actual de minado). Tal factor de aumento se podría ver reflejado de tal manera: DF'= DF
* f (d) puede ignorarse estableciendo f (d) = 1, pero puede sustituirse acuerdo a las necesidades,
mismo que tiene las propiedades de bajo impacto para el rango de bifurcación paralela de bloque
honesta, también puede escalar exponencialmente fuera de cualquier rango razonable para los
mineros deshonestos.
Aunque la característica introducida complica todo el espectro de ataques de minería (los que
ejecutan minando bifurcaciones paralelas de manera privada), no impide que la red adopte una
nueva cadena de bloques más larga en caso de una división natural (por ejemplo, cuando en
algunas partes del mundo están completamente segregadas entre sí por algún tiempo
determinado). El período de adopción de una cadena más larga será más prolongado que la regla
del consenso de Satoshi, pero los mineros honestos trabajarán en la cadena paralela hasta
conducir a DF=0.
Tenga en cuenta que si un adversario mina su cadena públicamente, no se aplicará la demora, pero en
este caso todos pueden ver la bifurcación y tomar medidas preventivas (por ejemplo, los centros
cambiarios aumentarán los períodos de confirmación, etc.).
CONCLUSIÓN
El entorno operativo para las criptomonedas ha cambiado significativamente desde sus orígenes en 2009,
cuando la minería estaba mucho más descentralizada. El Consenso de Satoshi, o la regla de la cadena
más larga, funcionó bien para adjudicar las bifurcaciones de cadenas naturales al simplemente adoptar
la cadena con el mayor trabajo acumulado. Tanto las limitaciones técnicas como los incentivos
económicos se combinan para hacer que la cadena más larga gobierne la estrategia dominante para
cualquier minero, ya sea honesto o con malas intenciones. Este ya no es el caso y las cadenas de bloque
públicas necesitan actualizar las reglas de consenso para que sea mucho más costoso tener éxito con los
ataques de doble gasto.
Esta propuesta brinda uno de esos métodos que tiene una forma simple que, en sí misma, es bastante
prometedora, pero que se puede generalizar con una función de escalado para que sea técnicamente
inviable y económicamente desastroso para intentar el gasto doble. El método permite que los que minan
de manera honesta puedan resolver bloques de manera paralela, así como en el caso de las fracturas de
red legítimas que se resuelven con el tiempo. Ninguna estrategia de ataque debe considerarse
neutralizada permanentemente, pero este método ciertamente hace menos probable un método común
de ataque. La investigación adicional en estrategias de defensa en capas, como la introducción de
esquemas de notarización de bloque de intervalo en la parte superior de este sistema de penalización
podría hacer que el sistema sea aún más seguro y una investigación de implementación se debería de
llevar acabo.
7
RECONOCIMIENTOS
AGRACEDIMIENTOS ESPECIALES A
el equipo y a la comunidad por contribuir:
@cronic, Peter Stewart, @ultimateblockage,
Rosario Pabst, Rowan Stone, Gustavo Fialho and Vitalik Demin.
Diseño: por Lucy Wang, Linda Baksija and Marko Orčić.
Traducido al Español por: @UANL91
8