A carregar preços…

Falhas nos oráculos de RWA: quando os preços off-chain mentem

Os colapsos de ativos tokenizados raramente começam pelo ativo. Começam quando um oráculo reporta um NAV desatualizado ou um feed de preços deixa de atualizar, e a DeFi continua a emprestar com base no número de ontem.

Falhas nos oráculos de RWA: quando os preços off-chain mentem

O que faz na verdade um oráculo de RWA, e porque é o ponto único de falha

Tokenizar um ativo do mundo real significa construir uma representação on-chain de algo que, falando estritamente, não vive on-chain: um conjunto de empréstimos de crédito privado, uma cesta de letras do tesouro dos EUA de curto prazo, uma participação em cotas tokenizadas de um fundo do mercado monetário ou uma nota garantida por imóveis. O contrato inteligente precisa de um número para impor regras de garantia, marcar a mercado as posições e acionar liquidações. Esse número vem de um oráculo.

Para ativos nativos de cripto, os oráculos são, em grande medida, um problema de engenharia resolvido. A Chainlink recolhe preços spot de dezenas de交易所, agrega-os com uma mediana ponderada pelo volume e envia atualizações a cada poucos minutos ou sempre que os preços ultrapassam um determinado limiar. A Pyth faz algo semelhante, mas com um modelo pull-based, em que o preço é assinado off-chain pelos market makers e só é enviado on-chain quando um protocolo DeFi o solicita. Ambas as arquiteturas partem do princípio de mercados contínuos e líquidos, com milhares de participantes independentes.

Os ativos do mundo real partem essas premissas. O NAV de um pool de crédito privado é calculado semanalmente por um administrador do fundo, a partir de dados ao nível do empréstimo que chegam de forma lenta. O NAV de um produto de tesouraria tokenizada move-se com preços de obrigações que se transacionam por marcação, e não ao segundo. O oráculo deixa de reportar um preço de mercado; passa a reportar um cálculo, frequentemente a partir de uma única fonte de verdade, numa cadência atrasada.

É aqui que os oráculos de NAV e os oráculos de preço começam a divergir de formas que são relevantes para o risco. Um oráculo de preço reporta quanto o mercado paga neste momento. Um oráculo de NAV reporta quanto o administrador do fundo acredita que os ativos valem, frequentemente com suavização, acréscimos e um atraso de reporte. Quando um evento de crédito atinge um pool de crédito privado, o oráculo de preço (quando existe) pode cair de imediato, enquanto o oráculo de NAV continua a reportar o último número válido durante dias, porque o administrador ainda não registou a descida da posição.

Como os oráculos de NAV e de preço divergem durante um evento de crédito

Num mercado saudável, a diferença é invisível. Ambos os feeds dizem, no essencial, a mesma coisa, e um contrato inteligente que use qualquer um dos dois toma decisões razoáveis. A divergência abre-se no instante em que um mutuário de um pool de crédito privado falha um pagamento, sofre uma descida de rating ou, no pior dos casos, entra em incumprimento.

Considere o que acontece a um pool sénior estilo Goldfinch quando um dos seus empréstimos subjacentes corre mal. O token do pool on-chain continua a declarar um NAV baseado na atualização mais recente do administrador, que assumia que o empréstimo seria reembolsado na íntegra. O valor de mercado off-chain dos créditos sobre esse pool, o preço que um comprador secundário pagaria de facto, cai de imediato assim que a notícia do incumprimento chega às mesas de crédito. Durante horas ou dias, o oráculo on-chain e o oráculo que existe na cabeça dos traders podem estar afastados em dezenas de pontos percentuais.

Esta diferença é toda a superfície de ataque. Um mutuário que repara na divergência pode usar o token do pool como garantia noutro lado da cadeia, levantar stablecoins contra o NAV artificialmente alto e desaparecer antes de o oráculo de NAV apanhar a realidade. Quando o administrador emite um novo NAV a refletir o incumprimento, a posição já foi levantada. Isto não é um cenário hipotético. É a forma estrutural de cada exploit de RWA em crédito privado nos últimos dois anos.

Os oráculos de preço comportam-se de forma diferente. Um oráculo de preço conduzido pelo mercado, do tipo que a Pyth ou a Chainlink agregam a partir de mercados ativos, reflete o evento de crédito em minutos, porque os traders reprecificam o token do pool de imediato. Nesse caso, o risco é o oposto: o oráculo pode tornar-se manipulável precisamente porque o mercado secundário é fino, e algumas transações de grande dimensão podem deslocar o preço reportado o suficiente para disparar liquidações indevidas.

Explorações de preços desatualizados: a falha mais comum no crédito tokenizado

Uma exploração de preço desatualizado não é um ataque no sentido tradicional. Nada é invadido, nenhuma chave privada é roubada, nenhuma votação de governança é sequestrada. O oráculo continua a funcionar como foi concebido. Simplesmente deixa de atualizar ou continua a reportar o último preço conhecido muito depois de esse preço ter deixado de ser verdadeiro.

