Expanssão Cross-chain via Wormhole

Visão geral

A Wormhole está animada em apresentar sua proposta para permitir depositos e empréstimos entre Redes. A equipe do Wormhole já construiu um exemplo de referência para o Venus e está comprometida em ajudar a construir a solução completa, ao mesmo tempo em que fornece suporte contínuo a produtos e contratos inteligentes para o Venus e sua comunidade.

Antes disso, uma rápida introdução ao Wormhole – Wormhole é o principal protocolo de interoperabilidade de rede cruzada, permitindo mensagens genéricas em mais de 15 blockchains heterogêneas e em breve muitos mais. Na verdade, acabamos de anunciar nosso lançamento no Aptos 1 devnet.

Desde o lançamento na rede principal em agosto de 2021, 1,2 milhão de mensagens foram transmitidas. Algumas são mensagens regulares (por exemplo, dados do oráculo Pyth), algumas são pontes de token e todo o uso veio organicamente - sem incentivos.

Venus é um projeto fundamental para o ecossistema BNB. Acreditamos que o Wormhole é a melhor solução de rede cruzada para Venus por 3 motivos principais:

  • Projeto e implementação robustos — Os detalhes são importantes, principalmente no contexto de um protocolo complexo que servirá como a camada fundamental para o desenvolvimento futuro e aplicativos que podem ser compostos. A equipe do Wormhole pensou profundamente sobre esse novo paradigma e, posteriormente, construiu um exemplo de referência, especificamente para Vênus.

  • Modelo de segurança e descentralização — O Wormhole tem dezenove guardiões compostos pelos principais validadores de PoS que atestam em conjunto as mensagens. Cada guardião tem o mesmo peso na governança e no consenso. O Wormhole exige que mais de dois terços dos 19 guardiões obtenham consenso e passem na verificação, portanto, assumimos que pelo menos um terço do nosso conjunto de guardiões é confiável.

A Wormhole tem um plano de segurança abrangente que consiste em todo o desenvolvimento aberto, um dos maiores programas de recompensa de bugs (US$ 10 milhões e contando), incluindo 5 auditorias de qualidade (por exemplo, Neodyme, Kudelski, Ottersec) de sua base de código completa (auditorias por Certik, Trilha de Bits, etc).

  • Pilha de integração simplificada e consolidada — Pyth passará a ser cross-chain via Wormhole; assim, a integração planejada de Venus com Pyth envolverá dependência de Wormhole. Com essa dependência em vigor, será ideal usar o Wormhole para outros elementos das metas de cadeia cruzada de Venus, em vez de introduzir um novo conjunto de dependências de ponte e suposições de confiança. A integração do Wormhole também agilizaria a manutenção futura do mecanismo oraculo, uma vez que o oraculo e as mensagens genéricas de rede cruzada seriam ditadas pelos mesmos padrões de interoperabilidade subjacentes.

Considerações de projeto

A qualidade do design importa muito. Há uma série de detalhes importantes que determinam a dinâmica do deposito-empréstimo de rede cruzada; pensar e definir esses detalhes com antecedência é vital para qualquer proposta de integração de qualidade. O Wormhole passou muitos ciclos pensando sobre esse tipo de aplicativo de rede cruzada e prevemos várias opções diferentes que equilibram complexidade e funcionalidade.

O status quo é direto: para quase todos os protocolos de empréstimo, não há recursos de rede cruzada. Cada cadeia é isolada e os usuários que desejam depositar e emprestar em diferentes blockchains precisam gerenciar e monitorar saldos separados em diferentes contratos e protocolos. O mutuário no cenário abaixo não pode depositar ETH no Ethereum e emprestar SOL de Solana.

Status Quo: Redes Independentes
image

Como Venus pode entrar em rede cruzada? Existem várias possibilidades e a equipe do Wormhole está aberta a colaborar com a Venus para desenvolver lançamentos sequenciais ou direcionar o desenvolvimento da implementação mais complexa desde o início. Sugerimos deixar esta decisão para os detentores de XVS e encorajamos os delegados da Venus a debater os méritos de cada abordagem. Existem duas variantes principais: cofres de rede única e multicadeia.

Cofres de rede única

Na implementação base, o Wormhole pode permitir pools de garantias de cadeia única, onde um usuário pode depositar garantias em qualquer cadeia e emprestar em qualquer outra cadeia e vice-versa. A Pyth transmitiria simultaneamente os preços para o protocolo, permitindo o monitoramento de garantias na cadeia de origem. Os usuários pagariam o empréstimo na cadeia da qual emprestaram os tokens e, em seguida, retirariam sua garantia na cadeia de origem. Ilustramos o fluxo de trabalho abaixo.
image

Cofres de várias redes

Mudando para uma versão mais sofisticada – um mutuário pode tentar depositar duas ou mais formas separadas de garantia em duas ou mais cadeias distintas. Aqui temos pools de garantias de várias cadeias em qualquer cadeia suportada, permitindo que os usuários façam empréstimos em uma cadeia designada. Os usuários pagariam o empréstimo na cadeia de empréstimo designada e, em seguida, retirariam cada forma de garantia em suas respectivas cadeias. Ilustramos o fluxo de trabalho abaixo.
image

