init.gno
4.83 Kb Β· 112 lines
1package valopers
2
3import (
4 "gno.land/p/moul/authz/v0"
5 "gno.land/p/moul/txlink/v0"
6 "gno.land/p/nt/avl/v0"
7)
8
9func init() {
10 valopers = avl.NewTree()
11
12 // The authority is pointed at GovDAO, NOT at this realm.
13 //
14 // Pointing it here instead would make the gate compare valopers'
15 // address to valopers' address: every crossing frame of this package
16 // has rlm.Address() == PackageAddress(ownPath), so the check could
17 // never reject. Pointed at r/gov/dao and driven by DoByPrevious
18 // (see updateInstructions), the principal is the realm that crossed
19 // in β GovDAO's executor on the legitimate path, and the caller
20 // itself on any other, which is what makes the check real.
21 //
22 // The handler is a pass-through: this is where an intent check
23 // (timelock, quorum, audit trail) would go if one is ever wanted.
24 // It is NOT where the caller check lives β that is the authority's
25 // contract-identity gate, upstream of here.
26 auth = authz.NewWithAuthority(
27 authz.NewContractAuthority(
28 "gno.land/r/gov/dao",
29 func(_ string, action authz.PrivilegedAction) error {
30 return action()
31 },
32 ),
33 )
34
35 instructions = `
36# Welcome to the **Valopers** realm
37
38## π Purpose of this Contract
39
40The **Valopers** contract is designed to maintain a registry of **validator profiles**. This registry provides essential information to **GovDAO members**, enabling them to make informed decisions when voting on the inclusion of new validators into the **valset**.
41
42By registering your validator profile, you contribute to a transparent and well-informed governance process within **gno.land**.
43
44---
45
46## π How to Register Your Validator Node
47
48To add your validator node to the registry, use the [**Register**](` + txlink.Call("Register") + `) function with the following parameters:
49
50- **Moniker** (Validator Name)
51 - Must be **human-readable**
52 - **Max length**: **32 characters**
53 - **Allowed characters**: Letters, numbers, spaces, hyphens (**-**), and underscores (**_**)
54 - **No special characters** at the beginning or end
55
56- **Description** (Introduction & Validator Details)
57 - **Max length**: **2048 characters**
58 - Must include answers to the questions listed below
59
60- **Server Type** (Infrastructure Type)
61 - Must be one of the following values:
62 - **cloud**: For validators running on cloud infrastructure (AWS, GCP, Azure, etc.)
63 - **on-prem**: For validators running on on-premises infrastructure
64 - **data-center**: For validators running in dedicated data centers
65
66- **Operator Address**
67 - The ` + "`g1...`" + ` address of your operator account (from your ` + "`gnokey`" + ` keyring)
68 - **Must be controlled by the signer** of this transaction β the realm rejects the call if the signer doesn't control that address
69
70- **Validator Consensus Public Key**
71 - Your validator node's consensus public key, in the ` + "`gpub1...`" + ` format
72 - Retrieve it by running: ` + "`gnoland secrets get validator_key`" + `
73
74### βοΈ Required Information for the Description
75
76Please provide detailed answers to the following questions to ensure transparency and improve your chances of being accepted:
77
781. The name of your validator
792. Networks you are currently validating and your total AuM (assets under management)
803. Links to your **digital presence** (website, social media, etc.). Please include your Discord handle to be added to our main comms channel, the gno.land valoper Discord channel.
814. Contact details
825. Why are you interested in validating on **gno.land**?
836. What contributions have you made or are willing to make to **gno.land**?
84
85---
86
87## π Updating Your Validator Information
88
89After registration, you can update your validator details using the **update functions** provided by the contract.
90
91---
92
93## π’ Submitting a Proposal to Join the Validator Set
94
95Once you're satisfied with your **valoper** profile, you need to notify GovDAO; only a GovDAO member can submit a proposal to add you to the validator set.
96
97If you are a GovDAO member, you can nominate yourself by executing the following function: [**r/gnops/valopers/proposal.ProposeNewValidator**](` + txlink.Realm("gno.land/r/gnops/valopers/proposal").Call("ProposeNewValidator") + `)
98
99This will initiate a governance process where **GovDAO** members will vote on your proposal.
100
101---
102
103π **Register now and become a part of gno.landβs validator ecosystem!**
104
105Read more: [How to become a validator](https://github.com/gnolang/gno/tree/master/gno.land/cmd/gnoland#become-a-validator)
106
107Disclaimer: Please note, registering your validator profile and/or validating on testnets does not guarantee a validator slot on the gno.land beta mainnet. However, active participation and contributions to testnets will help establish credibility and may improve your chances for future validator acceptance. The initial validator amount and valset will ultimately be selected through GovDAO governance proposals and acceptance.
108
109---
110
111`
112}