07 · Documentation
Stele
The public registry of every exile, readable by any contract on Elysium in one call.
Athens carved its decrees on stone slabs set up in public. A stele could not be edited. It could only be read.
The Stele is Ostrakon's public registry. Every passed exile is written to it once, and stays.
What it records
When Exile forges a new token, it writes the outcome to the Stele:
- the old token;
- the new token;
- the exiled addresses;
- the yes and no totals;
- the quorum;
- the time.
For each exiled address, the Stele emits one event: Exiled(token, newToken, exile).
Only Exile writes to the Stele. Only a passed vote reaches Exile. No one else can add a name, and no one can remove one.
Reading it
| View | Returns |
|---|---|
isExiled(account) | True if the address was exiled from any token |
exilesOf(token) | Every address exiled from a token |
tallyOf(shardId) | The yes, no, and quorum of a Shard |
exiledFromCount(account) | How many tokens an address was exiled from |
recordCount() | How many exiles have been recorded |
isExiled is global. It does not ask which token. It asks whether the city has ever sent this address away.
One call
Any contract on Elysium can read the Stele with a single view call.
function isExiled(address account) external view returns (bool);
The Stele on testnet lives at 0xAfBd087260103AD588a3060558d060921752cE8f.
A protocol that wants to use it needs a few lines.
interface IStele {
function isExiled(address account) external view returns (bool);
}
contract Market {
IStele public immutable stele;
error ExiledAccount();
constructor(IStele stele_) {
stele = stele_;
}
function borrow(uint256 amount) external {
if (stele.isExiled(msg.sender)) revert ExiledAccount();
// ...
}
}
No oracle. No API key. No list to maintain. The record is on-chain and final.
What others can build
The Stele turns one community's verdict into a public fact that others can weigh.
- A lending market can refuse exiled collateral, or exiled borrowers.
- A launchpad can refuse a deployer who was exiled before.
- A token can gate an airdrop, leaving out addresses that were exiled elsewhere.
- A wallet or explorer can show a mark next to an exiled address.
Each of these is a choice made by that protocol. Ostrakon does not make it for them.
A fact, not a sanction
The Stele does not freeze anything. It does not block anything. It does not reach into any other contract.
It says one thing: on this date, the holders of this token voted, and this address was exiled. What anyone does with that is their own decision.
Ostrakon does not force anyone to use it.
Permanence
The Stele has no owner and no admin. It cannot be paused or upgraded. A record written to it cannot be erased, by the exiled, by the voters, or by the people who wrote the contract.
That is the point of a stele.