Realm
gno.land/r/g1leu8d2vsplhehcfkjg50mwgdpxdkt8tztu95wr/kourtv3
Overview
Realm Path
gno.land/r/g1leu8d2vsplhehcfkjg50mwgdpxdkt8tztu95wr/kourtv3
Exported Functions
306
State Entries
260
Source Files
48
Total Package Entries
922
Exported Functions
306 exported functions
State
260 state entries
Source Code
FILES
adminparams.gno
go
1package kourtv3
2import (
3 "strconv"
4 "strings"
5)
6func adminAddr() address {
7 if globalDAO != nil {
8 return globalDAO.admin
9 }
10 return directoryAdmin
11}
12func purgeThreshold() int {
13 if globalDAO != nil {
14 return globalDAO.purgeM
15 }
16 return daoBootstrapM
17}
18func daoSeats() int {
19 if globalDAO != nil {
20 return globalDAO.n
21 }
22 return daoBootstrapN
23}
24func AdminParams() string {
25 l := ladderDefault
26 r := creditRatesDefault
27 hosts := MediaHosts()
28 exact, suffix := hosts, ""
29 if i := strings.Index(hosts, "|"); i >= 0 {
30 exact, suffix = hosts[:i], hosts[i+1:]
31 }
32 n := func(v int64) string { return strconv.FormatInt(v, 10) }
33 return "admin:" + adminAddr().String() +
34 ";creationBurn:" + n(courtCreationBurn) +
35 ";burnBps:" + n(burnBps) +
36 ";assocBond:" + n(assocBondDefault) +
37 ";purgeM:" + strconv.Itoa(purgeThreshold()) +
38 ";t1:" + n(l.t1Bps) +
39 ";t2:" + n(l.t2Bps) +
40 ";t3:" + n(l.t3Bps) +
41 ";entry:" + n(l.postsEntry) +
42 ";l2:" + n(l.postsT2) +
43 ";l3:" + n(l.postsT3()) +
44 ";flag:" + n(r.flag) +
45 ";dispute:" + n(r.dispute) +
46 ";authorHigh:" + n(r.authorHigh) +
47 ";conviction:" + n(r.conviction) +
48 ";unadjudicated:" + n(r.unadjudicated) +
49 ";domain:" + siteDomain +
50 ";mediaExact:" + exact +
51 ";mediaSuffix:" + suffix
52}
53const adminParamsPath = "admin-params"
54func renderAdminParams() string {
55 l := ladderDefault
56 r := creditRatesDefault
57 n := func(v int64) string { return strconv.FormatInt(v, 10) }
58 var b strings.Builder
59 b.WriteString("# Realm parameters\n\n")
60 b.WriteString("Everything the global DAO admin can set, and what it is set " +
61 "to now. A court's moderators set their own court's bond, ladder and " +
62 "standing rates; those are on the court's page, not here.\n\n")
63 b.WriteString("Admin: `" + adminAddr().String() + "`\n\n")
64 b.WriteString("| Setting | Now | What it does | Set with |\n")
65 b.WriteString("|---|---|---|---|\n")
66 b.WriteString("| Court creation burn | " + ugnotAmt(courtCreationBurn) +
67 " GNOT | The minimum a new court costs to open. The whole payment is " +
68 "burned. 0 turns it off, and off is the shipped default. | " +
69 "`SetCourtCreationBurn` |\n")
70 b.WriteString("| Burn share of each offering | " + pct(burnBps, bpsDenom) +
71 " | Of every payment for a court's coin, this much burns to the keyless " +
72 "sink for good; the rest is held by that court for all of its coin and " +
73 "paid back pro-rata to anyone who returns coin. One-way courts burn all " +
74 "of it. Applies to payments after the change; " +
75 strconv.FormatInt(minBurnBps, 10) + "–" + strconv.FormatInt(maxBurnBps, 10) +
76 " bps. | `SetBurnBps` |\n")
77 b.WriteString("| Association bond | " + ccAmt(assocBondDefault) +
78 " CC | What a stranger posts to attach an edge, in courts that set no " +
79 "override. | `SetAssociationBondDefault` |\n")
80 b.WriteString("| Purge threshold | " + strconv.Itoa(purgeThreshold()) + " of " +
81 strconv.Itoa(daoSeats()) + " | How many global moderators must agree to purge. | " +
82 "`SetPurgeThreshold` |\n")
83 b.WriteString("| Posting ladder | " + n(l.t1Bps) + "/" + n(l.t2Bps) + "/" +
84 n(l.t3Bps) + " bps at " + n(l.postsEntry) + "/" + n(l.postsT2) + "/" +
85 n(l.postsT3()) + " posts | The default rungs a court inherits: the share " +
86 "earned at each tier and the post counts that reach them. | " +
87 "`SetLadderDefault` |\n")
88 b.WriteString("| Standing rates | flag " + n(r.flag) + " (inert), dispute " +
89 n(r.dispute) + ", author " + n(r.authorHigh) + ", conviction " +
90 n(r.conviction) + ", unadjudicated " + n(r.unadjudicated) +
91 " bps | The default credit each act earns toward standing. Policing " +
92 "ranks above authorship, which ranks above staking. The flag rate is " +
93 "still settable and still bounds what authorship may be set to, but no " +
94 "path credits it since the quality lane was removed. | " +
95 "`SetCreditRatesDefault` |\n")
96 dom := siteDomain
97 if dom == "" {
98 dom = "_none_"
99 }
100 b.WriteString("| Site domain | " + dom + " | The website this realm belongs " +
101 "to. Also allow-lists that domain for images without listing it below. | " +
102 "`SetSiteDomain` |\n")
103 hosts := MediaHosts()
104 if hosts == "|" {
105 hosts = "_none_"
106 }
107 b.WriteString("| Media hosts | " + hosts + " | Where images may be loaded " +
108 "from: exact hosts before the bar, suffixes after it. | " +
109 "`SetMediaHosts` |\n")
110 b.WriteString("\nBurned to date — the sink's balance, which is every burn share, " +
111 "every creation burn, and anything else ever sent there: **" +
112 ugnotAmt(BurnedGNOT()) + " GNOT**, held at `" + BurnSink().String() +
113 "` — an address derived from a package path that the path grammar can " +
114 "never assign to a deployed realm, so no key to it exists and nothing " +
115 "can ever be spent from it. " +
116 "Held for coin, across every court: **" + ugnotAmt(TotalReserveGNOT()) +
117 " GNOT**, at this realm's own address — which no instruction but a " +
118 "holder returning coin for its pro-rata share can move.\n")
119 return b.String()
120}
121Raw Package Data
Raw JSON data