Skip to content
This repository was archived by the owner on Jun 12, 2026. It is now read-only.
This repository was archived by the owner on Jun 12, 2026. It is now read-only.

Tracker: code-quality cleanup #28

Description

@0xdevcollins

Code-quality items from internal review

Each subitem is small. Group into a single PR or several small PRs.

Magic numbers → named constants

const BPS_SCALE: u32 = 10_000;
const FIRST_PLACE_REP_POINTS: u32 = 100;
const SECOND_PLACE_REP_POINTS: u32 = 50;
const PARTICIPATION_REP_POINTS: u32 = 25;
const SECONDS_PER_DAY: u64 = 86_400;
const TRACK_ID_PER_HACKATHON_CAP: u32 = 1_000;

Inconsistent TTL extensions

Some functions extend TTL after storage writes, others don't. Apply uniformly. Consider a helper macro or wrap storage writes.

Add get_version() query

Returns a constant string (e.g., "hackathon_registry/0.4.0"). Indexers and frontends need to know which version they're talking to. Bump on every breaking change.

Missing events

Add and emit:

  • JudgeAdded { hackathon_id, judge }
  • JudgeRemoved { hackathon_id, judge }
  • HackathonStatusChanged { hackathon_id, old: HackathonStatus, new: HackathonStatus }
  • SubmissionDisqualified { hackathon_id, team_lead }
  • DeadlineExtended { hackathon_id, field, old, new } (paired with #extension issue)

Rename submission_countregistration_count

The field tracks registrations, not submitted projects. Confusing for indexers and integrators. Plan as storage migration.

Reentrancy discipline: CEI pattern uniformly

Refactor older fns (cancel_hackathon, distribute_track_prizes) to set state changes BEFORE cross-contract calls. Audit every existing fn for this.

Inline doc comments

Functions are self-explanatory by name but pre/post conditions and invariants are undocumented. Add /// doc comments to each public fn with: auth required, state precondition, side effects, error cases.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    audit-findingSurfaced during internal audit / reviewcode-qualityRefactoring / cleanupenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions