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/akkadia/beta/abt

Realm
Open in gnoweb ↗

Overview

Kind
Realm (renderable)
Name
abt
Namespace
akkadia / beta
Files
10 (gnomod.toml)
Exported functions
13
Module
gno.land/r/akkadia/beta/abt
gno
0.9
This realm implements a recognized token.abt →

Files (10)

  • gnomod.tomltoml
  • abt.gnogno
  • render.gnogno
  • abt_test.gnogno
  • events_filetest.gnogno
  • external_test.gnogno
  • render_test.gnogno
  • security_test.gnogno
  • setup_test.gnogno
  • transfer_test.gnogno
  • transfer_test.gnogno
    1package abt23import (4	"testing"56	"gno.land/p/nt/uassert/v0"7)8

    Functions

    • Allowance(owner string, spender string) int64

    • Approve(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}, spender string, amount int64)

    • BalanceOf(owner string) int64

    • GetDecimals() int

    • GetName() string

    • GetSymbol() string

    • IsFrozen() bool

    • Mint(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}, to string, amount int64)

    • Render(path string) string

    • SetFrozen(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}, value bool)

    • TotalSupply() int64

    • 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}, to string, amount int64)

    • TransferFrom(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}, from string, to string, amount int64)

    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.

    9func TestTransferFailuresPreserveState(cur realm, t *testing.T) {
    10 cases := []struct {
    11 name string
    12 caller address
    13 call func(_ int, rlm realm)
    14 panicMsg string
    15 }{
    16 {"transfer address", abtTest.Owner, func(_ int, rlm realm) { Transfer(cross(rlm), address("bad"), 1) }, "abt transfer failed: invalid address"},
    17 {"transfer negative", abtTest.Owner, func(_ int, rlm realm) { Transfer(cross(rlm), abtTest.Other, -1) }, "abt transfer failed: invalid amount"},
    18 {"transfer balance", abtTest.Owner, func(_ int, rlm realm) { Transfer(cross(rlm), abtTest.Other, 11) }, "abt transfer failed: insufficient balance"},
    19 {"transfer self", abtTest.Owner, func(_ int, rlm realm) { Transfer(cross(rlm), abtTest.Owner, 1) }, "abt transfer failed: cannot send transfer to self"},
    20 {"approve address", abtTest.Owner, func(_ int, rlm realm) { Approve(cross(rlm), address(""), 1) }, "abt approval failed: invalid address"},
    21 {"approve negative", abtTest.Owner, func(_ int, rlm realm) { Approve(cross(rlm), abtTest.Other, -1) }, "abt approval failed: invalid amount"},
    22 {"transferFrom owner", abtTest.Other, func(_ int, rlm realm) { TransferFrom(cross(rlm), address(""), abtTest.Admin, 1) }, "abt transfer failed: invalid address"},
    23 {"transferFrom recipient", abtTest.Other, func(_ int, rlm realm) { TransferFrom(cross(rlm), abtTest.Owner, address("bad"), 1) }, "abt transfer failed: invalid address"},
    24 {"transferFrom negative", abtTest.Other, func(_ int, rlm realm) { TransferFrom(cross(rlm), abtTest.Owner, abtTest.Admin, -1) }, "abt transfer failed: invalid amount"},
    25 {"transferFrom allowance", abtTest.Other, func(_ int, rlm realm) { TransferFrom(cross(rlm), abtTest.Owner, abtTest.Admin, 6) }, "abt transfer failed: insufficient allowance"},
    26 {"transferFrom balance", abtTest.Other, func(_ int, rlm realm) { TransferFrom(cross(rlm), abtTest.Owner, abtTest.Admin, 11) }, "abt transfer failed: insufficient balance"},
    27 {"transferFrom self", abtTest.Other, func(_ int, rlm realm) { TransferFrom(cross(rlm), abtTest.Owner, abtTest.Owner, 1) }, "abt transfer failed: cannot send transfer to self"},
    28 }
    29 for _, tc := range cases {
    30 t.Run(tc.name, func(cur realm, t *testing.T) {
    31 setupABT(cross(cur), t)
    32 testing.SetRealm(testing.NewUserRealm(abtTest.Admin))
    33 Mint(cross(cur), abtTest.Owner, 10)
    34 SetFrozen(cross(cur), false)
    35 testing.SetOriginCaller(abtTest.Owner)
    36 testing.SetRealm(testing.NewUserRealm(abtTest.Owner))
    37 Approve(cross(cur), abtTest.Other, 5)
    38 testing.SetOriginCaller(tc.caller)
    39 testing.SetRealm(testing.NewUserRealm(tc.caller))
    40 uassert.AbortsWithMessage(t, cur, tc.panicMsg, func() { tc.call(0, cur) })
    41 uassert.Equal(t, int64(10), TotalSupply())
    42 uassert.Equal(t, int64(10), BalanceOf(abtTest.Owner))
    43 uassert.Equal(t, int64(0), BalanceOf(abtTest.Other))
    44 uassert.Equal(t, int64(0), BalanceOf(abtTest.Admin))
    45 uassert.Equal(t, int64(5), Allowance(abtTest.Owner, abtTest.Other))
    46 })
    47 }
    48}
    49
    50func TestZeroTransfers(cur realm, t *testing.T) {
    51 setupABT(cross(cur), t)
    52 testing.SetRealm(testing.NewUserRealm(abtTest.Admin))
    53 SetFrozen(cross(cur), false)
    54 testing.SetOriginCaller(abtTest.Owner)
    55 testing.SetRealm(testing.NewUserRealm(abtTest.Owner))
    56 Transfer(cross(cur), abtTest.Other, 0)
    57 TransferFrom(cross(cur), abtTest.Other, abtTest.Admin, 0)
    58 uassert.Equal(t, int64(0), TotalSupply())
    59 uassert.Equal(t, int64(0), BalanceOf(abtTest.Other))
    60 uassert.Equal(t, int64(0), Allowance(abtTest.Other, abtTest.Owner))
    61}
    62