Letzte Woche habe ich einen KOL-Post gesehen, der behauptete, DuskEVM sei EVM-gleichwertig und Uniswap V3 würde direkt bereitgestellt. Ich habe V3 Core geforkt und es auf Boreas RC1 kompiliert, um es zu prüfen.

Der erste Fehler trat in Pair.sol auf.

balanceOf liest _reserves aus dem öffentlichen EVM-Speicher. Die Privacy-Layer von DuskEVM routet die Liquiditätstiefe über Hedger. Die Hedger-Variablen liegen nicht im EVM-Speicher. Daher stößt jede View-Funktion, die Reserven liest, ins Leere. Uniswaps Mint, Burn und Swap hängen alle davon ab, synchron Reserven zu lesen, um das konstante Produkt zu berechnen. Dieser gesamte Rechenpfad muss komplett von Grund auf überladen werden.

Das Problem des Shielding Pools geht noch tiefer. Uniswap-LP-Tokens sind standardmäßige ERC-20-Token mit öffentlich sichtbaren Transfers. Confidential-LP auf DuskEVM erfordert ein erneutes Umwickeln mit ConfidentialERC20. LP-Balancen bewegen sich innerhalb von Zedger-Notizen. Swaps aktualisieren die Reserves-Mapping nicht mehr. Sie verbrauchen die alte Notiz und prägen eine neue mit Beträgen, die durch PLONK-Proofs abgesichert sind.

getAmountOut kann nicht auf die gleiche Weise funktionieren. Das Original teilt reserveIn und reserveOut offen. Die Dusk-Version muss innerhalb des Circuits beweisen, dass alte Notiz minus Input gleich neue Notiz plus Output ist. Input und Output bleiben für Market Maker unsichtbar, sind aber für jeden verifizierbar, der den View Key hält.

Am achten Tag habe ich versucht, Pair von der ConfidentialERC20-Basisklasse zu erben. Unmittelbar gab es einen Konflikt in der Permit-Funktionssignatur. Hedger approve verwendet Notizverbrauch, nicht das ERC20-Allowance-Bitmap. SafeCast muss überall auf HedgedUint256 umstellen.

Erforderliche Minimal-Änderungen: Pair-Contract, Router-Berechnung der Beträge und Oracle-TWAP-Sampling. Das Sampling-Ziel wird zu einem Notiz-Commitment, das nicht direkt ausgelesen werden kann.

Was übernommen wird: Solidity-Syntax, Foundry, Remix, chainId-Konfiguration. Das umgebende Tooling funktioniert. Die Kern-AMM-Logik migriert nicht ohne umfangreiches Rework.

EVM-gleichwertig bedeutet, dass die Umgebung vertraut ist. Es heißt nicht, dass bestehende Contracts unverändert laufen, wenn Privacy im Spiel ist.

#dusk $DUSK @Dusk