Em resumo
A API de Assinatura da Blockradar permite que você assine criptograficamente mensagens de texto simples e dados estruturados (dados tipados) usando as chaves privadas da sua carteira. As assinaturas comprovam a propriedade da carteira para serviços de terceiros sem movimentar fundos ou pagar taxas de rede (gas).
A API de Assinatura da Blockradar permite que você assine criptograficamente mensagens de texto simples e dados estruturados (dados tipados) usando as chaves privadas da sua carteira. As assinaturas comprovam a propriedade da carteira para serviços de terceiros sem movimentar fundos ou pagar taxas de rede (gas).
Pré-requisitos
Antes de usar a API de Assinatura, certifique-se de ter:Chave API
Obtenha sua chave API no Painel da Blockradar. Navegue até Developers para gerar uma.
Carteira Criada
Crie uma carteira mestra no Painel da Blockradar. Navegue até Wallets e crie uma para a blockchain desejada. Você precisará do
walletId para operações de assinatura.Como Funciona
A API de Assinatura produz uma assinatura criptográfica que comprova que você controla um endereço de carteira específico. A saída assinada pode ser verificada por qualquer terceiro sem acessar suas chaves privadas.Assinatura de Mensagem
Assine mensagens de texto simples para comprovar a propriedade da carteira. Funciona em todas as blockchains suportadas: EVM, Tron e Solana.
Assinatura de Dados Tipados
Assine dados estruturados seguindo o padrão EIP-712. Usado para aprovações sem gas (EIP-2612 Permit) e transferências autorizadas (EIP-3009). Apenas EVM.
Casos de uso comuns
- Registro em provedores terceiros — Comprove que você é proprietário de um endereço ao se cadastrar em serviços como Iron, Circle ou outros protocolos DeFi
- Aprovações de tokens sem gas — Assine mensagens EIP-2612 Permit para autorizar gastos de tokens sem uma transação on-chain
- Transferências autorizadas — Assine mensagens EIP-3009 TransferWithAuthorization para transferências delegadas
- Atestações off-chain — Crie provas verificáveis de intenção ou acordo vinculadas a um endereço de carteira
Carteira Mestra vs Endereço Filho
A API de Assinatura está disponível em dois níveis:Carteira Mestra
Assine usando as chaves da carteira mestra. Ideal para operações de tesouraria e integrações com provedores.
Endereço Filho
Assine usando as chaves de um endereço filho específico. Use quando o terceiro exigir uma assinatura de um endereço de depósito.
Endpoints
| Operação | Carteira Mestra | Endereço Filho |
|---|---|---|
| Assinar Mensagem | POST /v1/wallets/{walletId}/signing/message | POST /v1/wallets/{walletId}/addresses/{addressId}/signing/message |
| Assinar Dados Tipados | POST /v1/wallets/{walletId}/signing/typed-data | POST /v1/wallets/{walletId}/addresses/{addressId}/signing/typed-data |
Assinatura de Mensagem
Assine uma mensagem de texto simples com a chave privada da sua carteira. A API assina a mensagem, verifica se a assinatura corresponde ao endereço da carteira e retorna tanto a assinatura quanto um registro de transação.Blockchains Suportadas
| Blockchain | Padrão de Assinatura | Formato da Assinatura |
|---|---|---|
| EVM (Ethereum, Polygon, BSC, Base, Arbitrum, Optimism, Celo) | EIP-191 (personal_sign) | Codificado em hex com componentes r, s, v |
| Tron | TronWeb signMessageV2 | String codificada em hex |
| Solana | Ed25519 | String codificada em Base58 |
Parâmetros da Requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
message | string | Sim | A mensagem de texto simples a ser assinada. Máximo de 4.096 caracteres. |
reference | string | Não | Seu ID de rastreamento interno. Use para idempotência — referências duplicadas são rejeitadas. |
metadata | object | Não | Pares chave-valor personalizados armazenados com o registro da transação. |
Exemplo de Assinatura de Mensagem
Resposta EVM
Resposta Tron / Solana
Para Tron e Solana, o objetosignedTransaction contém apenas o campo signature (sem componentes r, s, v):
Campos da Resposta
| Campo | Descrição |
|---|---|
id | ID único da transação para o registro de assinatura |
hash | A assinatura criptográfica. Para EVM: string hex. Para Tron: string hex. Para Solana: string base58. |
status | Sempre SUCCESS para assinaturas concluídas |
type | Sempre SIGNED para transações de assinatura |
senderAddress | O endereço da carteira que produziu a assinatura |
signedTransaction | Componentes da assinatura. EVM inclui r, s, v e signature completa. Tron e Solana incluem apenas signature. |
reference | Sua string de referência fornecida (se houver) |
metadata | Seu objeto de metadados fornecido (se houver) |
Assinatura de Dados Tipados (Apenas EVM)
Assine dados estruturados seguindo o padrão EIP-712. Isso é usado para aprovações sem gas, transferências delegadas e outros fluxos de autorização on-chain que requerem uma assinatura estruturada.Padrões Suportados
| Padrão | Caso de Uso |
|---|---|
| EIP-712 | Assinatura genérica de dados estruturados |
| EIP-2612 (Permit) | Aprovações de tokens sem gas — aprove gastos sem uma transação on-chain |
| EIP-3009 (TransferWithAuthorization) | Transferências delegadas — autorize uma transferência que um terceiro submete |
Parâmetros da Requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
domain | object | Sim | Separador de domínio EIP-712. Inclui name, version, chainId e verifyingContract. |
types | object | Sim | Definições de tipo para os dados estruturados. |
message | object | Sim | Os dados a serem assinados, em conformidade com as definições de tipo. |
Exemplo EIP-2612 Permit
Resposta de Dados Tipados
Campos do Objeto Domain
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome do domínio de assinatura (ex.: o nome do token ou do dApp) |
version | string | Sim | A versão do domínio |
chainId | number | Sim | O ID da chain. Deve corresponder à rede blockchain da carteira. |
verifyingContract | string | Sim | O endereço do contrato que verificará a assinatura |
salt | string | Não | Salt de domínio opcional para EIP-712 v4 |
Assinatura com Endereço Filho
Assine mensagens ou dados tipados usando um endereço filho específico em vez da carteira mestra:Eventos de Webhook
Operações de assinatura disparam um webhook com o registro da transação:| Evento | Descrição |
|---|---|
signed.success | Mensagem ou dados tipados assinados e verificados |
Payload do Webhook
Exemplo de Fluxo Completo
Aqui está uma implementação completa para assinar uma mensagem e enviar a assinatura para um provedor terceiro:Respostas de Erro
Carteira Não Encontrada
Carteira Não Encontrada
walletId não existe ou não pertence ao seu negócio.Endereço Não Encontrado
Endereço Não Encontrado
addressId não existe ou não está associado à carteira especificada.Blockchain Não Suportada (Dados Tipados)
Blockchain Não Suportada (Dados Tipados)
Chain ID Incompatível
Chain ID Incompatível
chainId no seu objeto de domínio de dados tipados não corresponde à rede blockchain da carteira.Falha na Verificação da Assinatura
Falha na Verificação da Assinatura
Melhores Práticas
Segurança
- Use referências — Rastreie operações de assinatura com IDs de referência únicos para trilhas de auditoria e idempotência
- Verifique a mensagem — Antes de assinar, confirme que o conteúdo da mensagem corresponde ao que o serviço terceiro espera
- Limite o tamanho da mensagem — Mensagens são limitadas a 4.096 caracteres. Mantenha as mensagens concisas e específicas
Integração
- Sem taxas de gas — Operações de assinatura são off-chain e não requerem saldo de token nativo
- Resposta imediata — As assinaturas são geradas de forma síncrona. Não é necessário polling ou espera por webhook para a assinatura em si
- Ouça os webhooks — Use webhooks para manter uma trilha de auditoria de todos os eventos de assinatura
Dados Tipados
- Combine os chain IDs — O
chainIdno seu domínio deve corresponder à rede da carteira. Use chain IDs de sandbox (testnet) para testes e chain IDs de produção (mainnet) para operações em produção - Verifique o contrato — O
verifyingContractdeve ser o contrato que verificará a assinatura on-chain
Referência da API
Endpoints da Carteira Mestra
| Endpoint | Descrição |
|---|---|
| Assinar Mensagem | Assinar uma mensagem de texto simples |
| Assinar Dados Tipados | Assinar dados estruturados EIP-712 |
Endpoints do Endereço Filho
| Endpoint | Descrição |
|---|---|
| Assinar Mensagem | Assinar uma mensagem de texto simples a partir de um endereço filho |
| Assinar Dados Tipados | Assinar dados estruturados EIP-712 a partir de um endereço filho |

