DEMONSTRATION WORLD

No contract address is set, so everything on this page comes from the seeded world rather than from storage. Every roll in it still verifies - the timestamps were chosen so the arithmetic on each chronicle line is real. Set NEXT_PUBLIC_QUESTLINE_ADDRESS to read the live world instead.

// VERIFY

Do not take our word for the dice.

Every roll in Questline is a hash of three things anyone can read: when the action resolved, who took it, and which line of the chronicle it became. The arithmetic below runs in your browser.

sha256(at | player | line index) first two bytes, mod 20, plus 1

That recipe is not a description of what the contract does - it is read out of the contract, by get_world. The contract will also recompute a roll for you itself, through verify_roll, so there are three independent ways to reach the same number: storage, this page, and the chain.

RECOMPUTE ONE ROLL

Three public fields go in. Change any of them and the roll changes - which is the whole reason a player can check the world rather than trust it.

VERIFY EVERY LINE THIS PAGE CAN SEE14 lines

This runs in your browser, over the same public fields shown on every chronicle line, using the same arithmetic the contract runs. It talks to nothing. These lines come from the seeded world, and they verify too - the timestamps were chosen so they would.

WHAT A DISAGREEMENT WOULD MEAN

It would mean the roll shown on a chronicle line is not the roll the contract computed, and that the world is not what it says it is.

Nothing here is designed to reassure you. This page recomputes the numbers and reports what it finds; if it ever finds a mismatch it says so in red and tells you not to trust the line. That is the difference between a claim and a check.

Read the chronicleRead the rules