¿Qué sucede si escribo mal la dirección al realizar un pago?

Envié bitcoins a una dirección, pero creo que cometí un error al copiarlo. ¿A dónde fueron estos bitcoins? ¿Puedo recuperarlos?

Respuestas (7)

Bitcoin es muy resistente a los errores tipográficos porque las direcciones contienen un código de verificación incorporado . Entonces, si simplemente hubiera escrito mal algunas de las letras o números en la dirección, es poco probable que el cliente le hubiera permitido enviarlos. Sin embargo, si pegó una dirección diferente y válida, las monedas ya se transfieren a ella de forma permanente. En este escenario, Bitcoin funciona de manera muy similar al efectivo : no hay forma de recuperarlo después de regalarlo.

Una nota para cualquiera que pase: hoy en día (2020) el formato de dirección habitual (bech32) es aún más resistente a los errores tipográficos.

Es muy poco probable, cometió un error tipográfico y aún pudo enviar monedas. Hay una diferencia entre una dirección inválida y una dirección incorrecta.

Todas las billeteras/clientes de bitcoin verifican si las direcciones son válidas.
Las direcciones de Bitcoin son PubKeyHash codificadas en Base58 con un valor de versión y una suma de verificación. La suma de comprobación son los 32 bits más a la izquierda de un hash doble de PubKeyHash. El formato de la dirección a menudo se denomina Base58Checked en los documentos técnicos.

Dado que la suma de verificación es de 32 bits, la probabilidad de ingresar una dirección incorrecta que aún se decodificará en un PubKeyHash incorrecto pero válido es aproximadamente 1 en 4.3 mil millones. Entonces, en promedio, 4,294,967,295 de 4,294,967,296 veces un error tipográfico producirá una dirección incorrecta Y no válida. Cuando se decodifica, PubKeyHash no producirá la suma de verificación adecuada, el cliente/billetera detectará el error y no se creará la transacción.

Para perder monedas por un error tipográfico, necesitaría producir no solo una dirección no válida, sino una que sea válida pero incorrecta y las probabilidades de que eso suceda son casi cero.

En ese caso extremadamente improbable (1 en 4300 millones es 10 veces menos probable que ganar la lotería PowerBall de EE. UU.), la transacción será irreversible y solo podrá gastarla la persona que tiene la clave privada para la dirección/clave pública incorrecta. Dada la cantidad de claves privadas posibles, es casi seguro que nadie tenga o tenga nunca esas claves privadas y los fondos seguirán siendo inutilizables para siempre.

Entonces, ¿es correcto pensar que si accidentalmente emitió un destinatario inválido, no debería ser posible gastarlo dos veces y verificarlo más rápido, ya que será rechazado por la mayoría de los mineros? ¿O es realmente imposible enviar a una dirección no válida (pensé que eso era lo que hacía la gente para escribir mensajes en la cadena de bloques?)
@Murch, es imposible enviar a una dirección no válida. Ningún cliente (compatible) creará las transacciones. Ningún nodo (compatible) retransmitirá la transacción y ningún minero (compatible) lo incluirá en un bloque. Si un minero lo hiciera, el bloque sería considerado inválido por todos los demás nodos. Cuando las personas quieren enviar monedas a una dirección donde la clave es desconocida, crean una dirección válida calculando la suma de verificación adecuada para la dirección "falsa" a la que quieren enviar las monedas.

Las transacciones de Bitcoin son irreversibles. Si estaba conectado a la red cuando realizó la transacción, sus monedas se pierden.

Si no estaba conectado a la red, puede restaurar su wallet.date iniciar bitcoin con la --rescanopción. Esto deshará efectivamente la transacción (que aún no se ha comprometido con la cadena de bloques).

¿Qué sucede si me conecté a la red, pero rápidamente (es decir, antes de que mi transacción se convierta en un bloque) restaure mi wallet.dat y --rescan, luego gaste las mismas monedas nuevamente, pero con una tarifa de transacción mayor? ¿Existe la posibilidad de que se extraiga la nueva transacción en lugar de la anterior?
no, muy improbable. Bitcoin da preferencia a la primera transacción vista, cualquier transacción conflictiva que venga más tarde se ignora y no se transmite, incluso si tienen tarifas más altas.
@ChrisMoore: Lo que dijo el nanotubo y, por supuesto, si esto fuera posible, también sería extremadamente fácil gastar el doble.
@ChrisMoore: según tengo entendido, los mineros are encourageddan prioridad a las primeras transacciones, pero el protocolo no lo exige.
Si la tarifa de transacción de la transacción de 'reemplazo' fuera lo suficientemente alta, algunos mineros podrían verse tentados a ignorar la primera transacción y buscar la recompensa más alta, supongo. De cualquier manera, es mejor que los destinatarios de los pagos de Bitcoin esperen una confirmación si el monto del pago es significativo.
@ripper234 si bien eso es cierto, un minero podría estar ejecutando bitcoind modificado y priorizar los gastos dobles por tarifa en lugar de verlo por primera vez, el problema es llevar esa transacción a un minero (y uno dispuesto a reducir la seguridad de la red por una pequeña ganancia). La gran mayoría de los nodos no están conectados directamente a un minero y si todos los pares a los que está conectado ejecutan un código compatible, rechazarán el doble gasto y no lo reenviarán. Esto significa que un minero codicioso pero dispuesto nunca verá la transacción para intentar incluir la segunda en un bloque.

La dirección de Bitcoin incluye sumas de verificación, por lo que es menos probable que haya cometido un error tipográfico casual e ingresado una dirección de Bitcoin válida. Sin embargo, si la dirección es válida y también incorrecta, es probable que las monedas se destruyan efectivamente. Puede verificar la dirección en el explorador de cadenas de bloques . Puede ayudarlo a determinar si la dirección era una dirección válida (por ejemplo, la de un amigo, en el caso de pegar la dirección incorrecta), o una a la que pueda tener acceso en otro lugar.

Pero debido a que las transacciones son irreversibles, no hay forma de "retirarlas" o cancelar la transacción.

Las direcciones de Bitcoin contienen un valor de verificación: se agregan datos adicionales calculados como una función del resto, por lo que es poco probable que los errores sean direcciones aceptables. Las direcciones 1x y 3x usan un hash criptográfico de 32 bits para su valor de verificación y, como resultado, cualquier dirección aleatoria bien formateada tiene aproximadamente una probabilidad de 1 en 2^32 de ser aceptada.

Pero cuando los usuarios cometen errores, generalmente no producen cadenas aleatorias, tienden a cometer errores tipográficos en los que se reemplaza una pequeña cantidad de caracteres con alternativas que son visualmente similares, audiblemente similares, con posiciones de teclado similares o variaciones de mayúsculas y minúsculas. La transposición de caracteres adyacentes también es más probable que los errores aleatorios. Las direcciones 1x/3x están diseñadas con una mejora para los posibles errores: el juego de caracteres base58 excluye una cantidad de caracteres visualmente similares.

En promedio, uno de estos errores probables solo se aceptará 1 de cada 2^32 veces, pero a veces una dirección dada es más vulnerable ya que el rendimiento de detección es solo un promedio. Por ejemplo, podría tener una dirección en la que haya uno o más lugares diferentes en los que podría cometerse un error. Esta no es una preocupación práctica, ya que estos casos son poco probables, pero es un área que podría mejorarse.

BIP173 introdujo direcciones de estilo BC1x (también llamadas bech32). Las direcciones BC1 usan un conjunto de caracteres más pequeño que no tiene mayúsculas y minúsculas, lo que elimina por completo una de las principales causas de errores de transcripción. Al igual que base-58, el conjunto de caracteres bech32 también excluye algunos caracteres visualmente confusos (además de todos los casos mixtos).

Las direcciones BC1 también tienen un valor de verificación, pero son 30 bits en lugar de 32 bits. La verificación de 30 bits en las direcciones BC1, aunque más corta, es radicalmente más fuerte que el enfoque anterior porque está construida a partir de un código de corrección de errores en lugar de un hash criptográfico.

La construcción para direcciones BC1 garantiza que siempre se detecten hasta 4 errores de carácter o 4 transposiciones en una dirección . 5 errores también se detectan siempre si todos se cometen entre los caracteres restantes visualmente más similares. Para más errores de los que están garantizados, la tasa de aceptación falsa se acerca a 1 en 2^30 a medida que aumenta el número de errores.

El diseño basado en el código de corrección de errores de bech32 también significa que las aplicaciones pueden indicar a los usuarios qué caracteres se equivocaron sin una búsqueda de fuerza bruta computacionalmente costosa.

Cuando diseñamos BIP173, sentimos que 30 bits de protección contra errores aleatorios probablemente eran excesivos, pero no queríamos tener un rendimiento de detección de errores que fuera mucho peor que el estándar anterior en ningún aspecto importante.

Si modela al usuario cometiendo errores aleatorios e ingresando, digamos, 2.5% de los caracteres incorrectos en promedio (por lo que se espera un error por cada dirección ingresada), entonces bech32 brinda a ese usuario una mejor protección en promedio que un hash aleatorio de 39 bits (por lo tanto, 1 en 2^39 direcciones incorrectas que ingresen serán falsamente aceptadas). Ser más cuidadoso también vale la pena: si la tasa de error del usuario se reduce al 0,1%, la tasa de direcciones incorrectas aceptadas se reduce a 1 en 2^60).

Este gráfico muestra el nivel de protección efectivo en función de la tasa de error del usuario para Bech32, un hash de 32 bits (como direcciones 1x) y un código de corrección de errores alternativo que podríamos haber obtenido si no hubiéramos tenido tanto cuidado. en el diseño de bech32:

Nivel de protección contra errores Bech32

La dirección BC1 también evita errores de otra manera: las personas a veces pierden fondos porque una cantidad de altcoins imprudentes/estafadores han copiado el formato de la dirección de Bitcoin, por lo que puede enviar bitcoins accidentalmente a una dirección de altcoin. Por el momento, esto no se aplica a la dirección BC1 y, con suerte, el prefijo que comienza con 'BC' reducirá las probabilidades de que ocurra en el futuro. (Aunque, lamentablemente, ahora se ha puesto de moda que más criptomonedas fraudulentas se llamen a sí mismas 'bitcoin', así que tal vez no).

La detección de errores mejorada es solo una de las muchas razones por las que los usuarios deberían preferir las direcciones BC1 en estos días.

Esta respuesta está profundamente subestimada (TBF fue escrita ocho años después de la pregunta original). Me he unido a esta comunidad solo para poder votarla. :-)

Un comerciante podría ofrecer su propio procesador de bitcoin local para conectar a un cliente, si la transacción es inexacta, podría "deshacerla" y simplemente no transmitir la transacción a la red de Bitcoin.

Si un servicio como BitUndo puede obtener suficientes mineros que lo respalden, podría tener la posibilidad (probablemente no muy grande, pero sí) de deshacer las transacciones si envía su solicitud de deshacer a los pocos minutos de la transacción original. Esto funciona porque si pueden extraer con éxito el siguiente bloque, pueden optar por excluir la transacción original e incluir su transacción de reembolso en su lugar.

Urgh. Bitcoin es lo que es por una razón, no admita servicios como este. El hecho de que anuncien un sitio de apuestas aleatorias en el primer fragmento de texto también es una gran señal de alerta.