Pular para o conteúdo

A solução criativa por trás do USDC na rede Stellar

usdc stellar network
Resumo
  • A implementação do USDC na Stellar precisava atender a requisitos do Centre Consortium: apenas membros confiáveis podem emitir, minters podem ser adicionados ou removidos, cada minter deve ser autônomo dentro de um limite e todas as reservas devem ser lastreadas 1:1 em dólar.
  • Um esquema de multiassinatura sozinho não bastava, pois ou não limitava quanto cada minter poderia emitir ou exigia assinaturas combinadas, o que tiraria a autonomia dos minters.
  • A solução usou um token intermediário chamado USDCAllow, emitido por uma conta multiassinatura, combinado com a DEX nativa da Stellar: a conta emissora abre uma ordem trocando USDC por USDCAllow na proporção 1:1, e cada minter converte seu USDCAllow em USDC de forma autônoma até o limite recebido.
  • O resultado é uma operação descentralizada, segura e transparente, em que nenhuma entidade sozinha controla o ecossistema, o risco de comprometimento fica contido no limite de cada minter e qualquer usuário pode acompanhar a operação na blockchain.

Quando o assunto é emitir um ativo digital em uma blockchain, cada rede traz suas próprias características e é, de certa forma, única. Esses aspectos precisam entrar na conta na hora de arquitetar a representação de um ativo em qualquer rede nova, e isso vira um desafio rápido quando você emite o mesmo ativo em várias redes diferentes.

Recentemente li este artigo do Mike Grant, que explica como a Circle implementou o USDC na rede Stellar e como usou as funcionalidades nativas da rede para atender aos requisitos que tinha.

Quero me aprofundar nesse caso de uso, porque a abordagem escolhida parece pouco intuitiva à primeira vista e mesmo assim se revela uma solução inteligente.

O caso de uso

Emitido e gerido pelo Centre Consortium, o USDC é uma stablecoin atrelada ao dólar americano na proporção de 1:1. Disponível em várias redes já consolidadas, como Ethereum, Solana e Polygon, o USDC tem um padrão bem estruturado de governança e implementação, criado sem depender de uma rede específica.

Cada membro do Centre Consortium pode emitir novas reservas de USDC e precisa conseguir fazer isso com autonomia. Ou seja, você tem um conjunto de entidades confiáveis administrando um único ativo.

No planejamento da chegada do USDC à rede Stellar, havia um conjunto de requisitos a cumprir para garantir que a implementação seguisse esses padrões com segurança.

Olhando os pontos principais citados no artigo deles, dá para inferir alguns desses requisitos:

  • Só membros confiáveis do Centre podem emitir USDC;
  • Deve ser possível adicionar novos minters ou remover os que tenham sido comprometidos;
  • Cada minter deve ser totalmente autônomo dentro de um limite de quanto USDC pode emitir;
  • Todas as reservas devem ser integralmente lastreadas em dólar, na proporção de 1:1.

O desafio

A rede Stellar oferece emissão de tokens e várias outras funcionalidades como operações nativas, executadas com facilidade dentro de uma transação.

Essas operações já vêm prontas e aceleram muito o desenvolvimento. Ainda assim, cada caso de uso precisa ser bem planejado antes da implementação. No caso do USDC, o desafio principal era atender a todos os requisitos sem tirar a autonomia dos minters.

Na rede Stellar, a identidade única de um ativo vem do código do ativo (por exemplo, ‘USDC’)  somado à conta emissora (a chave pública da carteira emissora). Podem existir várias contas emitindo um ativo chamado ‘USDC’, mas eles seriam tratados como ativos diferentes, já que as contas emissoras são diferentes.

Para manter a fungibilidade e ter uma única representação do USDC na rede Stellar, o ativo precisava ser emitido por uma conta central.

Em geral, isso não seria um problema, porque a rede Stellar também oferece multiassinatura nativa, o que permite que uma conta seja administrada por várias chaves de assinatura com pesos diferentes.

