Introdução
A integração com a Fireblocks permite visualizar e operar estruturas desse provedor de custódia por meio do Wallet Manager.
A experiência utiliza os mesmos conceitos gerais de Vaults, Wallets, Deposit Addresses, saldos e transferências apresentados nos demais artigos. No entanto, algumas funcionalidades possuem condições específicas determinadas pelo modelo da Fireblocks.
Este artigo apresenta:
- Quais funcionalidades estão disponíveis na integração;
- Como Vaults e Wallets da Fireblocks são representados;
- As condições para criação de Deposit Addresses;
- O tratamento de ativos que exigem ativação on-chain;
- Como os saldos da Fireblocks são apresentados;
- As regras específicas para destinos de transferências;
- Como são tratados depósitos e fundos congelados;
Para operar estruturas Fireblocks pelo Wallet Manager, é necessário possuir uma conexão ativa com o provedor.
Funcionalidades disponíveis
Abaixo segue a lista de funcionalidades disponíveis para a integração com a Fireblocks:
| Categoria | Funcionalidade | Condição ou comportamento |
|---|---|---|
| Vault | Criar Vaults | Os Vaults são criados como MPC, com AutoFuel desabilitado na Fireblocks |
| Vault | Renomear Vaults | |
| Wallet | Criar Wallets | |
| Deposit Address | Criar Deposit Addresses adicionais | Somente em redes compatíveis com essa capacidade na Fireblocks |
| Deposit Address | Editar a descrição de Deposit Addresses adicionais | Disponível para endereços adicionais suportados pela Fireblocks |
| Saldo | Consultar saldos | Os valores são convertidos para os tipos padronizados do Wallet Manager |
| Transferência | Criar transferências | A operação está sujeita às regras de destino da Fireblocks |
| Transferência | Estimar a taxa da transferência | |
| Transferência | Selecionar a prioridade da transferência (Slow, Medium e Fast) | A operação está sujeita às regras de prioridade da Fireblocks |
| Transferência | Selecionar valor líquido (net) ou bruto (Gross) | Quando aplicável à rede e ao ativo |
| Transferência | Executar freeze e unfreeze manuais | Disponível somente via API para usuários autorizados |
Vaults e Wallets da Fireblocks
A Fireblocks possui um modelo nativo de Vaults. Por isso, um Vault Account existente na Fireblocks é representado no Wallet Manager como um Vault do tipo Native.
Isso significa que o Vault existe efetivamente no provedor, e não apenas como um agrupamento criado pelo Wallet Manager.
Uma Wallet Fireblocks sempre pertence a um Vault. Durante a criação de uma nova Wallet, é necessário:
- selecionar um Vault Fireblocks existente; ou
- criar um novo Vault durante o mesmo fluxo.
Criação de Vaults
Para criar um Vault Fireblocks, é necessário informar um nome.
Atualmente, os seguintes parâmetros são aplicados automaticamente na integração:
- o Vault é criado como MPC;
- o recurso AutoFuel fica desabilitado.
O fluxo completo está descrito em Como criar uma Wallet no Wallet Manager.
Deposit Addresses
Main Deposit Address
O endereço permanente da Wallet na Fireblocks é apresentado no Wallet Manager como o Main Deposit Address.
Quando a rede utilizar uma informação complementar, o Wallet Manager também apresenta o respectivo:
- memo;
- tag;
- identificador equivalente utilizado pela rede.
O endereço e o memo ou tag, quando existentes, devem ser considerados em conjunto para identificar corretamente o destino do depósito.
Deposit Addresses adicionais
A Fireblocks permite criar Deposit Addresses adicionais em algumas redes.
Esses endereços podem ser utilizados, por exemplo, para diferenciar recebimentos por:
- cliente;
- origem;
- unidade de negócio;
- finalidade operacional.
Durante a criação, é possível adicionar uma descrição opcional para identificar o endereço. Essa descrição também pode ser alterada posteriormente.
Disponibilidade por rede
A criação de endereços adicionais depende das capacidades oferecidas pela Fireblocks para cada rede.
Ela pode estar disponível, por exemplo, em:
- redes baseadas em UTXO;
- redes que utilizam memo ou tag para diferenciar recebimentos.
Em redes EVM e na Solana, por exemplo, a Fireblocks não permite a criação de múltiplos endereços para a mesma Wallet.
Ativos que exigem ativação on-chain
Algumas redes exigem que determinados ativos sejam ativados na Wallet antes que possam ser recebidos ou enviados.
Esse processo pode ser chamado de:
- trust line;
- opt-in;
- asset activation.
Essa condição pode existir, por exemplo, em redes como:
- XRP Ledger;
- Stellar;
- Algorand.
A ativação é uma operação on-chain, pode exigir assinatura e normalmente consome uma taxa de rede.
Atualmente, essa ativação não pode ser comandada pelo Wallet Manager.
Por isso, a existência de um Vault ou de uma Wallet para determinada rede não garante que todos os ativos dessa rede já estejam disponíveis para operação.
Antes da utilização de um ativo que exija ativação, é necessário:
- realizar a ativação diretamente no provedor, quando necessário;
- aguardar a atualização da estrutura no Wallet Manager.
Como os saldos da Fireblocks são apresentados
Os saldos informados pela Fireblocks são convertidos para os tipos padronizados do Wallet Manager.
| Fireblocks | Wallet Manager | Significado |
|---|---|---|
| Total | Total | Saldo total confirmado |
| Available | Available | Valor disponível para novas operações |
| Pending | Inbound pending | Entradas que ainda aguardam conclusão |
| Frozen | Restricted | Fundos congelados por uma ação de compliance ou administrativa |
| Locked amount | Outbound in flight | Valor comprometido em uma transferência de saída em andamento |
| Staked | Staked | Valor informado pela Fireblocks como mantido em staking |
| Reserved | Protocol reserved | Valor mínimo reservado pelas regras da rede |
Transferências de saída
As transferências de saída seguem o fluxo geral do Wallet Manager, incluindo Governança e AML, quando habilitado.
Todas as etapas estão descritas em Como criar e acompanhar uma transferência.
A principal particularidade da Fireblocks está na identificação do destino.
O destino precisa estar registrado na Fireblocks
Para que uma transferência seja executada pela Plataforma da Parfin, o endereço de destino precisa estar registrado no mesmo workspace Fireblocks utilizado pela conexão.
Atualmente, o destino deve pertencer a uma destas categorias:
- outro Vault da mesma conexão Fireblocks;
- uma Internal Wallet cadastrada na Fireblocks;
- uma External Wallet cadastrada na Fireblocks.
Internal Wallets e External Wallets são categorias de Whitelisted Addresses da Fireblocks e precisam estar aprovadas no Workspace da contraparte para serem utilizadas.
Transferências para endereços avulsos, também chamados de One-Time Addresses, não estão disponíveis atualmente na integração.
Como o destino é validado
Antes de permitir a criação da transferência pela Plataforma da Parfin, o sistema verifica se o endereço de destino selecionado pertence a alguma das categorias mencionadas acima.
Quando o mesmo destino é encontrado em mais de uma delas, o Wallet Manager utiliza a seguinte ordem de prioridade:
- Vault da mesma conexão;
- Internal Wallet;
- External Wallet.
Se nenhuma correspondência for encontrada, a transferência não poderá ser criada. Nesse caso, será necessário registrar o destino no workspace Fireblocks e aguardar que a informação esteja disponível para a Plataforma.
Cadastro de Internal e External Wallets
O cadastro e a aprovação de Internal Wallets e External Wallets devem ser realizados diretamente na Fireblocks, na seção Whitelisted Addresses.
O Wallet Manager utiliza essas informações para validar e comandar transferências, mas não cria essas estruturas no provedor.
Depósitos e fundos congelados
Na Fireblocks, é possível congelar (freeze) fundos relacionados a uma transferência específica. Saldos congelados são deduzidos do valor disponível e não podem ser utilizados em transferências.
Quando um depósito é congelado, a transferência apresenta o status Rejected na Fireblocks, mesmo que ela esteja confirmada on-chain.
O congelamento de uma transferência na Fireblocks pode ocorrer por:
- fluxo automático interno do próprio provedor;
- solicitação manual de congelamento (freeze).
Nesse cenário, são esperadas as seguintes informações:
| Informação | Resultado |
|---|---|
| Status da Transferência no Wallet Manager | COMPLETED |
| Status da Transferência na Fireblocks | REJECTED |
| Saldo recebido referente a transferência congelada | RESTRICTED |
Essas informações representam aspectos diferentes da operação:
COMPLETEDindica que os ativos foram recebidos e o depósito foi processado pelo Wallet Manager;REJECTEDpreserva a condição informada pela Fireblocks;indica que o valor recebido está congelado e não pode ser movimentado;RESTRICTED
Portanto, o status COMPLETED da transferência não significa necessariamente que os fundos estão disponíveis para utilização.
Congelamento (freeze) automático por AML
Quando o AML está habilitado na instância e um depósito na conexão da Fireblocks é classificado como arriscado (Risky), o Wallet Manager solicita automaticamente o freeze da transferência na Fireblocks.
Depois da confirmação do provedor:
- o valor congelado passa a compor o saldo RESTRICTED da wallet que recebeu o depósito;
- o Status do depósito permanece como COMPLETED.
Congelamento/Descongelamento (freeze e unfreeze) manuais
Atualmente, essas ações manuais estão disponíveis somente via API.
É possível solicitar o unfreeze de uma transferência previamente congelada, inclusive quando o congelamento tiver sido originado diretamente na Fireblocks.
Depois do freeze ou unfreeze, a Fireblocks atualiza os saldos correspondentes, e o Wallet Manager reflete os novos valores de Available e Restricted.