Auteur

Contracts

Mainnet addresses, the rewards vault interface, settlement rules, and verification commands.

Auteur uses one reward vault contract in addition to the existing $AUTEUR ERC-20 token.

Mainnet deployments

Deployment parameters for the vault:

PropertyValue
NetworkEthereum Mainnet
Token0x90d54D77453286d30db891d729A0E18ba7081b07
Genesis timestamp1786302898
Genesis UTC2026-08-09 19:14:58 UTC
Epoch duration172800 seconds
Token unit10^18
Maximum settlement batch250 recipients

What is onchain

The vault stores:

  • the $AUTEUR amount claimable by each Ethereum address;
  • the total outstanding claim liability;
  • the amount credited in each epoch;
  • whether an epoch has been finalized;
  • processed batch identifiers;
  • default and overridden epoch ceilings;
  • settlement pause state.

What stays offchain

The contract does not store:

  • Farcaster FIDs;
  • cast hashes;
  • recasts;
  • moderation decisions;
  • author/curator role labels;
  • discovery evidence;
  • per-cast reward calculations.

Before broadcasting, the backend aggregates the deterministic ledger by Ethereum recipient address. The vault only receives addresses and final amounts.

Public read methods

token() returns (address)
genesisStart() returns (uint64)
currentEpoch() returns (uint256)
epochCeiling(uint256 epochId) returns (uint256)
epochCredited(uint256 epochId) returns (uint256)
epochFinalized(uint256 epochId) returns (bool)
claimable(address account) returns (uint256)
totalOutstanding() returns (uint256)
availableSurplus() returns (uint256)
settlementsPaused() returns (bool)
admin() returns (address)
pendingAdmin() returns (address)

User method

claim() returns (uint256 amount)

claim() transfers the caller's entire accumulated claimable amount. It first clears the liability in contract state, then transfers $AUTEUR to the caller.

Funding and settlement methods

fund(uint256 amount)

creditRewards(
  uint256 epochId,
  bytes32 batchId,
  address[] recipients,
  uint256[] amounts
)

finalizeEpoch(uint256 epochId)

Anyone can fund the vault after approving $AUTEUR. Only the current admin can credit rewards or finalize an epoch.

Reward credits are rejected when:

  • the epoch has not ended;
  • the epoch is already finalized;
  • the batch ID was already processed;
  • the batch exceeds 250 recipients;
  • the credit would exceed the epoch ceiling;
  • the vault lacks enough tokens to cover total outstanding claims;
  • settlement is paused.

Admin controls

setEpochCeiling(uint256 epochId, uint256 ceiling)
setSettlementsPaused(bool paused)
withdrawSurplus(address recipient, uint256 amount)
transferAdmin(address newAdmin)
acceptAdmin()

Admin transfer is a two-step process. The vault is not an upgradeable proxy.

withdrawSurplus can move only tokens above totalOutstanding. Tokens backing already credited user claims cannot be withdrawn through that method.

Verify contract state

With Foundry installed, anyone can read the deployed state through an Ethereum RPC:

export ETHEREUM_RPC_URL="https://your-ethereum-rpc.example"
export AUTEUR_TOKEN="0x90d54D77453286d30db891d729A0E18ba7081b07"
export AUTEUR_VAULT="0x665c9e6e9Cd2aB5c63C2c24BA511907D2449277F"

cast call "$AUTEUR_VAULT" "token()(address)" \
  --rpc-url "$ETHEREUM_RPC_URL"

cast call "$AUTEUR_VAULT" "genesisStart()(uint64)" \
  --rpc-url "$ETHEREUM_RPC_URL"

cast call "$AUTEUR_VAULT" "currentEpoch()(uint256)" \
  --rpc-url "$ETHEREUM_RPC_URL"

cast call "$AUTEUR_VAULT" "totalOutstanding()(uint256)" \
  --rpc-url "$ETHEREUM_RPC_URL"

cast call "$AUTEUR_VAULT" "availableSurplus()(uint256)" \
  --rpc-url "$ETHEREUM_RPC_URL"

cast call "$AUTEUR_TOKEN" "balanceOf(address)(uint256)" "$AUTEUR_VAULT" \
  --rpc-url "$ETHEREUM_RPC_URL"

To inspect one recipient:

cast call "$AUTEUR_VAULT" "claimable(address)(uint256)" 0xRECIPIENT \
  --rpc-url "$ETHEREUM_RPC_URL"

On this page