Appearance
Client-Side Verification
Any device can independently verify any draw using public data. No trust in the coordinator required.
Verification Pipeline
- Fetch the round's manifest data and block hashes
- Rebuild the Merkle tree from operator manifests
- Verify the Merkle root matches the on-chain anchor
- Derive the draw seed from the block hashes
- Compute the winner index
- Confirm the winner matches the settlement proof
Fetching Round Data
typescript
const round = await fetch(
"https://api.ultimalotto.com/api/public/rounds/42"
).then((r) => r.json());The response includes fullManifestHash, effectiveManifestHash, drawSeed, winnerIndex, winningOperatorId, and related fields.
Verification URL
Each round has a deterministic verification URL:
https://verify.ultimalotto.com/round/{id}The payload is a self-contained JSON including all chain data, manifests, randomness, anchors, and settlement info.
Compact Format
For sharing (e.g., QR codes, social media):
UL1:{roundId}:{seedPrefix}:{manifestPrefix}Example: UL1:42:abcdef12:fedcba09