TxLINE integration reference
API origin and authentication
Devnet origin:https://txline-dev.txodds.com
Activation signs the exact UTF-8 preimage
`${txSig}:${leagues.join(",")}:${jwt}` with a detached Ed25519 signature encoded as base64.
With no leagues, the preimage contains txSig::jwt.
Authenticated data requests include both headers:
Data endpoints used by Slip
Slip does not require TxLINE consensus odds. Parimutuel pool balances are the price input.
Soccer stat keys
statKey = periodPrefix + baseKey
Full-match expressions store canonical period tag
100; period-prefixed expressions store their
prefix. The ScoreStat.period inside a proof is different: it is the live match phase at the time of
the record.
Terminal phases
Settlement acceptsScoreStat.period 5, 10, 13, or 100. Values 11 and 12 are live penalty phases,
not terminal states. The keeper also recognizes action=game_finalised as terminal.
Proof payload mapping
stat-validation returns number arrays for hashes. The SDK maps the response into ScoresProof:
statToProveandstatProof→statA;- optional
statToProve2andstatProof2→statB; summary.updateStatsandsummary.eventStatsSubTreeRoot→ the committed fixture summary;subTreeProofandmainTreeProof→ the remaining proof segments.
Daily roots account
PDA seeds:["daily_scores_roots", epochDay_u16_le], where epoch day derives from the proof’s
summary.updateStats.minTimestamp, not wall clock.
Account layout: [8-byte discriminator][u16 epoch day][288 × 32-byte roots]. Each root represents a
five-minute slot. Slot index is hour * 12 + floor(minute / 5).