Carteras y cuentas

circle-info

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): 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 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): 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 on-chain del 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 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, c32checkarrow-up-right 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.

triangle-exclamation

Hay varias formas de crear una cuenta Stacks tanto para desarrolladores como para no desarrolladores.

1

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

2

Usando la herramienta CLI de Stacks

Usar la herramienta CLI de Stacks te permite gestionar carteras desde la línea de comandos.

make_keychain

get_address

Para más ejemplos de uso, consulta el repositorio de Stacks CLI aquíarrow-up-right.

3

Usando extensiones/aplicaciones de billeteras Bitcoin L2

Hay muchas carteras de Bitcoin populares que admiten capas de Bitcoin y metaprotocolos. Leather y Xverse son opciones populares para empezar con Stacks.

4

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

  1. Dirección del desplegador Un principal estándar de Stacks (derivado de un hash160 de una clave pública), tal como:

    • SP... → mainnet

    • ST... → testnet

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

Última actualización

¿Te fue útil?