Docs

How QUIETWILL works

A dead-man switch for ERC-20 tokens on Robinhood Chain (chain id 4663). Your coins never leave your wallet until you go quiet.

Contract deploying Sun 1 Nov

§1 Overview

You name one beneficiary, pick how long silence means, and list up to ten ERC-20 tokens. You approve those tokens to the QUIETWILL contract. As long as you check in, nothing happens. If you do not check in for your chosen time, anyone can call release(owner), and the contract sends each token straight from your wallet to your beneficiary: the smaller of your allowance and your balance, at that moment.

The contract has no owner, no pause switch, no upgrade path and no fee. It holds nothing: tokens stay in your wallet the whole time, so the only thing a will can ever do is call transferFrom(you, beneficiary, amount) after your deadline. There is no way to send to any other address.

Every number on the site is read from the chain in your browser, with no database of ours in between. The record of every will, check-in and release is on /proof.

§2 Write a will

  1. Beneficiary. One address. The page checks the checksum, tells you if the address has never been seen on this chain or is a contract, and asks you to confirm you typed it yourself. The contract refuses the zero address and your own address. Any other wrong address cannot be caught.
  2. Silence. The time without a check-in after which the will can be released. Presets are 30, 90, 180 and 365 days. The contract accepts anything from 1 hour to 3650 days. Under 7 days the page warns you in red: your coins move after that many hours of silence.
  3. Tokens. Up to ten ERC-20 tokens. USDG, NVDA and TSLA are listed; any other ERC-20 address can be pasted and is checked for contract code first.
  4. Approve, then create. Each token needs an approve to the contract (unlimited, or a cap you choose; see Approvals), then one createWill transaction. The approve step is skipped for tokens that already have enough allowance.

A wallet with no balance can still write a will; it covers whatever the wallet holds when it is released. A wallet that already has a will sees Your will instead of the form, so a second createWill is never sent.

§3 Check in

I'm still here calls ping(): one transaction, as often as you like. It sets the last check-in to now, so the deadline becomes now plus your silence interval. updateWill also counts as a check-in.

A ping after the deadline is allowed, as long as the will exists: it restarts the timer. If someone already released, whatever was sent stays sent; the ping only starts the timer again for what is left.

Calendar file. The page can build an .ics file in your browser: a repeating reminder at half your interval and a one-off entry on the deadline with alarms 7 days and 1 day before. No data leaves your browser. A calendar entry does not move when you check in, so download a fresh file after changing your will.

§4 Release

From the second the deadline is reached (the deadline itself counts), any wallet can call release(owner). For each token on the will, the contract reads your allowance and your balance and sends the smaller of the two from your wallet to your beneficiary.

Before the deadline release reverts with NotYetDue and the deadline.

§5 Approvals

A will is only as large as the approvals behind it.

The approval is the real permission. If you want a smaller exposure, cap it.

§6 Ping against release

Both are ordinary transactions, so order matters. If your ping lands first, the deadline moves and a release sent a moment later reverts with NotYetDue. If a release lands first, the tokens are sent and cannot come back; your later ping only restarts the timer. One second after the deadline there is no grace period.

Anyone can release, including bots. That is by design: nobody has to be trusted to act. It is also why a short interval is risky: you can lose a race by being slow.

§7 Issuer controls

Tokenized stocks (NVDA, TSLA) are Robinhood Tokens issued by Robinhood. USDG is issued by Paxos. Both issuers keep powers the contract cannot override.

Issuer actionWhat a release does
Robinhood pauses a tokenThat token is skipped (Skipped, reason 1). The page shows "transfers paused by issuer". Try again after it is unpaused.
Robinhood burns from your address (adminBurn)Your balance is smaller; the release moves the smaller number.
Paxos pauses USDGUSDG is skipped; other tokens still move. Try again after unpause.
Paxos freezes your address or the beneficiary'sUSDG is skipped for as long as the freeze lasts.

Because the contract holds no tokens, there is no pool for an issuer to freeze or burn at the contract address.

§8 ETH is not supported

ETH itself cannot be approved, so a will cannot move it. Keep what you want covered as USDG or any ERC-20. Supporting ETH would mean the contract holding your funds, which is the opposite of the design, and wrapped ETH is not something this version builds on.

§9 Addresses

NetworkRobinhood Chain, chain id 4663
QuietWilldeploying Sun 1 Nov
USDG (Paxos, 6 decimals)0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168
NVDA (Robinhood Token, 18 decimals)0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC
TSLA (Robinhood Token, 18 decimals)0x322F0929c4625eD5bAd873c95208D54E1c003b2d
Robinhood Token beacon0xe10b6f6B275de231345c20D14Ab812db62151b00
Project token CAat launch, 2 Nov 14:00 UTC

The contract source is verified on Sourcify and Blockscout once deployed; both links appear above and on /proof. Trust only addresses published on this site and on @quietwillxyz.

§10 Command line

Everything the page reads or sends can be done with Foundry's cast. <WILL> is the contract address above; <OWNER> is the wallet that wrote the will.

Read a will (no wallet)

cast call <WILL> "getWill(address)(address,uint64,uint64,uint64,bool,uint32,address[])" <OWNER> --rpc-url https://robinhood-rpc.publicnode.com

Returns beneficiary, interval, last check-in, deadline, overdue, releases so far and the token list (times are Unix seconds, UTC).

cast call <WILL> "previewRelease(address)(address[],uint256[])" <OWNER> --rpc-url https://robinhood-rpc.publicnode.com

What a release would try to move right now: min(allowance, balance) per token, 0 where a read fails.

Check in (the owner)

cast send <WILL> "ping()" --rpc-url https://robinhood-rpc.publicnode.com --account <your-keystore>

Release (anyone, after the deadline)

cast send <WILL> "release(address)" <OWNER> --rpc-url https://robinhood-rpc.publicnode.com --account <your-keystore>

If a release fails with InsufficientGas, add --gas-limit 1000000.

§11 The token

QUIETWILL also has a token on Pons. Holding the token pays nothing and unlocks nothing; it is the coin of the project on Pons. The contract has no token logic and no fee. The team's promise is that the Pons creator fee (2%) goes to the creator wallet and pays for the domain and hosting, and that the team keeps the demo will and the domain running. The contract address of the token is published at launch, on this page and on @quietwillxyz.

§12 Risks

  • Forgetting to check in sends your coins. That is the feature. There is no grace period and no reminder from us. Prefer a long interval and keep a calendar reminder.
  • An approval is a permission. If the contract had a bug, tokens you approved would be at risk. It can only send to the beneficiary you stored, but it is small and not audited. Use a capped approval if you are unsure.
  • A wrong beneficiary is final. The contract rejects only the zero address and your own address. Check the address on the explorer.
  • Issuers can pause, freeze and burn. Robinhood and Paxos can stop a token from moving; the release skips it and you can try again later.
  • Lost keys. This is not a recovery tool. If you lose your key you cannot check in, so a release will happen after the deadline (which is the point), but anything you did not approve stays where it is.
  • Anyone can release, including bots, the second the deadline passes. A ping that lands after a release does not bring tokens back.
  • Chain time. The deadline uses the block timestamp. The sequencer's clock can drift from your wall clock.
  • Odd tokens. A token that takes a fee on transfer sends the beneficiary less than the contract reports. The contract does not check.
  • The will stays after a release. Approvals you left in place can send again after the next deadline. Revoke what you do not want covered.
  • Small team, small contract. No owner and no upgrade means bugs cannot be patched either. Tokens are not custodied and nothing here is financial or legal advice.