dYdX v3
Badges
About
dYdX v3 aims to build a powerful and professional exchange for trading crypto assets where users can truly own their trades and, eventually, the exchange itself.
$261.20 M
9.87%
- Upgrades unrelated to on-chain provable bugs provide less than 30d to exit.
Badges
About
dYdX v3 aims to build a powerful and professional exchange for trading crypto assets where users can truly own their trades and, eventually, the exchange itself.
...
Choose token
![](https://assets.coingecko.com/coins/images/6319/large/usdc.png?1696506694)
...
...
dYdX v4 announcement
2022 Jun 22nd
dYdX V4 will be developed as a standalone blockchain based on the Cosmos SDK.
dYdX Foundation
2021 Aug 3rd
Independent foundation was created to participate in the Protocol governance.
Public launch
2021 Apr 6th
Layer 2 cross-margined Perpetuals are now live in production for all traders.
Funds can be stolen if
Funds can be lost if
Users can be censored if
MEV can be extracted if
State validation
ZK proofs (ST)zkSTARKS are zero knowledge proofs that ensure state correctness.
Exit window
NoneThere is no exit window. Upgrades have a 9d delay, (or 2d if shortened by the Priority Controller), but withdrawals can be censored for up to 14d.
Sequencer failure
Force via L1Proposer failure
Use escape hatchUsers are able to trustlessly exit by submitting a Merkle proof of funds. Positions will be closed using the average price from the last batch state update.
![dYdX v3](/icons/dydx.png)
- The project calls itself a rollup.
- L2 state roots are posted to Ethereum L1.
- Inputs for the state transition function are posted to L1.
- A source-available node exists that can recreate the state from L1 data. Please note that the L2BEAT team has not verified the validity of the node source code. View code
- A complete and functional proof system is deployed.
- Users are able to exit without the help of the permissioned operators.
- In case of an unwanted upgrade by actors more centralized than a Security Council, users have at least 7d to exit.
- Upgrades unrelated to on-chain provable bugs provide less than 30d to exit.
Validity proofs ensure state correctness
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 Ethereum by a smart contract. The system state is represented using Merkle roots.
Zero knowledge STARK cryptography is used
Despite their production use zkSTARKs proof systems are still relatively new, complex and they rely on the proper implementation of the polynomial constraints used to check validity of the Execution Trace.
Funds can be lost if the proof system is implemented incorrectly.
All data required for proofs is published on chain
All the relevant data that is used to recover the balances Merkle Tree is published on-chain as calldata. This includes, in addition to the proven new state, the complete list of differences of the users’ balances from the previous state.
State can be independently derived from data (state updates) published on Ethereum by running an open-source StarkEx Explorer. The explorer, once fully synced, provides UI interface to perform forced actions, trigger rollup freeze and withdraw funds using escape hatch.
No compression is used, state updates and other metadata are simply serialized for L1
There is no genesis file for dYdX. By default, all accounts were empty at the beginning.
dYdX doesn’t publish transactions. Balances of user positions are stored in a Merkle Tree and updates to that tree are published on Ethereum, together with Merkle Root and a ZK proof. Deserialization of that data is implemented here. Generating Merkle Proof is implemented here.
The system has a centralized operator
The operator is the only entity that can propose blocks. A live and trustworthy operator is vital to the health of the system. Typically, the Operator is the hot wallet of the StarkEx service submitting state updates for which proofs have been already submitted and verified.
MEV can be extracted if the operator exploits their centralized position and frontruns user transactions.
Users can force exit the system
Force exit allows the users to escape censorship by withdrawing their funds. The system allows users to force the withdrawal of funds by submitting a request directly to the contract on-chain. The request must be served within 14d. If this does not happen, the system will halt regular operation and permit trustless withdrawal of funds. Perpetual positions can also be force closed before withdrawing, however this requires the user to find the counterparty for the trade themselves.
Users can be censored if the operator refuses to include their transactions. However, there exists a mechanism to independently exit the system.
Funds can be lost if the user is unable to find the counterparty for the force trade.
Regular exit
Forced exit
If the user experiences censorship from the operator with regular exit they can submit their withdrawal requests directly on L1. The system is then obliged to service this request. Once the force operation is submitted and if the request is serviced, the operation follows the flow of a regular exit.
Emergency exit
If the enough time deadline passes and the forced exit is still ignored the user can put the system into a frozen state, disallowing further state updates. In that case everybody can withdraw by submitting a merkle proof of their funds with their L1 transaction.
The system uses the following set of permissioned addresses:
Validity proof must be signed by at least 1 of these addresses to approve state update.
Can decrease the delay required for the Rollup upgrade to 2d.
Controlled by dYdX Governance. Owner of dYdX token. Can upgrade Treasury, Liquidity Module and Merkle Distributor. Currently there is 2d delay before the upgrade.
Controlled by dYdX Governance. Has the ability to update Governance Strategy resulting in different logic of votes counting. Can upgrade Safety Module. Currently there is 7d delay before the upgrade.
Controlled by dYdX Governance. The Merkle-pauser executor can freeze the Merkle root, which is updated periodically with each user cumulative reward balance, in case the proposed root is incorrect or malicious. It can also veto forced trade requests by any of the stark proxy contracts.Currently there is 0s delay before the upgrade.
![A diagram of the smart contract architecture](/images/architecture/dydx.png)
The system consists of the following smart contracts on the host chain (Ethereum):
Main contract of dYdX exchange. Updates dYdX state and verifies its integrity using STARK Verifier. Allows users to deposit and withdraw tokens via normal and emergency modes. This contract stores the following tokens: USDC.
Upgrade delay: 9d or 2d if overridden by Priority Controller
Contract storing CAIRO Program Output, in case of dYdX, it stores state diffs of dYdX Exchange.
Contract responsible for validating force withdrawal requests.
The Merkle Distributor smart contract distributes DYDX token rewards according to a Merkle tree of balances.
Upgrade delay: 2d
The Liquidity Module is a collection of smart contracts for staking and borrowing, which incentivize the allocation of USDC funds for market making purposes on the dYdX layer 2 exchange.
Upgrade delay: 2d
The Safety Module is a staking pool that offers DYDX rewards to users who stake DYDX towards the security of the Protocol.
Upgrade delay: 7d
Contract storing dYdX Governance logic.
Contract storing logic for votes counting in dYdX Governance.
Token used by the dYdX Governance for voting.
Value Locked is calculated based on these smart contracts and tokens:
Upgrade delay: 9d or 2d if overridden by Priority Controller
The current deployment carries some associated risks:
Funds can be stolen if a contract receives a malicious code upgrade. There is a 9d delay on code upgrades.The delay can be decreased by the Priority Controller to 2d.