¿Cuál es el significado de 'cambio' y 'reserva' en un volcado de billetera Bitcoin Core?

Estoy usando libwally para derivar direcciones de una clave privada extendida. Compartí la semilla con Bitcoin Core (la cargué en una billetera en blanco con sethdseed), y noté que hay 2 direcciones en el volcado del archivo de la billetera bajo la misma ruta de derivación, una está etiquetada reserve=1y es la misma que derivo con libwally, el otro está etiquetado change=1y es diferente.

Tengo algunas preguntas sobre esto:

  1. ¿Cuál es exactamente el significado de reservey change? Supongo que reserveson direcciones de recepción normales y change, bueno, cambian, pero todavía me pregunto si hay algún significado más específico para Bitcoin Core.
  2. Pensé que las direcciones de cambio se derivaron con una ruta diferente, como que todas las direcciones de recepción terminan ../0/{index}y cambian con ../1/{index}, ¿o Bitcoin Core está haciendo las cosas de manera diferente a, por ejemplo, Electrum?
  3. Además, me pregunto cómo generar 2 pares de claves diferentes con la misma clave maestra y ruta, ¿podría haber generado la changedirección con libwally también?

[EDITAR] Después de hacerlo una vez más, solo tengo una dirección con la misma ruta en el archivo de volcado de Bitcoin Core, así que supongo que cometí un error la última vez, lo explicaré aquí en caso de que ayude: Para crear un billetera con una semilla que elijas tú mismo, necesitas 2 comandos createwallety sethdseed. Además del requerido wallet_name, createwallettambién toma un blankargumento opcional. Por defecto es false, y el comando usará una semilla aleatoria para generar un grupo de claves. Pero como queremos usar nuestra propia semilla, debemos configurarla en true. Si descarga la billetera recién creada, estará en blanco, sin clave maestra, sin grupo de claves, nada. Entonces solo tu puedessethdseedcon una semilla 32B codificada en formato wif. Tenía 2 claves en la misma ruta de derivación porque primero creé una billetera con una semilla aleatoria y luego agregué la mía con sethdseed, por lo que tenía 2 grupos de claves en mi archivo de volcado. Como dijo Andrew en la respuesta, es imposible tener 2 pares de claves diferentes con la misma clave maestra y ruta.

Respuestas (1)

  1. ¿Cuál es exactamente el significado de reservey change? Supongo que reserveson direcciones de recepción normales y change, bueno, cambian, pero todavía me pregunto si hay algún significado más específico para Bitcoin Core.

reservesignifica que la clave está en el conjunto de claves y aún no se ha utilizado. Esto se usa tanto para cambiar como para recibir direcciones, ya que hay conjuntos de claves para ambos.

changesignifica que la clave se utiliza para cambiar direcciones.

  1. Pensé que las direcciones de cambio se derivaron con una ruta diferente, como que todas las direcciones de recepción terminan ../0/{index}y cambian con ../1/{index}, ¿o Bitcoin Core está haciendo las cosas de manera diferente a, por ejemplo, Electrum?

Ellos son. Bitcoin Core se usa m/0'/0'/i'para recibir direcciones y m/0'/1'/i'cambio. Sin embargo, si tiene una billetera Bitcoin Core anterior, esta división no existe y solo hay un conjunto de claves. Pero si está usando sethdseed, eso no debería afectarlo.

  1. Además, me pregunto cómo generar 2 pares de claves diferentes con la misma clave maestra y ruta, ¿podría haber generado la changedirección con libwally también?

No hay 2 pares de claves diferentes con la misma clave maestra y ruta. Bitcoin Core no hace esto, y eso no es posible con BIP 32 (o cualquier BIP).

Gracias por la respuesta, hice una prueba nuevamente y esta vez solo tengo una dirección con la misma ruta en la billetera BC, creo que me equivoqué la última vez y no agregué la opción blanka createwallet. Estaba pensando que de hecho era imposible tener 2 pares de claves con la misma clave maestra y la misma ruta, así que me alivia que mi billetera no haya violado las leyes de las matemáticas :)