Harden claimCred post-transaction lifecycle (#347) #518
No reviewers
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:open_issues
agents
agent:security_audit
agent:verify
area
timecurve
arena
arena-v2
audit
block:feature_review
block:security
bug
contracts
design
devops
docs
documentation
enhancement
epic
feature
frontend
indexer
low priority
megaeth
operations
ops
performance
QA
qa checklist
referrals
removal
security
smart-contracts
tech-debt
testing
time-arena
timecurve
visual-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
code/yieldomega!518
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-347-claim-cred-lifecycle"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Hardens
ArenaCharmCredCardclaimCredpost-transaction lifecycle (#347), parent gap #342.claimCredsubmit,waitForWriteReceiptruns before clearing pending UI (mirrorsclaimWarBowFlaginuseArenaSaleSession).invalidateArenaWalletStatsQueriesrefetches indexer wallet stats (no RPC balance mirrors).friendlyRevertFromUnknownunder the claim button.claimSubmitting).Acceptance checklist
ArenaCharmCredCard.tsxclaimSubmitting+executeClaimCred→waitForWriteReceipt;arenaCharmCredClaim.test.tsexecuteClaimCredcallsinvalidateArenaWalletStatsQueries; unit testsdisabled={!claimReady || claimPending || !address}whereclaimPending = claimWritePending || claimSubmittingArenaCharmCredCard.test.tsxcovers success path invalidationcd frontend && npm test -- ArenaCharmCredCard.test.tsx arenaCharmCredClaim.test.tscd frontend && npm run typecheck && npm run lint && npm testThird-party verification
Manual (optional):
bash scripts/start-qa-local-full-stack.sh --live-sale --no-swarm(or existing Anvil stack).Docs:
INV-FRONTEND-347-CLAIM-CRED-LIFECYCLEindocs/testing/invariants-and-business-logic.md,docs/frontend/arena-views.md§347,skills/play-time-arena-doub/SKILL.md.Security review — MR !518
Commit reviewed:
da317e1d3d854b4f16007ee22f59def7bf10b9ceScope: Frontend hardening of
ArenaCharmCredCardclaimCredpost-transaction lifecycle (executeClaimCred, receipt wait, wallet-stats invalidation, error surfacing). Docs/tests/skills only elsewhere in diff.Outcome:
FINDINGS: 0medium+Summary
Reviewed added/modified paths in
arenaCharmCredClaim.ts,ArenaCharmCredCard.tsx, and related tests/docs. Traced attacker-controlled inputs to sinks:claimEpochclaimable_cred_epoch(pre-existing)TimeArena.claimCredenforcesepoch < lastBuyEpochandweight > 0 || bonus > 0; bad epoch reverts (gas only). MR does not widen trust in indexer-derived epoch.writeContractAsyncaddresses.timeArenanonReentrant+ double-claim tests block repeat mint.claimErrorUIfriendlyRevertFromUnknownredactSensitiveUrlsInUserMessage). No new HTML/dangerouslySetInnerHTML.invalidateArenaWalletStatsQueriesclaimPendingdisables button + onClick guard; on-chain revert on second claim if race wins. Same class as other arena writes; MR improves vs fire-and-forget submit.waitForWriteReceipt/executeClaimCredmirror the establishedclaimWarBowFlagpattern inuseArenaSaleSession.tsand add an explicit reverted-receipt guard.Prior security-review threads: none on this MR; nothing to re-report.
Inline findings: none (no
block:securitylabel applied).mentioned in commit
7e8129dc1a