Treasury — /evvm/treasury
The page that bridges ERC-20 tokens between an external chain and EVVM.
Deposit
Fields:
- Token — the ERC-20 contract on the external chain
- Amount — how much to escrow
- The page also shows whether you have an existing approval for that token, and exposes an "Approve" button if you don't
The deposit flow is two on-chain calls:
token.approve(treasury, amount)(skipped if you already have a sufficient allowance)treasury.deposit(token, amount)
After the deposit lands, your EVVM balance for that token goes up by
amount.
Withdraw
Fields:
- Token + amount
The withdraw is a direct caller call — Treasury debits your Core
balance and transfers the asset back to msg.sender. Note: the
principal token (MATE, 0x…0001) is not withdrawable.
No signatures. Treasury operations are direct caller balance ops — your wallet pays gas and is the recipient. Unlike the other EVVM services, Treasury does not use the dual-signature pattern.
Local development note
In a real EVVM deployment, Treasury sits on each external chain and the EVVM ledger lives on its host chain (with the Fisher Bridge relaying between them). With scaffold-evvm everything is on the same local anvil instance, so the deposit/withdraw round-trip looks like a no-op bridge — it just moves balance between the two ledgers (the EVVM-side balance and the ERC-20 balance) on the same chain.
When fisher nonces appear
Cross-chain Fisher Bridge operations (not surfaced by this page on a
single-chain local setup) use a separate getNextFisherDepositNonce(user)
nonce track on Core, distinct from the standard sync/async nonce
pools. See the EVVM Signature Structures Overview for nonce details.