O caso dois introduz complexidade adicional no projeto, pois agora temos que sincronizar mais de duas redes. Os mutuários podem emprestar de uma rede designada enquanto fornecem garantias em redes heterogêneas. Aqui só precisamos contabilizar as garantias fornecidas em todas as outras redes na rede selecionada na qual os usuários estão emprestando ativos, mas todas as outras redes precisam apenas acompanhar as garantias fornecidas em sua respectiva rede. O usuário então iniciaria o empréstimo em cada rede de empréstimo, dividindo o empréstimo total do mutuário em uma base por garantia. Esse desenho nos permite manter liquidações em cada rede do tomador, pois o liquidante pode verificar se o índice de garantias dessa rede em relação ao valor emprestado originário dessa rede está abaixo do índice de liquidação.

Exemplo de referência

Fornecemos um exemplo de referência de como os cofres de rede única podem funcionar com BNB e Ethereum. (Observe que esta é uma prova de conceito levemente testada e não deve ser usada em produção). Permitimos que 1 token ERC-20 seja usado como garantia no BNB e outro token ERC-20 seja emprestado no Ethereum e vice-versa. Esse projeto poderia então ser adaptado para integrar-se à base de código existente do Venus.

Em nosso exemplo, um usuário pode depositar BUSD no BNB como garantia e emprestar WETH no Ethereum usando as seguintes funções:

1 - O usuário primeiro chama addCollateral(collateralAmount) no contrato BNB com a quantidade de BUSD que gostaria de fornecer. Isso transfere o valor do colateral para o contrato e, em seguida, esse valor é refletido nos ativos depositados em sua conta e na liquidez total do BUSD no contrato.

2 - Em seguida, o usuário chama startBorrow(borrowAmount) no contrato BNB com a quantidade de WETH que gostaria de emprestar no Ethereum. Isso calculará o valor máximo de WETH que eles podem emprestar com base na taxa de garantia para BUSD/WETH e, em seguida, enviará uma mensagem para o contrato Wormhole no BNB.

3 - Por fim, o usuário chama completeBorrow(signedWormholeMessage) no contrato Ethereum com a mensagem Wormhole assinada produzida na etapa 2. A mensagem Wormhole será então decodificada e haverá uma verificação se há liquidez WETH suficiente para eles emprestarem. O valor emprestado especificado na mensagem é transferido para eles e, em seguida, esse valor é refletido nos ativos emprestados da conta e na liquidez total do WETH no contrato. Se não houver liquidez do WETH suficiente para eles tomarem empréstimos, uma mensagem Wormhole será enviada de volta ao contrato do BNB para permitir que eles retirem suas garantias.

O usuário poderia então reembolsar o empréstimo WETH no Ethereum e obter sua garantia BUSD de volta no BNB da seguinte forma:

1 - O usuário primeiro chama startRepay(borrowAmount) no contrato Ethereum com o valor do empréstimo que deseja pagar. Para reembolsar todo o empréstimo, o usuário também pode chamar startRepayInFull(). Qualquer uma dessas funções transferirá o pagamento para o contrato e atualizará os ativos emprestados da conta e a liquidez total do WETH no contrato. Uma mensagem será enviada para o contrato Wormhole no Ethereum, indicando quanto do empréstimo foi pago.

2 - Por fim, o usuário chama completeRepay(signedWormholeMessage) no contrato BNB com a mensagem Wormhole assinada produzida na etapa 1. A mensagem é então decodificada e verificada se o empréstimo foi pago integralmente. Caso tenha e completeRepay tenha sido chamado dentro do período de carência definido, os ativos emprestados da conta serão zerados e a liquidez WETH no contrato do BNB será reduzida pelo valor reembolsado. Caso completeRepay não tenha sido chamado dentro do período de carência, será enviada uma mensagem para o contrato Wormhole no BNB, identificando que o empréstimo não foi pago a tempo. Se o empréstimo não tiver sido pago integralmente, os ativos emprestados da conta e a liquidez WETH rastreada no contrato do BNB serão reduzidos pelo valor reembolsado.

Embora não implementemos liquidações em nosso exemplo de referência (nós fornecemos um exemplo de fluxo de trabalho), o liquidante:

1 - chame startLiquidationOnTargetChain no contrato BNB que deve determinar se uma determinada posição é subgarantida consultando a variável de estado accountAssets para a conta passada. Se uma conta estiver subgarantida, este método deve gerar uma mensagem Wormhole enviada ao contrato Wormhole no BNB.

2 - chame completeRepayOnBehalf(signedMessage) no Ethereum com a mensagem Wormhole assinada produzida quando você chama startupLiquidationOnTargetChain. Se o mutuário ainda não pagou o empréstimo no momento em que a mensagem Wormhole chegar à cadeia de destino, esta função transferirá os fundos emprestados devidos do liquidante para o contrato e enviará outra mensagem Wormhole para o contrato Wormhole no Ethereum. Assim como na função completeReplay, deve haver a funcionalidade de reversão com uma mensagem de volta à cadeia de origem se o mutuário já tiver pago o empréstimo.

