• O Duel está aberto na Robinhood Chain
  • Lance um duelo dois tokens, três pools, uma transação
  • A rodada fecha em --:--:--
  • Rodadas de quatro horas a recompra do vencedor tem limite de preço
  • Liquidez travada para sempre, sem tokens da equipe

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.

ContratoPapel
DuelFactoryLanç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.
DuelHookO 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.
DuelTokenO ERC-20 comum de cada lado: um bilhão de unidades, queimável, sem dono, com permits (EIP-2612).
DuelRouterO 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.
DuelLensVisões somente leitura que reúnem o estado de um duelo para o app.
DuelSimulatorNunca é 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

O Duel depende destes contratos da Robinhood Chain:

PoolManager da Uniswap V40x8366a39CC670B4001A1121B8F6A443A643e40951
Universal Router (mainnet)0x204FAca1764B154221e35c0d20aBb3c525710498
V4 Quoter0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94
Permit20x000000000022D473030F116dDEE9F6B43aC78BA3

O hook

O endereço de um hook V4 carrega a lista de callbacks que ele implementa. O hook do Duel usa:

CallbackO que faz
beforeInitializeSó a fábrica pode abrir um pool no hook, e só os pools registrados de um duelo.
beforeAddLiquiditySó a fábrica pode adicionar liquidez, no lançamento.
beforeRemoveLiquiditySempre reverte: a liquidez fica travada para sempre.
beforeDonateSempre reverte.
beforeSwapLiquida uma rodada encerrada, atualiza as médias, cobra taxas e impostos.
afterSwapCobra 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ê

AtorPode
Qualquer pessoaLanç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 dueloReceber as taxas de criador desse duelo; passar o papel, com as taxas dele, para um endereço que o aceite
Dono da fábricaPausar 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émRetirar 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.