Compliant DEX
Galactica example project for a compliant DEX. It is a fork of UniswapV2 and extends it with compliant privacy through Galactica's zkCertificates.
Changes compared to UniswapV2
The compliant dex code is available here: https://github.com/Galactica-corp/Compliant-DEX
It's a fork of UniswapV2 with modifications to allowed only ZkKYC holders interact with it. The changes are in the following contracts:
UniswapV2Router02: every function that interacts with the DEX has a
hasValidVerificationSBT
modifierUniswapV2Pair:
mint, burn and swap functions are restricted to be only callable by the router to enforce the SBT requirement
the transfer function is also subjected to the same SBT requirement as the router
UniswapV2Factory: now also contains the router address, so that the pair can have access to the router's SBT requirement
In addition to the DEX contracts we also need the following contracts that check compliancy:
A Dapp that combines compliancy check and SBT minting, for example KYCRequirementsDemoDApp
VerifierWrapper: to check public inputs
Verifier: generated by circom framework to check the Zk proof
VerificationSBT: to mint the SBT when the check is passed, can be 1 or several depending on the number of requirements. The list of required SBTs is then stored in the router contract.
Before interacting with the DEX, the user needs to call the
checkRequirements
function in KYCRequirementsDemoDApp submitting the usual (a, b, c, inputs) proof parameters. If the check is passed he will receive an SBT and can use the DEX as a normal UniswapV2.
Last updated