Search for projects by name or address
ApeX Omni is an application-specific ZK rollup for order book trading. It uses zkLink X to aggregate liquidity deposited across multiple chains.
ApeX Omni is an application-specific ZK rollup for order book trading. It uses zkLink X to aggregate liquidity deposited across multiple chains.
ApeX's proof system does not authenticate deposits on external chains. Users must additionally trust the 2/2 validator set and LayerZero bridge not to forge non-existent deposits, which allows draining rollup escrows.
Consequence: projects without a proper proof system fully rely on single entities to safely update the state. A malicious proposer can finalize an invalid state, which can cause loss of funds.
Learn more about the recategorisation here.
ApeX Pro sunset
2025 Feb 27th
ApeX Pro StarkEx chain is discontinuied in favor of zkLink X stack chain.
ApeX Omni launched on zkLink X
2024 Jun 10th
A launch of ApeX Omni chain build on zkLink X stack is announced.
ApeX Omni is an application-specific ZK rollup for order book trading. It uses zkLink X to aggregate liquidity deposited across multiple chains.
ApeX Omni is a non-EVM L3 on Arbitrum One. Its primary zkLink deployment verifies state transition proofs and publishes state differences on Arbitrum, while secondary deployments escrow assets deposited on other chains and synchronize their local state with the primary deployment through LayerZero.
| SEQUENCER FAILURE | STATE VALIDATION | DATA AVAILABILITY | EXIT WINDOW | PROPOSER FAILURE | |
| Arbitrum One L2 | Self sequence | Fraud proofs (INT) | Onchain | None | Self propose |
| ApeX Omni L3 • Individual | No mechanism | Validity proofs (SN) | Onchain (SD) | None | Cannot withdraw |
| ApeX Omni L3 • Combined | No mechanism | Validity proofs | Onchain | None | Cannot withdraw |
There is no mechanism to have transactions be included if the sequencer is down or censoring.
Zero knowledge cryptography is used to ensure state correctness. Proofs are first verified on Arbitrum One and finally on Ethereum.
All of the data needed for proof construction is published on the base chain, which ultimately gets published on Ethereum.
There is no window for users to exit in case of an unwanted upgrade since contracts are instantly upgradable.
Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen.
The data needed to reconstruct the ApeX state is included in commitBlocks calldata on Arbitrum One. Secondary deployments additionally commit their local onchain operations and send synchronization hashes to the primary deployment.
Each update to the system state must be accompanied by a ZK proof that ensures that the new state was derived by correctly applying a series of valid user transactions to the previous state. These proofs are then verified on Arbitrum One by a smart contract. Deposits on secondary chains are not verified with these validity proofs and rely on LayerZero bridges instead. Deposits could be stolen if bridges are compromized.
Completely new discovery of ApeX project (ApeX Omni instead of older ApeX Pro). Now it is a zkLink X cross-chain deployment with settlement on Arbitrum One (as L3) and deposits on several other chains.
Completely new discovery of ApeX project (ApeX Omni instead of older ApeX Pro).
Now it is a zkLink X cross-chain deployment with settlement on Arbitrum One (as L3) and deposits on several other chains.
| contract GnosisSafe (eth:0x374632e7D48B7872d904524FdC5Dd4516F42cDFF) [GnosisSafe] { | |
| +++ description: None | |
| values.$members.5: | |
| - | "eth:0x824C9364A6CF8f5EB542ad2ca8F5705561C8b1db" |
| + | "eth:0x522b8Df4c9965934654CFebbf20882005c33cE18" |
| } |
project is archived.
project is archived.
| contract StarkPerpetualUSDC (0xA1D5443F2FB80A5A55ac804C948B45ce4C52DCbb) { | |
| +++ description: Central Validium contract. Receives (verified) state roots from the Operator, allows users to consume L2 -> L1 messages and send L1 -> L2 messages. Critical configuration values for the L2's logic are defined here by various governance roles. | |
| values.isFrozen: | |
| - | false |
| + | true |
| } |
USDT StarkEx instance frozen, project archived. Apex Pro, the app on this StarkEx Validium, is EOL: https://www.apex.exchange/blog/detail/ApeX-Pro-Sunset-Delisting-Timeline-for-Trading-Pairs.
USDT StarkEx instance frozen, project archived.
Apex Pro, the app on this StarkEx Validium, is EOL: https://www.apex.exchange/blog/detail/ApeX-Pro-Sunset-Delisting-Timeline-for-Trading-Pairs.
| contract PerpetualEscapeVerifier (0xaadFdB9CAc145c65f2284fBe24600d07fb37F7BD) { | |
| +++ description: Special verifier for the escape() function. | |
| values.hasRegisteredFact: | |
| - | false |
| + | true |
| } |
| contract StarkPerpetualUSDT (0xe53A6eD882Eb3f90cCe0390DDB04c876C5482E6b) { | |
| +++ description: Central Validium contract. Receives (verified) state roots from the Operator, allows users to consume L2 -> L1 messages and send L1 -> L2 messages. Critical configuration values for the L2's logic are defined here by various governance roles. | |
| values.isFrozen: | |
| - | false |
| + | true |
| } |
Minor upgrade to the StarkExchangeUSDC contract which is an implementation of StarkEx Perpetual. Two new asset IDs are added: - NON UNIQUE MINTABLE ASSET ID FLAG (ERC-1155) - MINTABLE ERC20 ASSET ID FLAG (ERC-20)
Minor upgrade to the StarkExchangeUSDC contract which is an implementation of StarkEx Perpetual.
Two new asset IDs are added:
| contract StarkExchangeUSDC (0xA1D5443F2FB80A5A55ac804C948B45ce4C52DCbb) { | |
| +++ description: None | |
| sourceHashes.5: | |
| - | "0x0c38b010717f86413abfb52412e5eb50b689b8d172e8c39ef81fc428fe5a1e52" |
| + | "0xe29824efd6d907d93d9b4b2b0737630ab974bce5e0017cb1459975c66a798280" |
| sourceHashes.4: | |
| - | "0xb8c0122f24ea2e559e908278def38aa80b6cd27b39b2d74402dbf5ba2585c7c5" |
| + | "0xdfa7b8bf4884e9f9933980cec5bcf744d2e522c291ed2a383c140cfb8c795f29" |
| sourceHashes.3: | |
| - | "0x473fc9765112e835124640cb91a4642354e09e94f92462929139d9ab5b6ddcf4" |
| + | "0xb5161e812087e15dd53a4c29ab296ade613b540445f7d1eb470de4f81a9c555c" |
| sourceHashes.2: | |
| - | "0x5ebd3f192c54b3d36f0d57e1cb14f418ae69a1694f7dc7d19d006883fc89e525" |
| + | "0xf6d00f2bc5db71a79b854049b38819f78c8fbbd98dcc2e4555f70946f6e58069" |
| sourceHashes.1: | |
| - | "0x758db67adde840068b01898c25f007a0d0549aaf9d431c2e0ae77ae4c2c56b33" |
| + | "0xc8c9c0e9c5171cb82b707e7e4b4ea80d427ba6f1dc21fc604efdce0ffa40323d" |
| values.$implementation.4: | |
| - | "0x34E7cfedF99995A47B3e3D0AB88ba67072B55035" |
| + | "0x31e2d974BaC547101413c24C23443AD488423f64" |
| values.$implementation.3: | |
| - | "0xdD5f42B087C1D2F73a2b443249b7D3DbE148a859" |
| + | "0x45de249eEa8f9CDB70943B17CceDeb42F5BA0175" |
| values.$implementation.2: | |
| - | "0x564EA75a26Dc0Bb5c5033B4752f88953A25AD058" |
| + | "0x1BC9C618B7FA6b5EfAAD31DC801eB55c608B9310" |
| values.$implementation.1: | |
| - | "0x533a7f4bE5453513049EB94A2b115F2CcE161dce" |
| + | "0x540Ad8576d2F90f28994ab001622F964945854A8" |
| values.$implementation.0: | |
| - | "0xdD813397b79f8df581eEb0c4B8aB72304c528396" |
| + | "0x8C43C9bec15d82D153C52518030e0a9590ABD35d" |
| values.$pastUpgrades.4: | |
| + | ["2025-02-17T09:39:23.000Z","0x7c6ca54630321bc1f0e2ad0b68972ec3f6efaab449f09839ef612f90d4292bdd",["0x8C43C9bec15d82D153C52518030e0a9590ABD35d","0x540Ad8576d2F90f28994ab001622F964945854A8","0x1BC9C618B7FA6b5EfAAD31DC801eB55c608B9310","0x45de249eEa8f9CDB70943B17CceDeb42F5BA0175","0x31e2d974BaC547101413c24C23443AD488423f64"]] |
| values.$upgradeCount: | |
| - | 4 |
| + | 5 |
| values.implementation: | |
| - | "0xdD813397b79f8df581eEb0c4B8aB72304c528396" |
| + | "0x8C43C9bec15d82D153C52518030e0a9590ABD35d" |
| values.VERSION: | |
| - | "3.1.0" |
| + | "3.2.0" |
| } |
Updates progHash, not found online, added to the library.
Updates progHash, not found online, added to the library.
| contract StarkExchangeUSDC (0xA1D5443F2FB80A5A55ac804C948B45ce4C52DCbb) { | |
| +++ description: None | |
| values.globalConfigurationHash: | |
| - | "0x01897348c8e7a04145727a7d369a76c01711a828d58afeca4c3e7d86596b85ba" |
| + | "0x0274c9dc2096cfe79c5f28f5bfb3a95b3bd0692430b4f9ba79f871068611804a" |
| } |
| contract FinalizableGpsFactAdapterUSDC (0xE741e26573782ae3C0ea9EC710FA99Fcd27fB953) { | |
| +++ description: None | |
| values.programHash: | |
| - | "3114724292040200590153042023978438629733352741898912919152162079752811928849" |
| + | "2530337539466159944237001094809327283009177793361359619481044346150483328860" |
| } |
A single permissioned validator can commit and execute blocks. Proof submission is permissionless, but only blocks committed by the validator can be proven and executed.
MEV can be extracted if the operator exploits their centralized position and frontruns user transactions.
There is no general mechanism to force the sequencer to include transactions. Deposits create priority requests, but users cannot submit forced withdrawal requests. Although the contracts contain an exodus mode, the secondary deployments use EmptyVerifier contracts that reject all exit proofs, so this does not provide a system-wide escape hatch.
Users can be censored if the operator refuses to include their transactions.
Users initiate withdrawals through regular ApeX transactions. After the block is proven, synchronized across the participating deployments, and executed, the user can claim funds from the zkLink escrow on the chain where the assets are held.
Funds can be frozen if the centralized validator goes down. Users cannot produce blocks themselves and exiting the system requires new block production (CRITICAL).
Deposits remain escrowed in the zkLink contract on their origin chain. Secondary deployments send synchronization hashes through LayerZero to the primary deployment on Arbitrum One. The primary deployment only synchronizes a block when the received hashes match the hashes committed as part of the primary block, and then sends block confirmations back to the secondary deployments.
Funds can be lost if the 2/2 validator set or LayerZero bridge forges a non-existent deposit.
Funds can be frozen if cross-chain synchronization messages are not delivered.

