PlatformRandomness
0x22A5Ed6bA91661cd06D68FBa5aae5015EDbF7DA1Use this address for the fastest Testnet experiment. Tx1 creates one request; Tx2 authenticates the three future headers and permanently stores its result.
View Platform on explorerPlatform onboarding
Start with the product boundary, choose who the contract records as requester, freeze the platform configuration, then build finalization and permanent settlement as one operated lifecycle.
Live Testnet V1
Both contracts are live on Monad Testnet chain 10143, ownerless, frozen, source-verified with an exact match, and tested through real Tx1 and Tx2 flows. The public canary is free; the Factory creates a separately configured instance for each platform.
0x22A5Ed6bA91661cd06D68FBa5aae5015EDbF7DA1Use this address for the fastest Testnet experiment. Tx1 creates one request; Tx2 authenticates the three future headers and permanently stores its result.
View Platform on explorer0x75E6458DaA0c6152419e4617dcf4D459149C1530Call deployPlatform with the recipient, name, price, and pending limit that your platform wants to freeze forever. The Factory retains no ownership.
The complete path
A request is unfinished until its authenticated result is stored and the application has settled the original business action exactly once.
Atomically bind payment, eligibility, or inventory to one request. Persist its ID, requester, request block, and three fixed targets.
Use block height—not a wall-clock timer. The targets are R+8, R+24, and R+40; requester finalization opens at R+42.
Fetch the three exact RLP headers from a checked Monad RPC. Submit them through the stored requester path and preserve the transaction.
Wait for finalized confirmation, verify the event against on-chain storage, then settle once from the permanent result.
Start with your role
These public Markdown files are generated byte-for-byte from the repository's canonical onboarding documents.
Product leads + technical owners
Set the value ceiling, expiry policy, operating roles, gas budget, and Go/No-Go criteria before implementation.
production-readiness.mdApplication + smart-contract engineers
Choose direct EOA or wrapper mode, bind the business action, persist request identity, and settle exactly once.
integration-guide.mdRelease + deployment engineers
Verify chain, approved address, runtime code, frozen settings, source, manifest, and a full canary flow separately.
deployment-and-verification.mdOperators + support teams
Run finalization, rescue, RPC failover, nonce reconciliation, expiry, monitoring, and incident procedures.
operations-runbook.mdRequester architecture
Whoever calls PlatformRandomness in Tx1 becomes the stored requester and controls the requester-only Tx2 window.
finalizeEntry function must forward requester-window Tx2 through the wrapper.From R+104, permissionless rescue may finalize the underlying request directly. The application still has to reconcile and settle the wrapper entry exactly once.
Authoritative lifecycle
R is the block containing Tx1. Internal warnings may start earlier, but they never change these contract boundaries.
| Block | What becomes true |
|---|---|
| R | Tx1 locks the business action, stores the requester, and creates one pending request. |
| R+8 · R+24 · R+40 | The three fixed target blocks contribute authenticated proposer entropy. |
| R+42 | Requester-window Tx2 opens. Only the stored requester may finalize through R+103. |
| R+104 | Permissionless rescue opens. Anyone may submit the same proof, but execution is still not automatic. |
| R+8199 | Last contract-valid proof block. Tx2 must be included successfully by this block. |
| R+8200 | Expiry starts. Tx2 is no longer valid; anyone may expire the request, and no result is created. |
Production boundary
The primitive authenticates and stores entropy. Product safety, transaction operations, and customer outcomes remain integration responsibilities.
maxPending == 0 means unlimited. A positive free cap can be filled until requests finalize or expire, so add eligibility, economic, or rate controls in the integrating platform.Ready to evaluate the flow?
The demo makes Tx1, the target wait, Tx2, stored reads, rescue, and expiry visible. The public artifact supplies the exact ABI and bytecode. Production teams must also verify a raw-header RPC with debug_getRawHeader.