A Angle permite aos usuários cunhar e queimar agTokens (stablecoins) em troca de outros tokens. Os traders também podem abrir posições longas em pares de garantia/stablecoin disponíveis. Estes não são contratos perpétuos tradicionais, uma vez que o equilíbrio não depende das taxas de financiamento, e os preços de execução vêm diretamente do oráculo. Dadas estas utilizações, o protocolo requer um método confiável para precificar os ativos disponíveis, a fim de oferecer aos usuários cotações justas, ao mesmo tempo que se protege das transações de front-running. No FAQ deste artigo, Samcszun explica por que isso não é tão simples como usar os preços à vista.
O front-running tem sido um problema de longa data no mercado. Resume-se a certos participantes que ganham acesso à informação mais cedo do que outros, permitindo-lhes aproveitar esta vantagem para extrair lucros livres de risco às custas da contraparte. Historicamente, evitar este fenómeno on-chain tem sido extremamente desafiante. Os altos custos e a baixa velocidade das transações Ethereum tornam difícil para os oráculos atualizarem os preços rapidamente e frequentemente. Isto introduz atrasos entre os preços off-chain e on-chain, criando oportunidades para os front-runners explorarem.
Nem todos os protocolos de stablecoin estão preocupados com os riscos de front-running decorrentes de atrasos do oráculo. No caso do DAI da Maker, os atrasos do oráculo frequentemente beneficiam o protocolo. Por exemplo, se um usuário perceber que sua posição será liquidada na próxima atualização do oráculo devido a uma queda de preço, ela é incentivada a depositar mais fundos na vault, melhorando a saúde do protocolo e a relação de garantia.
Synthetix, que permite trocas de valor baseadas em oráculos entre ativos sintéticos e garantias, é um exemplo perfeito de um protocolo de stablecoin enfrentando desafios de front-running. A postagem no blog deles esboça a longa história do protocolo com o front-running, incluindo alguns ataques passados que sofreram.
Semelhante ao Synthetix, o Angle permite trocas de ativos pelo valor oracle com derrapagem de preço zero. Como resultado, o Angle enfrenta o mesmo problema de execução frontal. A equipe principal da Angle fez esforços significativos para mitigar a execução na frente. Foram implementadas duas melhorias fundamentais: um design oráculo específico e uma estrutura dinâmica de taxas. Neste artigo, explicaremos o design do oráculo de Angle e o raciocínio por trás dele.
Antes de mergulhar na solução da Angle, vamos primeiro tentar entender como o front-running pode prejudicar o protocolo. Vamos considerar um exemplo em que o ETH é aceite como garantia para apoiar a stablecoin da Angle.
Suponhamos que um atacante esteja a monitorizar o preço off-chain do ETH e veja que o oráculo da Chainlink está prestes a atualizar os dados on-chain para um preço mais alto (de p0 para p1, onde p0 < p1). Este atacante pode enviar uma transação para queimar x stablecoins ao preço de p0 em troca de x/p0 de valor de ETH. Depois, quando o preço for atualizado para p1, o atacante pode vendê-lo de volta ao protocolo, obtendo lucro:
Devido a esta transação de front-running na atualização do oráculo, esta parte do lucro é retirada das reservas do protocolo. Se definirmos x = 100 ETH e p1 = 1,01 * p0 (um aumento de preço de 1%), isso significa que o atacante retirou 1 ETH das reservas do protocolo.
Felizmente, o aumento das taxas de transação pode mitigar este problema, pois corroem os lucros dos front-runners e reduzem as oportunidades.
Por exemplo, se as taxas de transação de cunhagem e queima forem constantes e iguais a f, um atacante que queima x stablecoins em p0 e depois as revende para o protocolo por ETH em p1 terá o seguinte lucro final:
Comparado com o cenário anterior, as taxas reduzem o lucro:
Quando a taxa de transação é f = 0.3% e seguindo o exemplo acima, o lucro do atacante é agora apenas 0.39 ETH.
Para reduzir ainda mais esta oportunidade, podemos depender de um oráculo secundário para fornecer duas fontes de preço potenciais: pC (preço Chainlink) e pU (preço Uniswap). O protocolo pode usar o preço mais favorável (o preço mais baixo na cunhagem, ao comprar os tokens do usuário, e o preço mais alto na queima, ao vender ETH ao usuário), tornando a oportunidade de front-running menos atraente.
Imagine um trader a tentar lucrar com a mesma oportunidade acima, assumindo que pC0 < pC1.
Por outro lado, podemos considerar que pU é constante e mais próxima de pC0. Portanto, como veremos mais tarde, devido ao design do preço médio ponderado no tempo (TWAP) da Uniswap, pU tende a ficar para trás em relação a pC.
Neste caso, um atacante que tente lucrar com a oportunidade potencial compraria tokens do protocolo a pC0 (queimando stablecoins) e receberia x(1-f)/pC0 em ETH. Depois, voltaria a vendê-lo a pU1 a um preço mais alto. Isso resultaria numa perda para o atacante:
Se mantivermos os números do exemplo, o atacante acabaria por perder 0.6 ETH nesta transação.
O design do Angle é especificamente destinado a eliminar o risco de transações de front-running. Portanto, o protocolo implementará um mecanismo muito semelhante ao exemplo discutido acima. Nesta seção, exploraremos as opções existentes potenciais com mais detalhes, focando nos detalhes do design que planejamos implementar e analisando nossa escolha da janela de tempo TWAP.
As principais soluções de oráculo que poderiam se adequar ao caso de uso da Angle são:
Chainlink é a escolha óbvia: é uma solução de oráculo descentralizada amplamente utilizada que fornece múltiplas fontes de dados que abrangem vários ativos. Os preços vêm de múltiplas fontes e são transmitidos através de uma rede descentralizada, garantindo que os dados sejam confiáveis, acessíveis e difíceis de manipular. No entanto, algumas fontes de dados geralmente se atualizam apenas após mudanças de preço “significativas” (como uma mudança de 0,5% em ETH/USD) ou após um período de tempo, o que significa que os preços da Chainlink estão sempre atrasados em comparação com o preço de mercado real. Portanto, as atualizações de preço da Chainlink podem ser antecipadas verificando os preços off-chain ou o mempool.
O Preço Médio Ponderado pelo Tempo (TWAP) do Uniswap V3 é outra solução de oráculo óbvia e amplamente utilizada. O TWAP pode ser consultado no contrato do Uniswap para obter o preço médio ponderado pelo tempo dos tokens em um pool ao longo de um período de tempo específico, que varia de alguns segundos a 9 dias. O preço é calculado com base no preço médio dos dois tokens no pool durante o período especificado. Isso faz com que a manipulação do TWAP exija uma grande quantidade de capital e um período de tempo mais longo, o que é ineficiente na maioria dos casos.
No entanto, uma vez que o TWAP é o preço médio dos blocos passados, geralmente estão atrasados em comparação com os preços off-chain em tempo real ou mesmo as fontes de preço da Chainlink. Se usados sozinhos, não seriam suficientes para proteger o protocolo de transações de antecipação.
Além disso, uma vez que o TWAP apenas reporta o preço de pares de tokens on-chain, não consegue atingir o objetivo do protocolo de proporcionar acesso a ativos que não estão representados on-chain (e, portanto, não estão nos pools da Uniswap), como stablecoins apoiadas por forex.
Usar Oráculos Maker poderia ter sido outra opção para Angle, mas isso significaria confiar na MakerDAO e passar por um processo de governança para obter acesso aos dados de preço. As fontes de preço também seriam limitadas às usadas pela Maker, o que é insuficiente para nós, pois pretendemos aceder às taxas de câmbio forex.
Com isso em mente, decidiu-se combinar o oráculo da Chainlink do Protocolo Angle com um TWAP de 10 minutos do Uni V3. Isso permite o preço mais justo possível em qualquer momento, ao mesmo tempo que protege o protocolo de ataques de front-running.
Em termos gerais, os contratos da Angle irão comparar os preços de ambos os canais e utilizar o preço mais favorável ao protocolo. Com este desenho, é mais complexo fazer front-running ao protocolo, uma vez que, para explorar a taxa de câmbio do protocolo, um atacante deve manipular ou fazer front-running de ambos os oráculos.
Especificamente, o nosso contrato irá buscar o melhor preço para todos os pares de ativos voláteis/moedas estáveis entre Chainlink e Uniswap e usar o oráculo forex da Chainlink para converter o preço para a moeda fiduciária necessária. Cada par de garantia/moeda estável terá um contrato de oráculo dedicado com a sua própria fonte de preço independente.
Como funciona?
Por exemplo, suponha que um utilizador queira negociar o par ETH/agEUR. O nosso contrato precisa de obter os preços para ETH/USD e USD/EUR. Irá manter o melhor preço para ETH/USD do Chainlink e o TWAP de 10 minutos do pool ETH/USDC UniV3. Em seguida, irá obter o preço forex USD/EUR do Chainlink.
Exemplo: Uniswap ETH/USDC TWAP: 1900 USD (o protocolo assume que o USDC geralmente mantém sua ancoragem, ou seja, 1 USDC equivale a 1 USD) Preço do ETH Chainlink: 1850 USD Preço do USD Chainlink: 1.16 EUR
Se o utilizador deseja criar agEUR neste caso, o protocolo utilizará o preço mais baixo de ETH/USD, ou seja, o preço de 1850 USD por ETH da Chainlink. Por outro lado, se o utilizador deseja queimar agEUR por wETH na mesma situação, o protocolo utilizará o preço mais alto, ou seja, o TWAP de ETH/USDC da Uni a 1900. Em ambos os casos, o protocolo utilizará a taxa de USD/EUR da Chainlink de 1.16 para converter ETH/USD em ETH/EUR.
Da mesma forma, o protocolo usará o preço mais alto para os usuários que desejam abrir um contrato perpétuo e o preço mais baixo para aqueles que desejam fechá-lo.
Mais geralmente:
O contrato da Angle usará uma janela de tempo de 10 minutos para TWAP. Esta escolha foi feita após uma consideração cuidadosa, pois janelas de tempo diferentes podem resultar em estruturas de preços significativamente diferentes.
No caso do Angle, por um lado, a janela temporal deve ser suficientemente longa para proporcionar um atraso suficiente entre o preço do protocolo e o preço à vista. Isto permite uma maior diferença entre os preços de cunhagem e queima durante as flutuações de preço, especialmente quando o risco de front-running no Chainlink é duplicado. Além disso, quanto mais longa for a janela temporal, mais difícil será manipular o preço do TWAP, uma vez que as observações recentes têm menos impacto sobre o preço.
Por outro lado, o protocolo ainda deve oferecer aos utilizadores cotações justas e atualizadas: usar uma janela de tempo muito ampla criará uma diferença de preço muito grande entre o protocolo e o preço de mercado atual, enquanto usar uma janela de tempo muito estreita não fornecerá a diferença de preço desejada.
Compare o TWAP de 10 minutos e 60 minutos com os feeds de preços da Chainlink
Para lhe dar uma compreensão do porquê escolhemos, em última análise, uma janela de tempo de 10 minutos, aqui está uma comparação entre os TWAPs ETH/USDC de 10 minutos e 60 minutos e o preço ETH/USD da Chainlink, bem como o preço de fecho da Coinbase.
Pode ver como as taxas superiores e inferiores utilizadas pelo protocolo quando os utilizadores criam/fecham e queimam/abrem se movem entre os preços mais favoráveis do Chainlink e do TWAP da Uniswap durante as transições de preço.
Embora o bloco de 60 minutos do TWAP muitas vezes forneça preços que estão longe do mercado, o TWAP de 10 minutos fornece um buffer benéfico para a fonte de preço da Chainlink, mantendo o preço suficientemente próximo do mercado.
Vale a pena notar que, como visto no primeiro gráfico, quanto maior a volatilidade, maior a diferença de preço entre os preços da Chainlink e da Uniswap. Por outro lado, quando os preços permanecem relativamente estáveis ao longo do tempo, as fontes de preço da Uniswap e da Chainlink estão mais próximas uma da outra. Usar o TWAP como uma proteção adicional contra front-running é essencialmente uma forma de cobrar mais dinamicamente em taxas durante períodos de alta volatilidade, uma vez que o risco de front-running é maior devido a atrasos nos oráculos on-chain. O custo dessas taxas efetivas mais altas é que isso reduz a capacidade dos negociadores de arbitragem de reajustar diretamente stablecoins do protocolo. Na maioria dos casos, os preços da Uniswap e da Chainlink serão muito semelhantes, e os usuários dificilmente perceberão o uso de duas soluções de oráculo. No entanto, durante períodos de alta volatilidade, quando o protocolo está em risco de front-running devido a diferenças de preço significativas entre os preços atuais e futuros da Chainlink, o preço do protocolo será diferente, protegendo-o do front-running.
A pesquisa do oráculo da Angle é fortemente inspirada pelas discussões de governança da Synthetix e pelos posts de blog relacionados ao front-running. Em nossa pesquisa, também encontramos outra opção que eles implementaram em fevereiro de 2020, a recuperação/reembolso de taxa, que eventualmente se tornou uma solução temporária.
O que fizeram foi adicionar um período de espera às transações, durante o qual os utilizadores não podiam manipular o Synth que queriam usar. Durante este período, os oráculos podiam verificar se a transação era afetada por inconsistências, especificamente se havia diferença de preço entre o momento da execução e o final do período de espera. Se existisse uma diferença de preço, a diferença teria de ser paga pelo utilizador ou pelo protocolo à outra parte (protocolo ou utilizador), ou seria resolvida na próxima transação com o Synthetix.
Esta solução foi muito eficaz na redução do front-running, mas tiveram de prolongar o período de espera e aumentar as taxas, o que criou uma experiência muito pobre para todos os traders. Também impediu que o Synth se integrasse com outros protocolos em muitos casos de uso. No SIP-120, substituíram esta solução por um plano que adiciona o uso de oráculos TWAP para transações grandes.
O design específico do oráculo da Angle tem dois impactos principais no protocolo:
Os atacantes precisam manipular dois mercados para enganar o protocolo, reduzindo significativamente o risco de negociações front-running bem-sucedidas.
Durante períodos de stress de mercado, o protocolo é improvável oferecer aos utilizadores o melhor preço possível.
O último impacto foi discutido no fórum de governança Fei. Como fornecer a melhor execução comercial não é o objetivo principal do protocolo, acreditamos que a resistência à frente é mais importante para garantir a segurança do protocolo. Em mercados secundários durante períodos de alta volatilidade, uma melhor execução comercial será oferecida.
O nosso objetivo no projeto Angle é projetar um protocolo de stablecoin totalmente suportado e eficiente. Para alcançar isso, é necessário considerar muitos aspectos do protocolo para garantir que não possa ser enganado em uma posição desfavorável, um dos quais é resistência à frente de execução. Isso é particularmente importante porque a estabilidade das stablecoins descentralizadas on-chain que dependem de oráculos depende da qualidade dos seus oráculos.
Adicionar feeds de preço secundários na forma de TWAP pode ajudar o protocolo a mitigar os potenciais impactos adversos da alta volatilidade do mercado e as oportunidades de front-running que surgem durante esses tempos.
Por último, é importante notar que esta solução de oracle mantém flexibilidade e escalabilidade. Por um lado, a governança da Angle pode votar e atualizar os seus contratos de oracle a qualquer momento. Por outro lado, os oracles podem ser criados para qualquer feed de preços suportado pela Chainlink. Este é o nível mínimo de suporte necessário para alcançar a visão da Angle de trazer ativos financeiros para a cadeia de forma eficiente em termos de capital!
Partilhar
Conteúdos
A Angle permite aos usuários cunhar e queimar agTokens (stablecoins) em troca de outros tokens. Os traders também podem abrir posições longas em pares de garantia/stablecoin disponíveis. Estes não são contratos perpétuos tradicionais, uma vez que o equilíbrio não depende das taxas de financiamento, e os preços de execução vêm diretamente do oráculo. Dadas estas utilizações, o protocolo requer um método confiável para precificar os ativos disponíveis, a fim de oferecer aos usuários cotações justas, ao mesmo tempo que se protege das transações de front-running. No FAQ deste artigo, Samcszun explica por que isso não é tão simples como usar os preços à vista.
O front-running tem sido um problema de longa data no mercado. Resume-se a certos participantes que ganham acesso à informação mais cedo do que outros, permitindo-lhes aproveitar esta vantagem para extrair lucros livres de risco às custas da contraparte. Historicamente, evitar este fenómeno on-chain tem sido extremamente desafiante. Os altos custos e a baixa velocidade das transações Ethereum tornam difícil para os oráculos atualizarem os preços rapidamente e frequentemente. Isto introduz atrasos entre os preços off-chain e on-chain, criando oportunidades para os front-runners explorarem.
Nem todos os protocolos de stablecoin estão preocupados com os riscos de front-running decorrentes de atrasos do oráculo. No caso do DAI da Maker, os atrasos do oráculo frequentemente beneficiam o protocolo. Por exemplo, se um usuário perceber que sua posição será liquidada na próxima atualização do oráculo devido a uma queda de preço, ela é incentivada a depositar mais fundos na vault, melhorando a saúde do protocolo e a relação de garantia.
Synthetix, que permite trocas de valor baseadas em oráculos entre ativos sintéticos e garantias, é um exemplo perfeito de um protocolo de stablecoin enfrentando desafios de front-running. A postagem no blog deles esboça a longa história do protocolo com o front-running, incluindo alguns ataques passados que sofreram.
Semelhante ao Synthetix, o Angle permite trocas de ativos pelo valor oracle com derrapagem de preço zero. Como resultado, o Angle enfrenta o mesmo problema de execução frontal. A equipe principal da Angle fez esforços significativos para mitigar a execução na frente. Foram implementadas duas melhorias fundamentais: um design oráculo específico e uma estrutura dinâmica de taxas. Neste artigo, explicaremos o design do oráculo de Angle e o raciocínio por trás dele.
Antes de mergulhar na solução da Angle, vamos primeiro tentar entender como o front-running pode prejudicar o protocolo. Vamos considerar um exemplo em que o ETH é aceite como garantia para apoiar a stablecoin da Angle.
Suponhamos que um atacante esteja a monitorizar o preço off-chain do ETH e veja que o oráculo da Chainlink está prestes a atualizar os dados on-chain para um preço mais alto (de p0 para p1, onde p0 < p1). Este atacante pode enviar uma transação para queimar x stablecoins ao preço de p0 em troca de x/p0 de valor de ETH. Depois, quando o preço for atualizado para p1, o atacante pode vendê-lo de volta ao protocolo, obtendo lucro:
Devido a esta transação de front-running na atualização do oráculo, esta parte do lucro é retirada das reservas do protocolo. Se definirmos x = 100 ETH e p1 = 1,01 * p0 (um aumento de preço de 1%), isso significa que o atacante retirou 1 ETH das reservas do protocolo.
Felizmente, o aumento das taxas de transação pode mitigar este problema, pois corroem os lucros dos front-runners e reduzem as oportunidades.
Por exemplo, se as taxas de transação de cunhagem e queima forem constantes e iguais a f, um atacante que queima x stablecoins em p0 e depois as revende para o protocolo por ETH em p1 terá o seguinte lucro final:
Comparado com o cenário anterior, as taxas reduzem o lucro:
Quando a taxa de transação é f = 0.3% e seguindo o exemplo acima, o lucro do atacante é agora apenas 0.39 ETH.
Para reduzir ainda mais esta oportunidade, podemos depender de um oráculo secundário para fornecer duas fontes de preço potenciais: pC (preço Chainlink) e pU (preço Uniswap). O protocolo pode usar o preço mais favorável (o preço mais baixo na cunhagem, ao comprar os tokens do usuário, e o preço mais alto na queima, ao vender ETH ao usuário), tornando a oportunidade de front-running menos atraente.
Imagine um trader a tentar lucrar com a mesma oportunidade acima, assumindo que pC0 < pC1.
Por outro lado, podemos considerar que pU é constante e mais próxima de pC0. Portanto, como veremos mais tarde, devido ao design do preço médio ponderado no tempo (TWAP) da Uniswap, pU tende a ficar para trás em relação a pC.
Neste caso, um atacante que tente lucrar com a oportunidade potencial compraria tokens do protocolo a pC0 (queimando stablecoins) e receberia x(1-f)/pC0 em ETH. Depois, voltaria a vendê-lo a pU1 a um preço mais alto. Isso resultaria numa perda para o atacante:
Se mantivermos os números do exemplo, o atacante acabaria por perder 0.6 ETH nesta transação.
O design do Angle é especificamente destinado a eliminar o risco de transações de front-running. Portanto, o protocolo implementará um mecanismo muito semelhante ao exemplo discutido acima. Nesta seção, exploraremos as opções existentes potenciais com mais detalhes, focando nos detalhes do design que planejamos implementar e analisando nossa escolha da janela de tempo TWAP.
As principais soluções de oráculo que poderiam se adequar ao caso de uso da Angle são:
Chainlink é a escolha óbvia: é uma solução de oráculo descentralizada amplamente utilizada que fornece múltiplas fontes de dados que abrangem vários ativos. Os preços vêm de múltiplas fontes e são transmitidos através de uma rede descentralizada, garantindo que os dados sejam confiáveis, acessíveis e difíceis de manipular. No entanto, algumas fontes de dados geralmente se atualizam apenas após mudanças de preço “significativas” (como uma mudança de 0,5% em ETH/USD) ou após um período de tempo, o que significa que os preços da Chainlink estão sempre atrasados em comparação com o preço de mercado real. Portanto, as atualizações de preço da Chainlink podem ser antecipadas verificando os preços off-chain ou o mempool.
O Preço Médio Ponderado pelo Tempo (TWAP) do Uniswap V3 é outra solução de oráculo óbvia e amplamente utilizada. O TWAP pode ser consultado no contrato do Uniswap para obter o preço médio ponderado pelo tempo dos tokens em um pool ao longo de um período de tempo específico, que varia de alguns segundos a 9 dias. O preço é calculado com base no preço médio dos dois tokens no pool durante o período especificado. Isso faz com que a manipulação do TWAP exija uma grande quantidade de capital e um período de tempo mais longo, o que é ineficiente na maioria dos casos.
No entanto, uma vez que o TWAP é o preço médio dos blocos passados, geralmente estão atrasados em comparação com os preços off-chain em tempo real ou mesmo as fontes de preço da Chainlink. Se usados sozinhos, não seriam suficientes para proteger o protocolo de transações de antecipação.
Além disso, uma vez que o TWAP apenas reporta o preço de pares de tokens on-chain, não consegue atingir o objetivo do protocolo de proporcionar acesso a ativos que não estão representados on-chain (e, portanto, não estão nos pools da Uniswap), como stablecoins apoiadas por forex.
Usar Oráculos Maker poderia ter sido outra opção para Angle, mas isso significaria confiar na MakerDAO e passar por um processo de governança para obter acesso aos dados de preço. As fontes de preço também seriam limitadas às usadas pela Maker, o que é insuficiente para nós, pois pretendemos aceder às taxas de câmbio forex.
Com isso em mente, decidiu-se combinar o oráculo da Chainlink do Protocolo Angle com um TWAP de 10 minutos do Uni V3. Isso permite o preço mais justo possível em qualquer momento, ao mesmo tempo que protege o protocolo de ataques de front-running.
Em termos gerais, os contratos da Angle irão comparar os preços de ambos os canais e utilizar o preço mais favorável ao protocolo. Com este desenho, é mais complexo fazer front-running ao protocolo, uma vez que, para explorar a taxa de câmbio do protocolo, um atacante deve manipular ou fazer front-running de ambos os oráculos.
Especificamente, o nosso contrato irá buscar o melhor preço para todos os pares de ativos voláteis/moedas estáveis entre Chainlink e Uniswap e usar o oráculo forex da Chainlink para converter o preço para a moeda fiduciária necessária. Cada par de garantia/moeda estável terá um contrato de oráculo dedicado com a sua própria fonte de preço independente.
Como funciona?
Por exemplo, suponha que um utilizador queira negociar o par ETH/agEUR. O nosso contrato precisa de obter os preços para ETH/USD e USD/EUR. Irá manter o melhor preço para ETH/USD do Chainlink e o TWAP de 10 minutos do pool ETH/USDC UniV3. Em seguida, irá obter o preço forex USD/EUR do Chainlink.
Exemplo: Uniswap ETH/USDC TWAP: 1900 USD (o protocolo assume que o USDC geralmente mantém sua ancoragem, ou seja, 1 USDC equivale a 1 USD) Preço do ETH Chainlink: 1850 USD Preço do USD Chainlink: 1.16 EUR
Se o utilizador deseja criar agEUR neste caso, o protocolo utilizará o preço mais baixo de ETH/USD, ou seja, o preço de 1850 USD por ETH da Chainlink. Por outro lado, se o utilizador deseja queimar agEUR por wETH na mesma situação, o protocolo utilizará o preço mais alto, ou seja, o TWAP de ETH/USDC da Uni a 1900. Em ambos os casos, o protocolo utilizará a taxa de USD/EUR da Chainlink de 1.16 para converter ETH/USD em ETH/EUR.
Da mesma forma, o protocolo usará o preço mais alto para os usuários que desejam abrir um contrato perpétuo e o preço mais baixo para aqueles que desejam fechá-lo.
Mais geralmente:
O contrato da Angle usará uma janela de tempo de 10 minutos para TWAP. Esta escolha foi feita após uma consideração cuidadosa, pois janelas de tempo diferentes podem resultar em estruturas de preços significativamente diferentes.
No caso do Angle, por um lado, a janela temporal deve ser suficientemente longa para proporcionar um atraso suficiente entre o preço do protocolo e o preço à vista. Isto permite uma maior diferença entre os preços de cunhagem e queima durante as flutuações de preço, especialmente quando o risco de front-running no Chainlink é duplicado. Além disso, quanto mais longa for a janela temporal, mais difícil será manipular o preço do TWAP, uma vez que as observações recentes têm menos impacto sobre o preço.
Por outro lado, o protocolo ainda deve oferecer aos utilizadores cotações justas e atualizadas: usar uma janela de tempo muito ampla criará uma diferença de preço muito grande entre o protocolo e o preço de mercado atual, enquanto usar uma janela de tempo muito estreita não fornecerá a diferença de preço desejada.
Compare o TWAP de 10 minutos e 60 minutos com os feeds de preços da Chainlink
Para lhe dar uma compreensão do porquê escolhemos, em última análise, uma janela de tempo de 10 minutos, aqui está uma comparação entre os TWAPs ETH/USDC de 10 minutos e 60 minutos e o preço ETH/USD da Chainlink, bem como o preço de fecho da Coinbase.
Pode ver como as taxas superiores e inferiores utilizadas pelo protocolo quando os utilizadores criam/fecham e queimam/abrem se movem entre os preços mais favoráveis do Chainlink e do TWAP da Uniswap durante as transições de preço.
Embora o bloco de 60 minutos do TWAP muitas vezes forneça preços que estão longe do mercado, o TWAP de 10 minutos fornece um buffer benéfico para a fonte de preço da Chainlink, mantendo o preço suficientemente próximo do mercado.
Vale a pena notar que, como visto no primeiro gráfico, quanto maior a volatilidade, maior a diferença de preço entre os preços da Chainlink e da Uniswap. Por outro lado, quando os preços permanecem relativamente estáveis ao longo do tempo, as fontes de preço da Uniswap e da Chainlink estão mais próximas uma da outra. Usar o TWAP como uma proteção adicional contra front-running é essencialmente uma forma de cobrar mais dinamicamente em taxas durante períodos de alta volatilidade, uma vez que o risco de front-running é maior devido a atrasos nos oráculos on-chain. O custo dessas taxas efetivas mais altas é que isso reduz a capacidade dos negociadores de arbitragem de reajustar diretamente stablecoins do protocolo. Na maioria dos casos, os preços da Uniswap e da Chainlink serão muito semelhantes, e os usuários dificilmente perceberão o uso de duas soluções de oráculo. No entanto, durante períodos de alta volatilidade, quando o protocolo está em risco de front-running devido a diferenças de preço significativas entre os preços atuais e futuros da Chainlink, o preço do protocolo será diferente, protegendo-o do front-running.
A pesquisa do oráculo da Angle é fortemente inspirada pelas discussões de governança da Synthetix e pelos posts de blog relacionados ao front-running. Em nossa pesquisa, também encontramos outra opção que eles implementaram em fevereiro de 2020, a recuperação/reembolso de taxa, que eventualmente se tornou uma solução temporária.
O que fizeram foi adicionar um período de espera às transações, durante o qual os utilizadores não podiam manipular o Synth que queriam usar. Durante este período, os oráculos podiam verificar se a transação era afetada por inconsistências, especificamente se havia diferença de preço entre o momento da execução e o final do período de espera. Se existisse uma diferença de preço, a diferença teria de ser paga pelo utilizador ou pelo protocolo à outra parte (protocolo ou utilizador), ou seria resolvida na próxima transação com o Synthetix.
Esta solução foi muito eficaz na redução do front-running, mas tiveram de prolongar o período de espera e aumentar as taxas, o que criou uma experiência muito pobre para todos os traders. Também impediu que o Synth se integrasse com outros protocolos em muitos casos de uso. No SIP-120, substituíram esta solução por um plano que adiciona o uso de oráculos TWAP para transações grandes.
O design específico do oráculo da Angle tem dois impactos principais no protocolo:
Os atacantes precisam manipular dois mercados para enganar o protocolo, reduzindo significativamente o risco de negociações front-running bem-sucedidas.
Durante períodos de stress de mercado, o protocolo é improvável oferecer aos utilizadores o melhor preço possível.
O último impacto foi discutido no fórum de governança Fei. Como fornecer a melhor execução comercial não é o objetivo principal do protocolo, acreditamos que a resistência à frente é mais importante para garantir a segurança do protocolo. Em mercados secundários durante períodos de alta volatilidade, uma melhor execução comercial será oferecida.
O nosso objetivo no projeto Angle é projetar um protocolo de stablecoin totalmente suportado e eficiente. Para alcançar isso, é necessário considerar muitos aspectos do protocolo para garantir que não possa ser enganado em uma posição desfavorável, um dos quais é resistência à frente de execução. Isso é particularmente importante porque a estabilidade das stablecoins descentralizadas on-chain que dependem de oráculos depende da qualidade dos seus oráculos.
Adicionar feeds de preço secundários na forma de TWAP pode ajudar o protocolo a mitigar os potenciais impactos adversos da alta volatilidade do mercado e as oportunidades de front-running que surgem durante esses tempos.
Por último, é importante notar que esta solução de oracle mantém flexibilidade e escalabilidade. Por um lado, a governança da Angle pode votar e atualizar os seus contratos de oracle a qualquer momento. Por outro lado, os oracles podem ser criados para qualquer feed de preços suportado pela Chainlink. Este é o nível mínimo de suporte necessário para alcançar a visão da Angle de trazer ativos financeiros para a cadeia de forma eficiente em termos de capital!