Attestations are live over REST — contracts are not deployed yetRead an attestation
Cleaton

Attestation format

The EIP-712 payload, field by field — including the two fields that carry more weight than their size suggests.

Argued in full in the whitepaper at §7.

Attestations are EIP-712 typed structured data. The payload is what gets signed, so everything a consumer needs to decide whether to trust the claim has to be inside it — including how the liquidity was measured and which model produced the number.

The struct#

Attestation.sol
struct Attestation {
    address pool;          // subject
    uint256 chainId;       // subject chain
    bytes32 accountingId;  // committed liquidity measurement method
    uint256 refLiquidity;  // TWAP liquidity at observation, 18 decimals
    uint32  horizonDays;   // published horizon H_pub
    uint16  confidenceBps; // conformal coverage, basis points
    uint16  thresholdBps;  // retention threshold theta, basis points
    uint64  observedAt;    // observation timestamp
    uint64  validUntil;    // attestation staleness expiry
    bytes32 modelHash;     // model + pipeline commitment
    bytes32 featureRoot;   // Merkle root of feature vector
    uint8   flags;         // OUT_OF_SUPPORT, LOW_DATA, REGIME_SHIFT
    uint64  nonce;
}

Field reference#

FieldNotes
accountingIdWhich function defines this pool’s liquidity — totalAssets() for an ERC-4626 vault, reserves against a reference price for a constant-product pool, supplied minus borrowed for a lending market. Registered at attestation time so it cannot be contested after a breach.
refLiquidityThe six-hour time-weighted average at observation, 18 decimals. Never an instantaneous read.
thresholdBpsThe retention floor the horizon is measured against. Default 7000 — the claim is that liquidity holds at 70% of refLiquidity, not at 100%.
modelHashHash of the serialised model artefacts and preprocessing pipeline. A methodology change produces a different hash, visible in the public record.
nonceAlso determines calibration-set membership, fixed before outcomes are known — see calibrated confidence.

featureRoot#

A Merkle root over the feature vector used for this specific attestation. Not every raw feature is published immediately — computing them is the operational work — but all of them are committed. Any individual feature can later be revealed with an inclusion proof through the Feature Disclosure surface.

The point is what it prevents: Cleaton cannot claim, after a miss, to have seen different inputs than it did.

validUntil is not the horizon#

Flags#

FlagMeaning
OUT_OF_SUPPORTThe current feature distribution sits outside every calibration stratum. Confidence is reduced and the bond terms differ. Refusing to make a confident claim is a supported output.
LOW_DATAToo few rate-change events for a stable elasticity estimate; the value is hierarchically pooled toward its class mean.
REGIME_SHIFTConformalised against a regime stratum that has recently changed. Treat coverage as weaker than stated.