Search Apps Documentation Source Content File Folder Download Copy Actions Download

blacklist.gno

3.10 Kb · 135 lines
  1package namereg
  2
  3// reservedNames lists role/system identifiers that must never be allocated
  4// as a registered name. The intent is to prevent Open Nym Tier
  5// auto-registrations like "nym-admin000" from impersonating system roles.
  6//
  7// Sources merged here:
  8//   - Common role names already covered by Handshake's valid.json (the 90k
  9//     curated trademark/gTLD-application list) — admin, help, support, etc.
 10//   - Common role names NOT covered by Handshake — administrator, root,
 11//     sysadmin, owner, staff, api, etc.
 12//   - RFC 2606 / RFC 6761 reserved labels — example, invalid, localhost,
 13//     local, test.
 14//
 15// Plural rule: every entry below is ALSO reserved with the literal "s"
 16// suffix appended. So "doc" reserves both "doc" and "docs"; "setting"
 17// reserves both "setting" and "settings"; "new" covers "news", and so on.
 18// Entries are stored in the singular here and the validator appends "s"
 19// at check time. This halves list maintenance and avoids the temptation
 20// to add `name+"s"` after every singular entry.
 21//
 22// Note on length: the Open Nym Tier regex restricts the [a-z]{5,13}
 23// middle to 5–13 chars, so entries shorter than 5 (mod, api, bot, god,
 24// gno, ...) and longer than 13 (administrator, jesuschrist,
 25// newtendermint, ...) cannot appear in Register() even without this list.
 26// They are kept anyway because:
 27//
 28//	(a) cross-reference value — a single canonical list is easier to audit
 29//	    than two scope-specific lists with overlapping intent; and
 30//	(b) future controllers (e.g. a hypothetical DAO-allocated path) can
 31//	    opt in to the same blacklist by querying IsReserved, providing
 32//	    defense-in-depth across the registration ecosystem.
 33//
 34// IMPORTANT: this list is NOT consulted by `ProposeNewName` — governance
 35// renames are gated by GovDAO vote alone, not by this blacklist. Voters
 36// reviewing a rename proposal are responsible for catching collisions
 37// with reserved names.
 38//
 39// Sortedness: entries must be sorted lexicographically (Go's < on strings,
 40// which is byte-wise ASCII). TestReservedNamesSorted enforces this.
 41var reservedNames = []string{
 42	"about",
 43	"abuse",
 44	"account",
 45	"admin",
 46	"administrator",
 47	"aib",
 48	"aibinc",
 49	"allinbits",
 50	"allinbitsinc",
 51	"anonymous",
 52	"api",
 53	"atom",
 54	"atomone",
 55	"atomonehub",
 56	"atone",
 57	"atonehub",
 58	"bitcoin",
 59	"blockchain",
 60	"blog",
 61	"bot",
 62	"chain",
 63	"coin",
 64	"community",
 65	"contact",
 66	"cosmos",
 67	"cosmoshub",
 68	"crypto",
 69	"daemon",
 70	"dashboard",
 71	"default",
 72	"demo",
 73	"doc",
 74	"domain",
 75	"email",
 76	"ether",
 77	"ethereum",
 78	"everyone",
 79	"example",
 80	"gno",
 81	"gnoland",
 82	"gnolang",
 83	"gnome",
 84	"gnot",
 85	"gnoworld",
 86	"god",
 87	"gov",
 88	"govdao",
 89	"governance",
 90	"guest",
 91	"help",
 92	"home",
 93	"host",
 94	"info",
 95	"invalid",
 96	"jaekwon",
 97	"jesus",
 98	"jesuschrist",
 99	"local",
100	"localhost",
101	"login",
102	"mail",
103	"mod",
104	"moderator",
105	"new",
106	"newtendermint",
107	"newtendermintllc",
108	"nt",
109	"ntllc",
110	"null",
111	"owner",
112	"photon",
113	"profile",
114	"register",
115	"registry",
116	"resolution",
117	"resolve",
118	"resolver",
119	"root",
120	"security",
121	"service",
122	"setting",
123	"shop",
124	"signup",
125	"staff",
126	"store",
127	"support",
128	"sys",
129	"sysadmin",
130	"system",
131	"team",
132	"tendermint",
133	"test",
134	"user",
135}