Isto acontece rotineiramente nos mercados de RWA por razões operacionais mundanas. O administrador do fundo fecha para o fim de semana. O feed de dados que entrega os fluxos de caixa ao nível do empréstimo falha. A empresa de contabilidade que assina o relatório do NAV não cumpre o prazo. Nenhum destes eventos impede os empréstimos subjacentes de se deteriorarem. Apenas impedem o número on-chain de refletir essa deterioração.

Os mercados de empréstimo DeFi construídos sobre estes tokens, e já existem várias centenas de milhões de dólares neles, tratam o oráculo como verdade absoluta. Se o oráculo reportou pela última vez um NAV de $1,02 há dois dias e um mutuário depositou 150% de garantia, o protocolo de empréstimo considera a posição segura. Se o valor recuperável real caiu para $0,80, o protocolo não sabe. Vai permitir que o mutuário levante mais, porque o rácio de garantia continua a parecer adequado.

Os eventos de crédito da Maple Finance em 2023 ilustram isto de forma clara. Quando várias posições grandes de mutuários nas pools de caixa da Maple azedaram, os tokens das pools foram negociados com descontos significativos nos mercados secundários quase de imediato. O NAV on-chain, atualizado através da infraestrutura de oráculos da Maple com dados do administrador, não acompanhou durante dias. Durante essa janela, posições que já estavam profundamente underwater fora da cadeia continuavam a parecer devidamente garantidas on-chain, e várias integrações DeFi foram forçadas a pausar ou a marcar manualmente as posições em baixa.

O caso da Goldfinch seguiu um guião semelhante. Os NAVs da senior pool ficaram atrasados em relação aos eventos de crédito reportados durante dias ou semanas, e qualquer protocolo que integrasse o token da senior pool como garantia sem a sua própria verificação de preço no mercado secundário acabou por confiar num número com o qual nenhum participante off-chain teria concordado.

Arquiteturas da Chainlink e da Pyth, e o padrão de falha que cada uma esconde

A arquitetura da Chainlink é construída em torno da agregação e redundância. Os dados são obtidos a partir de muitos operadores de nós independentes, cada um a recolher de várias exchanges ou fornecedores de dados, e depois agregados on-chain. A vantagem é a resistência a uma única fonte estar errada ou ser maliciosa. A desvantagem é que a agregação só funciona quando existe um mercado real e líquido a partir do qual agregar. Quando o mercado subjacente é pouco líquido, um feed da Chainlink pode tornar-se um consenso de um pequeno número de fontes lentas, o que não é a mesma coisa que um verdadeiro preço de mercado.

Para pares de cripto de elevado volume, isto é aceitável. Para crédito tokenizado, imobiliário ou fundos privados, os feeds da Chainlink estão frequentemente configurados para atualizar num horário programado (a cada poucas horas, por exemplo) ou quando um limiar de desvio é ultrapassado. Se nenhuma destas condições for acionada, o preço simplesmente não atualiza. Não existe nenhuma verificação de atualidade integrada que diga "este preço tem três dias, algo está provavelmente errado." Essa responsabilidade recai sobre o protocolo que consome o feed, e muitas integrações de RWA simplesmente não a implementam.

A Pyth adota uma abordagem diferente. Os preços são assinados por um painel de market makers e publicadores, e depois disponibilizados on-chain através de um modelo pull. O consumidor paga por um preço novo cada vez que precisa de um, o que significa que, no sentido técnico, não existe um preço Pyth desatualizado: cada leitura é nova por definição. O risco desloca-se para os intervalos de confiança. A Pyth publica um valor de confiança juntamente com cada preço, e um mercado pouco líquido produzirá uma banda de confiança larga. Se o protocolo que consome o feed ignorar o valor de confiança e tratar o preço mediano como verdade absoluta, pode ser tão explorável quanto um feed da Chainlink desatualizado.

A conclusão prática para quem avalia uma integração de RWA: um feed da Chainlink sem verificação de atualidade é um candidato a explorações de preços desatualizados; um feed da Pyth sem verificação de confiança é um candidato a explorações em mercados pouco líquidos. Ambos são comuns.

Porque é que a lógica de liquidação on-chain confia nos dados de ontem

Os motores de liquidação em DeFi são concebidos para serem adversariais. Assumem que qualquer posição pode tornar-se insegura a qualquer momento e que um liquidatário externo a fechará com lucro se isso acontecer. Isto funciona de forma brilhante para garantias nativas de cripto, porque o oráculo de preços atualiza em quase tempo real e o liquidatário vê o mesmo número que o protocolo.

Para garantias de RWA, a mesma lógica de liquidação corre contra um número que pode estar desatualizado em horas ou dias. O protocolo não consegue distinguir entre "o preço não se mexeu" e "o feed de preços deixou de atualizar." As duas situações parecem idênticas on-chain. Do ponto de vista do protocolo, um mutuário que depositou um token de crédito privado com 150% de garantia há dois dias ainda está nos 150% hoje, e a posição está segura.

