RUFF FAQ
Why commit-reveal instead of a VRF?
Section titled “Why commit-reveal instead of a VRF?”RUFF commits a hash-chain head before accepting requests. At delivery, the hub checks the assigned link and computes a result from that seed, the request block hash, and fixed request context. Public events let an observer re-check the commitment and calculation.
This design uses hash commitments rather than a VRF proof. Its precise guarantees, early result visibility, delivery dependency, and upgrade powers are covered in the trust model.
What if a request is not delivered?
Section titled “What if a request is not delivered?”It stays Pending. After more than 8191 blocks, anyone can call expire(sequence) to close it. Expiry returns no number and invokes no callback. The request fee pays for the delivery attempt and is not refunded on expiry.
An application defines its own timeout and stake handling. See failure handling.
What if the callback fails?
Section titled “What if the callback fails?”The hub keeps the request Fulfilled and stores its result. Read requestOf(sequence) to confirm the consumer and status, then recover the same number through randomOf(sequence). Do not request a replacement draw for the same action.
The consumer example provides a recovery method.
How can a result be checked?
Section titled “How can a result be checked?”Open its saved report in RUFF Explorer, run npx ruff-hub verify against an independently selected RPC, or call verifyHistory in TypeScript. The verification guide covers all three.
Can a consumer use a custom tariff?
Section titled “Can a consumer use a custom tariff?”The hub supports consumer-specific pricing and pending limits. Contact contact@jerdog.xyz with the consumer address, expected request rate, and callback gas requirement. Until configured on-chain, the default tariff applies.
