Architectural items from internal review
These are design-level, not bugs. Some are deferable; some need decisions before mainnet.
Sponsored tracks bypass main pool accounting
Sponsored-track funds live in separate pools but the UI shows only prize_pool. Total-value-locked is ambiguous.
Proposed: add aggregator query get_total_value_locked(hackathon_id) returning main + sum(tracks). Frontend uses this for display.
No team support beyond team_lead
Each submission has one team_lead address. If they lose key access, prize is unclaimable. No on-chain way to split prize among team members or update team lead.
Open questions for product:
- Do we model multi-member teams on-chain?
- Allow team-lead reassignment by creator?
- Or punt to off-chain coordination (current default)?
No withdraw_remainder for the creator
If basis-point rounding leaves dust (e.g., prize_pool=10001, three tiers each 3333 = 9999), 2 wei sits in escrow forever. Add a creator-callable withdraw_dust after all winners claim.
Mixed-asset prize pools not supported
A hackathon takes a single asset argument. Real sponsors often want to fund partial prizes in different tokens. Not blocking, but document the limitation.
fee_config connection to hackathons
See related issue #important on fee collection — same decision: is there a hackathon platform fee, and if so, where is it deducted?
Indexer surface
Audit which on-chain state transitions emit events. Currently several are silent. Cross-reference with the Tracker: code-quality issue for the events list.
Multi-chain compatibility
The contracts use Address abstraction correctly so smart-account creators work. For future EVM port: most logic translates directly, but the SAC token contract pattern doesn't exist on EVM — need a separate token interface layer. Track as future epic, not blocking.
Architectural items from internal review
These are design-level, not bugs. Some are deferable; some need decisions before mainnet.
Sponsored tracks bypass main pool accounting
Sponsored-track funds live in separate pools but the UI shows only
prize_pool. Total-value-locked is ambiguous.Proposed: add aggregator query
get_total_value_locked(hackathon_id)returning main + sum(tracks). Frontend uses this for display.No team support beyond
team_leadEach submission has one
team_leadaddress. If they lose key access, prize is unclaimable. No on-chain way to split prize among team members or update team lead.Open questions for product:
No
withdraw_remainderfor the creatorIf basis-point rounding leaves dust (e.g., prize_pool=10001, three tiers each 3333 = 9999), 2 wei sits in escrow forever. Add a creator-callable
withdraw_dustafter all winners claim.Mixed-asset prize pools not supported
A hackathon takes a single
assetargument. Real sponsors often want to fund partial prizes in different tokens. Not blocking, but document the limitation.fee_configconnection to hackathonsSee related issue #important on fee collection — same decision: is there a hackathon platform fee, and if so, where is it deducted?
Indexer surface
Audit which on-chain state transitions emit events. Currently several are silent. Cross-reference with the
Tracker: code-qualityissue for the events list.Multi-chain compatibility
The contracts use
Addressabstraction correctly so smart-account creators work. For future EVM port: most logic translates directly, but the SAC token contract pattern doesn't exist on EVM — need a separate token interface layer. Track as future epic, not blocking.