1. Control
The signer proved on-chain that they own, administer or deployed the contract. The registry checks this itself when the record is written, and clients re-check it whenever someone looks.
Tally links a deployed contract to its public source and makes the link checkable. A contract only shows as verified when the on-chain proof, the live code and the source repository all agree. Anything less is labelled for what it is.
Registering a source link is easy to fake. So Tally checks the claim from three independent directions and only turns green when all of them hold.
The signer proved on-chain that they own, administer or deployed the contract. The registry checks this itself when the record is written, and clients re-check it whenever someone looks.
The registry stores the code hash at registration. If the bytecode at the address ever changes, the record goes stale instead of vouching for code nobody looked at.
The repository publishes a tally.json that lists the contract, its network and the wallet that registered it. A claim about a repository that does not agree is never shown as verified.
Every badge, extension tag and record page uses the same rule, so what you see is what the chain supports.
Control proven on-chain and still held, the code unchanged since registration, and the repository's tally.json lists this contract and names the signer's wallet. Never an upgradeable proxy. Checked live, every time.
The signer proved control and still holds it, but the repository does not confirm the contract and its wallet yet, or the contract is an upgradeable proxy. Legacy v1 records stop here because v1 cannot watch the code.
Control moved to someone else (a deployer stops counting once the contract has another owner), or the code at the address changed after it was registered. The record is treated as void.
A repository was claimed with no on-chain proof. Only possible for contracts that have no owner, and it can never be shown as verified.
No record exists. That is not the same as unsafe; it only means nobody has linked this code to a source.
The network or the registry did not answer. Never shown as unverified, because failing to look is not the same as finding nothing.
One signature from the wallet that controls the contract, one small file in the repository.
Sign one EIP-712 message in the studio. The registry checks owner(), the admin role or the deployer address, and records the code hash.
Commit a tally.json to the repository root listing the contract and the registering wallet. It takes one minute and is what turns control proven into verified.
The browser extension tags addresses on the explorer, the README badge stays current, and this site shows the evidence behind every level.
The badge reads the chain on every request, so it cannot drift from the truth.
SVG · liveA provenance tool that overstates itself is worse than none. These are the limits, stated up front.