Contracts
| Contract | Type | Notes |
|---|---|---|
VeilifyProxy | ERC-1967 proxy | No constructor arguments. setImplementationAndCall works once, while unset. |
VeilifyPool | Implementation (UUPS) | Inherits State, Initializable, UUPSUpgradeable, ReentrancyGuardTransient |
State | Storage layout | All pool storage, with a __gap for upgrades |
Poseidon2T4Unrolled | External library | Linked at compile time |
VeilifySwap | External library | Router leg of swaps, via DELEGATECALL |
ShieldedTransferVerifier | Verifier | 46 public inputs |
ShieldedWithdrawalVerifier | Verifier | 38 public inputs |
ShieldedSwapVerifier | Verifier | 52 public inputs |
AdminUpgradeController | Upgrade controller | canUpgrade, transferAdmin, execute |
AtomicPoolFactory | Deployment helper | Creates and initializes the proxy in one transaction |
Constructor immutables
constructor(uint256 _virtualChainId, address _uniswapV2Router)
| Immutable | Meaning |
|---|---|
VIRTUAL_CHAIN_ID | Veilify Network chain ID. Public input #0 of every proof. |
UNISWAP_V2_ROUTER | The only router swaps can use. Public input #1 of swap proofs. The only address allowed to send ETH directly. |
Initializer
function initialize(
address _shieldedTransferVerifier,
address _shieldedWithdrawalVerifier,
address _shieldedSwapVerifier,
address _guard,
address _upgradeController
) external initializer;
ZeroAddress).
VeilifyProxy.setImplementationAndCall can be called by anyone while the implementation is unset. Always deploy and initialize in one transaction with AtomicPoolFactory. See Deploying to Robinhood.Roles
| Role | Holder | Powers |
|---|---|---|
| Admin | Anyone upgradeController.canUpgrade(msg.sender, …) approves | Upgrades, setGuard, setRelayer, setVerifiers, fees, limits, treasury, setWithdrawalsPaused, setWhitelistManager |
| Upgrade controller | upgradeController | setUpgradeController |
| Gatekeeper | guard | Approve, reject or permit deposits. setPaused. |
| Whitelist manager | whitelistManager (or admin) | setTokenWhitelist, setTokenWhitelistBatch |
| Relayer | allowedRelayers[addr] | Submit private operations with fee > 0 |
| Treasury | treasury | Receives swept protocol fees |
Entry points
| Function | Pause flag | Reentrancy gatekeeper |
|---|---|---|
deposit, depositTo, registerReceivingKeyAndDeposit | paused | ✅ |
pullDeposit | paused | ✅ |
withdrawPendingDeposit | - | ✅ |
shieldedTransfer | paused | ✅ |
shieldedWithdrawal | withdrawalsPaused | ✅ |
shieldedSwap | paused and withdrawalsPaused | ✅ |
registerReceivingKey | - | - |
Compiler settings
| Setting | Value |
|---|---|
| Compiler | solc 0.8.28+commit.7893614a |
| EVM version | cancun |
| Optimizer | enabled, runs: 0 |
viaIR | false |
| Metadata | no CBOR append |
| Dependencies | OpenZeppelin 5.4.0, zk-kit LeanIMT 2.0.1 |