Skip to content

Docs

Terms

The seven official Terms, their parameters, what they read on testnet and on mainnet.

What a Term is

A Term is a small contract that answers one question about a Deal: is the condition true right now. Every Term implements:

function check(address deal, bytes calldata data) external view returns (bool);
function describe(bytes calldata data) external pure returns (string memory);

check is a read. A Term never holds funds and cannot move them. The Deal calls it and decides what to do with the answer. A Term that reverts is read as false.

Terms that measure over time also implement an observe hook. It records the Term's own bookkeeping, keyed by the deal and its parameters. Observations happen at deal creation, at every settle and claim, and whenever anyone calls observe(trancheIndex) on the Deal.

The seven official Terms are immutable and have no admin. Their live addresses are on the Contracts page and the Terms catalog.

Graduated

True when the launchpad reports the token as graduated.

ParameterTypeMeaning
tokenaddressThe token to check
  • Testnet: reads MockLaunchpad.isGraduated(token). Anyone can call graduate(token) on the mock.
  • Mainnet: reads the launchpad the token was created on.

Market cap

True when the token's market cap has stayed at or above a threshold for a hold period, and pool liquidity is above a floor.

ParameterTypeMeaning
pooladdressPool that prices the token
minMcapHypeuint256Market cap threshold, in HYPE
holdSecondsuint32How long the threshold must hold
minLiquidityHypeuint256HYPE-side liquidity floor

Market cap is the pool's 30 min TWAP times the token's total supply. The hold timer starts at the first observation above the threshold and resets at any observation below it. With holdSeconds set to 0 the Term is true whenever the threshold and floor are met.

  • Testnet: reads MockTwapPool, whose price, liquidity and volume anyone can set.
  • Mainnet: reads the token's pool on Elysium.

Volume

True when the pool has traded at least a given amount since the deal was created.

ParameterTypeMeaning
pooladdressPool to read
minVolumeHypeuint256Volume required, in HYPE

The baseline is the pool's cumulative volume at the first observation. The factory records it in the transaction that creates the deal, so volume before creation never counts.

  • Testnet: MockTwapPool.cumulativeVolume().
  • Mainnet: the pool's cumulative volume counter.

Liquidity

True when pool liquidity has stayed at or above a floor for a hold period.

ParameterTypeMeaning
pooladdressPool to read
minLiquidityHypeuint256HYPE-side liquidity floor
holdSecondsuint32How long the floor must hold

Same observation model as Market cap.

Listed

True when the token is listed on HyperCore spot.

ParameterTypeMeaning
tokenaddressThe token to check
  • Testnet: reads MockListingOracle.isListed(token). Anyone can call setListed.
  • Mainnet: reads the HyperCore spot universe through the L1Read precompiles, or the Symbolon listing event, behind the same interface.

Oath

True when the token's oath score is at least a minimum.

ParameterTypeMeaning
tokenaddressThe token to check
minScoreuint16Minimum score, 0 to 100
  • Testnet: reads MockOath.getOath(token). Anyone can set a score.
  • Mainnet: reads Horkos.

Clock

Linear vesting between a start and an end, paused while another Term is false.

ParameterTypeMeaning
startuint64Vesting start, unix seconds
enduint64Vesting end, unix seconds
pauseTermaddressTerm that must be true for vesting to run. Zero address: never paused
pauseDatabytesParameters for the pause Term

Clock is a partial Term. Settling its tranche releases the vested share only. Paused time pushes the schedule back: 10 days paused means full vesting arrives 10 days after end. Pause state is sampled at observations. When the deal deadline passes, the vested share is released and the remainder is refunded.

A common pairing: Clock over 60 days, paused while Liquidity at least 50 000 HYPE is false. The market maker is paid as time passes, but only while they keep the book.

Why TWAP and hold time

Spot prices on young pools are easy to move. A single large buy can lift the price for one block, long enough to satisfy a naive market cap check. Arrha uses three defenses together:

  • TWAP. The market cap is priced on a 30 min time-weighted average. A spike of one minute moves it by a few percent, not by the size of the spike.
  • Hold time. The threshold must hold across observations for the full period. A 24 h hold means 24 h of sustained capital, not one block.
  • Liquidity floor. A thin pool with a high price is not a real market cap. The floor rejects it.

See Risks for what remains.

Custom Terms

Anyone can write a Term. A Deal accepts any address that implements check. The TermRegistry lists official Terms and any custom Term registered by anyone. Registration is a listing, not an endorsement.

Registration is free on testnet. On mainnet it will burn 1,000 $ARRHA. $ARRHA is not launched. No contract address.

A custom Term can return anything. Read its code before you lock earnest against it, or use an official Term.