La Relay Chain Polkadot no soporta nativamente activos más allá de DOT. Esta funcionalidad existe en las parachains. En Polkadot, esta parachain se llama Statemint, y en Kusama se llama Statemine. Toda la información de esta guía se aplica igualmente a Kusama/Statemine.
Statemint proporciona una interfaz de primera clase para crear, gestionar y utilizar activos fungibles y no fungibles. La interfaz fungible es similar al estándar ERC-20 de Ethereum. Sin embargo, las estructuras de datos y las operaciones con estado se codifican directamente en el runtime de la cadena, lo que agiliza las operaciones y las hace más eficientes.
Más allá del mero soporte de activos, la integración de Statemint en tus sistemas tiene varias ventajas para los proveedores de infraestructuras y los usuarios:
- Soporte para activos on-chain.
- Tarifas de transacción significativamente más bajas (aproximadamente 1/10) que la Relay Chain.
- Depósitos significativamente más bajos (1/10) que la Relay Chain. Esto incluye el depósito existencial y los depósitos para operaciones proxy/multisig.
- Posibilidad de pagar tarifas de transacción en determinados activos. Es decir, las cuentas no necesitarían DOT para existir on-chain ni para pagar tarifas (fee).
Statemint utilizará DOT como moneda nativa. Los usuarios podrán transferir DOT de la Relay Chain a Statemint y utilizarla de forma nativa. La Relay Chain también aceptará transferencias de DOT desde Statemint a la Relay Chain para su uso en staking, gobernanza o cualquier otra actividad que tenga lugar allí.
Utilizar Statemint para transferencias de balance DOT/KSM será mucho más eficiente que la Relay Chain y es altamente recomendable. Hasta que se construyan parachains específicas de dominio, la Relay Chain seguirá siendo necesaria para staking y gobernanza.
Activos básicos #
Consulta el pallet de Activos para obtener la información más actualizada y la documentación de referencia.
Los activos se almacenan como un mapa desde un ID a información sobre el activo, incluyendo un equipo de gestión, suministro total, número total de cuentas, su suficiencia para la existencia de cuentas, y más. Además, el propietario del activo puede registrar metadatos como el nombre, el símbolo y el número de decimales para su representación.
Algunos activos, determinados por la gobernanza on-chain, se consideran “suficientes”. Suficiencia significa que el balance del activo es suficiente para crear la cuenta on-chain, sin necesidad del depósito existencial DOT/KSM. Del mismo modo, no puedes enviar un activo no suficiente a una cuenta que no existe. Los activos suficientes pueden utilizarse para pagar tarifas de transacción (es decir, no es necesario mantener DOT/KSM en la cuenta).
Los activos tienen un balance mínimo (establecido por el creador), y si una cuenta cae por debajo de ese balance, el dust se pierde.
Operaciones con activos #
El pallet de Activos tiene su propia interfaz para tratar con los activos. Mira la sección Integración más abajo para saber cómo obtener información y construir transacciones.
Las principales funciones con las que probablemente interactuarás son transfer
y transfer_keep_alive
. Estas funciones transfieren cierto amount
(balance) de un AssetId
(un u32
, no una dirección de contrato) a otra cuenta.
El pallet Activos también proporciona una interfaz approve_transfer
, cancel_approval
y transfer_approved
para operaciones no custodiadas.
Las transferencias de activos darán lugar a un evento assets.transferred
. Las mismas instrucciones para monitorear eventos y no transacciones se aplican a las transferencias de activos.
Ten en cuenta que en Statemint puedes utilizar las mismas direcciones (¡excepto proxies anónimos!) que usas en la Relay Chain. Las codificaciones SS58 son las mismas, sólo cambiará la información de la cadena (hash de génesis, etc.) en la construcción de la transacción.
Integración #
Statemint incluirá el mismo conjunto de herramientas que Parity Technologies proporciona para la Relay Chain, es decir, API Sidecar y TxWrapper Polkadot. Si tienes alguna pregunta o problema técnico sobre cómo utilizar una de las herramientas de integración, presenta una incidencia en GitHub para que un desarrollador pueda ayudarte.
Nodo Parachain #
El uso de Statemint requerirá la ejecución de un nodo parachain para sincronizar la cadena. Esto es muy similar a ejecutar un nodo Polkadot, con la adición de algunas flags adicionales. El formato básico es el siguiente:
./statemint $STATEMINT_CLI_ARGS --collator -- $POLKADOT_CLI_ARGS
donde tanto $STATEMINT_CLI_ARGS
como $POLKADOT_CLI_ARGS
consisten en flags de nodo Polkadot normales. Las flags se pueden utilizar dos veces, una para el componente de collator y otra para el componente de Relay Chain. Los puertos adicionales que se utilizarán son (por defecto) 9934, 9616 y 30334 (Relay Chain RPC, Prometheus endpoint y libp2p respectivamente). Como es habitual, cualquiera de estos puertos puede ajustarse mediante flags. Para hacer deploy de un nodo Statemint RPC, se utilizarían las mismas flags que para un nodo Polkadot RPC en lugar de $STATEMINT_CLI_ARGS
. El nodo mantendrá tanto la base de datos de Polkadot como la de Statemint en su directorio de base de datos, por lo que se deben aprovisionar los discos en consecuencia.
Sidecar #
API Sidecar es un servicio REST para los nodos Relay Chain y parachain; viene con endpoints para consultar información sobre activos y balances de activos en Statemint.
- Las búsquedas de activos siempre utilizarán el
AssetId
para referirse a una clase de activo. Los metadatos on-chain están sujetos a cambios y, por tanto, no son adecuados como índice canónico. - Consulta la documentación para obtener información completa sobre su uso. No se incluyen aquí detalles sobre opciones como la forma de realizar una consulta histórica.
Tx Wrapper Polkadot #
TxWrapper Polkadot es una librería diseñada para facilitar la construcción y firma de transacciones en entornos offline; viene con un conjunto de funciones específicas para usar en Statemint. Cuando construyes transacciones parachain, puedes utilizar txwrapper-polkadot
exactamente igual que en la Relay Chain, pero construirías transacciones con los metadatos parachain apropiados como el hash genesis, la versión spec y el registro de tipos.