Um esquema de assinaturas personalizado pode restringir o acesso de entidades específicas a certas operações e exigir uma combinação de assinaturas para ações sensíveis, de maior risco.

Pensando em como representar a estrutura do Centre, um esquema de multiassinatura não cobriria todos os requisitos. Um minter poderia ter a própria chave de assinatura de segurança média e emitir por conta própria, mas isso controlaria só o acesso à operação de emissão, sem nenhum limite de quanto ele conseguiria emitir.

Por outro lado, o limite de segurança poderia ser configurado para exigir assinaturas combinadas em uma operação de emissão, de modo que ela só rodasse depois de revisada e assinada por outro minter.

Isso adicionaria uma camada de segurança: nenhuma entidade isolada colocaria em risco o supply do ativo caso a chave dela fosse comprometida. O problema dessa abordagem é que, pelo padrão do Centre, o minter perderia a autonomia para gerir o supply.

Outras estratégias com multiassinatura e transações pré-assinadas eram possíveis, mas ou não atenderiam aos requisitos ou aumentariam o esforço de desenvolvimento para estender a parte off-chain da solução.

A solução

Para contornar os limites das funcionalidades nativas e manter a maior parte desses mecanismos de controle dentro da blockchain, a implementação do USDC usou um ativo adicional para gerir o limite de cada minter, combinado com a exchange descentralizada nativa da Stellar, que passa a funcionar como uma espécie de controlador de emissão dinâmico.

Fases da implementação do USDC na rede Stellar

Faz parte da anatomia dos tokens emitidos na rede Stellar: uma conta emissora não guarda saldo do próprio ativo. Sempre que a conta emissora envia parte do próprio ativo para outra conta, esse montante é emitido e conta como aumento de supply na rede.

No caminho inverso, sempre que algum montante do ativo volta para a conta emissora original, ele é queimado e sai do supply total existente.

Combinando esse comportamento com a DEX, uma conta emissora pode abrir ordens para trocar os próprios tokens por outros ativos.

Sempre que uma ordem é executada e os montantes são transferidos, todo valor do token do emissor que sai é emitido na hora. Do mesmo modo, todo valor do token que entra de volta na conta emissora é queimado.

É uma alternativa interessante para gerir o supply de um token, mas sozinha não seria uma boa abordagem para o USDC. Como o ativo precisa estar acessível a qualquer usuário final, qualquer pessoa conseguiria interagir pela DEX e afetar o supply do token diretamente.

Para melhorar esse cenário, eles usaram uma saída inteligente: introduziram um token intermediário chamado ‘USDCAllow’.

Esse novo ativo é emitido por uma conta separada, controlada por um esquema de multiassinatura do mesmo jeito que a conta emissora do USDC, de forma que nenhuma entidade isolada consegue operar essas carteiras sozinha.É necessária uma combinação de assinaturas para garantir que vários membros do consórcio revisaram e aprovaram as transações.

Os minters então usam esse novo token para representar a quantidade máxima de USDC que podem emitir por conta própria.  Cada 1 unidade de ‘USDCAllow’ representa a capacidade de emitir 1 unidade de ‘USDC’ e é distribuída a cada novo minter.

Junto a esse novo token, o emissor usa a DEX para trocar USDC por USDCAllow, ligando de forma direta e transparente a governança do supply de USDC às contas dos minters e garantindo que cada entidade opere com autonomia total até o limite definido.

O fluxo na prática

Tudo começa com a conta emissora do USDC criando uma ordem ‘Buy’ na DEX da Stellar, oferecendo tokens USDC por tokens USDCAllow na proporção de 1:1. Hoje essa ordem está configurada para trocar até a quantidade máxima possível de USDC a ser emitida, já que o supply passa a ser gerido diretamente pelos tokens USDCAllow.

Conta emissora do USDC

Em seguida, os tokens USDCAllow são emitidos e distribuídos direto para a conta de cada minter. Esse montante representa quanto USDC aquela conta pode emitir.