É por isto que o risco de oráculo em RWA é tão diferente do risco de oráculo em DeFi pura. Um feed de preço de ETH desatualizado é arbitrado em segundos por searchers profissionais que correm bots keeper. Um feed de NAV desatualizado para uma pool de crédito privado tokenizado não é arbitrável da mesma forma. A posição é ilíquida, o NAV vem de um processo humano, e não existe nenhum mecanismo on-chain para forçar uma atualização. O motor de liquidação não está a falhar; está a aplicar fielmente regras que foram escritas para um tipo diferente de ativo.

O resultado é uma espécie silenciosa de insolvência. Os livros do protocolo continuam a fechar. O rácio de garantia continua a ler-se corretamente. O mutuário pode continuar a levantar. E entretanto, o valor recuperável real dos empréstimos subjacentes caiu para metade.

Implicações práticas para quem está exposto a crédito tokenizado

Se detém um token de RWA diretamente, a questão é saber se o oráculo de NAV do emissor pode ficar atrasado em relação à realidade durante uma situação de stress. A resposta honesta é sim, por conceção. Os NAVs de crédito privado e imobiliário são reportados com atrasos porque os ativos subjacentes não negoceiam de forma contínua. Detter o token significa aceitar que o seu valor reportado e o seu valor de liquidação podem divergir acentuadamente durante um evento de crédito.

Se fornece liquidez a um protocolo DeFi que aceita tokens de RWA como garantia, a questão é mais complicada. Está agora exposto tanto ao oráculo de NAV do emissor como à própria lógica de verificação de preços do protocolo. Muitos protocolos implementam uma verificação de preço no mercado secundário, uma pool estilo Uniswap, uma agregação Pyth, uma referência Chainlink, para apanhar a divergência entre o NAV do emissor e o mercado ao vivo. Alguns não o fazem. A diferença frequentemente não é visível na documentação do protocolo.

Algumas coisas concretas a procurar: uma verificação de atualidade em cada leitura do oráculo, idealmente com um limite rígido a partir do qual a posição é pausada; uma comparação explícita entre o NAV do emissor e pelo menos uma fonte de preço independente; e uma política documentada para o que acontece quando os dois divergem. Se essas respostas não forem públicas, o protocolo está implicitamente a apostar que nunca serão necessárias.

Como seguir o risco dos oráculos de RWA de forma inteligente

O risco dos oráculos de RWA move-se de forma silenciosa, muitas vezes antes de qualquer notícia chegar aos média. Um evento de crédito num pool de private credit pode levar dias a aparecer no NAV oficial do emissor, e os sinais do mercado secundário são fáceis de ignorar a menos que saiba quais plataformas realmente negoceiam o token. Fazer este acompanhamento manualmente é uma batalha perdida. O Zippfeed agrega manchetes de RWA, atualizações de protocolos relacionadas com oráculos e discussões de governança on-chain dos principais emissores, classificadas por sentimento (bullish, neutral ou bearish) e etiquetadas com um nível de importância. Assim, consegue identificar a diferença entre o NAV reportado pelo emissor e a visão real do mercado sobre o crédito subjacente, antes que essa diferença se transforme numa perda concretizada.

Perguntas frequentes

É seguro usar tokens RWA como garantia na DeFi?
Pode ser, mas a segurança depende quase inteiramente da configuração do oráculo. Se o protocolo de empréstimo confiar apenas no feed de NAV do emissor e não o cruzar com um preço em tempo real do mercado secundário, fica exposto ao risco de preço desatualizado durante um evento de crédito. Procure protocolos que implementem verificações de atualidade, referências ao mercado secundário e políticas explícitas de divergência antes de depositar.
Como funciona, na prática, um exploit com oráculo de preço desatualizado?
O atacante não compromete o oráculo. O oráculo continua a reportar o último preço conhecido porque nada disparou uma atualização. O atacante repara que a posição de crédito no mundo real vale muito menos do que o NAV on-chain sugere, pede emprestado contra a garantia inflacionada e levanta os fundos antes de o NAV apanhar. Quando o administrador emite um novo NAV, o dinheiro já desapareceu.
Devo deter crédito privado tokenizado em vez de stablecoins?
O crédito privado tokenizado oferece um rendimento superior ao das stablecoins, mas esse rendimento tem origem em risco de crédito real e risco operacional real, incluindo o atraso do oráculo em períodos de stress. Detê-lo diretamente é aceitável se aceitar que o valor reportado e o valor de saída podem divergir de forma acentuada num evento de crédito. Para a maioria dos utilizadores, uma pequena alocação, com uma compreensão clara do processo de NAV do emissor, é mais sensata do que uma alocação grande.
Qual é a diferença entre um oráculo de NAV e um oráculo de preço para RWAs?
Um oráculo de NAV reporta um valor líquido de ativo calculado, geralmente por um administrador de fundos, numa base diferida. Um oráculo de preço reporta quanto o mercado secundário está realmente disposto a pagar neste momento. Durante um evento de crédito, os dois podem divergir de forma drástica durante dias, e a escolha do oráculo determina se uma integração DeFi vê a perda imediatamente ou só depois de a poeira assentar.
Tokens relacionados
$LINK $PYTH $CC $MNT $ONDO