Carteras y cuentas

circle-info

Para el desglose técnico y el estándar sobre cómo se generan las carteras/cuentas en Stacks, consulta estándar SIP-005arrow-up-right que describe todo esto.

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): 5a4133fec2cf923d37238d3ba2fcd2ee9c8dce882c22218fd210d8a02ceb2c7401

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

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

circle-info

La generación de claves privadas/públicas usa la secp256k1 curva criptográfica.

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 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.

triangle-exclamation

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

make_keychain crea el siguiente archivo:

circle-info

Consulta el referencia del 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 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.

circle-info

Las direcciones se crean generando el hash RIPEMD-160arrow-up-right de la 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 usa. Derivar una dirección a partir de una clave pública se puede hacer sin acceso a Internet, por ejemplo usando el método c32addressDecode .

Alternativamente a la creación con el CLI, se puede usar la librería Stacks Transactions JSarrow-up-right :

Finalmente, puedes generar una nueva cuenta usando una cartera 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 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

Última actualización

¿Te fue útil?