Skip to main content
Em resumo
A API de Assinatura da Blockradar permite que você assine criptograficamente mensagens de texto simples, dados estruturados (dados tipados) e transações brutas usando as chaves privadas da sua carteira. Assine mensagens para comprovar a propriedade da carteira. Assine transações construídas externamente (ex.: swaps Jupiter no Solana) sem expor chaves privadas, e opcionalmente faça broadcast delas on-chain.

Pré-requisitos

Antes de usar a API de Assinatura, certifique-se de ter:
1

Chave API

Obtenha sua chave API no Painel da Blockradar. Navegue até Developers para gerar uma.
2

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.
3

Ambiente

Escolha entre Testnet (para desenvolvimento) ou Mainnet (para produção). Carteiras são isoladas por ambiente.

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.

Assinatura de Transação

Assine transações brutas construídas externamente. Construa um swap no Jupiter, uma chamada de contrato via ethers.js ou uma transferência TronWeb, e envie a tx não assinada para obter a assinatura sem expor chaves privadas.

Broadcast de Transação

Assine e faça broadcast de uma transação bruta em um único passo. A Blockradar assina a transação e a submete on-chain via uma fila confiável com retentativas automáticas.

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
  • Execução de swaps externos: Construa um swap Jupiter no Solana, assine com a Blockradar e faça broadcast on-chain
  • Interações customizadas com contratos: Construa qualquer transação externamente e tenha a Blockradar assinando e/ou submetendo ela

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


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

Parâmetros da Requisição

Exemplo de Assinatura de Mensagem

Resposta EVM

Resposta Tron / Solana

Para Tron e Solana, o objeto signedTransaction contém apenas o campo signature (sem componentes r, s, v):

Campos da Resposta


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.
A assinatura de dados tipados está disponível apenas para blockchains compatíveis com EVM (Ethereum, Polygon, BSC, Base, Arbitrum, Optimism, Celo). Tron e Solana não suportam EIP-712.

Padrões Suportados

Parâmetros da Requisição

Exemplo EIP-2612 Permit

Resposta de Dados Tipados

Campos do Objeto Domain

Validação do Chain ID
O chainId no seu objeto de domínio deve corresponder ao chain ID da rede blockchain da carteira. Se não corresponderem, a API retorna um erro 400 Chain ID mismatch.

Assinatura com Endereço Filho

Assine mensagens, dados tipados, transações ou faça broadcast usando um endereço filho específico em vez da carteira mestra. Todas as quatro operações de assinatura estão disponíveis para endereços filhos:
A assinatura com endereço filho segue o mesmo formato de requisição e resposta da assinatura com carteira mestra. A única diferença é a URL do endpoint, que inclui o addressId.

Eventos de Webhook

Operações de assinatura disparam um webhook com o registro da transação:

Payload do Webhook (Assinatura de Mensagem ou Dados Tipados)

Payload do Webhook (Assinatura de Transação)

Para assinatura de transação, o campo signedTransaction é uma string (não um objeto). O formato depende da chain.

Payload do Webhook (Broadcast com Sucesso)

Após a fila de broadcast confirmar a transação on-chain, você recebe este webhook. O campo hash é atualizado para o hash da transação on-chain e confirmed muda para true.

Payload do Webhook (Broadcast com Falha)

Se o broadcast falhar permanentemente após todas as tentativas de retentativa, você recebe este webhook. O status é FAILED e confirmed permanece false.

Assinatura de Transação

Assine uma transação bruta, não assinada, construída externamente. Você constrói a transação usando qualquer SDK (ethers.js, TronWeb, Solana web3.js, Jupiter API), e envia a transação serializada não assinada para a Blockradar para assinatura e/ou transmissão, sem precisar construir ou gerenciar sua própria infraestrutura ou nós blockchain.

Blockchains e Formatos Suportados

Parâmetros da Requisição

Exemplo de Assinatura de Transação (Solana + Jupiter)

Exemplo de Assinatura de Transação (EVM)

Resposta de Assinatura (EVM)

Resposta de Assinatura (Solana)

Resposta de Assinatura (Tron)

Para assinatura de transação, signedTransaction é uma string, não um objeto. Isso é diferente da assinatura de mensagem, onde retorna um objeto com componentes da assinatura como r, s, v.

Formato de signedTransaction por Chain

Campo hash por Chain


Broadcast de Transação

Assine e faça broadcast de uma transação bruta em um único passo. A Blockradar assina a transação e a submete on-chain via uma fila confiável com retentativas automáticas. A API retorna imediatamente com status PENDING. Você receberá um webhook signed.success ou signed.failed quando o resultado on-chain for confirmado.
O broadcast requer fundos de testnet/mainnet na carteira para pagar taxas de gas. A transação deve ser válida e não estar expirada (blockhashes do Solana expiram em ~90 segundos).

Requisição

Mesmos parâmetros da assinatura de transação:

Exemplo de Broadcast

Resposta de Broadcast (Exemplo Solana, imediata)

Ciclo de Vida do Broadcast

A transação passa pelos seguintes estados:
A fila de broadcast faz até 10 retentativas com intervalos de 5 minutos. Para Solana, se o blockhash expirar, as retentativas não ajudarão. Você precisará reconstruir a transação com um blockhash novo.

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

O walletId não existe ou não pertence ao seu negócio.
O addressId não existe ou não está associado à carteira especificada.
A assinatura de dados tipados (EIP-712) está disponível apenas em chains compatíveis com EVM. Use a assinatura de mensagem para Tron e Solana.
O chainId no seu objeto de domínio de dados tipados não corresponde à rede blockchain da carteira.
A verificação interna de ida e volta falhou. Isso indica um erro do sistema. Entre em contato com o suporte.
O campo transaction não é um base64 válido, ou os bytes decodificados não são uma VersionedTransaction válida do Solana.
O campo transaction não é um JSON válido. Transações EVM e Tron devem ser objetos serializados como JSON string.

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 chainId no 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 verifyingContract deve ser o contrato que verificará a assinatura on-chain

Assinatura de Transação

  • Construa a transação com o remetente correto: A transação não assinada deve usar a chave pública da carteira ou endereço filho como fee payer (Solana) ou remetente (EVM/Tron). Se a chave não corresponder, a assinatura falhará.
  • Blockhashes do Solana expiram rapidamente: Blockhashes do Solana são válidos por cerca de 60 a 90 segundos. Construa a transação e chame o endpoint de assinatura prontamente. Se usar broadcast, as retentativas da fila não ajudarão quando o blockhash expirar.
  • Gerenciamento de nonce EVM: Defina o nonce corretamente. Se o nonce já foi usado, o broadcast falhará. Consulte o nonce na chain imediatamente antes de construir a transação.
  • Expiração do Tron: Transações Tron têm uma janela de expiração de 24 horas definida durante a construção. Isso dá tempo suficiente para assinatura e broadcast.
  • Apenas assinar vs broadcast: Use /signing/transaction quando quiser fazer broadcast da transação você mesmo ou através de outro serviço. Use /signing/broadcast quando quiser que a Blockradar cuide da submissão com retentativas automáticas.

Referência da API

Endpoints da Carteira Mestra

Endpoints do Endereço Filho