Carteras y cuentas

Introducción
Las carteras 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 carteras almacenan y gestionan criptográficamente la identidad y los fondos de cada usuario mediante una única dirección en la blockchain, que aprovecha la criptografía de clave pública.
Propósito de una cartera de Stacks
Establecer la identidad del usuario
Almacenar activos
Mostrar saldos
Firmar transacciones
Firmar mensajes
Participar en la economía de Bitcoin
Las carteras 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 única 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 usan la mayoría de los ecosistemas Web3. En un modelo UTXO, la red opera como un libro mayor, con cada UTXO análogo a un billete en efectivo.
Componentes de una cuenta de Stacks
Clave privada - La clave privada es un código alfanumérico que se empareja con una única clave pública en una relación 1:1. Nunca compartas tu clave privada con nadie. Una clave privada es la forma en que pruebas la propiedad de una clave pública y cómo puedes gastar los activos mantenidos 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. Puede compartirse 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 fácil de usar 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
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 en los saldos de la cuenta) requieren una transacción correspondiente.
Todas las carteras de Stacks también admiten direcciones de Bitcoin, lo que permite una participación fluida tanto en los ecosistemas de Stacks como en el de Bitcoin.
Creación
Las cuentas de una cartera 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 llama 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 ni organización puede recuperar una frase semilla perdida.
La forma más fácil de generar una nueva cuenta de Stacks es usar el CLI de Stacks:
make_keychain crea el siguiente archivo:
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 llamada senderKey
keyInfo.address
Dirección de 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 existe automáticamente una nueva cuenta para cada nueva clave privada. No es necesario instanciar manualmente una cuenta en la blockchain de Stacks.
Alternativamente a la creación con el CLI, se puede usar la librería Stacks Transactions JS :
Finalmente, puedes generar una nueva cuenta usando una cartera compatible con Stacks como Leather, Xverse, o Asigna.
Manejo de diferentes formatos
Es común que los nuevos desarrolladores de Stacks se confundan con las diferentes maneras de especificar los principales de Stacks (también conocidos como direcciones) 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 a 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, que luego puede usarse para generar su correspondiente dirección de Stacks codificada en c32check.
Programáticamente, también podrías usar un método llamado b58ToC32, de la c32check librería javascript, que puede abstraer la conversión por ti.

Recursos adicionales
[Blog de Hiro] Entendiendo 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] Una introducción a las carteras Web3 para fundadores de Web3
[Blog de Hiro] Por qué Web3 necesita estándares de carteras centrados en Bitcoin
Última actualización
¿Te fue útil?