Contratos
O Duel são seis contratos, cinco deles implantados na Robinhood Chain e um nunca implantado, construídos sobre a implantação da Uniswap V4 na rede. Solidity 0.8.26, Foundry, OpenZeppelin, v4-core. Os duelos vivem na rede: o app a lê, pelo servidor do site ou diretamente, e o histórico deles em um indexador dos eventos da rede.
| Contrato | Papel |
|---|---|
DuelFactory | Lança um duelo em uma transação: dois tokens, três pools, posições travadas e as compras de lançamento do criador. Guarda a configuração limitada dos duelos futuros; um lançamento se compromete com a configuração que quem lança leu (configHash) e reverte se outra tiver sido aplicada nesse meio-tempo. |
DuelHook | O hook da Uniswap V4 compartilhado pelos três pools de cada duelo: taxas, imposto antissnipe, queima das trocas, realinhamento, média da divisão, rodadas e recompras, e o pote, as taxas do criador e as taxas do protocolo de cada duelo. |
DuelToken | O ERC-20 comum de cada lado: um bilhão de unidades, queimável, sem dono, com permits (EIP-2612). |
DuelRouter | O router de entrada exata pelo qual o app negocia, incluindo o permit de uma venda; só ele vende um lado em várias passagens quando o pool de ETH desse lado não consegue absorver a venda de uma vez (SALE_PASSES), e o que esse pool nem assim consegue recomprar, pelo outro lado (sell). Qualquer router V4 também funciona, em um único swap. |
DuelLens | Visões somente leitura que reúnem o estado de um duelo para o app. |
DuelSimulator | Nunca é implantado. O app coloca o código dele no seu próprio endereço durante uma chamada somente leitura (um state override), para que uma negociação rode como você a enviaria e responda o que você receberia e onde a divisão ficaria depois que os pools se realinhassem. |
Versão
Este launchpad é o Duel V1, codinome Petunia. Cada um dos contratos diz isso (VERSION() e CODENAME() na fábrica, no hook, no router e na lens), e cada token que ele lança guarda isso para sempre (LAUNCHPAD_VERSION() e LAUNCHPAD_CODENAME()): a seção Sobre de um duelo mostra isso, como os tokens dele dizem. Um launchpad posterior, implantado à parte, seguiria a numeração com um codinome próprio, e os tokens dele diriam o deles.
Endereços
| Contrato | Endereço na Robinhood Chain |
|---|---|
DuelFactory | 0x3c6e7f9Bc507a442237AF1721B2294686495BD54 |
DuelHook | 0x5F746B7B1722e9bb3849EEa97061Df50F715AAEc |
DuelRouter | 0x9e484C17E7d263F084Ab226a72FCdf301145d6D1 |
DuelLens | 0x1677d3C0a1F9Ae00519AD08C68674f63fe945389 |
O Duel depende destes contratos da Robinhood Chain:
| PoolManager da Uniswap V4 | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| Universal Router (mainnet) | 0x204FAca1764B154221e35c0d20aBb3c525710498 |
| V4 Quoter | 0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94 |
| Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
O hook
O endereço de um hook V4 carrega a lista de callbacks que ele implementa. O hook do Duel usa:
| Callback | O que faz |
|---|---|
beforeInitialize | Só a fábrica pode abrir um pool no hook, e só os pools registrados de um duelo. |
beforeAddLiquidity | Só a fábrica pode adicionar liquidez, no lançamento. |
beforeRemoveLiquidity | Sempre reverte: a liquidez fica travada para sempre. |
beforeDonate | Sempre reverte. |
beforeSwap | Liquida uma rodada encerrada, atualiza as médias, cobra taxas e impostos. |
afterSwap | Cobra as taxas devidas sobre o valor que o swap não fixou, verifica se um swap cobrado antes se completou por inteiro e depois realinha os três pools. |
As taxas são cobradas com os return deltas do hook, então valem para quem quer que roteie o swap.
Quem pode fazer o quê
| Ator | Pode |
|---|---|
| Qualquer pessoa | Lançar, negociar, liquidar rodadas encerradas, acionar resgates do criador ou da tesouraria, aplicar termos propostos depois que as 48 horas deles passarem |
| O criador de um duelo | Receber as taxas de criador desse duelo; passar o papel, com as taxas dele, para um endereço que o aceite |
| Dono da fábrica | Pausar novos lançamentos; mudar, depois de 48 horas, os termos limitados de duelos futuros ou a tesouraria do protocolo. A tesouraria atual recebe as taxas do protocolo acumuladas no momento do resgate. Reduzir na hora a parte do protocolo na taxa de swap de todos os duelos, ou aumentá-la de novo, nunca acima dos termos deles. |
| Ninguém | Retirar liquidez, cunhar tokens, mover um pote, mudar a taxa que os traders de um duelo ativo pagam ou a parte do criador dele, aumentar a parte do protocolo acima dos termos de um duelo, tomar o papel de criador de um duelo, atualizar contratos |
Mais
- Segurança: o que protege os fundos e como isso foi verificado.
- Construir no Duel: ler duelos e negociar a partir do seu próprio código.