PathrockNetwork Gno Explorer
HomeBlocksTransactionsTokensRealmsPackagesValidatorsAnalytics

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/r/moul/gns/v0

Realm
Open in gnoweb ↗

Overview

Kind
Realm (renderable)
Name
v0
Namespace
moul / gns
Files
13 (README)(gnomod.toml)
Exported functions
55
Module
gno.land/r/moul/gns/v0
gno
0.9

Files (13)

  • README.mdmarkdown
  • gnomod.tomltoml
  • gns.gnogno
  • asserts_test.gnogno
  • gns_test.gnogno
  • helpers_test.gnogno
  • policy_test.gnogno
  • records_test.gnogno
  • registration_test.gnogno
  • render_test.gnogno
  • reverse_test.gnogno
  • security_test.gnogno
  • subnames_test.gnogno
  • helpers_test.gnogno
    1package gns23import (4	"testing"56	"gno.land/p/nt/avl/v0"7	"gno.land/p/nt/testutils/v0"8

    Functions

    • ABI(name string, contentType string) ([]uint8, bool)

    • AcceptAdmin(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string})

    • Address(name string) (string, bool)

    • ClearPrimaryName(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string})

    • CoinAddress(name string, coinType string) ([]uint8, bool)

    • CoinTypes(name string, cursor string, limit uint16) struct{Items []string; Next string}

    • Commit(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, commit string)

    • CommitmentStatus(commit string) struct{Exists bool; Committer string; CreatedAt int64; ReadyAt int64; ExpiresAt int64}

    • ContentHash(name string) ([]uint8, bool)

    • CreateSubname(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, parent string, label string, owner string, options struct{Duration int64; ControlPolicy gno.land/r/moul/gns/v0.ControlPolicy; NativeAddress string})

    • DeleteSubname(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string)

    • EventsAfter(id uint64, limit uint16) struct{Items []gno.land/r/moul/gns/v0.Event; Next string}

    • EventsForName(name string, after uint64, limit uint16) struct{Items []gno.land/r/moul/gns/v0.Event; Next string}

    • Exists(name string) bool

    • GetName(name string) (struct{Canonical string; Owner string; Status string; CreatedAt int64; UpdatedAt int64; ExpiresAt int64; GraceEndsAt int64; Parent string; Label string; Depth uint8; TTL uint64; Generation uint64; Revision uint64; Reserved bool; NativeAddr string}, bool)

    • Interface(name string, interfaceID string) (string, bool)

    • LockPolicy(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, restrictions struct{OwnerCanTransfer bool; OwnerCanCreateSubnames bool; RecordsMutable bool; ParentCanReclaim bool; ParentCanTransfer bool; ParentCanDelete bool; ParentCanChangePolicy bool; Permanent bool})

    • MakeCommitment(name string, owner string, duration int64, secret string, recordsHash string, policyRevision uint64) (string, interface {Error func() string})

    • NamesByOwner(owner string, cursor string, limit uint16) struct{Items []string; Next string}

    • Normalize(name string) (string, interface {Error func() string})

    • Operators(name string, cursor string, limit uint16) struct{Items []gno.land/r/moul/gns/v0.OperatorView; Next string}

    • OwnerOf(name string) (string, bool)

    • Price(name string, duration int64) (struct{Amount int64; Denom string; ValidUntil int64; Revision uint64}, interface {Error func() string})

    • PrimaryName(addr string) (string, bool)

    • PublicKey(name string) ([]uint8, bool)

    • Record(name string, namespace string, key string) ([]uint8, bool)

    • Register(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, request struct{Name string; Owner .uverse.address; Duration int64; Secret string; RecordsHash string; PolicyRevision uint64; NativeAddress string; SetPrimary bool}) struct{Canonical string; Owner string; ExpiresAt int64; Generation uint64; Paid int64; Refunded int64}

    • RemoveOperator(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, operator string)

    • Render(path string) string

    • Renew(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, duration int64) struct{Canonical string; ExpiresAt int64; Paid int64}

    • ReserveName(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, reserved bool)

    • Resolve(name string, query struct{Kind string; Key1 string; Key2 string}, mode int) struct{Found bool; Requested string; SourceName string; Value []uint8; Revision uint64; ExpiresAt int64}

    • SetABI(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, contentType string, value []uint8)

    • SetAddress(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, addr string)

    • SetCoinAddress(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, coinType string, value []uint8)

    • SetContentHash(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, value []uint8)

    • SetInterface(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, interfaceID string, target string)

    • SetLimits(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, maxRecords uint16, maxOperators uint16, maxText uint32, maxBinary uint32)

    • SetOperator(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, operator string, permissions struct{ManageRecords bool; ManageOperators bool; ManageSubnames bool; Renew bool; Transfer bool; ManagePolicy bool; ExpiresAt int64})

    • SetPaused(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, paused bool)

    • SetPricing(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, pricing struct{BasePricePerSecond int64; PremiumByLength map[uint8]int64; PaymentDenom string})

    • SetPrimaryName(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string)

    • SetPublicKey(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, value []uint8)

    • SetRecord(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, namespace string, key string, value []uint8)

    • SetRegistrationOpen(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, open bool)

    • SetRegistrationPolicy(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, policy struct{Mode string; MinDuration int64; MaxDuration int64; PricePerSecond int64; PaymentDenom string; Allowlist *gno.land/p/nt/avl/v0.Tree; DefaultControlPolicy gno.land/r/moul/gns/v0.ControlPolicy})

    • SetText(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, key string, value string)

    • SetTreasury(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, treasury string)

    • SetTTL(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, ttl uint64)

    • Status(name string) string

    • Subnames(parent string, cursor string, limit uint16) struct{Items []string; Next string}

    • Text(name string, key string) (string, bool)

    • TextKeys(name string, cursor string, limit uint16) struct{Items []string; Next string}

    • Transfer(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, newOwner string, clearOperators bool, clearRecords bool)

    • TransferAdmin(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, next string)

    Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.

    Rendered

    RenderedRawgnoweb ↗

    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.

    )
    9
    10// Deterministic, checksum-valid test addresses.
    11var (
    12 admin = testutils.TestAddress("admin")
    13 alice = testutils.TestAddress("alice")
    14 bob = testutils.TestAddress("bob")
    15 carol = testutils.TestAddress("carol")
    16 dave = testutils.TestAddress("dave")
    17)
    18
    19// reset re-initializes all package state to a deterministic, test-friendly
    20// configuration. Durations are small so lifecycle tests can advance time with
    21// modest SkipHeights calls. Pricing is free by default (BasePricePerSecond=0)
    22// so most functional tests need not attach payment; payment tests override it.
    23func reset() {
    24 names = avl.NewTree()
    25 commitments = avl.NewTree()
    26 reverse = avl.NewTree()
    27 events = avl.NewTree()
    28 byOwner = avl.NewTree()
    29 byParent = avl.NewTree()
    30 nextEventID = 0
    31
    32 config = Config{
    33 Admin: admin,
    34 Treasury: admin,
    35 RegistrationOpen: true,
    36
    37 MinCommitAge: 10,
    38 MaxCommitAge: 1000,
    39
    40 MinRegistrationDuration: 100,
    41 MaxRegistrationDuration: 10_000_000,
    42
    43 GracePeriod: 100,
    44
    45 BasePricePerSecond: 0,
    46 PremiumByLength: map[uint8]int64{1: 100, 2: 25, 3: 5, 4: 2},
    47
    48 PaymentDenom: "ugnot",
    49
    50 MaxTextValueBytes: 4096,
    51 MaxBinaryValueBytes: 8192,
    52 MaxRecordsPerName: 128,
    53 MaxOperatorsPerName: 32,
    54
    55 PolicyRevision: 1,
    56 }
    57}
    58
    59// newTestName builds a standalone active *Name for unit-testing pure helpers
    60// (authorize, statusOf, ...) without going through the registration flow.
    61func newTestName(canonical string, owner address, cp ControlPolicy) *Name {
    62 label, parent := splitLabel(canonical)
    63 return &Name{
    64 Canonical: canonical,
    65 Owner: owner,
    66 ExpiresAt: now() + 1_000_000,
    67 Parent: parent,
    68 Label: label,
    69 Depth: depthOf(canonical),
    70 Generation: 1,
    71 Revision: 1,
    72 Records: newRecords(),
    73 Operators: avl.NewTree(),
    74 ControlPolicy: cp,
    75 }
    76}
    77
    78// doRegister runs the full commit→reveal flow for a second-level name using the
    79// free (zero-price) path. Caller identity is set to owner.
    80func doRegister(cur realm, name string, owner address, duration int64) {
    81 secret := "sec-" + name
    82 canonical, err := Normalize(name)
    83 if err != nil {
    84 panic(err)
    85 }
    86 c := computeCommitment(canonical, owner, duration, secret, "", config.PolicyRevision)
    87
    88 testing.SetRealm(testing.NewUserRealm(owner))
    89 Commit(cross(cur), c)
    90
    91 testing.SkipHeights(3) // +15s > MinCommitAge (10s)
    92
    93 testing.SetRealm(testing.NewUserRealm(owner))
    94 Register(cross(cur), RegisterRequest{
    95 Name: name,
    96 Owner: owner,
    97 Duration: duration,
    98 Secret: secret,
    99 PolicyRevision: config.PolicyRevision,
    100 })
    101}
    102