En resumen
La API de Firma de Blockradar te permite firmar criptográficamente mensajes de texto plano y datos estructurados (datos tipados) usando las claves privadas de tu billetera. Las firmas demuestran la propiedad de la billetera ante servicios de terceros sin mover fondos ni pagar comisiones de red (gas).
La API de Firma de Blockradar te permite firmar criptográficamente mensajes de texto plano y datos estructurados (datos tipados) usando las claves privadas de tu billetera. Las firmas demuestran la propiedad de la billetera ante servicios de terceros sin mover fondos ni pagar comisiones de red (gas).
Requisitos Previos
Antes de usar la API de Firma, asegúrate de tener:Clave API
Obtén tu clave API desde el Panel de Blockradar. Navega a Developers para generar una.
Billetera Creada
Crea una billetera principal desde el Panel de Blockradar. Navega a Wallets y crea una para tu blockchain objetivo. Necesitarás el
walletId para las operaciones de firma.Cómo Funciona
La API de Firma produce una firma criptográfica que demuestra que controlas una dirección de billetera específica. La salida firmada puede ser verificada por cualquier tercero sin acceder a tus claves privadas.Firma de Mensajes
Firma mensajes de texto plano para demostrar la propiedad de la billetera. Funciona en todas las blockchains compatibles: EVM, Tron y Solana.
Firma de Datos Tipados
Firma datos estructurados siguiendo el estándar EIP-712. Se usa para aprobaciones sin gas (EIP-2612 Permit) y transferencias autorizadas (EIP-3009). Solo EVM.
Casos de uso comunes
- Registro con proveedores de terceros — Demuestra que posees una dirección al registrarte con servicios como Iron, Circle u otros protocolos DeFi
- Aprobaciones de tokens sin gas — Firma mensajes EIP-2612 Permit para autorizar el gasto de tokens sin una transacción en cadena
- Transferencias autorizadas — Firma mensajes EIP-3009 TransferWithAuthorization para transferencias delegadas
- Atestaciones fuera de cadena — Crea pruebas verificables de intención o acuerdo vinculadas a una dirección de billetera
Billetera Principal vs Dirección Hija
La API de Firma está disponible en dos niveles:Billetera Principal
Firma usando las claves de la billetera principal. Ideal para operaciones a nivel de tesorería e integraciones con proveedores.
Dirección Hija
Firma usando las claves de una dirección hija específica. Úsalo cuando el tercero requiera una firma desde una dirección de depósito.
Endpoints
| Operación | Billetera Principal | Dirección Hija |
|---|---|---|
| Firmar Mensaje | POST /v1/wallets/{walletId}/signing/message | POST /v1/wallets/{walletId}/addresses/{addressId}/signing/message |
| Firmar Datos Tipados | POST /v1/wallets/{walletId}/signing/typed-data | POST /v1/wallets/{walletId}/addresses/{addressId}/signing/typed-data |
Firma de Mensajes
Firma un mensaje de texto plano con la clave privada de tu billetera. La API firma el mensaje, verifica que la firma coincida con la dirección de la billetera y devuelve tanto la firma como un registro de transacción.Blockchains Compatibles
| Blockchain | Estándar de Firma | Formato de Firma |
|---|---|---|
| EVM (Ethereum, Polygon, BSC, Base, Arbitrum, Optimism, Celo) | EIP-191 (personal_sign) | Codificada en hexadecimal con componentes r, s, v |
| Tron | TronWeb signMessageV2 | Cadena codificada en hexadecimal |
| Solana | Ed25519 | Cadena codificada en Base58 |
Parámetros de Solicitud
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
message | string | Sí | El mensaje de texto plano a firmar. Máximo 4,096 caracteres. |
reference | string | No | Tu ID de seguimiento interno. Úsalo para idempotencia — las referencias duplicadas son rechazadas. |
metadata | object | No | Pares clave-valor personalizados almacenados con el registro de transacción. |
Ejemplo de Firma de Mensaje
Respuesta EVM
Respuesta Tron / Solana
Para Tron y Solana, el objetosignedTransaction contiene solo el campo signature (sin componentes r, s, v):
Campos de Respuesta
| Campo | Descripción |
|---|---|
id | ID de transacción único para el registro de firma |
hash | La firma criptográfica. Para EVM: cadena hexadecimal. Para Tron: cadena hexadecimal. Para Solana: cadena base58. |
status | Siempre SUCCESS para firmas completadas |
type | Siempre SIGNED para transacciones de firma |
senderAddress | La dirección de billetera que produjo la firma |
signedTransaction | Componentes de la firma. EVM incluye r, s, v y la signature completa. Tron y Solana incluyen solo signature. |
reference | Tu cadena de referencia proporcionada (si la hay) |
metadata | Tu objeto de metadata proporcionado (si lo hay) |
Firma de Datos Tipados (Solo EVM)
Firma datos estructurados siguiendo el estándar EIP-712. Esto se usa para aprobaciones sin gas, transferencias delegadas y otros flujos de autorización en cadena que requieren una firma estructurada.Estándares Compatibles
| Estándar | Caso de Uso |
|---|---|
| EIP-712 | Firma genérica de datos estructurados |
| EIP-2612 (Permit) | Aprobaciones de tokens sin gas — aprueba el gasto sin una transacción en cadena |
| EIP-3009 (TransferWithAuthorization) | Transferencias delegadas — autoriza una transferencia que un tercero envía |
Parámetros de Solicitud
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
domain | object | Sí | Separador de dominio EIP-712. Incluye name, version, chainId y verifyingContract. |
types | object | Sí | Definiciones de tipos para los datos estructurados. |
message | object | Sí | Los datos a firmar, conforme a las definiciones de tipos. |
Ejemplo de EIP-2612 Permit
Respuesta de Datos Tipados
Campos del Objeto Domain
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
name | string | Sí | El nombre del dominio de firma (ej., el nombre del token o de la dApp) |
version | string | Sí | La versión del dominio |
chainId | number | Sí | El ID de cadena. Debe coincidir con la red blockchain de la billetera. |
verifyingContract | string | Sí | La dirección del contrato que verificará la firma |
salt | string | No | Salt de dominio opcional para EIP-712 v4 |
Firma con Dirección Hija
Firma mensajes o datos tipados usando una dirección hija específica en lugar de la billetera principal:Eventos de Webhook
Las operaciones de firma activan un webhook con el registro de transacción:| Evento | Descripción |
|---|---|
signed.success | Mensaje o datos tipados firmados y verificados |
Payload del Webhook
Ejemplo de Flujo Completo
Aquí tienes una implementación completa para firmar un mensaje y enviar la firma a un proveedor de terceros:Respuestas de Error
Billetera No Encontrada
Billetera No Encontrada
walletId no existe o no pertenece a tu negocio.Dirección No Encontrada
Dirección No Encontrada
addressId no existe o no está asociado con la billetera especificada.Blockchain No Soportada (Datos Tipados)
Blockchain No Soportada (Datos Tipados)
Chain ID No Coincide
Chain ID No Coincide
chainId en tu objeto domain de datos tipados no coincide con la red blockchain de la billetera.Verificación de Firma Fallida
Verificación de Firma Fallida
Mejores Prácticas
Seguridad
- Usa referencias — Rastrea las operaciones de firma con IDs de referencia únicos para auditoría e idempotencia
- Verifica el mensaje — Antes de firmar, confirma que el contenido del mensaje coincida con lo que espera el servicio de terceros
- Limita la longitud del mensaje — Los mensajes están limitados a 4,096 caracteres. Mantén los mensajes concisos y específicos
Integración
- Sin comisiones de gas — Las operaciones de firma son fuera de cadena y no requieren saldo de token nativo
- Respuesta inmediata — Las firmas se generan de forma síncrona. No se necesita polling ni esperar webhooks para la firma en sí
- Escucha los webhooks — Usa webhooks para mantener un registro de auditoría de todos los eventos de firma
Datos Tipados
- Coincide los chain IDs — El
chainIden tu domain debe coincidir con la red de la billetera. Usa chain IDs de sandbox (testnet) para pruebas y chain IDs de producción (mainnet) para operaciones en vivo - Verifica el contrato — El
verifyingContractdebe ser el contrato que verificará la firma en cadena
Referencia de API
Endpoints de Billetera Principal
| Endpoint | Descripción |
|---|---|
| Firmar Mensaje | Firma un mensaje de texto plano |
| Firmar Datos Tipados | Firma datos estructurados EIP-712 |
Endpoints de Dirección Hija
| Endpoint | Descripción |
|---|---|
| Firmar Mensaje | Firma un mensaje de texto plano desde una dirección hija |
| Firmar Datos Tipados | Firma datos estructurados EIP-712 desde una dirección hija |

