Open protocol
Results, ladders and tournaments are signed Nostr events. Anyone can read them from the relays and check every signature, without asking the league.
What the league publishes
The league’s own event kinds, as the NIP defines them.
- 2150 Challenge acting captain of the challenger lineup, or the challenging player (solo game); rev. 8.1: the league key for the pairing of a tournament whose players report regular
- 2151 Challenge Answer the challenged side (accepted, declined) or the challenger side (withdrawn): an acting captain, or the player in a solo game regular
- 2152 Result Report acting captain of either lineup regular
- 2153 Result Response acting captain of the lineup that did not author the report (series only: a chess game has none, see Game Record) regular
- 2154 League Attestation league key; rev. 9.24 (draft): also a Hyperbitcoinization result, of its own shape regular
- 2155 Tournament Draw (optional) league key regular
- 64 Game Record, reused from NIP-64 (chess) league key (the record, rev. 9.4; before, a player); a player of the game (their own post of it, rev. 9.4) regular
- 12150 Clan Membership the player replaceable
- 32150 Clan clan owner addressable
- 32151 Lineup clan owner (rev. 5; before: the owner or a clan captain) addressable
- 32152 Ladder league key addressable
- 2156 Season Genesis, Block 0 (rev. 5) league key regular
- 2157 Payout (rev. 5) league key regular
- 2158 Parameter Change (rev. 5) league key regular
- 22150 Tournament Consent (rev. 7), never published the entering player (solo), an acting captain of the entered lineup ephemeral
Kinds from other NIPs
Kinds of other NIPs the league reads or writes, with the meaning the league gives them.
- 0, 10002 league profile and relay list, so clients find the league league key NIP-01, 65
- 31923 tournament (time-based calendar event); rev. 5 also a bounty (d = bounty/<slug>) league key NIP-52
- 31924 the league's tournament calendar league key NIP-52
- 30000 opponent list, d = esports/<league key> the player NIP-51
- 30000 anchor list, d = esports/<league key>/anchors trust key NIP-51
- 14 in 13 in 1059 private chat between players; notifications a player; the notification key NIP-17, 59
- 10050 a player's DM relays the player NIP-17
- 9734, 9735 zaps to a pot: bounty, reserve (rev. 5, see Pots and zap targets); rev. 9.1: never a tournament's pot; rev. 9.19: a tournament's pot again, in the league wallet the zapper; the league's LNURL server key NIP-57
- 9041 rev. 5: the league reserve as a zap goal league key NIP-75
- 30000 rev. 5: the admin list, d = esports/<league key>/admins league key NIP-51
- 1985 rev. 5: release of Block 0 (release-block-0); correction of the season review (void-block) a listed admin; the league key NIP-32
- 30382 trust rank of a player; rev. 5 also the anchor subtree (anchor) trust key NIP-85
- 0 description of the trust algorithm trust key NIP-01, 85
- 1984 report with the league's label namespace any player NIP-56, 32
- 3 read only: opponent suggestions, mutual contacts the player NIP-02
- 30009, 8 rev. 5: rank badge definition per player, game and mode; its single award badge key NIP-58
- 10008 rev. 5: the player's profile badges, with the rank badges the player chose to show the player NIP-58, 51
- 1 rev. 8: share post, a note with a share card of the league (rank up, block, tournament win, season) the player NIP-01, 92
- 1111 rev. 9.9: comment on a tournament (31923), a rated game's record (64) or a rated series' challenge (2150) the player NIP-22
- 7 rev. 9.9: like (+) of the same the player NIP-25
- 31925 rev. 9.9: RSVP to a tournament, accepted or declined; never a sign-up the player NIP-52
- 10000 rev. 9.21: the league's mute list, one public p per key muted or banned on the site, no reasons, carried over onto the key's own list league key NIP-51
- 40, 41 rev. 9.3: a game channel with fixed fields and its metadata, one per game; rev. 9.15: the board games' too, while the league runs them (see Game channels) league key (the channel creator) NIP-28
- 42 rev. 9.3: a message in a game channel anyone NIP-28
- 43, 44 rev. 9.3: the creator's moderation of the game channels (hide a message, mute a pubkey) league key NIP-28
- 1068, 1018 rev. 9.3: a poll in a game channel and a vote on it; shown and counted for members and players with a result in the league only anyone NIP-88
- 40, 42, 7 rev. 9.24 (draft): a Hyperbitcoinization match's table chat (its kind 40 computed, never signed), its messages and reactions anyone (the channel's creator is the league key) NIP-28, 25
- 1068, 1018 rev. 9.24 (draft): a Hyperbitcoinization match's spectator poll "Who wins?" and a spectator's vote league key (the poll); a spectator (the vote) NIP-88
- 14 in 13 in 1059 rev. 9.24 (draft): a Hyperbitcoinization team chat, match hyper:<match id> a player of the team NIP-17, 59
The league’s keys
Each key signs one kind of thing. Only the league key can sign a result, a ladder or a tournament.
-
League key
ladders, tournaments and their calendar, attestations and chess game records of every result, the season chain
npub1mapwq05fcwe2qk5ftd7qeerwpswwzpgcjfkum8w23csruj2dyjwq6lu3y5Profile -
Trust key
trust ranks and the anchor list
npub1vln5ty4su48exenjdznrp9jag4jqqzva0v4hrnu2ht9ump3744hs3ehc5vProfile -
Badge key
rank badges and their awards
npub1mapwq05fcwe2qk5ftd7qeerwpswwzpgcjfkum8w23csruj2dyjwq6lu3y5Profile -
Notification key
the encrypted notifications sent to players
npub1mapwq05fcwe2qk5ftd7qeerwpswwzpgcjfkum8w23csruj2dyjwq6lu3y5Profile -
Stream key
the 24/7 stream and its live events
npub1mapwq05fcwe2qk5ftd7qeerwpswwzpgcjfkum8w23csruj2dyjwq6lu3y5Profile -
Stream bot
chat lines and tournament notes on the stream
npub1mapwq05fcwe2qk5ftd7qeerwpswwzpgcjfkum8w23csruj2dyjwq6lu3y5Profile
Relays
wss://relay.primal.netwss://nostr.momwss://relay.damus.iowss://nos.lolwss://relay.snort.socialwss://offchain.pubwss://nostr.bitcoiner.socialwss://nostr.oxtr.dev
wss://nos.lolwss://relay.primal.netwss://nostr.mom
The two sets are separate on purpose: a relay chosen for encrypted chats is not a place for league events, and the other way round.
Check it yourself
With nak, a command-line Nostr tool, you read the league’s events straight from a relay and check their signatures.
-
The tournaments as calendar events
nak req -k 31923 -a npub1mapwq05fcwe2qk5ftd7qeerwpswwzpgcjfkum8w23csruj2dyjwq6lu3y5 wss://relay.primal.net -
The ladders of the current season
nak req -k 32152 -a npub1mapwq05fcwe2qk5ftd7qeerwpswwzpgcjfkum8w23csruj2dyjwq6lu3y5 wss://relay.primal.net -
The latest attestations of results
nak req -k 2154 -a npub1mapwq05fcwe2qk5ftd7qeerwpswwzpgcjfkum8w23csruj2dyjwq6lu3y5 -l 5 wss://relay.primal.net -
Check every signature of what came back
nak req -k 2154 -a npub1mapwq05fcwe2qk5ftd7qeerwpswwzpgcjfkum8w23csruj2dyjwq6lu3y5 -l 5 wss://relay.primal.net | nak verify
nak verify prints nothing when every signature holds, and names the event that fails. Get nak
The full protocol
The NIP describes every event, tag and rule, and how a client checks them. It lives in the league’s open source repository, with its full history.