AuditorStaking
The auditor's own money — slashable if the vouch turns out to be false.
CCSJTEXOJZ322XI5ZJF6YZ2IRLCRKNXTGHGK3ZLATKL6Y7CGQODS4VZB
An attestation is only worth what the attester loses for lying. This contract holds that amount.
Functions
| Function | Auth | Notes |
|---|---|---|
initialize(challenge_manager, registry, token, min_stake) | once | |
stake(auditor, amount) | auditor | A stake at or above min_stake is registration |
is_registered(auditor) -> bool | view | stake >= min_registration_stake |
get_stake(auditor) -> i128 | view | Current live stake |
lock(auditor, until) | Registry only | Bond the stake to a certificate; extends, never shortens |
locked_until(auditor) -> u64 | view | When the bond lifts |
slash(auditor, recipient, amount) | ChallengeManager only | Move stake to a recipient |
release(auditor) | auditor | Reverts stake_locked if now < locked_until |
Registration is not an allowlist
There is no admin approving auditors. Staking at or above the minimum is what makes you one, and the same act is what makes you slashable. Anyone can become an auditor; nobody can become one for free.
The lock is the whole point
The Registry calls lock inside attest, so vouching and locking are one transaction —
there is no window in which a certificate is Verified while its auditor can still
walk away with their stake. lock only ever extends the deadline, so an auditor
covering several certificates stays bound until the last one expires.
Slashing
Only the ChallengeManager can slash, and only through a resolved challenge. On a proven short reserve it slashes twice: 80% of the live stake to the victim, 20% to the challenger who caught it.