Próposito y cuentas múltiples en billeteras Bitcoin

Aníbal Santaella
5 min readNov 11, 2020

--

Por Aníbal Santaella

En el artículo anterior iniciamos este tema, a continuación otro par de estándares que permiten mejorar la experiencia de la posesión de bitcoin y otras criptomonedas.

Campo de propósito para carteras deterministas, BIP-43

BIP-43

Este estándar introduce un «campo de propósito» para usar en billeteras deterministas basado en el algoritmo descrito en BIP-32.

Aunque la estructura de la billetera determinista jerárquica como se describe en BIP-32 es un paso importante en la experiencia del usuario y la seguridad de las billeteras, esta especificación ofrece a los implementadores demasiados grados de libertad. Varias implementaciones pueden afirmar que son compatibles con BIP-32, pero de hecho pueden producir billeteras con diferentes estructuras lógicas que las hacen que no sean interoperables. Desafortunadamente, esta situación hace que la declaración «compatible con BIP-32» sea bastante inútil.

El BIP-43 propone que el primer nivel en la estructura del árbol BIP-32 sea utilizado como «propósito» y este propósito a su vez determina la estructura adicional debajo de este nodo. Así luce dentro de la estructura lógica de la billetera:

m / propósito‘/ *

El apóstrofo indica que se utiliza la derivación endurecida BIP-32.

También en este estándar se alienta a diferentes esquemas a solicitar la asignación de un número BIP separado y usar el mismo número para el campo de propósito, de modo que las direcciones no se generen a partir de espacios BIP-32 superpuestos.

Ejemplo: el esquema descrito en BIP44 debe usar 44' como propósito.

En palabras simples, este estándar permite identificar la estructura lógica de derivación que implementa una billetera BIP-32, y así establecer la compatibilidad con otras billeteras que tengan el mismo propósito, esto permite a los usuarios restaurar billeteras con mayor flexibilidad.

Jerarquía de cuentas múltiples para billeteras deterministas, BIP-44

BIP-44

En este estándar se define una jerarquía lógica para billeteras deterministas basada en el algoritmo descrito en BIP-32 y un esquema de propósito descrito arriba en BIP-43, este estándar es una aplicación particular de BIP-43.

La jerarquía propuesta en este estándar es bastante completa lo que permite el manejo de múltiples monedas, múltiples cuentas, cadenas externas e internas por cuenta y millones de direcciones por cadena. Se definen los siguientes 5 niveles en la ruta BIP-32:

m / propósito‘/ coin_type’ / account‘/ change / address_index 

El apóstrofo en la ruta indica que se utiliza la derivación endurecida BIP-32. Cada nivel tiene un significado especial, que se describe a continuación:

Propósito

El propósito es una constante establecida en 44' siguiendo la recomendación BIP-43. Indica que el subárbol de este nodo se utiliza de acuerdo con esta especificación. La derivación endurecida se utiliza en este nivel.

Tipo de moneda

Se puede utilizar un nodo maestro (semilla) para un número ilimitado de criptomonedas independientes como bitcoin, litecoin, etc. Sin embargo, compartir el mismo espacio para varias criptomonedas tiene algunas desventajas.

Este nivel crea un subárbol separado para cada criptomoneda, evitando la reutilización de direcciones entre criptomonedas y mejorando los problemas de privacidad. La derivación endurecida se utiliza en este nivel.

El tipo de moneda es una constante, establecida para cada criptomoneda. Los desarrolladores de criptomonedas pueden solicitar el registro de un número no utilizado para su proyecto. Bitcoin tiene asignado el índice 0 y litecoin el 2.

Estos son algunos tipos de monedas registrados para su uso en el nivel 2 de BIP44 descritos en «Tipo de moneda».. Todas estas constantes se utilizan como derivación endurecida.

Lista completa de los tipos de monedas registrados para su uso en el nivel 2 de BIP44 descritos en «Tipo de moneda»:

Cuenta

Este nivel divide el espacio clave en identidades de usuario independientes, por lo que la billetera nunca mezcla las monedas en diferentes cuentas. Los usuarios pueden utilizar estas cuentas para organizar, administrar los fondos y crear diversas cuentas para distintos fines, todo dentro de una misma billetera. Las cuentas se numeran a partir del índice 0 y siguen de manera secuencialmente creciente. Este número se utiliza como índice secundario en la derivación BIP-32. La derivación endurecida se utiliza en este nivel.

Cambio

La constante 0 se usa para la cadena externa y la constante 1 para la cadena interna (cambio). La cadena externa se utiliza para direcciones que deben ser visibles fuera de la billetera (p. ej. para recibir pagos). La cadena interna se usa para direcciones que no deben ser visibles fuera de la billetera y se usa para los cambios generados automáticamente por la billetera. La derivación pública se utiliza en este nivel.

Índice

Las direcciones se numeran a partir del índice 0 y continúan de manera secuencialmente creciente. Este número se utiliza como índice secundario en la derivación BIP-32. La derivación pública se utiliza en este nivel.

Estos estándares en su conjunto permiten que una billetera funcione como un banco en tu bolsillo. Acompáñame a poner en práctica estos conocimientos en el próximo artículo.

Ejemplo de m / propósito‘/ coin_type’ / account‘/ change / address_index :

También puedes encontrar este artículo en:

Aníbal Santaella

Twitter @a_santaellas

Canal de YouTube Aníbal Santaella

Canal de Telegram

Si deseas invitarme una cerveza 🍺 puedes hacerlo a la siguiente dirección de Bitcoin: 3KouoLjZMgXimRWpjK6AuEfVX61nyGzWvz

--

--