Goal
Refuse a bid seal, both off-chain and in the round contract, when its Drand quicknet round is not the round the auction committed to open.
Why this is High
Sealing lives in @sub-rosa/tlock and the on-chain check lives in the Soroban drand module. A seal that opens too early or never opens breaks the sealed-bid assumption. Both sides must share one window rule.
Requirements
- Define the allowed reveal round as the round stored on the auction, not a caller-supplied value.
- Reject seals before commit in the tlock package and again inside the contract.
- Return stable errors for too-early, too-late, and malformed round numbers.
- Add vectors that use the quicknet chain parameters already in the repo.
Acceptance criteria
Pointers
packages/tlock/src/seal.ts
packages/tlock/src/quicknet.ts
packages/tlock/src/freshness.ts
contracts/round/src/drand.rs
services/drand-tools/src/quicknet.ts
Validation
- tlock package tests and
pnpm contract:test
Drips
- Drips Complexity: High
- Expected Drips Points: 200
- Add this issue from the Drips maintainer dashboard and set complexity to High.
- Do not apply the
Stellar Wave label on GitHub. That path defaults the issue to Trivial (100 points).
Goal
Refuse a bid seal, both off-chain and in the round contract, when its Drand quicknet round is not the round the auction committed to open.
Why this is High
Sealing lives in
@sub-rosa/tlockand the on-chain check lives in the Soroban drand module. A seal that opens too early or never opens breaks the sealed-bid assumption. Both sides must share one window rule.Requirements
Acceptance criteria
Pointers
packages/tlock/src/seal.tspackages/tlock/src/quicknet.tspackages/tlock/src/freshness.tscontracts/round/src/drand.rsservices/drand-tools/src/quicknet.tsValidation
pnpm contract:testDrips
Stellar Wavelabel on GitHub. That path defaults the issue to Trivial (100 points).