Skip to content
Ostrakon

$OSTRA is not launched. No CA. The only source of truth is @OstrakonElysium.

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

ViewReturns
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.