Skip to content Search Apps Documentation Source Content File Folder Download Copy Actions State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.

facade/v0 package

Overview

untrusted-render: every path Render echoes was read off a crossing frame in Propose (cur.Previous().PkgPath(), which a caller cannot forge or type), and Accept can only promote a key that is already in that tree.

Package facade is the permanent entry point of the "propose and accept" upgrade pattern (pattern F of the exploration; see ../../README.md).

Pattern E lets a deploy take the realm over on the spot. This one splits that into two steps that different people can hold: an implementation realm NOMINATES itself from its own init, and the owner ACCEPTS a package path in a separate transaction. Nothing serves until both have happened.

The split exists because of a mechanical limit, not just a governance preference. An implementation is an interface value, and a wallet cannot put one in a `maketx call` argument: only strings and numbers travel. The original shape of this pattern (the owner hands the facade an object) is therefore reachable only from `maketx run` or from another realm. Proposing from init and accepting by PATH makes both halves ordinary transactions.

Functions

Accept

func Accept(cur realm, pkgPath string)
Ask AI Claude ChatGPT

Accept promotes a proposed path to live. Owner-gated, and it takes a STRING, so it is callable straight from a wallet.

Param

Command

# WARNING: This command is running in an INSECURE mode.
# It is strongly recommended to use a hardware device for signing
# and avoid trusting any computer connected to the internet,
# as your private keys could be exposed.

gnokey maketx call -pkgpath "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0" -func "Accept" -args $'' -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -chainid "onyx-1" -remote "https://rpc.onyx.testnets.gno.land" ADDRESSgnokey query -remote "https://rpc.onyx.testnets.gno.land" auth/accounts/ADDRESS
gnokey maketx call -pkgpath "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0" -func "Accept" -args $'' -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -broadcast=false ADDRESS > call.tx
gnokey sign -tx-path call.tx -chainid "onyx-1" -account-number ACCOUNTNUMBER -account-sequence SEQUENCENUMBER ADDRESS
gnokey broadcast -remote "https://rpc.onyx.testnets.gno.land" call.tx
  

Candidates

func Candidates() []string
Ask AI Claude ChatGPT

Candidates lists every path that has nominated itself, in order.

Command

gnokey query vm/qeval -remote "https://rpc.onyx.testnets.gno.land" -data "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0.Candidates()"

Result

Close

func Close(cur realm)
Ask AI Claude ChatGPT

Close stops new candidates. The owner may still accept among those already proposed, so a rollback stays possible while new code does not.

Command

# WARNING: This command is running in an INSECURE mode.
# It is strongly recommended to use a hardware device for signing
# and avoid trusting any computer connected to the internet,
# as your private keys could be exposed.

gnokey maketx call -pkgpath "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0" -func "Close" -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -chainid "onyx-1" -remote "https://rpc.onyx.testnets.gno.land" ADDRESSgnokey query -remote "https://rpc.onyx.testnets.gno.land" auth/accounts/ADDRESS
gnokey maketx call -pkgpath "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0" -func "Close" -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -broadcast=false ADDRESS > call.tx
gnokey sign -tx-path call.tx -chainid "onyx-1" -account-number ACCOUNTNUMBER -account-sequence SEQUENCENUMBER ADDRESS
gnokey broadcast -remote "https://rpc.onyx.testnets.gno.land" call.tx
  

Freeze

func Freeze(cur realm)
Ask AI Claude ChatGPT

Freeze ends this realm's upgradeability, forever. There is no rung above it and nothing takes it back: that is the whole point, and it is the only way out of every caller trusting the owner rather than the code.

Command

# WARNING: This command is running in an INSECURE mode.
# It is strongly recommended to use a hardware device for signing
# and avoid trusting any computer connected to the internet,
# as your private keys could be exposed.

gnokey maketx call -pkgpath "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0" -func "Freeze" -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -chainid "onyx-1" -remote "https://rpc.onyx.testnets.gno.land" ADDRESSgnokey query -remote "https://rpc.onyx.testnets.gno.land" auth/accounts/ADDRESS
gnokey maketx call -pkgpath "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0" -func "Freeze" -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -broadcast=false ADDRESS > call.tx
gnokey sign -tx-path call.tx -chainid "onyx-1" -account-number ACCOUNTNUMBER -account-sequence SEQUENCENUMBER ADDRESS
gnokey broadcast -remote "https://rpc.onyx.testnets.gno.land" call.tx
  

Greet

func Greet(name string) string
Ask AI Claude ChatGPT

Greet forwards to the accepted implementation.

Param

Command

gnokey query vm/qeval -remote "https://rpc.onyx.testnets.gno.land" -data "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0.Greet()"

Result

Live

func Live() string
Ask AI Claude ChatGPT

Live is the package path currently serving, or "" before the first Accept.

Command

gnokey query vm/qeval -remote "https://rpc.onyx.testnets.gno.land" -data "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0.Live()"

Result

Propose

func Propose(cur realm, impl Impl)
Ask AI Claude ChatGPT

Propose nominates the calling realm. Called from the implementation's init, so deploying makes a candidate and nothing more.

Param

Command

# WARNING: This command is running in an INSECURE mode.
# It is strongly recommended to use a hardware device for signing
# and avoid trusting any computer connected to the internet,
# as your private keys could be exposed.

gnokey maketx call -pkgpath "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0" -func "Propose" -args $'' -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -chainid "onyx-1" -remote "https://rpc.onyx.testnets.gno.land" ADDRESSgnokey query -remote "https://rpc.onyx.testnets.gno.land" auth/accounts/ADDRESS
gnokey maketx call -pkgpath "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0" -func "Propose" -args $'' -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -broadcast=false ADDRESS > call.tx
gnokey sign -tx-path call.tx -chainid "onyx-1" -account-number ACCOUNTNUMBER -account-sequence SEQUENCENUMBER ADDRESS
gnokey broadcast -remote "https://rpc.onyx.testnets.gno.land" call.tx
  

Render

func Render(_ string) string
Ask AI Claude ChatGPT

Param

Command

gnokey query vm/qeval -remote "https://rpc.onyx.testnets.gno.land" -data "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0.Render()"

Result

Stage

func Stage() int
Ask AI Claude ChatGPT

Stage is the rung this realm is on. It only ever goes up.

Command

gnokey query vm/qeval -remote "https://rpc.onyx.testnets.gno.land" -data "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0.Stage()"

Result

StageName

func StageName() string
Ask AI Claude ChatGPT

StageName is Stage as the word a caller reads in Render.

Command

gnokey query vm/qeval -remote "https://rpc.onyx.testnets.gno.land" -data "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0.StageName()"

Result

Version

func Version() string
Ask AI Claude ChatGPT

Version reports the accepted implementation's own version string.

Command

gnokey query vm/qeval -remote "https://rpc.onyx.testnets.gno.land" -data "gno.land/r/nym-moultest123/x/upgrade/adminreg/facade/v0.Version()"

Result