Verträge
Duel besteht aus sechs Verträgen, fünf davon auf Robinhood Chain deployt und einer nie deployt, aufgebaut auf dem Uniswap-V4-Deployment der Chain. Solidity 0.8.26, Foundry, OpenZeppelin, v4-core. Die Duelle leben auf der Chain: Die App liest sie, über den Server der Website oder direkt, und ihre Historie aus einem Indexer der Chain-Events.
| Vertrag | Rolle |
|---|---|
DuelFactory | Startet ein Duell in einer Transaktion: zwei Token, drei Pools, gesperrte Positionen, die Launch-Käufe des Creators. Hält die begrenzte Konfiguration künftiger Duelle; ein Launch verpflichtet sich auf die Konfiguration, die sein Starter gelesen hat (configHash), und wird rückgängig gemacht, wenn zwischenzeitlich eine andere gilt. |
DuelHook | Der Uniswap-V4-Hook, den die drei Pools jedes Duells teilen: Gebühren, Anti-Snipe-Steuer, Burn bei Wechseln, Neuausrichtung, Durchschnitt der Verteilung, Runden und Rückkäufe sowie Pot, Creator-Gebühren und Protokollgebühren jedes Duells. |
DuelToken | Der schlichte ERC-20 jeder Seite: eine Milliarde Einheiten, verbrennbar, ohne Owner, mit Permits (EIP-2612). |
DuelRouter | Der Exact-Input-Router, über den die App handelt, inklusive Permit eines Verkaufs; nur er verkauft eine Seite in mehreren Durchgängen, wenn ihr ETH-Pool den Verkauf nicht auf einmal aufnehmen kann (SALE_PASSES), und was dieser Pool selbst dann nicht zurückkaufen kann, über die andere Seite (sell). Jeder V4-Router funktioniert ebenfalls, in einem einzigen Swap. |
DuelLens | Read-only-Views, die den Zustand eines Duells für die App bündeln. |
DuelSimulator | Wird nie deployt. Die App legt seinen Code für einen einzigen Read-only-Aufruf auf deine eigene Adresse (ein State Override), sodass ein Trade so läuft, wie du ihn senden würdest, und beantwortet, was du bekämst und wo die Verteilung nach der Neuausrichtung der Pools landen würde. |
Version
Dieses Launchpad ist Duel V1, Codename Petunia. Jeder seiner Verträge sagt das (VERSION() und CODENAME() auf Factory, Hook, Router und Lens), und jeder Token, den es startet, behält es für immer (LAUNCHPAD_VERSION() und LAUNCHPAD_CODENAME()): Der Abschnitt „Info“ eines Duells zeigt es, so wie es seine Token sagen. Ein späteres, separat deploytes Launchpad würde weiterzählen, mit einem eigenen Codenamen, und seine Token würden ihren nennen.
Adressen
| Vertrag | Adresse auf Robinhood Chain |
|---|---|
DuelFactory | 0x3c6e7f9Bc507a442237AF1721B2294686495BD54 |
DuelHook | 0x5F746B7B1722e9bb3849EEa97061Df50F715AAEc |
DuelRouter | 0x9e484C17E7d263F084Ab226a72FCdf301145d6D1 |
DuelLens | 0x1677d3C0a1F9Ae00519AD08C68674f63fe945389 |
Duel stützt sich auf diese Verträge von Robinhood Chain:
| Uniswap V4 PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| Universal Router (Mainnet) | 0x204FAca1764B154221e35c0d20aBb3c525710498 |
| V4 Quoter | 0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94 |
| Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
Der Hook
Die Adresse eines V4-Hooks trägt die Liste der Callbacks, die er implementiert. Der Hook von Duel nutzt:
| Callback | Was er tut |
|---|---|
beforeInitialize | Nur die Factory darf einen Pool am Hook eröffnen, und nur die registrierten Pools eines Duells. |
beforeAddLiquidity | Nur die Factory darf Liquidität hinzufügen, beim Launch. |
beforeRemoveLiquidity | Wird immer rückgängig gemacht: Die Liquidität ist für immer gesperrt. |
beforeDonate | Wird immer rückgängig gemacht. |
beforeSwap | Rechnet eine beendete Runde ab, aktualisiert die Durchschnitte, erhebt Gebühren und Steuern. |
afterSwap | Erhebt die Gebühren, die auf den vom Swap nicht festgelegten Betrag fällig sind, prüft, dass ein vorab belasteter Swap vollständig ausgeführt wurde, und richtet dann die drei Pools neu aus. |
Gebühren werden über die Return-Deltas des Hooks erhoben, gelten also unabhängig davon, wer den Swap routet.
Wer was darf
| Akteur | Darf |
|---|---|
| Jeder | Starten, handeln, beendete Runden abrechnen, Abholungen für Creator oder Treasury auslösen, vorgeschlagene Konditionen nach Ablauf ihrer 48 Stunden anwenden |
| Der Creator eines Duells | Die Creator-Gebühren dieses Duells erhalten; die Rolle samt Gebühren an eine Adresse übergeben, die sie annimmt |
| Owner der Factory | Neue Launches pausieren; nach 48 Stunden begrenzte Konditionen künftiger Duelle oder die Protokoll-Treasury ändern. Die aktuelle Treasury erhält angesammelte Protokollgebühren zum Zeitpunkt der Abholung. Den Anteil des Protokolls an der Swap-Gebühr aller Duelle sofort senken oder wieder anheben, nie über ihre Konditionen. |
| Niemand | Liquidität abziehen, Token minten, einen Pot verschieben, die Gebühr, die die Trader eines laufenden Duells zahlen, oder den Anteil seines Creators ändern, den Anteil des Protokolls über die Konditionen eines Duells anheben, einem Duell die Creator-Rolle wegnehmen, Verträge upgraden |
Mehr
- Sicherheit: was die Mittel schützt und wie es geprüft wurde.
- Auf Duel bauen: Duelle aus eigenem Code lesen und handeln.