SelectorUpdateImpl
manager.SelectorValue
<gnolang.StringValue>
SelectorSetBucketConfig
manager.SelectorValue
<gnolang.StringValue>
SelectorSetRateLimitDisabled
manager.SelectorValue
<gnolang.StringValue>
SelectorPausable
manager.SelectorValue
<gnolang.StringValue>
SetBucketConfig
func(denom string, capacity *uint256.Uint, refillRate *uint256.Uint)SetBucketConfig creates or updates the per-denom send-side rate-limit bucket. The bucket is anchored to block time, so RefillRate is tokens per second.
- OID
- 01de13…f3e9:3
SetBucketConfig details
SetRateLimitDisabled
func(disabled bool)SetRateLimitDisabled toggles the global rate-limit kill switch.
- OID
- 01de13…f3e9:5
SetRateLimitDisabled details
Pausable
func(p bool)Pausable toggles the global pause gate checked by every App receiver.
- OID
- 01de13…f3e9:6
Pausable details
App
typeapp.gno is the App receiver surface: the core-driven half of the proxy. core holds this App reference permanently (its port is keyed by the proxy pkgpath and re-registration is rejected), so App is the stable IBC identity and must never carry business logic. Every receiver gates on assertIsCoreRealm and assertIsNotPaused before delegating to the installed impl or rejecting channel close. Logic lives in the impl realm; authority and funds live in the proxy. See assert.gno for the gates and upgrade.gno for the swap point.
Value
ucs03_zkgm.App
assertIsCoreRealm
func()- OID
- 01de13…f3e9:7
assertIsCoreRealm details
assertIsRlmCurrent
func(int, rlm .uverse.realm)- OID
- 01de13…f3e9:9
assertIsRlmCurrent details
assertIsProxyRealm
func(int, rlm .uverse.realm)- OID
- 01de13…f3e9:10
assertIsProxyRealm details
assertIsNotPaused
func()- OID
- 01de13…f3e9:11
assertIsNotPaused details
EmitRecvError
func(int, rlm .uverse.realm, sourceChannel types.ChannelId, destinationChannel types.ChannelId, reason string)- OID
- 01de13…f3e9:12
EmitRecvError details
EmitNativeReleased
func(int, rlm .uverse.realm, denom string, recipient .uverse.address, amount int64)- OID
- 01de13…f3e9:14
EmitNativeReleased details
EmitForwardInFlightSet
func(int, rlm .uverse.realm, packetHash types.H256, parentPacketHash types.H256)- OID
- 01de13…f3e9:15
EmitForwardInFlightSet details
EmitForwardInFlightPopped
func(int, rlm .uverse.realm, packetHash types.H256, found bool)- OID
- 01de13…f3e9:16
EmitForwardInFlightPopped details
ErrSpoofedRealm
untyped stringErrSpoofedRealm guards non-crossing (\_ int, rlm realm, ...) entrypoints: the passed rlm must be the current crossing frame, not a forged or stale token replayed by a caller.
Value
"rlm does not match the current crossing frame"
ErrNotProxyRealm
untyped stringErrSpoofedRealm guards non-crossing (\_ int, rlm realm, ...) entrypoints: the passed rlm must be the current crossing frame, not a forged or stale token replayed by a caller.
Value
"rlm is not proxy realm"
ErrNotCoreRealm
untyped stringErrSpoofedRealm guards non-crossing (\_ int, rlm realm, ...) entrypoints: the passed rlm must be the current crossing frame, not a forged or stale token replayed by a caller.
Value
"rlm is not core realm"
ErrInvalidSaltLength
untyped stringErrSpoofedRealm guards non-crossing (\_ int, rlm realm, ...) entrypoints: the passed rlm must be the current crossing frame, not a forged or stale token replayed by a caller.
Value
"invalid salt length"
ErrTokenBucketNotFound
untyped stringErrSpoofedRealm guards non-crossing (\_ int, rlm realm, ...) entrypoints: the passed rlm must be the current crossing frame, not a forged or stale token replayed by a caller.
Value
"token bucket not found"
ErrChannelBalanceV2NotFound
untyped stringErrSpoofedRealm guards non-crossing (\_ int, rlm realm, ...) entrypoints: the passed rlm must be the current crossing frame, not a forged or stale token replayed by a caller.
Value
"channel balance v2 not found"
ErrLockedTokenAmountOverflow
untyped stringErrSpoofedRealm guards non-crossing (\_ int, rlm realm, ...) entrypoints: the passed rlm must be the current crossing frame, not a forged or stale token replayed by a caller.
Value
"locked token amount overflows uint256"
ErrInterfaceConversion
untyped stringErrSpoofedRealm guards non-crossing (\_ int, rlm realm, ...) entrypoints: the passed rlm must be the current crossing frame, not a forged or stale token replayed by a caller.
Value
"interface conversion failed"
ZkgmImplUpdatedEvent
untyped stringValue
"ZkgmImplUpdated"
ZkgmPausedEvent
untyped stringValue
"ZkgmPaused"
ZkgmUnpausedEvent
untyped stringValue
"ZkgmUnpaused"
ZkgmRateLimitBucketConfiguredEvent
untyped stringValue
"ZkgmRateLimitBucketConfigured"
ZkgmRateLimitDisabledSetEvent
untyped stringValue
"ZkgmRateLimitDisabledSet"
ZkgmReceiverRegisteredEvent
untyped stringValue
"ZkgmReceiverRegistered"
ZkgmNativeReleasedEvent
untyped stringValue
"ZkgmNativeReleased"
ZkgmForwardInFlightSetEvent
untyped stringValue
"ZkgmForwardInFlightSet"
ZkgmForwardInFlightPoppedEvent
untyped stringValue
"ZkgmForwardInFlightPopped"
ZkgmRecvErrorEvent
untyped stringValue
"ZkgmRecvError"
emitZkgmImplUpdatedEvent
func(callerPkgPath string, oldImplPath string, newImplPath string, allowed []string)- OID
- 01de13…f3e9:17
emitZkgmImplUpdatedEvent details
emitZkgmPausedEvent
func(admin .uverse.address)- OID
- 01de13…f3e9:19
emitZkgmPausedEvent details
emitZkgmUnpausedEvent
func(admin .uverse.address)- OID
- 01de13…f3e9:20
emitZkgmUnpausedEvent details
emitZkgmRateLimitBucketConfiguredEvent
func(admin .uverse.address, denom string, capacity *uint256.Uint, refillRate *uint256.Uint)- OID
- 01de13…f3e9:21
emitZkgmRateLimitBucketConfiguredEvent details
emitZkgmRateLimitDisabledSetEvent
func(admin .uverse.address, disabled bool)- OID
- 01de13…f3e9:22
emitZkgmRateLimitDisabledSetEvent details
emitZkgmReceiverRegisteredEvent
func(receiverPkgPath string)- OID
- 01de13…f3e9:23
emitZkgmReceiverRegisteredEvent details
emitZkgmNativeReleasedEvent
func(callerPkgPath string, denom string, recipient .uverse.address, amount int64)- OID
- 01de13…f3e9:24
emitZkgmNativeReleasedEvent details
emitZkgmForwardInFlightSetEvent
func(packetHash types.H256, parentPacketHash types.H256)- OID
- 01de13…f3e9:25
emitZkgmForwardInFlightSetEvent details
emitZkgmForwardInFlightPoppedEvent
func(packetHash types.H256, found bool)- OID
- 01de13…f3e9:26
emitZkgmForwardInFlightPoppedEvent details
emitRecvError
func(sourceChannel types.ChannelId, destinationChannel types.ChannelId, reason string)- OID
- 01de13…f3e9:27
emitRecvError details
GetTokenBucket
func(denom string) (*tokenbucket.TokenBucket, .uverse.error)GetTokenBucket returns the rate-limit bucket for a denom.
- OID
- 01de13…f3e9:28
GetTokenBucket details
GetChannelBalanceV2
func(channelId types.ChannelId, path *uint256.Uint, baseToken string, quoteToken []uint8) (*uint256.Uint, .uverse.error)GetChannelBalanceV2 returns the escrow balance for a key.
- OID
- 01de13…f3e9:30
GetChannelBalanceV2 details
GetLockedTokenAmount
func(denom string) (*uint256.Uint, .uverse.error)GetLockedTokenAmount returns the total base-token amount permanently locked for a denom.
- OID
- 01de13…f3e9:31
GetLockedTokenAmount details
GetVoucherList
func(offset int, count int) ([]ucs03_zkgm.VoucherInfo, .uverse.error)GetVoucherList returns a page of up to count wrapped voucher tokens starting at offset, ordered by denom.
- OID
- 01de13…f3e9:32
GetVoucherList details
GetVoucherInfo
func(ibcDenom string) (ucs03_zkgm.VoucherInfo, .uverse.error)GetVoucherInfo returns a snapshot of the single wrapped voucher registered for ibcDenom.
- OID
- 01de13…f3e9:33
GetVoucherInfo details
GetVoucherSize
func() (int, .uverse.error)GetVoucherSize returns the total number of registered vouchers, i.e. the key count callers need to drive GetVoucherList's offset/count pagination.
- OID
- 01de13…f3e9:34
GetVoucherSize details
RegisterCoreApp
func()RegisterCoreApp registers the proxy App with core under the proxy pkgpath. core rejects re-registration, so the App identity is permanent once installed.
- OID
- 01de13…f3e9:35
RegisterCoreApp details
RegisterReceiver
func(receiver zkgm.Zkgmable)RegisterReceiver records the calling realm as an OP\_CALL receiver target, keyed by its package path. The impl looks it up via store.GetReceiver during call dispatch.
- OID
- 01de13…f3e9:37
RegisterReceiver details
store
*ucs03_zkgm.Store- OID
- 01de13…f3e9:68
store details
paused
boolValue
false
proxyPkgPath
stringValue
"gno.land/r/onbloc/ibc/union/apps/ucs03_zkgm"
proxyAddress
.uverse.addressValue
<gnolang.StringValue>
currentImplPath
stringValue
"gno.land/r/onbloc/ibc/union/apps/ucs03_zkgm/v1"
currentImpl
*v1.ucs03ZkgmV1- OID
- 0b8694…2e59:58
currentImpl details
implConstructors
map[string]func(...)- OID
- 01de13…f3e9:88
implConstructors details
init.59
func()- OID
- 01de13…f3e9:45
init.59 details
Store
typeValue
ucs03_zkgm.Store
NewStore
func() *ucs03_zkgm.Store- OID
- 01de13…f3e9:47
NewStore details
Send
func(channelId types.ChannelId, timeoutTimestamp types.Timestamp, salt [32]uint8, instruction zkgm.Instruction) types.Packet- OID
- 01de13…f3e9:48
Send details
SendRaw
func(channelId uint32, timeoutTimestamp uint64, saltHex string, version uint8, opcode uint8, operandHex string) types.PacketSendRaw sends a ZKGM packet from hex-encoded instruction fields. Use this entry point from gnokey maketx call (not maketx run) so OriginSend captures any native coins attached with -send for escrow-bearing instructions. - channelId: local source IBC channel id on this chain. - timeoutTimestamp: packet expiry in nanoseconds since the Unix epoch. - saltHex: 32-byte send salt as hex; an optional 0x prefix is accepted. - version: instruction version byte (e.g. 2 for TokenOrderV2). - opcode: instruction opcode (0=Forward, 1=Call, 2=Batch, 3=TokenOrder). - operandHex: ABI-encoded instruction operand as hex; 0x prefix optional.
- OID
- 01de13…f3e9:50
SendRaw details
parseHex
func(s string) ([]uint8, .uverse.error)- OID
- 01de13…f3e9:51
parseHex details
Version
untyped stringValue
"ucs03-zkgm-0"
IApp
typeValue
ucs03_zkgm.IApp
IAppIntent
typeValue
ucs03_zkgm.IAppIntent
IAppTransfer
typeIAppTransfer is the user-initiated send surface. zkgm is a general instruction protocol (token order / batch / call / forward), so Send takes a raw Instruction rather than a token-transfer shaped argument list.
Value
ucs03_zkgm.IAppTransfer
IAppVoucher
typeIAppVoucher is the wrapped-voucher self-service surface: it lets a holder grant an allowance or move their own balance directly, without exposing the mint/burn capability that Store's Voucher.Ledger() carries.
Value
ucs03_zkgm.IAppVoucher
IAppGetter
typeIAppGetter is the read-only query surface implemented by the impl and exposed by the proxy's getters.gno.
Value
ucs03_zkgm.IAppGetter
IStore
typeValue
ucs03_zkgm.IStore
ProxyPkgPath
func() string- OID
- 01de13…f3e9:52
ProxyPkgPath details
ProxyAddress
func() .uverse.address- OID
- 01de13…f3e9:54
ProxyAddress details
RegisterImpl
func(constructor func(...))RegisterImpl records an impl constructor under the calling realm's package path. It is called from the impl realm's init, so the path is permanent once installed: re-registration is rejected. The caller must be a sub-realm of this proxy (its path must be prefixed by the proxy path), matching core's host registration rule.
- OID
- 01de13…f3e9:55
RegisterImpl details
UpdateImpl
func(path string)UpdateImpl installs or re-points the implementation following the bootstrap and steady-state tiers of the trust model. It is admin-gated and injects the proxy-owned store into the registered constructor for path.
- OID
- 01de13…f3e9:56
UpdateImpl details
mustGetImpl
func() ucs03_zkgm.IAppmustGetImpl returns the installed impl, panicking until the first UpdateImpl.
- OID
- 01de13…f3e9:57
mustGetImpl details
Voucher
typeVoucher bundles a wrapped grc20 token, its private mint/burn ledger, and the origin token's decimal precision. It is proxy-owned state held in the Store, so its mint/burn rights survive impl upgrades. Packet amounts are in the origin token's decimals; the grc20 ledger holds them downscaled to the (possibly capped) ledger decimals, so they fit int64. MintScaled / BurnScaled / TransferScaled apply that downscale, so callers never combine the scale and the ledger by hand; the raw int64 ops stay reachable via Ledger(). SECURITY: those methods and Ledger() all hand out the mint/burn capability, so a \*Voucher must stay impl-gated. The Store is injected and never publicly returned, so untrusted realms can only read balances via VoucherBalanceOf.
Value
ucs03_zkgm.Voucher
NewVoucher
func(token *grc20.Token, ledger *grc20.PrivateLedger, originDecimals uint8) *ucs03_zkgm.VoucherNewVoucher is a crossing-safe constructor, so the impl realm can build one without tripping the foreign-composite-literal rule. originDecimals is the origin token's precision; the ledger token is created at min(originDecimals, ledger cap).
- OID
- 01de13…f3e9:58
NewVoucher details
VoucherInfo
typeVoucherInfo is a read-only snapshot of a wrapped voucher's grc20 identity for the voucher-list getter. It carries only scalar fields copied out of Voucher/Token — no token/ledger handles — so listing vouchers never hands out the mint/burn capability that \*Voucher.Ledger() exposes.
Value
ucs03_zkgm.VoucherInfo
NewVoucherInfo
func(denom string, name string, symbol string, originDecimals uint8, ledgerDecimals uint8, totalSupply int64) ucs03_zkgm.VoucherInfoNewVoucherInfo is a crossing-safe constructor, so the impl realm (and test doubles) can build one without tripping the foreign-composite-literal rule.
- OID
- 01de13…f3e9:60
NewVoucherInfo details
VoucherApprove
func(ibcDenom string, spender .uverse.address, amount int64)VoucherApprove lets the caller grant spender an allowance on their own wrapped-voucher balance for ibcDenom, so the voucher can be used through GRC20-composable flows (e.g. Gnoswap) that rely on TransferFrom.
- OID
- 01de13…f3e9:61
VoucherApprove details
VoucherTransfer
func(ibcDenom string, to .uverse.address, amount int64)VoucherTransfer lets the caller move their own wrapped-voucher balance for ibcDenom directly to another address.
- OID
- 01de13…f3e9:62
VoucherTransfer details
VoucherBalanceOf
func(ibcDenom string, addr .uverse.address) int64VoucherBalanceOf returns addr's wrapped-voucher balance for ibcDenom, or 0 if none. It reads the proxy-owned Store, so the balance survives impl upgrades and does not depend on grc20reg's key.
- OID
- 01de13…f3e9:63