Skip to main content
The on-chain contracts for the Derive v3 deployments. These are the settlement and custody contracts your own wallet interacts with for deposits, withdrawals, and the L1 escape hatch.
For the per-action module addresses and the full signing scheme, see Action signing. The ACTION_TYPEHASH and DOMAIN_SEPARATOR are under Signing constants below.
Token addresses are not listed here — read them from public/get_all_currencies, under spot[].erc20.underlying_erc20. Every testnet token is mintable: open testnet.app.derive.xyz, connect your wallet, and click Deposit in the top right, then Mint a token of your choice.

ACTION_MANAGER

Direct L1 calls to the Derive exchange can be made for deposits, or for setting session keys from MPC wallets and multi-sigs or contracts.

VAPP

The zk-vApp settlement contract. It anchors the protocol’s on-chain state root and verifies the validity (zero-knowledge) proofs that settle every state transition — the root of custody and settlement for the deployment.

WITHDRAWAL_OUTBOX

The L1 withdrawal outbox. Finalized withdrawals — and the escape-hatch exit if the operator goes offline — are claimed here; payouts are pulled from the spot vault through this contract.

SPOT_VAULT

WITHDRAW_FACTORY

Issues the withdraw addresses for forwarded withdrawals. getWithdrawAddress(bytes32 recipient, uint256 chainId) returns the address that private/register_withdraw_address gives you.

Signing constants

Every signed action is an EIP-712 Action struct hashed under the action domain. The signer signs keccak256(0x1901 || DOMAIN_SEPARATOR || actionHash).

ACTION_TYPEHASH

The keccak256 of the Action type string. It is the same on every network:

DOMAIN_SEPARATOR

The action domain is name Matching, version 1.0, the network’s chainId, and a verifyingContract of 0xeB8d770ec18DB98Db922E9D83260A585b9F0DeAD. That address is the v2 mainnet Matching contract, fixed on every network. It is not one of the v3 contracts above.
The SDKs set both values for each network. See Action signing for how an action is hashed under them.