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
  • policy_test.gnogno
    1package gns23import (4	"testing"5)67func TestOperatorDelegation(cur realm, t *testing.T) {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.

    reset()
    9 doRegister(cur, "alice", alice, 100000)
    10
    11 // alice grants bob record management only (not transfer)
    12 testing.SetRealm(testing.NewUserRealm(alice))
    13 SetOperator(cross(cur), "alice", bob, Permissions{ManageRecords: true})
    14
    15 // bob can set a text record
    16 testing.SetRealm(testing.NewUserRealm(bob))
    17 SetText(cross(cur), "alice", "url", "https://bob-managed.example")
    18 v, ok := Text("alice", "url")
    19 isTrue(t, ok, "operator set record")
    20 eqStr(t, "https://bob-managed.example", v, "operator record value")
    21
    22 // invariant: operator without Transfer cannot transfer
    23 n := getRaw("alice")
    24 errIs(t, authorize(bob, n, PermTransfer), errUnauthorized, "record operator lacks transfer")
    25 noErr(t, authorize(bob, n, PermManageRecords), "record operator has records perm")
    26}
    27
    28func TestRemoveOperator(cur realm, t *testing.T) {
    29 reset()
    30 doRegister(cur, "alice", alice, 100000)
    31 testing.SetRealm(testing.NewUserRealm(alice))
    32 SetOperator(cross(cur), "alice", bob, Permissions{ManageRecords: true})
    33 n := getRaw("alice")
    34 eqInt(t, 1, int64(n.OperatorCount), "one operator")
    35
    36 testing.SetRealm(testing.NewUserRealm(alice))
    37 RemoveOperator(cross(cur), "alice", bob)
    38 n = getRaw("alice")
    39 eqInt(t, 0, int64(n.OperatorCount), "operator removed")
    40 errIs(t, authorize(bob, n, PermManageRecords), errUnauthorized, "removed operator loses perm")
    41}
    42
    43func TestTransferHappy(cur realm, t *testing.T) {
    44 reset()
    45 doRegister(cur, "alice", alice, 100000)
    46 r0 := getRaw("alice").Revision
    47
    48 testing.SetRealm(testing.NewUserRealm(alice))
    49 Transfer(cross(cur), "alice", bob, true, false)
    50
    51 owner, ok := OwnerOf("alice")
    52 isTrue(t, ok, "still exists")
    53 eqStr(t, bob.String(), owner, "owner now bob")
    54 isTrue(t, getRaw("alice").Revision > r0, "revision bumped on transfer (invariant 12 side-effect)")
    55}
    56
    57func TestAuthorizeOrder(cur realm, t *testing.T) {
    58 reset()
    59 doRegister(cur, "alice", alice, 100000)
    60 n := getRaw("alice")
    61
    62 // direct owner (active) authorized
    63 noErr(t, authorize(alice, n, PermManageRecords), "owner authorized")
    64 // unrelated user rejected
    65 errIs(t, authorize(carol, n, PermManageRecords), errUnauthorized, "stranger rejected")
    66 // admin has NO routine authority over user names (invariant 18)
    67 errIs(t, authorize(admin, n, PermTransfer), errUnauthorized, "admin cannot transfer user name")
    68}
    69
    70func TestNonTransferablePolicyPure(t *testing.T) {
    71 reset()
    72 // A name whose policy forbids owner transfer: the Transfer owner-branch
    73 // checks OwnerCanTransfer and rejects with policy_locked. We assert the
    74 // policy flag drives that decision.
    75 n := newTestName("locked", alice, ControlPolicy{OwnerCanTransfer: false})
    76 isFalse(t, n.ControlPolicy.OwnerCanTransfer, "policy forbids transfer")
    77 // and no operator/parent path grants transfer either
    78 errIs(t, authorize(bob, n, PermTransfer), errUnauthorized, "no delegated transfer")
    79}
    80