Skip to main content

TxLINE integration feedback

This feedback comes from the live devnet activation, proof reconstruction, tamper testing, and keeper integration used to build Slip.

What worked well

Free World Cup activation

The free service-level-1 subscription worked without TxL payment. The documented account list and the txSig::jwt activation preimage matched the live service. TxLINE’s runnable devnet examples were the fastest route to a correct authentication implementation.

Normalized football schema

The stable fixture and stat-key model made the same market expression usable for goals, cards, corners, and period variants. One- and two-stat validation payloads support a broad product without separate settlement adapters.

Enforced proof semantics

Live tamper tests confirmed that valid predicates return a boolean while corrupted proof nodes or stat values revert. This is a strong foundation for permissionless settlement.

Friction encountered

Merkle byte layout was not documented

Independent verification required recovering that stat leaves are bare 12-byte Borsh structs, while fixture leaves include a leading 0x01 enum tag. Positional node hashing has no domain byte. Publishing the exact preimages and combine rule would save integrators substantial reverse-engineering time.

Current replay roots move

Devnet fixture replay rewrites the current virtual five-minute slot. A proof may match only briefly, which initially looked like a construction error. Documentation should distinguish moving replay roots from stable game_finalised roots and recommend a proof-fetch/submission strategy.

Hash encoding differs from examples

The stat-validation endpoint returned hashes as JSON number[], while the documented helper expected hex or base64 strings. The API and helper should use the same accepted formats.

ScoreStat.period is easy to misread

The proof leaf’s period is match phase or StatusId, not the period prefix embedded in statKey. Both concepts appear in the football schema, so the field needs an explicit warning.

Zero-valued leaves may be absent

An absent zero stat cannot be proved. This materially affects false-side markets such as both-teams- to-score. The score schema should document presence rules and expose a canonical way to prove zero or non-membership if such markets are intended.

Historical response shape and root account layout

/api/scores/historical/{fixtureId} returned a very large blob during testing rather than an obvious paginated JSON collection. The daily_scores_roots byte layout was also not documented. Pagination, schema examples, and a published account type would improve integration reliability.

Most valuable improvements

  1. Publish canonical Merkle test vectors and byte layouts.
  2. Document replay anchoring and final-root stability.
  3. Normalize proof hash encoding.
  4. Distinguish stat-key period prefixes from proof phase fields.
  5. Document or solve absent-zero proof behavior.