Sempre que um novo minter entra, um novo supply de USDCAllow é criado e enviado a ele conforme os limites definidos.

Processo do USDCAllow

Cada minter pode trocar tokens USDCAllow por tokens USDC na DEX da Stellar. Cada novo USDC é um token recém-emitido, que pode voltar para a conta emissora sempre que o minter quiser tirá-lo do supply em circulação.

Assim, o minter opera de forma autônoma até o volume de USDCAllow que tem em mãos. Ao bater no limite, vários membros do consórcio precisam concordar em enviar mais USDCAllow para ele.

Além disso, o usuário comum consegue ver essas ordens na blockchain, mas não consegue interagir com elas, porque não tem tokens USDCAllow.

Fluxo de emissão do USDC na rede Stellar

Assim que o minter recebe os tokens USDC recém-emitidos, ele pode distribuí-los aos seus usuários como preferir.

Detalhe do fluxo de transação do USDC na rede Stellar

Para fechar

O Centre conseguiu deixar a operação inteira descentralizada, com cada entidade do consórcio operando por conta própria, e ao mesmo tempo segura, já que as contas centrais só podem ser administradas por uma combinação de entidades.

Nenhuma entidade sozinha controla o ecossistema do USDC inteiro, e o risco de uma delas ser comprometida fica contido dentro do limite de operação dela.

Outro ganho importante: manter esse sistema de controle de emissão dentro da rede o tornou muito confiável e transparente, a ponto de qualquer usuário conseguir acompanhar a operação pela blockchain.

Casos de uso como esse também podem ser implementados com smart contracts, que serão adicionados à rede Stellar no futuro pelo projeto Jump Cannon.

Ainda assim, essa abordagem para levar o USDC à rede Stellar é um ótimo exemplo de como cada caso de uso precisa ser adaptado à rede específica e de como, usando as funcionalidades dela com criatividade, dá para construir ecossistemas resilientes, seguros e transparentes.

FAQ

Quais eram os requisitos para a implementação do USDC na rede Stellar?

Só membros confiáveis do Centre podem emitir USDC; deve ser possível adicionar novos minters ou remover os comprometidos; cada minter deve ser totalmente autônomo dentro de um limite de quanto USDC pode emitir; e todas as reservas devem ser integralmente lastreadas em dólar, na proporção de 1:1.

Por que um esquema de multiassinatura sozinho não resolveria o problema?

Se um minter tivesse a própria chave de assinatura e emitisse por conta própria, isso controlaria só o acesso à operação de emissão, sem nenhum limite de quanto ele conseguiria emitir. Se a emissão exigisse assinaturas combinadas, o minter perderia a autonomia para gerir o supply, contrariando o padrão do Centre.

O que é o token USDCAllow e qual é a sua função?

É um token intermediário emitido por uma conta separada, controlada por multiassinatura, de modo que nenhuma entidade isolada consegue operá-la sozinha. Cada 1 unidade de USDCAllow representa a capacidade de emitir 1 unidade de USDC e é distribuída a cada novo minter para representar a quantidade máxima de USDC que ele pode emitir por conta própria.

Como funciona o fluxo de emissão de USDC na Stellar?

A conta emissora do USDC cria uma ordem 'Buy' na DEX da Stellar, oferecendo USDC por USDCAllow na proporção de 1:1. Os tokens USDCAllow são emitidos e distribuídos às contas dos minters, que podem trocá-los por USDC na DEX. Cada novo USDC é um token recém-emitido, que pode voltar à conta emissora para ser queimado. Ao bater no limite, vários membros do consórcio precisam concordar em enviar mais USDCAllow ao minter.

Usuários comuns conseguem interagir com essas ordens na DEX?

Não. O usuário comum consegue ver as ordens na blockchain, mas não consegue interagir com elas, porque não tem tokens USDCAllow. Ainda assim, qualquer usuário consegue acompanhar a operação pela blockchain, o que torna o sistema transparente.