Remove AdminSellVault from arena deploy path (#314) #464
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!464
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-314-remove-admin-sell-vault"
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
Removes legacy
AdminSellVaultfrom the Arena v2 deploy path (#314):TimeArena.initializeno longer accepts an admin vault; reserved storage slot kept for UUPS upgrade safety.AdminSellVault.solandAdminSellVault.t.soldeleted.DeployDev,DeployProduction, Anvil registry scripts, indexer production validation, and frontend env no longer requireAdminSellVault/VITE_ADMIN_SELL_VAULT_ADDRESS.doubSurplusRecipienton Anvil → deployer (not admin vault).Acceptance checklist
cd contracts && forge test --match-contract DevStackIntegrationcd contracts && forge test --match-test test_buy_routes_doub_splitbash scripts/verify-evm-dev-wallet-seed-anvil.shSKIP_ANVIL_RICH_STATE=1 bash scripts/start-local-anvil-stack.sh --no-frontend(stack up; registry omits AdminSellVault)cd contracts && forge test(5 pre-existingdoub.csvfork tests fail without gitignored CSV)cd frontend && npm run typecheck && npm run lint && npm testcd indexer && cargo test config::Third-party verification
Follow-ups
AdminSellVaultcan keep the legacy contract at its address; new deploys omit it entirely. Upgrade path: deploy newTimeArenaimplementation without reusing the reserved slot.changed the description
changed the description
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issue.
Reviewed by Cursor Bugbot for commit
7f6694d84f. Configure here.Wrong PodiumVaults registry address
Medium Severity
The committed
PodiumVaultsentry uses the formerAdminSellVaultproxy address whileTimeArenaandReferralRegistryare unchanged from the prior registry. That mix cannot come from a single consistentDeployDevrun after removingAdminSellVault, so consumers of this file without redeploying point at the wrong contract.Reviewed by Cursor Bugbot for commit
7f6694d84f. Configure here.Security review — MR !464
Commit reviewed:
7f6694d84fa63ce948650821b6d89be8e6f3b71dScope: Remove
AdminSellVaultfrom arena deploy path —TimeArena.initialize/ UUPS storage, deploy scripts (DeployDev,DeployProduction,UUPSDeployLib, Kumbaya Anvil fixtures), indexer production registry validation, frontend env/ABI, and Anvil stack wiring.Outcome:
FINDINGS: 0medium+Prior security threads: None on this MR; no re-reports.
Summary
Reviewed added/modified paths for authz bypasses, value-routing regressions, UUPS storage corruption, injection/SSRF/XSS, and offchain misconfiguration that could enable fund loss or auth bypass.
ArenaBuyRouting→_routeDoubPrizeSplit)PodiumVaults; noAdminSellVault/ admin-fee sink in buy or top-up paths__reservedAdminSellVault)adminSellVaultslot preserved asaddress; layout-compatible for existing proxies;initializeABI change affects new proxies only (initializerstill one-shot)AdminSellVault.solremovalOwnablecontracts — not weakened by this diffTimeArenaBuyRouterdustdoubSurplusRecipientto deployer (dev-only, known key) instead of removed vault — no production authz changeconfig.rs)AdminSellVaultdropped from mandatory production validation; optional key still ingested when non-empty for historical logs — no attacker-controlled registry path to bypass auth or move fundsNo plausible attacker-controlled path to steal DOUB, bypass
onlyOwner/buyForrouter gate, corrupt prize routing, or exploit the reserved storage slot on this diff.Inline findings: None (no
block:securitylabel).added 16 commits
main868a7912- Merge origin/main into issue-314-remove-admin-sell-vaultCompare with previous version
Resolved merge conflicts with
main:docs/testing/invariants-and-business-logic.md— kept #314 zero-admin / noAdminSellVaultdeploy wording; adopted main's #313 Last Buy remainder + fuzz evidence onINV-ARENA-PRIZE-ROUTING-300-25PCT.skills/play-time-arena-doub/SKILL.md— combined #313 category remainder routing with #314AdminSellVaultretirement (dropped legacysellDoubToUsdmbullet).contracts/test/NonStandardERC20.t.sol— updatedTimeArena.initializewiring after main landed #316 without admin vault.Sanity:
DevStackIntegration,test_buy_routes_doub_split,NonStandardERC20— PASS.resolved all threads
changed the description
Security review — MR !464
Commit reviewed:
868a79120ca63a288fcd1fa53af72eede7897295Scope: Remove
AdminSellVaultfrom arena deploy path —TimeArena.initialize/ UUPS reserved storage, deploy scripts (DeployDev,DeployProduction,UUPSDeployLib, Kumbaya Anvil fixtures), indexer production registry validation, frontend env/ABI, and Anvil stack wiring. Re-reviewed after merge-conflict resolution withmain(invariants #313,NonStandardERC20.t.sol).Outcome:
FINDINGS: 0medium+Prior security threads: Prior review on
7f6694d(0 findings) — re-validated on current HEAD; no re-reports.Summary
Reviewed added/modified paths for authz bypasses, value-routing regressions, UUPS storage corruption, injection/SSRF/XSS, and offchain misconfiguration that could enable fund loss or auth bypass.
ArenaBuyRouting→_routeDoubPrizeSplit)PodiumVaults; no admin-fee sink in buy or top-up paths__reservedAdminSellVault)adminSellVaultslot preserved asaddress; layout-compatible for existing proxies;initializeABI change affects new proxies only (initializerstill one-shot)AdminSellVault.solremovalOwnablecontracts — not weakened by this diffTimeArenaBuyRouterdustdoubSurplusRecipientto deployer (dev-only, known key) instead of removed vault — no production authz changeconfig.rs)AdminSellVaultdropped from mandatory production validation; optional key still ingested when non-empty for historical logs — registry is operator-controlled, not attacker inputNo plausible attacker-controlled path to steal DOUB, bypass
onlyOwner/buyForrouter gate, corrupt prize routing, or exploit the reserved storage slot on this diff.Inline findings: None (no
block:securitylabel).mentioned in commit
1a7b8ed5d0