auth
*authz.Authorizer- OID
- 023699…434b:150
auth details
Auth
func() *authz.Authorizer- OID
- 023699…434b:4
Auth details
updateInstructions
func(int, rlm .uverse.realm, newInstructions string)- OID
- 023699…434b:6
updateInstructions details
NewInstructionsProposalCallback
func(newInstructions string) func(...)- OID
- 023699…434b:7
NewInstructionsProposalCallback details
init.4
func()- OID
- 023699…434b:8
init.4 details
MonikerMaxLength
untyped bigintValue
(32 <untyped> bigint)
DescriptionMaxLength
untyped bigintValue
(2048 <untyped> bigint)
ServerTypeCloud
untyped stringValue
"cloud"
ServerTypeOnPrem
untyped stringValue
"on-prem"
ServerTypeDataCenter
untyped stringValue
"data-center"
ErrValoperExists
*errors.errorString- OID
- 023699…434b:11
ErrValoperExists details
ErrValoperMissing
*errors.errorString- OID
- 023699…434b:14
ErrValoperMissing details
ErrInvalidAddress
*errors.errorString- OID
- 023699…434b:17
ErrInvalidAddress details
ErrInvalidMoniker
*errors.errorString- OID
- 023699…434b:20
ErrInvalidMoniker details
ErrInvalidDescription
*errors.errorString- OID
- 023699…434b:23
ErrInvalidDescription details
ErrInvalidServerType
*errors.errorString- OID
- 023699…434b:26
ErrInvalidServerType details
ErrOperatorSquatGuard
*errors.errorString- OID
- 023699…434b:29
ErrOperatorSquatGuard details
ErrSigningKeyTaken
*errors.errorString- OID
- 023699…434b:32
ErrSigningKeyTaken details
ErrFrontrunValidator
*errors.errorString- OID
- 023699…434b:35
ErrFrontrunValidator details
ErrRotationThrottled
*errors.errorString- OID
- 023699…434b:38
ErrRotationThrottled details
ErrRegistryEntryMissing
*errors.errorString- OID
- 023699…434b:41
ErrRegistryEntryMissing details
ErrDisallowedPubKeyType
*errors.errorString- OID
- 023699…434b:44
ErrDisallowedPubKeyType details
valopers
*v0.Tree// operator-address -> Valoper
- OID
- 023699…434b:148
valopers details
instructions
string// markdown instructions for valoper's registration
Value
"\n# Welcome to the **Valopers** realm\n\n## 📌 Purpose of this Contract\n\nThe **Valopers** contract is designed to maintain a registry of **validator profiles**. This registry provides essential information to **GovDAO members**, enabling them to make inform"...
signingRegistry
*v0.BPTree- OID
- 023699…434b:49
signingRegistry details
monikerMaxLengthMiddle
stringValue
"30"
validateMonikerRe
*regexp.Regexp// 32 characters, including spaces, hyphens or underscores in the middle
- OID
- 023699…434b:53
validateMonikerRe details
regEntry
typeregEntry tracks signing-address -> operator with retirement metadata. retiredAtHeight == 0 means the entry is currently active for the operator.
Value
valopers.regEntry
Valoper
typeValoper represents a validator operator profile.
Value
valopers.Valoper
AddToAuthList
func(addr .uverse.address, member .uverse.address)- OID
- 023699…434b:128
AddToAuthList details
DeleteFromAuthList
func(addr .uverse.address, member .uverse.address)- OID
- 023699…434b:130
DeleteFromAuthList details
Register
func(moniker string, description string, serverType string, addr .uverse.address, pubKey string)Register registers a new valoper. The \`addr\` parameter is the operator address (stable identity, profile key); \`pubKey\` is the consensus signing pubkey, from which the signing address is derived. Auth shape: - Post-genesis: OriginCaller must equal addr (operator-slot squat guard). Genesis-mode replay (ChainHeight()==0) bypasses, so migration .jsonl txs and historical Register replays succeed. - Signing-address uniqueness: derived(pubKey) must not already be in signingRegistry, active or retired. - Front-running guard: post-genesis, derived(pubKey) must not already be an active validator (a fresh registration cannot squat on the consensus address of an existing validator). Why OriginCaller==addr is sufficient (no IsUserCall): squatting requires the attacker to be able to satisfy OriginCaller==victim, which requires the victim's signing key. r/sys/namereg/v1.Register also gates on IsUserCall, but that's because IT reads unsafe.OriginSend() for the anti-squatting payment and IsUserCall is needed to ensure the OriginSend envelope reflects what landed at this realm rather than a phantom payment from a previous frame. valopers.Register has no per-call payment-receipt check (fees are validated against banker.OriginSend in a way that's symmetric to IsUserCall via direct comparison), so the IsUserCall tightening would only block legitimate \`maketx run\` flows (operator-authored scripts that legitimately set OriginCaller==operator) without adding identity-squat protection. Auth-list seeding: the profile's Authorizable owner is set to addr (NOT OriginCaller). At H>0 the squat guard makes them equal anyway; at H==0 the deployer pattern (one signer registers many operators) requires owner == addr so each operator can manage their own profile post-genesis without needing the deployer's auth.
- OID
- 023699…434b:131
Register details
UpdateMoniker
func(addr .uverse.address, moniker string)UpdateMoniker updates an existing valoper's moniker.
- OID
- 023699…434b:132
UpdateMoniker details
UpdateDescription
func(addr .uverse.address, description string)UpdateDescription updates an existing valoper's description.
- OID
- 023699…434b:133
UpdateDescription details
UpdateKeepRunning
func(addr .uverse.address, keepRunning bool)UpdateKeepRunning updates an existing valoper's active status. Calls v3.NotifyValoperChanged because the cache stores KeepRunning.
- OID
- 023699…434b:134
UpdateKeepRunning details
UpdateServerType
func(addr .uverse.address, serverType string)UpdateServerType updates an existing valoper's server type.
- OID
- 023699…434b:135
UpdateServerType details
UpdateSigningKey
func(addr .uverse.address, newPubKey string)UpdateSigningKey rotates an operator's consensus signing key. Auth: caller must be on the operator's auth list (defaults to operator at Register time; extendable via AddToAuthList). Invariants checked at entry: - throttle: ChainHeight() - v.LastRotationHeight >= rotationPeriodBlocks - signingRegistry uniqueness: derived(newPubKey) not in registry (active OR retired); permanently blocks key reuse - fee: unsafe.OriginSend() >= rotationFee (mirrors Register's fee-check pattern) Effect: profile's SigningPubKey/SigningAddress/LastRotationHeight updated; old registry entry marked retired (retiredAtHeight = ChainHeight()); new entry inserted into signingRegistry; v3 emits remove+add to sysparams via RotateValoperSigningKey; v3 cache refreshed via NotifyValoperChanged. Rotation lands in consensus at H+2. Atomicity: Gno tx atomicity rolls back all state if any step panics. If v3.RotateValoperSigningKey panics, the registry insert and profile mutation revert with it.
- OID
- 023699…434b:136
UpdateSigningKey details
GetByAddr
func(addr .uverse.address) valopers.ValoperGetByAddr fetches the valoper using the operator address, if present.
- OID
- 023699…434b:137
GetByAddr details
Render
func(fullPath string) stringRender renders a single valoper with their information.
- OID
- 023699…434b:138
Render details
renderHome
func(path string) string- OID
- 023699…434b:139
renderHome details
isValoper
func(addr .uverse.address) boolisValoper checks if the valoper exists.
- OID
- 023699…434b:140
isValoper details
validateMoniker
func(moniker string) .uverse.errorvalidateMoniker checks if the moniker is valid.
- OID
- 023699…434b:141
validateMoniker details
validateDescription
func(description string) .uverse.errorvalidateDescription checks if the description is valid.
- OID
- 023699…434b:142
validateDescription details
validateBech32
func(addr .uverse.address) .uverse.errorvalidateBech32 checks if the value is a valid bech32 address.
- OID
- 023699…434b:143
validateBech32 details
validatePubKey
func(pubKey string) .uverse.errorvalidatePubKey checks if the public key is valid.
- OID
- 023699…434b:144
validatePubKey details
assertPubKeyTypeAllowed
func(pubKey string)assertPubKeyTypeAllowed panics if pubKey's type is not in the chain's validator allow-list (empty list accepts any).
- OID
- 023699…434b:145
assertPubKeyTypeAllowed details
pubKeyTypeURL
func(pubKey string) (string, .uverse.error)pubKeyTypeURL returns the amino type URL (e.g. "/tm.PubKeyEd25519") of a bech32 consensus pubkey.
- OID
- 023699…434b:146
pubKeyTypeURL details
validateServerType
func(serverType string) .uverse.errorvalidateServerType checks if the server type is valid.
- OID
- 023699…434b:147