1package namereg23// reservedNames lists role/system identifiers that must never be allocated4// as a registered name. The intent is to prevent Open Nym Tier5// auto-registrations like "nym-admin000" from impersonating system roles.6//7// Sources merged here:
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}
136
vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.