Carteras y cuentas

En Stacks, los términos 'address' y 'principal' se usan indistintamente.
Introducción
Las carteras Stacks son herramientas de software o hardware para almacenar criptomonedas, NFT y otros activos digitales. También se usan para establecer identidad on-chain en aplicaciones descentralizadas (dApps). Estas carteras almacenan y gestionan criptográficamente la identidad y los fondos de cada usuario a través de una única dirección de blockchain, que aprovecha la criptografía de clave pública.
Propósito de una cartera 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 simple 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 funciona 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 única clave pública en una relación 1:1. Nunca comparta su clave privada con nadie. Una clave privada es la forma en que demuestra la propiedad de una clave pública y cómo puede gastar los activos que posee ese par de claves. Ejemplo de clave privada en Stacks (32 bytes seguidos de un byte 0x01):
5a4133fec2cf923d37238d3ba2fcd2ee9c8dce882c22218fd210d8a02ceb2c7401Clave pública - La clave pública se deriva matemáticamente de la clave privada. Puede compartirse de forma segura y la red la utiliza para verificar las firmas creadas por la clave privada, sin revelar la propia clave privada. 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 on-chain del usuario. Ejemplo de dirección pública en Stacks (codificación c32check):
SPM9G3CNGSCTB4956290NESM0MR9W9CCEPVEPSQC
La generación de claves privadas/públicas usa la curva criptográfica secp256k1 .
El algoritmo de firma criptográfica usado en Stacks es ECDSA sobre secp256k1.
Las direcciones se crean generando el RIPEMD-160 hash del SHA256 de la clave pública. Las direcciones BTC se codifican con Base58Check. Para las direcciones de Stacks, c32check se usa.
Las cuentas 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 carteras Stacks también admiten direcciones de Bitcoin, permitiendo una participación fluida en los ecosistemas de Stacks y Bitcoin.
Formatos de dirección
Las direcciones Stacks usan diferentes prefijos para indicar la red a la que pertenecen, lo que facilita distinguir entre direcciones mainnet y testnet.
¿Cómo crear una cuenta Stacks?
Las cuentas de una cartera se generan a partir de una frase mnemotécnica de 24 palabras que cumple con el estándar BIP39. Esto suele llamarse frase semilla. La frase semilla proporciona acceso a las cuentas Stacks.
Si se pierde la frase semilla, no se puede restaurar el acceso a las cuentas asociadas. Ninguna persona u organización puede recuperar una frase semilla perdida.
Hay varias formas de crear una cuenta Stacks tanto para desarrolladores como para no desarrolladores.
Usando Stacks.js
Para la generación programática de carteras o al restaurar cuentas desde una copia de seguridad, puedes derivar direcciones a partir de una frase semilla mnemotécnica. Cada cartera puede contener varias cuentas, todas derivadas de la misma frase semilla usando diferentes rutas de derivación.
Para más formas de generar programáticamente claves y cuentas, consulta la guía aquí.
Usando la herramienta CLI de Stacks
Usar la herramienta CLI de Stacks te permite gestionar carteras desde la línea de comandos.
make_keychain
make_keychainget_address
get_addressPara más ejemplos de uso, consulta el repositorio de Stacks CLI aquí.
Usando otras herramientas creadas por la comunidad
Consulta el Catálogo de Devtools de Stacks para otras herramientas creativas para desarrollar y gestionar carteras Stacks.
¿Cómo se formatean las direcciones de contratos Clarity?
En Stacks, un address/principal de contrato identifica de forma única un contrato inteligente desplegado y está estructurado como un principal de cuenta más un espacio de nombres del contrato, formando una identidad on-chain única:
Desglose de la estructura
Dirección del desplegador Un principal estándar de Stacks (derivado de un hash160 de una clave pública), tal como:
SP...→ mainnetST...→ testnet
Nombre del contrato Un identificador ASCII elegido en el momento del despliegue (p. ej.,
mi-token,amm-v1,nft-market).
Por qué está estructurado de esta manera
Porque los identificadores de contratos están en un espacio de nombres por la dirección del desplegador:
Dos cuentas diferentes pueden desplegar contratos con el mismo nombre.
Una sola cuenta no puede desplegar dos contratos con el mismo nombre.
El identificador es determinista y globalmente único.
Manejo de diferentes formatos
Es común que los nuevos desarrolladores de Stacks se confundan con las diferentes formas al especificar los principals (es decir, direcciones) de Stacks en su desarrollo.
Aquí hay un desglose de cómo tratar con principals 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 Bitcoin y una dirección Stacks compartan el mismo hash de clave pública. Si decodificas en base58check una dirección Bitcoin legacy, puedes revelar el hash de clave pública, que luego 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] Entendiendo las diferencias entre los formatos de direcciones de Bitcoin
[Blog de Hiro] Cómo cada dirección de Stacks tiene una dirección Bitcoin correspondiente
[Blog de Hiro] Introducción a las carteras Web3 para fundadores Web3
[Blog de Hiro] Por qué Web3 necesita estándares de carteras centrados en Bitcoin
[Stacks YT] Cómo configurar tu primera cartera Bitcoin L2
[SIP-005] Para el desglose técnico y el estándar sobre cómo se generan las carteras/cuentas.
Última actualización
¿Te fue útil?