Savings

Savings is a second account inside your wallet that earns the Sky Savings Rate on the funds you move into it. Your Main Account is for day-to-day payments. Savings holds USDS in Sky's savings vault, privately, and its value ticks up at the current rate while you watch.

The rate is variable and set by Sky, not by zk.money. The Savings screen shows the current APY, and the Earnings calculator lets you see what a starting amount and a monthly top-up could grow to at an assumed rate.

How it works

Your wallet holds two private balances on the Aztec Network: DAI in Main Account, and shares of Sky's savings vault (sUSDS) in Savings. Each is a private Aztec token backed one for one by the real token in its own portal contract on Ethereum: the DAI portal behind Main Account, and the sUSDS portal behind Savings. Moving funds between them is a round trip through Ethereum.

The accounts show up as one wallet. Home has an account switcher that shows Main Account, Savings, and the total of the two. The activity list has a Savings view for the moves.

What a move does

A move into Savings runs in four legs. A move back to Main Account is the same legs in reverse, with the vault redeeming shares for DAI instead of taking DAI in.

  1. You sign a withdrawal on Aztec. Your wallet burns the amount from Main Account, with a message to Ethereum naming one destination: a single-use escrow contract whose address is fixed by what you signed. Nothing else can claim that withdrawal.
  2. A relayer releases the DAI on Ethereum. The DAI portal pays the withdrawal into the escrow. The relayer is paid a tip from the amount, and cannot send the funds anywhere but the escrow.
  3. The escrow deposits into Sky. The escrow, deployed and run in one transaction by whoever runs it, puts the DAI into Sky's savings vault and receives sUSDS shares. It then deposits those shares into the sUSDS portal, with a message to Aztec naming your Savings account as the recipient. The escrow holds nothing afterwards.
  4. Your wallet claims the shares. Once Ethereum's message settles on Aztec, usually about 40 minutes after you signed, your wallet claims the deposit into Savings. The shares arrive as a private note that only you can see or spend.

Nobody along the way learns who owns the funds: the withdrawal, the escrow and the deposit are linked to a fresh address derived from your wallet, not to your account. See Privacy.

Where the yield comes from

Sky pays the Savings Rate by making each sUSDS share redeem for a little more DAI over time. Your Savings balance is your shares priced at the vault's current share price, which is why it ticks up on screen without any transaction. No yield is ever sent to you or to zk.money; it is already in the shares. Sky earns it from its own protocol income, chiefly overcollateralized lending and US treasury holdings, and Sky's governance sets the rate. zk.money takes nothing from it.

Who controls the funds

  • Only you hold the keys. Every move starts with your passkey. zk.money cannot sign for you, cannot start a move, and cannot withdraw from Savings.
  • The destination is fixed when you sign. The escrow's address, the amount and your Savings account are all committed in the withdrawal you sign. A relayer can only execute what you fixed; it cannot redirect the funds or take more than its tip.
  • An escrow that never runs is yours to recover. If no relayer runs the Ethereum legs, the activity list lets you run them yourself with your own Ethereum wallet, or recover the DAI to an address you name. Recovery is signed by a key only your wallet has.
  • The funds are never pooled. Each move has its own escrow, used once. zk.money holds no balance of yours at any point.

Moving funds into Savings

  1. Open Savings from Home and choose Add to Savings, or open Move funds and pick the direction. Enter the amount Savings should receive. zk.money quotes the L1 fee and what Main Account pays, which is the amount plus the fee.
  2. Review. The sheet shows the amount, the L1 fee, what Main Account pays, and the estimated time, usually about 40 minutes. It also says how long it takes at the current rate to earn back the fees of moving in and back out, and warns you when that is more than a year.
  3. Accept the terms. Savings is governed by zk.money's Terms of Use and Sky's Terms of Use and User Risks. Tick the box to confirm you have read them. The sheet asks on every move into Savings.
  4. Confirm with your passkey. Keep the tab open until the move is sent. After that the move runs on its own, and the activity list shows where it stands.

Moving funds back works the same way with Move to Main Account. A move is one withdrawal under the per-withdrawal cap, so it must stay below $2,500 including fees; see Limits.

What it costs

Each move pays an L1 fee: the Ethereum gas of the release and the escrow, paid as tips to whoever runs them, plus the same top-up to the fee-paying contract as any withdrawal. The sheet shows the fee before you confirm.

A move into Savings pays the fee on top of the amount, so Savings lands what you typed and Main Account pays the amount plus the fee. The exception is MAX, which moves the whole balance, so the fee comes off it and Savings lands a little less. A move back to Main Account takes the fee off what lands.

Moving in and back out pays the fee twice, which is why the sheet tells you the payback time. Small amounts, or short stays, may never earn back their fees.

What to watch for

  • A move takes about 40 minutes, and the funds are in transit meanwhile. They leave one account when the move is confirmed and reach the other once Ethereum's message settles on Aztec. You cannot spend them in between.
  • Savings is in USDS, and its value is quoted in dollars at Sky's share price. The figure you see is what the shares redeem for at the current price, so a move out lands the quoted amount at that moment's price.
  • The rate changes. Sky sets the Savings Rate and can change it at any time. Earnings in the calculator are an illustration at the rate you choose, not a promise.
  • Savings depends on the same relayers as withdrawals. If no relayer runs a move, the activity list offers to let you run it yourself, with your own Ethereum wallet and gas, the same way as a late withdrawal; see Withdraw.

Troubleshooting moves

  • "Savings isn't available on this network." The network this wallet is connected to has no Savings. It is available on Ethereum mainnet.
  • "The Savings co-signer isn't reachable." The enclave that co-signs Savings moves is down. Your funds are where they were. Try again in a moment.
  • "The amount does not cover the move's fees." Move a larger amount, or wait for lower Ethereum gas.
  • A move is taking longer than the estimate. Open it from the activity list. It says which leg it is waiting on, and offers to let you run the Ethereum leg yourself after the usual wait.

If none of these is it, Settings in the web wallet has Report a bug, and a place to send feedback.