Controls upgrades to managed contracts. The master can schedule, cancel, and complete upgrades after the main contract’s notice period.
Controls upgrades to managed contracts. The master can schedule, cancel, and complete upgrades after the main contract’s notice period.
A Multisig with 4/7 threshold.


PLONK verifier used to validate aggregated L2 block proofs and zero-knowledge exit proofs.
The main rollup contract. It processes L3 blocks submitted by validators and settles L3 state, handles deposits and withdrawals, and synchronizes block data with other zkLink chains.
All supported tokens in this escrow are included in the value secured calculation.
A secondary cross-chain ZkLink rollup contract. It only escrows user deposits, and synchronizes deposit data with the main zkLink chain.
All supported tokens in this escrow are included in the value secured calculation.
A secondary cross-chain ZkLink rollup contract. It only escrows user deposits, and synchronizes deposit data with the main zkLink chain.
All supported tokens in this escrow are included in the value secured calculation.
A secondary cross-chain ZkLink rollup contract. It only escrows user deposits, and synchronizes deposit data with the main zkLink chain.
All supported tokens in this escrow are included in the value secured calculation.
A secondary cross-chain ZkLink rollup contract. It only escrows user deposits, and synchronizes deposit data with the main zkLink chain.
All supported tokens in this escrow are included in the value secured calculation.
The current deployment carries some associated risks:
Funds can be stolen if a contract receives a malicious code upgrade. There is no delay on code upgrades (CRITICAL).