diff --git a/cli/wallet/nep5.go b/cli/wallet/nep5.go index 803e2b7f7..5228e55a4 100644 --- a/cli/wallet/nep5.go +++ b/cli/wallet/nep5.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "io/ioutil" + "strings" "github.com/nspcc-dev/neo-go/cli/flags" "github.com/nspcc-dev/neo-go/cli/options" @@ -16,6 +17,11 @@ import ( "github.com/urfave/cli" ) +var ( + neoToken = wallet.NewToken(client.NeoContractHash, "NEO", "neo", 0) + gasToken = wallet.NewToken(client.GasContractHash, "GAS", "gas", 8) +) + func newNEP5Commands() []cli.Command { balanceFlags := []cli.Flag{ walletPathFlag, @@ -163,6 +169,12 @@ func getNEP5Balance(ctx *cli.Context) error { } func getMatchingToken(w *wallet.Wallet, name string) (*wallet.Token, error) { + switch strings.ToLower(name) { + case "neo": + return neoToken, nil + case "gas": + return gasToken, nil + } return getMatchingTokenAux(func(i int) *wallet.Token { return w.Extra.Tokens[i] }, len(w.Extra.Tokens), name) diff --git a/pkg/rpc/client/nep5.go b/pkg/rpc/client/nep5.go index 0b6bd44a2..1813333e7 100644 --- a/pkg/rpc/client/nep5.go +++ b/pkg/rpc/client/nep5.go @@ -16,6 +16,13 @@ import ( "github.com/nspcc-dev/neo-go/pkg/wallet" ) +var ( + // NeoContractHash is a hash of the NEO native contract. + NeoContractHash, _ = util.Uint160DecodeStringBE("3b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c") + // GasContractHash is a hash of the GAS native contract. + GasContractHash, _ = util.Uint160DecodeStringBE("897720d8cd76f4f00abfa37c0edd889c208fde9b") +) + // NEP5Decimals invokes `decimals` NEP5 method on a specified contract. func (c *Client) NEP5Decimals(tokenHash util.Uint160) (int64, error) { result, err := c.InvokeFunction(tokenHash.StringLE(), "decimals", []smartcontract.Parameter{}, nil)