Test credit and test token

Smart contracts

AngeronaConfig on Robinhood Chain: its functions, admin powers and safety properties, plus the other on-chain pieces.

Angerona has exactly one contract, AngeronaConfig, and in the beta it is not deployed. The website and gateway ask it two things: which token drives tiers, and how much of the supply each tier takes.

AngeronaConfig has one job

FieldValue
AddressThe address goes here on launch day
NetworkRobinhood Chain
Language and licenseSolidity ^0.8.24, MIT. Uses OpenZeppelin Ownable2Step

Five functions are open to anyone

FunctionReturns
utilityToken()The ERC-20 address behind tiers, which is $ANGERONA. See Token
tierThresholdsBps()Four thresholds for tiers 1–4 in basis points of total supply: 0.05%, 0.15%, 0.4%, 1%
tierOf(address)An address's tier (0–4) from its present balance
owner()The admin
pendingOwner()Whoever holds an unaccepted ownership offer, or zero if nobody does

tierOf is a handy shortcut, and it's looser than the real rule. Angerona goes by the lowest balance across 24 hours, per Tiers, so tierOf can read above the app.

The math is exact integers: tier i needs balance × 10000 ≥ totalSupply × threshold[i]. With zero total supply, tierOf returns 0.

Five admin functions run under strict limits

FunctionEffectEnforced by the contract
setUtilityToken(address)Swaps the token behind tiersRejects the zero address, and the target must be a deployed contract
setTierThresholds(uint16[4])Replaces all four thresholdsAll above 0, strictly rising, top value 10000 (100%) or less
transferOwnership(address)Offers the admin role to someoneNothing moves until that person calls acceptOwnership()
acceptOwnership()Finishes the handoverPending owner only
renounceOwnership()Switched off, reverts every timeAn admin must always exist

Events record every change

EventFires when
UtilityTokenUpdated(previousToken, newToken)The token is replaced, and once at deployment
TierThresholdsUpdated(previousBps, newBps)Thresholds are replaced, and once at deployment
OwnershipTransferStarted, OwnershipTransferredThe admin role is offered and taken (from OpenZeppelin)

Old and new values are public on-chain for all of them.

The contract can't touch your money

  • Empty by design: no payable functions and nothing that moves tokens. Don't send it anything, since a mistaken transfer stays lost.
  • Read-only toward tokens: it reads balanceOf and totalSupply, and it has no power to move, mint, burn or freeze.
  • Fixed code: no proxy, no upgrade route. Once deployed, the code never changes.
  • Two-step handover: a typo in an address can't hand over control, as the new admin must accept.
  • Always owned: renouncing is impossible, which leaves someone able to correct the configuration.
  • Input checks: a zero or code-less token address fails, and so do zero, unordered or above-100% thresholds.

The admin controls settings, not funds

  • Within reach: swapping the token and thresholds whenever needed, with no timelock. Edits land on-chain instantly and reach the gateway within about an hour, and new thresholds shift all tiers.
  • Out of reach: anyone's tokens or funds, and the contract's own code.
  • Kept off-chain: Bonus size per tier, the fuse and model prices are gateway settings. Tiers decide the Bonus and block no model or mode.

Four other on-chain pieces support it

Each address goes here on launch day.

PiecePurpose
$ANGERONA tokenDrives tiers. See Token
Angerona treasuryCollects paid top-ups
USDG (Paxos)Accepted for top-ups
ETH/USD price feedValues ETH top-ups

Gas on Robinhood Chain is paid in ETH.