3 - chame completeLiquidation(signedMessage) no BNB com a mensagem Wormhole assinada produzida quando você chama completeRepayOnBehalf. A garantia do mutuário seria então enviada ao liquidante menos as taxas de liquidação determinadas pelo protocolo.

4 - Nota: para um liquidante ver a saúde das posições, uma função precisaria retornar a lista de endereços com posições abertas e outra função que permite consultar a variável de estado accountAssets para uma determinada conta.

Integração com Vênus

Vênus poderia integrar o Wormhole com as seguintes adições à base de código:

  • manter a infraestrutura existente ao redor dos mercados de entrada e saída, pois esses métodos permitem apenas que o usuário tente emprestar esses ativos

  • como estamos rastreando depósitos na cadeia de origem (no primeiro modelo), podemos manter a função mintFresh 1 como está

  • adicionar a lógica beginBorrow em uma nova função emprestaFreshXChain que imita a lógica de loanFresh 2, mas em vez de transferir o valor do token emprestado para o usuário, a função enviaria uma mensagem para o contrato Wormhole no BNB, conforme mostrado na função beginBorrow no exemplo de referência

  • adicione a lógica completeBorrow em uma função completeBorrowXChain que permite que um retransmissor/usuário envie a mensagem Wormhole assinada ao contrato VToken.sol no Ethereum que realmente transferirá os fundos emprestados para o usuário

  • adicionar lógica de reembolso em uma função repayBorrowFreshXChain que imita a lógica de repayBorrow 1, mas em vez de transferir os tokens emprestados mais juros de volta ao contrato, a função enviaria uma mensagem para o contrato Wormhole no Ethereum, conforme mostrado na função de reembolso no exemplo de referência

  • adicione a lógica completeReplay em uma função completeReplayXChain que permite que um retransmissor/usuário envie a mensagem Wormhole assinada ao contrato VToken.sol no BNB que retornará a garantia ao usuário

Descentralização e Segurança

O Wormhole conta com um consenso de PoA com 19 guardiões. Cada guardião executa seu próprio nó para cada cadeia e tem peso igual na governança e na votação. Dos 19 guardiões, Wormhole requer mais de dois terços para chegar a um consenso e passar na verificação – portanto, assumimos que pelo menos um terço do nosso conjunto de guardiões é honesto. Nosso conjunto de guardiões 2 é composto pelos principais validadores de PoS com bilhões em delegações ativas nas maiores cadeias de PoS – P2P, Chorus One, Everstake, Staked.us 1, para citar alguns.

No entanto, apesar do alto grau de descentralização do Wormhole, continuamos decididos a melhorar nossas premissas de confiança - como tal, estamos investindo pesado na mudança para um sistema completamente sem confiança baseado em provas de conhecimento zero 3.

Apenas nos últimos 90 dias, o Wormhole transmitiu mais de 300 mil mensagens. O Wormhole lidou com alguns dos recentes períodos voláteis no DeFi com facilidade, facilitando 44 mil mensagens em apenas um dia. Nosso protocolo sem permissão testado e comprovado ganhou a confiança de alguns dos desenvolvedores mais respeitáveis ​​do mercado.

Finalmente, reconhecemos que o Wormhole ganhou alguma imprensa pelo hack 2 em fevereiro deste ano - acreditamos que o Wormhole é mais forte por isso. A Wormhole, por exemplo, tem os programas de recompensa de bugs mais generosos em criptomoedas – mais de US$ 10 milhões e contando 2 – incluindo 5 auditorias de qualidade 2 (por exemplo, Neodyme, Kudelski, Ottersec) de sua base de código completa (auditorias por Certik, Trail of Bits, etc.) . em andamento 1). A Wormhole continuará em ambas as frentes para manter altos padrões de segurança para seus usuários e protocolos nos ecossistemas suportados.

Dependência existente

Em breve, a Venus se integrará à Pyth para fornecer dados de preços de alta qualidade aos seus feeds de preços e garantir liquidações precisas e oportunas. Como o Pyth no BNB 5 envolve preços de streaming do Pythnet via Wormhole, essa integração já criaria uma integração downstream entre Venus e Wormhole. Com essa dependência em vigor, faz sentido usar o Wormhole para outros elementos dos objetivos de cadeia cruzada de Vênus, incluindo empréstimos de cadeia cruzada. Além de remover a necessidade de um conjunto diferente de suposições de confiança de ponte, a integração do Wormhole também poderia agilizar a manutenção futura do mecanismo oracle, pois os requisitos fundamentais de interoperabilidade governariam tanto o oráculo quanto as mensagens de cadeia cruzada.

Estamos ansiosos para nos envolver com a comunidade Venus em nossa proposta.

Hendrik

  • Fundação Wormhole