Mejores prácticas de Token-2022
Reglas para elegir extensiones de Token-2022 y lanzar clientes compatibles en Agave 4.1.1.
Cómo usar esta lista
- Aplica A antes de habilitar cualquier extensión al inicializar el mint.
- Revisa B antes de lanzar la integración de billetera o DEX.
- Usa C para programas en cadena que aceptan tokens arbitrarios.
A - Selección de extensiones
- Habilita solo las extensiones que necesites. Las extensiones inmutables son compromisos de producto permanentes.
- Prefiere la comisión de transferencia sobre los hooks para ingresos simples de bps. Los hooks añaden complejidad a la resolución de cuentas del cliente.
- Evita las transferencias confidenciales a menos que sea legal y la ruta de la billetera esté confirmada. El soporte del ecosistema es más limitado.
- Documenta claramente los tokens "soulbound" / no transferibles. Los usuarios no deben esperar liquidez en el mercado secundario.
- Planifica la migración como un nuevo mint. No hay ruta de actualización desde el Token SPL clásico.
B - Integración del cliente
- Detecta el ID del programa propietario del mint antes de cada instrucción. Las ramas
Tokenkeg...vsTokenzQd...afectan a todos los constructores. - Pasa el programa del token a la derivación de ATA.
findAssociatedTokenPdarequiere eltokenProgramcorrecto. - Obtén y adjunta las cuentas adicionales de los hooks. Las cuentas faltantes fallan las transferencias silenciosamente en transacciones mal construidas.
- Muestra los montos netos de la comisión de transferencia. Muestra el bruto, la comisión y lo que recibe el destinatario antes de que el usuario firme.
- Prueba los swaps en el DEX de destino con una pequeña cantidad. El soporte de Token-2022 del enrutador es específico del mint.
- Usa DAS para metadatos de portafolio. Empareja con el ID de programa correcto en los analizadores personalizados.
C - Programas en cadena
- Usa
token_interfacepara bóvedas que listan tokens externos. La restricciónTokenclásica rechaza depósitos de Token-2022. - Valida las implicaciones de las extensiones en el README. Por ejemplo, los tokens no transferibles rompen los mercados de retiro.
- Mantén los programas de hooks mínimos. La lógica pesada en cada transferencia agota los límites de CU.
- Automatiza las "cranks" de cosecha de comisiones. Las comisiones retenidas no llegan a la tesorería sin instrucciones de cosecha.
- No asumas el campo
amountpara saldos confidenciales. Los indexadores necesitan analizadores conscientes de las extensiones.
Preguntas frecuentes
¿Deberían los nuevos fungibles usar Token-2022?
Solo cuando una extensión proporciona un requisito estricto; de lo contrario, el Token clásico maximiza la compatibilidad.
¿El error más común de la extensión?
Habilitar hooks de transferencia sin soporte del SDK para cuentas adicionales en todas las rutas del cliente.
¿Cómo probar las extensiones?
Mint en Devnet + Surfpool 0.12.0 + pruebas de humo en billetera/DEX de destino antes de Mainnet.
¿Se requiere `token_interface`?
Sí, para programas DeFi que aceptan mists seleccionados arbitrariamente por el usuario.
¿Puedo mezclar NFTs de Metaplex y fungibles de Token-2022?
Sí, estándares diferentes para diferentes tipos de activos en la misma aplicación.
¿Errores comunes de metadatos inmutables?
Verifica las banderas de inmutabilidad al inicializar el mint; la URI incorrecta es permanente sin una ruta de actualización.
¿Confusión entre congelado y congelado por defecto?
Congelado por defecto afecta a las cuentas nuevas; la autoridad de congelación todavía se requiere para descongelar.
¿Guía para indexadores?
Analiza las extensiones TLV o usa DAS; no asumas solo cuentas de 165 bytes.
¿Cuándo migrar desde el clásico?
Cuando el beneficio de la extensión supera la fricción de liquidez y billetera del nuevo mint.
¿Constante del ID del programa?
TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb en todos los clústeres.
Relacionado
- Conceptos básicos de Token-2022 - resumen
- Migración desde SPL Token - plan de corte
- Hooks de transferencia - política avanzada
Versiones de la pila: Esta página se escribió para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, y LiteSVM 0.6.x.