Proposal: customizable account display names on the leaderboard
Problem
Accounts are identified everywhere by their BTC address, so the leaderboard,
account pages, and other surfaces show long raw addresses. A short, optional
display name would make these far more readable and give miners a bit of
identity on the board.
Proposal
Let an account set an optional display name, shown alongside its address
(never instead of it). Concretely:
- Non-unique and cosmetic. The BTC address stays the account identity and is
always rendered, so a non-unique name can't be used to impersonate.
- Reuses existing auth. Names are set through the existing signed
/account/metadata flow (BIP322 / wallet signMessage), which already proves
address ownership — no new auth surface.
- Opt-in. Accounts that never set a name are completely unchanged.
- Respects privacy. Accounts marked
is_private are excluded from the bulk
name lookup.
Where it lives (two repos)
para — the source of truth. Store display_name in the existing
account_metadata JSONB (no migration), validate it on /account/metadata,
and expose a bulk GET /names (address → name). Purely backend.
parastats — the site. Mirror the name into the local monitored_users
table on metadata update (exactly like is_public is mirrored today), join
it into the leaderboard queries, render name-over-address in the board
components, and add an owner-only "set name" field on the account page that
signs via the connected wallet.
This keeps a single source of truth in para and needs no per-render HTTP
calls, since the leaderboard already joins monitored_users.
Open questions for maintainers
- OK with names living in
para metadata + mirrored into parastats SQLite, or
would you prefer names owned entirely by parastats?
- Name policy: proposed 24-char cap, trimmed, control characters rejected. Want
anything stricter (profanity/homoglyph filtering, charset limits)?
- Should there be a one-time backfill so names set on
para before deploy show
up without the user re-saving (e.g. via the stats collector)?
Offer
I have working patches for both repos ready to open as PRs (backend first, since
parastats depends on the display_name field existing). Happy to adjust the
approach based on your feedback before opening them.
Proposal: customizable account display names on the leaderboard
Problem
Accounts are identified everywhere by their BTC address, so the leaderboard,
account pages, and other surfaces show long raw addresses. A short, optional
display name would make these far more readable and give miners a bit of
identity on the board.
Proposal
Let an account set an optional display name, shown alongside its address
(never instead of it). Concretely:
always rendered, so a non-unique name can't be used to impersonate.
/account/metadataflow (BIP322 / walletsignMessage), which already provesaddress ownership — no new auth surface.
is_privateare excluded from the bulkname lookup.
Where it lives (two repos)
para— the source of truth. Storedisplay_namein the existingaccount_metadataJSONB (no migration), validate it on/account/metadata,and expose a bulk
GET /names(address → name). Purely backend.parastats— the site. Mirror the name into the localmonitored_userstable on metadata update (exactly like
is_publicis mirrored today), joinit into the leaderboard queries, render name-over-address in the board
components, and add an owner-only "set name" field on the account page that
signs via the connected wallet.
This keeps a single source of truth in
paraand needs no per-render HTTPcalls, since the leaderboard already joins
monitored_users.Open questions for maintainers
parametadata + mirrored into parastats SQLite, orwould you prefer names owned entirely by parastats?
anything stricter (profanity/homoglyph filtering, charset limits)?
parabefore deploy showup without the user re-saving (e.g. via the stats collector)?
Offer
I have working patches for both repos ready to open as PRs (backend first, since
parastats depends on the
display_namefield existing). Happy to adjust theapproach based on your feedback before opening them.