¿Cómo funciona exactamente -rescan?

-rescanes un argumento de línea de comando que se pasa al cliente bitcoin después de restaurar wallet.dat desde la copia de seguridad.

  1. ¿Qué archivos se recalculan?
  2. ¿Qué archivos lee el comando volver a escanear?
  3. ¿Por qué es una buena práctica descargar primero todos los bloques, luego volver a escanear y no al revés? (como sugiere un comentario en esta respuesta )

Respuestas (2)

El cliente bitcoin almacena en el monedero las transacciones que afectan a las monedas que gestiona. Si ve una nueva transacción, verifica si esa transacción afecta alguna cuenta almacenada en la billetera. Si es así, la billetera se actualiza. Del mismo modo, si se reorganiza la cadena, se actualiza la billetera.

Sin embargo, el cliente no verifica para asegurarse de que la billetera esté sincronizada con la cadena de bloques actual. Para arreglar esto, rescanse puede usar el comando. Esto hace que el cliente, al iniciarse, revise cada bloque que ha descargado, busque transacciones que afecten las cuentas en la billetera y actualice el almacén de transacciones y los saldos de la billetera para reflejar esa transacción.

Hay algunos casos en los que definitivamente necesita volver a escanear. Por ejemplo:

Si restaura una billetera respaldada, faltarán las transacciones en los bloques que descargó después de respaldar la billetera. Dado que el cliente no recibirá esos bloques (dado que ya los tiene), la lógica normal de actualización de la billetera no solucionará esto. Tendrá que volver a escanear.

Si modifica su billetera, por ejemplo, agregando claves o eliminando transacciones de ella, la lógica de actualización de la billetera no verá las transacciones. Entonces, si usa un programa que no sea el cliente para modificar su billetera, deberá volver a escanear.

Teóricamente, no debería importar si descargas todos los bloques y luego vuelves a escanear o viceversa. El cliente no descargará bloques mientras se vuelve a escanear. Y los bloques recién descargados deberían actualizar la billetera de todos modos. Básicamente, la lógica es que esto garantiza que el proceso de nuevo escaneo vea los bloques que contienen transacciones faltantes, en lugar de la lógica de actualización de bloques normal. (Ambos deberían funcionar. Pero si necesita volver a escanear, sabemos que algo anda mal de todos modos).

A partir de la versión 0.3.21, el cliente volverá a escanear automáticamente si el último bloque que conocía la billetera no es el último bloque de la cadena de bloques: bitcointalk.org/index.php?topic=6642.msg99812#msg99812
Además, el uso de -checkblocks verificará la integridad de toda la cadena de bloques: en.bitcoin.it/wiki/Running_Bitcoin
¿Bloqueará la generación de direcciones, el envío de monedas?

Esto también es útil si está importando más de 1 clave privada a su billetera:

bitcoind importprivkey 1zbcvs.... "My Label" false
bitcoind importprivkey 1zbcvs.... "My Label" false
bitcoind importprivkey 1zbcvs.... "My Label" false
bitcoind stop

# One of the following
bitcoind -rescan 
bitcoin-qt -rescan
muy inteligente. Nunca pensé en eso.