Carteras y cuentas

Para la descomposición técnica y el estándar sobre cómo se generan las billeteras/cuentas en Stacks, consulta estándar SIP-005 que describe todo esto.
Introducción
Las billeteras de Stacks son herramientas de software o hardware para almacenar criptomonedas, NFT y otros activos digitales. También se usan para establecer identidad en la cadena en aplicaciones descentralizadas (dApps). Estas billeteras almacenan y gestionan criptográficamente la identidad y los fondos de cada usuario a través de una sola dirección de blockchain, que aprovecha la criptografía de clave pública.
Propósito de una billetera Stacks
Establecer la identidad del usuario
Almacenar activos
Mostrar saldos
Firmar transacciones
Firmar mensajes
Participar en la economía de Bitcoin
Las billeteras en Stacks consisten en cuentas, que usan un modelo basado en cuentas, en lugar de un modelo UTXO como Bitcoin. Este modelo es más sencillo que el modelo UTXO y tiene un concepto más tradicional de “saldo”, similar al que encontrarías en un banco. En este modelo, cada dirección tiene una sola cifra de “saldo” para un token dado que aumenta/disminuye a medida que se envían transacciones hacia/desde esa cuenta. Esto es lo que usa la mayoría de los ecosistemas Web3. En un modelo UTXO, la red opera como un libro mayor, con cada UTXO siendo análogo a un billete en efectivo.
Componentes de una cuenta Stacks

Clave privada - La clave privada es un código alfanumérico que se empareja con una sola clave pública en una relación 1:1. Nunca compartas tu clave privada con nadie. Una clave privada es cómo demuestras la propiedad de una clave pública y cómo puedes gastar los activos custodiados por ese par de claves. Ejemplo de clave privada en Stacks (32 bytes con un byte 0x01 añadido):
5a4133fec2cf923d37238d3ba2fcd2ee9c8dce882c22218fd210d8a02ceb2c7401Clave pública - La clave pública se deriva matemáticamente de la clave privada. Se puede compartir de forma segura y la red la usa para verificar las firmas creadas por la clave privada, sin revelar la clave privada en sí. Ejemplo de clave pública en Stacks (formato comprimido):
02e8eb87862945d369511fdcce326ffef9a01b68c7d070e3ce685a5cbb9b1ecfc5Dirección (Principal) - La dirección es una representación más corta y amigable para el usuario derivada de la clave pública. Es lo que compartes para recibir sBTC, STX, tokens o NFT en Stacks, y actúa como el identificador en la cadena para el usuario. Ejemplo de dirección pública en Stacks (codificación c32check):
SPM9G3CNGSCTB4956290NESM0MR9W9CCEPVEPSQC
La generación de claves privada/pública utiliza la curva criptográfica secp256k1 .
El algoritmo de firma criptográfica usado en Stacks es ECDSA sobre secp256k1.
Las cuentas de Stacks son entidades que poseen activos, como tokens Stacks (STX). Una cuenta tiene una dirección, clave privada, nonce y uno o más saldos de activos. Los activos no pueden salir de una cuenta sin una acción del propietario de la cuenta. Todos los cambios en los activos (y los saldos de la cuenta) requieren una transacción correspondiente.
Todas las billeteras de Stacks también admiten direcciones de Bitcoin, lo que permite una participación fluida en los ecosistemas de Stacks y Bitcoin.
Creación
Las cuentas de una billetera se generan a partir de una frase mnemotécnica de 24 palabras que cumple con el estándar BIP39. A esto a menudo se le denomina frase semilla. La frase semilla proporciona acceso a las cuentas de Stacks.
Si se pierde la frase semilla, no se puede restaurar el acceso a la cuenta asociada. Ninguna persona u organización puede recuperar una frase semilla perdida.
La forma más fácil de generar una nueva cuenta Stacks es usar la CLI de Stacks:
make_keychain crea el siguiente archivo:
Consulta la referencia de CLI de Stacks para más detalles
mnemonic
Una frase semilla de 24 palabras usada para acceder a la cuenta, generada usando BIP39 con 256 bits de entropía
keyInfo.privateKey
Clave privada de la cuenta. Requerida para transferencias de tokens y a menudo referida como senderKey
keyInfo.address
Dirección Stacks de la cuenta
keyInfo.btcAddress
Dirección BTC correspondiente a la cuenta.
keyInfo.wif
Clave privada de la btcAddress en formato comprimido.
keyInfo.index
Nonce de la cuenta, comenzando en 0
Ten en cuenta que una nueva cuenta existe automáticamente para cada nueva clave privada. No es necesario instanciar manualmente una cuenta en la cadena de Stacks.
Las direcciones se crean generando el hash RIPEMD-160 del SHA256 de la clave pública. Las direcciones BTC se codifican con Base58Check. Para las direcciones de Stacks, c32check se utiliza. Derivar una dirección a partir de una clave pública se puede hacer sin acceso a internet, por ejemplo utilizando el método c32addressDecode .
Como alternativa a la creación con la CLI, se puede usar la biblioteca Stacks Transactions JS :
Finalmente, puedes generar una nueva cuenta usando una billetera compatible con Stacks como Leather, Xverse, o Asigna.
Manejo de diferentes formatos
Es común que los nuevos desarrolladores de Stacks tropiecen con las diferentes formas al especificar los principales (también conocidos como direcciones) de Stacks en su desarrollo.
Aquí hay un desglose de cómo tratar con los principales en 3 casos de uso diferentes.

La conexión entre las direcciones de Stacks y Bitcoin
Lo que hace que Stacks esté bellamente conectado con su capa de liquidación L1, Bitcoin, son sus muchos aspectos compartidos. Uno es cómo ambos utilizan un esquema de generación de direcciones similar basado en el formato P2PKH, lo que permite que una dirección de Bitcoin y una de Stacks compartan el mismo hash de clave pública. Si decodificas en base58check una dirección bitcoin legacy, puedes revelar el hash de la clave pública, el cual puede usarse para generar su respectiva dirección Stacks codificada en c32check.
Programáticamente, también podrías usar un método llamado b58ToC32, de la c32check biblioteca javascript, que puede abstraer la conversión por ti.

Recursos adicionales
[Blog de Hiro] Comprendiendo las diferencias entre los formatos de direcciones de Bitcoin al desarrollar tu aplicación
[Blog de Hiro] Cómo cada dirección de Stacks tiene una dirección de Bitcoin correspondiente
[Blog de Hiro] Introducción a las billeteras Web3 para fundadores de Web3
[Blog de Hiro] Por qué Web3 necesita estándares de billeteras centrados en Bitcoin
Última actualización
¿Te fue útil?