Skip to content

TLOSTimedWitness.sol - Time-windowed secret release #53

@igor53627

Description

@igor53627

Parent Issue

Closes part of #47

Description

Build a time-windowed witness encryption contract where different secrets are revealed at different time periods, or the same secret becomes easier/harder to claim over time.

Use Case

Traditional time-locks are binary (before/after). TLOS enables:

  • Multiple secrets with different unlock windows
  • Graduated access (early bird vs late)
  • Secrets that expire (can't be claimed after deadline)
  • Different witnesses valid at different times

Example Flow

Time                             Contract                          Claimers
 |                                  |                                  |
 | T0: deploy(secrets[], windows[]) |                                  |
 |--------------------------------->| 3 secrets, 3 time windows        |
 |                                  |                                  |
 | T1 (window 1):                   |                                  |
 |                                  |<-- claim(code1, puzzle) ---------|
 |                                  | → releases SECRET_1              |
 |                                  |                                  |
 | T2 (window 2):                   |                                  |
 |                                  |<-- claim(code2, puzzle) ---------|
 |                                  | → releases SECRET_2              |
 |                                  |                                  |
 | T3 (window 3):                   |                                  |
 |                                  |<-- claim(code3, puzzle) ---------|
 |                                  | → releases SECRET_3              |
 |                                  |                                  |
 | T4 (expired):                    |                                  |
 |                                  | owner can reclaim unclaimed      |

Key Features

  • Multiple secrets with independent time windows
  • Window types:
    • AFTER - claimable after timestamp
    • BEFORE - expires at timestamp
    • BETWEEN - only valid in range
  • Different codes for different windows
  • Optional: same code, different secrets per window
  • Unclaimed secret recovery after final expiry

Security Model

  • What's hidden: Secrets, which code unlocks which window
  • What's public: Time windows, number of secrets
  • Guarantee: 2^76 per secret/code pair

Use Cases

  • Staged treasure hunts: Clues released over days/weeks
  • Vesting with milestones: Different amounts at different times
  • Game mechanics: Power-ups available at specific times
  • Expiring offers: Discount code only valid this week
  • Progressive disclosure: Research results released in phases

Variants to Consider

  1. Early bird bonus: Same secret, but early claimers get bonus
  2. Decaying reward: Reward decreases over time
  3. Rotating codes: Same secret, but valid code changes each period
  4. Cascade: Secret N only claimable after N-1 claimed

Acceptance Criteria

  • Contract compiles and passes tests
  • All window types (AFTER, BEFORE, BETWEEN) tested
  • Edge cases: claim at boundary, expired claims
  • Multiple independent secrets tested
  • Gas benchmark documented

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions