Metamask qué es el nonce
El nonce es un componente importante de una transacción, es un atributo de una dirección que representa el número de transacciones enviadas por esa dirección. Los nonces actúan como contadores que llevan la cuenta del número de transacciones enviadas por una cuenta.
En el caso 1, los nonces permiten elegir el orden en el que se ejecutarán las transacciones simplemente asignando nonces que reflejen el orden en el que queremos que se procesen (0 para la primera 1 para la segunda, etc…).
En el caso 2, los nonces evitan que un atacante copie una de nuestras transacciones y la reenvíe hasta vaciar la cuenta (ataque de repetición). Los nonces hacen que cada transacción sea única: sólo puede haber una única transacción con un nonce específico, una vez confirmada no puede ser “reproducida”.
Hacer un seguimiento de los nonces es sencillo si todas las transacciones se originan en una única fuente/cartera que gestiona la cuenta, pero las cosas pueden complicarse si la cuenta es gestionada por procesos concurrentes.
Tomemos un ejemplo con una primera transacción que tendría el nonce 123 y una segunda transacción con el nonce 126. En ese ejemplo, la transacción con el nonce 126 no se procesaría hasta que se enviaran las transacciones con los nonces 124 y 125.
Cancelar una transacción en Ethereum
Un nonce es la abreviatura de “number only used once” (número que sólo se usa una vez), que, en el contexto de la minería de criptomonedas, es un número que se añade a un bloque cifrado o hash en una cadena de bloques que, cuando se rehace, cumple con las restricciones de nivel de dificultad. El nonce es el número que los mineros de la cadena de bloques están resolviendo. Cuando se encuentra la solución, los mineros de la cadena de bloques reciben criptomonedas a cambio.
La cadena de bloques es la piedra angular de la criptomoneda. Para mantener la seguridad de la cadena de bloques, los datos de los bloques anteriores se cifran o se convierten en una serie de números y letras. Esto se hace procesando la entrada del bloque a través de una función, que produce una salida de una longitud fija.
La función utilizada para generar el hash es determinista, lo que significa que producirá el mismo resultado cada vez que se utilice la misma entrada. También significa que la función puede generar un hash de entrada de forma eficiente, dificulta la determinación de la entrada (lo que conduce a la seguridad de la cadena de bloques), y hace que pequeños cambios en la entrada den como resultado un hash muy diferente. Este complejo sistema crea la red de privacidad de blockchain.
Cola de txn pendiente
es decir, si hay una transacción con nonce 3 relacionada con alguna cuenta en el txpool y llega alguna transacción con nonce 4, entonces esa transacción no se minará hasta que se mine la transacción con nonce 3.
i) El valor del nonce está relacionado con una dirección, ¿verdad? Así que dos direcciones pueden tener el mismo nonce al mismo tiempo, es decir, la cuenta con la dirección A puede tener el último nonce 2, y la cuenta con la dirección B también puede tener el último nonce 2.
i) El valor del nonce está relacionado con una dirección, ¿verdad? Así que dos direcciones pueden tener el mismo nonce al mismo tiempo, es decir, la cuenta con la dirección A puede tener el último nonce 2 y la cuenta con la dirección B también puede tener el último nonce 2.
Cuando los nodos se sincronizan con blockchain, eventualmente lo harán. Dado que un nodo acepta la cadena válida más larga, no hay problema de que todos los nodos no se actualicen con el último valor de nonce en el momento en que se realiza una transacción. Una vez sincronizados, tendrán el mismo valor nonce para la cuenta. (Es obvio porque en una cadena de bloques se supone que todos los nodos tienen los mismos datos de bloque. Así que después de una cierta cantidad de tiempo se puede estar bastante seguro de que la transacción está confirmada, de ahí el valor nonce)
Web3 obtiene el nonce actual
Estrictamente hablando, el nonce es un atributo de la dirección de origen; es decir, sólo tiene significado en el contexto de la dirección de envío. Sin embargo, el nonce no se almacena explícitamente como parte del estado de una cuenta en la cadena de bloques. En su lugar, se calcula dinámicamente, contando el número de transacciones confirmadas que se han originado desde una dirección.
Hay dos escenarios en los que la existencia de un nonce contador de transacciones es importante: la característica de usabilidad de las transacciones que se incluyen en el orden de creación, y la característica vital de la protección contra la duplicación de transacciones. Veamos un escenario de ejemplo para cada uno de ellos:
En resumen, es importante tener en cuenta que el uso del nonce es realmente vital para un protocolo basado en cuentas, en contraste con el mecanismo de “Salida de transacciones no gastadas” (UTXO) del protocolo Bitcoin.
Su monedero mantendrá un registro de nonces para cada dirección que gestione. Es bastante sencillo hacerlo, siempre y cuando sólo estés originando transacciones desde un único punto. Digamos que está escribiendo su propio software de monedero o alguna otra aplicación que origina transacciones. ¿Cómo se hace un seguimiento de los nonces?