Contracts: Play CRED ledger, epoch CHARM, pro-rata CRED yield, claim on Last Buy reset
Context
Play CRED non-transferable token, epoch CHARM, and CRED claim flow. Parent epic: #238 (closed).
Relevant files
- New:
contracts/src/PlayCred.sol contracts/src/TimeArena.sol— epoch CHARM mappingscharmWad[epoch][user]- New:
contracts/src/interfaces/IPlayCred.sol
Acceptance criteria
-
PlayCred— no transfer;MINTER_ROLEfor TimeArena + admin grantor - Optional
CredGrantorcontract admin can authorize -
buyWithCred(charmWad)burns 70 CRED from buyer; same min/max CHARM rules - Each DOUB buy accrues 35 CRED to distribute: pro-rata by epoch CHARM weight
-
claimCred(epoch)callable after Last Buy epoch ends; zeroscharmWad[epoch][user]; transfers accrued CRED - Buys still accrue CHARM into current Last Buy epoch (for CRED weighting)
Verification checklist
- Forge: two holders 1:2 CHARM → 35 CRED splits correctly
- Claim zeros epoch CHARM; cannot double-claim
- CRED buy respects charm min/max