Carteras y cuentas

circle-info

Para la descomposición técnica y el estándar sobre cómo se generan las billeteras/cuentas en Stacks, consulta estándar SIP-005arrow-up-right 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): 5a4133fec2cf923d37238d3ba2fcd2ee9c8dce882c22218fd210d8a02ceb2c7401

  • Clave 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): 02e8eb87862945d369511fdcce326ffef9a01b68c7d070e3ce685a5cbb9b1ecfc5

  • Direcció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

circle-info

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.

triangle-exclamation

La forma más fácil de generar una nueva cuenta Stacks es usar la CLI de Stacksarrow-up-right:

make_keychain crea el siguiente archivo:

circle-info

Consulta la referencia de CLI de Stacksarrow-up-right para más detalles

Campo
Descripción

mnemonic

Una frase semilla de 24 palabras usada para acceder a la cuenta, generada usando BIP39arrow-up-right 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.

circle-info

Las direcciones se crean generando el hash RIPEMD-160arrow-up-right del SHA256arrow-up-right de la clave pública. Las direcciones BTC se codifican con Base58Checkarrow-up-right. Para las direcciones de Stacks, c32checkarrow-up-right 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 JSarrow-up-right :

Finalmente, puedes generar una nueva cuenta usando una billetera compatible con Stacks como Leatherarrow-up-right, Xversearrow-up-right, o Asignaarrow-up-right.


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

Última actualización

¿Te fue útil?