Una API de acuñación es una interfaz de servicio que convierte una sola solicitud HTTP en una o más creaciones de tokens on-chain, gestionando nonces, agrupación, gas y seguimiento de estado en tu nombre. Esta guía explica el modelo mental detrás de la acuñación gestionada, recorre un patrón de integración ejecutable, muestra cómo verificar una acuñación de forma independiente contra un endpoint RPC y proporciona un método reproducible para medir el rendimiento y las tasas de fallo. Separa el comportamiento documentado del proveedor de las recomendaciones y de las cifras que debes medir tú mismo. Úsala para diseñar un pipeline de acuñación que puedas operar, no solo demostrar.
Qué abstrae realmente una API de acuñación
Una API de acuñación es una interfaz REST o de estilo RPC que crea nuevos tokens —NFT, tokens semfungibles, tokens fungibles o credenciales firmadas— a partir de una sola solicitud. La distinción importante es entre una llamada directa al contrato y un servicio de acuñación gestionado. Con una llamada directa, firmas una transacción, gestionas el nonce, estimas el gas, esperas la inclusión e indexas el resultado tú mismo. Una API de acuñación gestionada envuelve ese ciclo de vida: encola solicitudes, las agrupa en transacciones eficientes en gas, rastrea el estado y, a menudo, indexa los metadatos de inmediato.
El término es ambiguo. En el mundo de los NFT y la tokenización, significa crear activos on-chain. En los sistemas de identidad, una API de acuñación de tokens emite tokens de seguridad firmados tras la autenticación y las comprobaciones de políticas. Ambos comparten una propiedad de diseño: la API es un punto de control, y la corrección depende de la evaluación de políticas, la firma y el manejo estricto del alcance, la audiencia y la expiración. Este artículo se centra en el caso de tokenización on-chain, pero los patrones de verificación y confiabilidad se aplican a ambos.
- Acuñación gestionada: el proveedor maneja nonces, agrupación, gas y estado.
- Acuñación directa: tu servicio firma y envía transacciones a un endpoint RPC.
- Híbrida: el proveedor acuña, tú verificas de forma independiente a través de tu propio acceso RPC.
Requisitos previos y suposiciones antes de integrar
Antes de escribir código, confirma cuatro cosas. Primero, el estándar del contrato y si el proveedor lo admite —algunas API de acuñación solo funcionan con contratos preestablecidos o preauditados y explícitamente no admiten contratos personalizados—. Segundo, la autenticación: la mayoría de los servicios utilizan una clave API secreta que debe permanecer en el lado del servidor. Tercero, el rol de acuñación o el modelo de permisos en el contrato. Cuarto, tu estrategia de idempotencia, normalmente un ID de referencia generado por el cliente.
También necesitas una forma independiente de leer el estado de la cadena. Incluso si la API de acuñación informa éxito, la verificación debe provenir de un endpoint RPC que controles o en el que confíes. El directorio de redes de OnFinality enumera las cadenas admitidas, y la página del servicio RPC explica las opciones de endpoint; para una elección concreta de proveedor, el RPC Assistant es el lugar adecuado para preguntar.
- Contrato desplegado y acuñación habilitada para la clave del proveedor.
- Clave API secreta almacenada en un gestor de secretos del lado del servidor.
- Un esquema de ID de referencia único por acuñación lógica.
- Una RPC_URL para verificación independiente.
El modelo mental: solicitud, cola, lote, transacción, estado
Una solicitud de acuñación gestionada pasa por etapas. Tu solicitud HTTP se valida y se le asigna un ID de referencia. Entra en una cola, donde se aplican límites de velocidad. El servicio agrupa varias solicitudes en una o más transacciones, las firma con su billetera gestionada y las envía. Cada transacción tiene un ciclo de vida: pendiente, incluida, confirmada o fallida. El estado se expone a través de un endpoint de estado o webhooks.
Se derivan dos consecuencias. Primero, una respuesta HTTP exitosa significa que la solicitud fue aceptada, no que el token exista. Segundo, los reintentos son seguros solo si la solicitud es idempotente: reenviar el mismo ID de referencia debería devolver el mismo resultado lógico en lugar de acuñar dos veces. Diseña tu cliente en torno al sondeo de estado o webhooks, no en torno al código de respuesta inicial.
Integración ejecutable: envía una acuñación y consulta el estado
El siguiente ejemplo utiliza valores de marcador de posición y una forma de solicitud genérica. Adapta los nombres de los campos al esquema documentado de tu proveedor. El patrón —enviar con una clave de idempotencia y luego consultar el estado— es lo que importa.
curl -X POST "$MINTING_API_URL/v1/mints" \
-H "Authorization: Bearer $MINTING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contract_address": "0xYOUR_CONTRACT",
"reference_id": "order-2024-0001",
"recipient": "0xRECIPIENT_WALLET",
"metadata": {
"name": "Example Token #1",
"image": "https://example.com/token-1.png"
}
}'
# Then poll status by reference ID
curl "$MINTING_API_URL/v1/mints/order-2024-0001" \
-H "Authorization: Bearer $MINTING_API_KEY"Verificación independiente de una acuñación a través de RPC
Nunca consideres el estado propio de la API de acuñación como la única fuente de verdad. Lee el contrato directamente. Para un ERC-721, llama a ownerOf con el ID del token; para un ERC-1155, llama a balanceOf. El ejemplo de JavaScript a continuación utiliza una llamada JSON-RPC genérica y funciona con cualquier RPC_URL compatible con EVM.
const RPC_URL = process.env.RPC_URL;
const CONTRACT = "0xYOUR_CONTRACT";
const TOKEN_ID = "1";
// ownerOf(uint256) selector = 0x6352211e
const data = "0x6352211e" + BigInt(TOKEN_ID).toString(16).padStart(64, "0");
const res = await fetch(RPC_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "eth_call",
params: [{ to: CONTRACT, data }, "latest"]
})
});
const json = await res.json();
if (json.error) throw new Error(json.error.message);
const owner = "0x" + json.result.slice(-40);
console.log("Owner:", owner);Resultado esperado de la verificación y qué registrar
Una verificación exitosa devuelve la dirección del destinatario desde ownerOf, o un saldo distinto de cero desde balanceOf. Registra el hash de la transacción, el número de bloque, el ID del token, el ID de referencia y la marca de tiempo de la primera lectura confirmada. Si la API de acuñación informa éxito pero la lectura RPC devuelve una dirección cero o se revierte, trata la acuñación como no confirmada e investiga antes de reintentar.
Mantén un registro de verificación por acuñación. Se convierte en tu pista de auditoría y en tu entrada para el procedimiento de medición a continuación.
- Hash de transacción y número de bloque desde el endpoint de estado.
- Resultado independiente de ownerOf o balanceOf desde tu RPC_URL.
- Latencia desde el envío hasta la primera lectura on-chain confirmada.
- Cualquier transición de estado y sus marcas de tiempo.
Medición reproducible del rendimiento y la tasa de fallos
No confíes en las cifras de marketing del proveedor. Mide con tu propia carga de trabajo. El procedimiento: fija un tamaño de lote y una carga útil de metadatos, envía N solicitudes con IDs de referencia únicos a una tasa controlada, consulta el estado hasta que sea terminal y verifica cada acuñación a través de RPC. Repite con varias tasas de envío para encontrar dónde se degradan la latencia y la tasa de fallos.
Registra los resultados en una tabla como la siguiente. Deja las celdas como marcadores de posición hasta que ejecutes la prueba; no las rellenes con valores supuestos.
- | Tasa de envío (req/min) | Aceptadas | Confirmadas | Fallidas | Latencia de confirmación p50 | Latencia de confirmación p95 |
- | --- | --- | --- | --- | --- | --- |
- | 10 | TBD | TBD | TBD | TBD | TBD |
- | 50 | TBD | TBD | TBD | TBD | TBD |
- | 100 | TBD | TBD | TBD | TBD | TBD |
- Ejecuta cada fila al menos tres veces y reporta la mediana. Anota la cadena, el estándar del contrato y la hora del día.
Solución de problemas comunes de las API de acuñación
La mayoría de los fallos se dividen en cuatro categorías. Los errores de solicitud ocurren antes de cualquier evento de blockchain: cargas útiles mal formadas, tipos de contrato no admitidos o permisos faltantes. Los errores de límite de velocidad devuelven indicaciones de reintento en los encabezados; respétalas en lugar de saturar el endpoint. Los errores de transacción ocurren después del envío y deben verificarse a través del endpoint de estado, no de la respuesta inicial. Las discrepancias de verificación significan que la API y la cadena no coinciden —generalmente un problema de sincronización, ocasionalmente un fallo real—.
Para cada categoría, registra el ID de referencia, el estado HTTP, el cuerpo de la respuesta y el último estado. Los reintentos idempotentes con el mismo ID de referencia son seguros; los nuevos IDs de referencia en el reintento son la forma en que ocurren las acuñaciones duplicadas.
- Error de solicitud: corrige la carga útil o la configuración del contrato; no reintentes a ciegas.
- Límite de velocidad: retrocede usando el valor retry-after en la respuesta.
- Error de transacción: consulta el estado, luego verifica on-chain antes de reenviar.
- Discrepancia de verificación: espera la profundidad de confirmación y vuelve a leer.
Limitaciones y compensaciones de la acuñación gestionada
La acuñación gestionada intercambia control por conveniencia. Heredas el soporte de contratos del proveedor, los límites de velocidad, la política de agrupación y el modelo de tarifas. Los requisitos de contratos preestablecidos pueden bloquear la lógica personalizada. La cola suaviza los picos pero añade latencia. La agrupación reduce el gas por token pero acopla acuñaciones no relacionadas en una sola transacción, por lo que un solo fallo puede afectar a un lote.
La alternativa —acuñación directa a través de tu propio endpoint RPC— ofrece control total sobre contratos, nonces y estrategia de gas, a costa de construir y operar el ciclo de vida de la transacción tú mismo. Muchos equipos usan ambos: acuñación gestionada para escalar, lecturas RPC directas para verificación y monitoreo. Si necesitas rendimiento dedicado o latencia predecible, vale la pena evaluar un nodo dedicado junto con los endpoints gestionados.
Próximos pasos: endurece el pipeline
Una vez que el flujo básico funcione, añade webhooks en lugar de sondeo donde sea compatible, aplica idempotencia en la capa de base de datos y alerta sobre discrepancias de verificación. Revisa los precios por uso de RPC si verificas a gran volumen, y consulta el directorio de redes antes de expandirte a cadenas adicionales. Para la selección de endpoints y proveedores, pregunta al RPC Assistant en lugar de codificar suposiciones en tu arquitectura.
- Añade manejo de webhooks con verificación de firma.
- Almacena los IDs de referencia con una restricción de unicidad.
- Alerta cuando una acuñación es confirmada por la API pero no por RPC dentro de un umbral.
- Vuelve a ejecutar la tabla de medición después de cualquier cambio de proveedor o cadena.