marmot

Marmot docs

20 pages, from the idea to the error codes

Reference

Errors

What each revert means and what to do about it.

ErrorMeaningWhat to do
NotOwner()The caller is not the owner (or a zero owner was given)Send from the owner account
NotGuardian()The caller is not the wallet guardian, or the guardian is a passkeyFor passkeys use vetoWithSig
BadDelay()The wait is under 5 minutes or over 30 daysPick a value in range
BadGuardian()A wallet guardian with a passkey point, or a passkey with a zero coordinate or no domain hashUse one kind, fully filled
BadTarget()The target is zero or the vault itselfChoose another destination
NotPending()The announcement does not exist, is already done, was refused or cancelled, or its epoch is overCheck it with status / getOp
NotReady(readyAt)It has not ripened yetWait until the timestamp in the error
Expired()More than 14 days after it ripenedAnnounce again
CallFailed(reason)The call reverted (not enough balance, refused by the recipient...)The announcement stays pending. Fix the cause or cancel it.
Reentrancy()A nested executeNot expected in normal use
BadSignature()The guardian signature is not valid for this vault, id and epoch, or the passkey is wrong, on another domain, or not user-verifiedSign again with the right passkey on the right site
NoGuardian()A passkey guardian with no key setCannot happen if created through the factory

Common situations

  • "execution reverted (unknown custom error)" in a wallet: the wallet cannot decode custom errors. Run marmot status: the phase tells you why.
  • A veto signature suddenly invalid: a panic or an owner rotation moved the epoch. Sign a new one.
  • The guardian page says "not this vault's guardian": the passkey was made on another domain, or for another vault.