wallet

package
v0.102.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 6, 2023 License: MIT Imports: 14 Imported by: 30

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Account

type Account struct {

	// NEO public address.
	Address string `json:"address"`

	// Encrypted WIF of the account also known as the key.
	EncryptedWIF string `json:"key"`

	// Label is a label the user had made for this account.
	Label string `json:"label"`

	// Contract is a Contract object which describes the details of the contract.
	// This field can be null (for watch-only address).
	Contract *Contract `json:"contract"`

	// Indicates whether the account is locked by the user.
	// the client shouldn't spend the funds in a locked account.
	Locked bool `json:"lock"`

	// Indicates whether the account is the default change account.
	Default bool `json:"isDefault"`
	// contains filtered or unexported fields
}

Account represents a NEO account. It holds the private and the public key along with some metadata.

func NewAccount

func NewAccount() (*Account, error)

NewAccount creates a new Account with a random generated PrivateKey.

func NewAccountFromEncryptedWIF

func NewAccountFromEncryptedWIF(wif string, pass string, scrypt keys.ScryptParams) (*Account, error)

NewAccountFromEncryptedWIF creates a new Account from the given encrypted WIF.

func NewAccountFromPrivateKey added in v0.92.0

func NewAccountFromPrivateKey(p *keys.PrivateKey) *Account

NewAccountFromPrivateKey creates a wallet from the given PrivateKey.

func NewAccountFromWIF

func NewAccountFromWIF(wif string) (*Account, error)

NewAccountFromWIF creates a new Account from the given WIF.

func (*Account) CanSign added in v0.99.3

func (a *Account) CanSign() bool

CanSign returns true when account is not locked and has a decrypted private key inside, so it's ready to create real signatures.

func (*Account) Close added in v0.99.3

func (a *Account) Close()

Close cleans up the private key used by Account and disassociates it from Account. The Account can no longer sign anything after this call, but Decrypt can make it usable again.

func (*Account) ConvertMultisig

func (a *Account) ConvertMultisig(m int, pubs []*keys.PublicKey) error

ConvertMultisig sets a's contract to multisig contract with m sufficient signatures.

func (*Account) Decrypt

func (a *Account) Decrypt(passphrase string, scrypt keys.ScryptParams) error

Decrypt decrypts the EncryptedWIF with the given passphrase returning error if anything goes wrong. After the decryption Account can be used to sign things unless it's locked. Don't decrypt the key unless you want to sign something and don't forget to call Close after use for maximum safety.

func (*Account) Encrypt

func (a *Account) Encrypt(passphrase string, scrypt keys.ScryptParams) error

Encrypt encrypts the wallet's PrivateKey with the given passphrase under the NEP-2 standard.

func (*Account) GetVerificationScript added in v0.93.0

func (a *Account) GetVerificationScript() []byte

GetVerificationScript returns account's verification script.

func (*Account) PrivateKey

func (a *Account) PrivateKey() *keys.PrivateKey

PrivateKey returns private key corresponding to the account if it's unlocked. Please be very careful when using it, do not copy its contents and do not keep a pointer to it unless you absolutely need to. Most of the time you can use other methods (PublicKey, ScriptHash, SignHashable) depending on your needs and it'll be safer this way.

func (*Account) PublicKey added in v0.99.3

func (a *Account) PublicKey() *keys.PublicKey

PublicKey returns the public key associated with the private key corresponding to the account. It can return nil if account is locked (use CanSign to check).

func (*Account) ScriptHash added in v0.99.3

func (a *Account) ScriptHash() util.Uint160

ScriptHash returns the script hash (account) that the Account.Address is derived from. It never returns an error, so if this Account has an invalid Address you'll just get a zero script hash.

func (*Account) SignHashable added in v0.99.3

func (a *Account) SignHashable(net netmode.Magic, item hash.Hashable) []byte

SignHashable signs the given Hashable item and returns the signature. If this account can't sign (CanSign() returns false) nil is returned.

func (*Account) SignTx

func (a *Account) SignTx(net netmode.Magic, t *transaction.Transaction) error

SignTx signs transaction t and updates it's Witnesses.

type Contract

type Contract struct {
	// Script of the contract deployed on the blockchain.
	Script []byte `json:"script"`

	// A list of parameters used deploying this contract.
	Parameters []ContractParam `json:"parameters"`

	// Indicates whether the contract has been deployed to the blockchain.
	Deployed bool `json:"deployed"`
}

Contract represents a subset of the smartcontract to embed in the Account so it's NEP-6 compliant.

func (Contract) ScriptHash

func (c Contract) ScriptHash() util.Uint160

ScriptHash returns the hash of contract's script.

type ContractParam

type ContractParam struct {
	Name string                  `json:"name"`
	Type smartcontract.ParamType `json:"type"`
}

ContractParam is a descriptor of a contract parameter containing type and optional name.

type Extra

type Extra struct {
	// Tokens is a list of imported token contracts.
	Tokens []*Token
}

Extra stores imported token contracts.

type Token

type Token struct {
	Name     string       `json:"name"`
	Hash     util.Uint160 `json:"script_hash"`
	Decimals int64        `json:"decimals"`
	Symbol   string       `json:"symbol"`
	Standard string       `json:"standard"`
}

Token represents an imported token contract.

func NewToken

func NewToken(tokenHash util.Uint160, name, symbol string, decimals int64, standardName string) *Token

NewToken returns the new token contract info.

func (*Token) Address

func (t *Token) Address() string

Address returns token address from hash.

type Wallet

type Wallet struct {
	// Version of the wallet, used for later upgrades.
	Version string `json:"version"`

	// A list of accounts which describes the details of each account
	// in the wallet.
	Accounts []*Account `json:"accounts"`

	Scrypt keys.ScryptParams `json:"scrypt"`

	// Extra metadata can be used for storing arbitrary data.
	// This field can be empty.
	Extra Extra `json:"extra"`
	// contains filtered or unexported fields
}

Wallet represents a NEO (NEP-2, NEP-6) compliant wallet.

func NewWallet

func NewWallet(location string) (*Wallet, error)

NewWallet creates a new NEO wallet at the given location.

func NewWalletFromFile

func NewWalletFromFile(path string) (*Wallet, error)

NewWalletFromFile creates a Wallet from the given wallet file path.

func (*Wallet) AddAccount

func (w *Wallet) AddAccount(acc *Account)

AddAccount adds an existing Account to the wallet.

func (*Wallet) AddToken

func (w *Wallet) AddToken(tok *Token)

AddToken adds a new token to a wallet.

func (*Wallet) Close

func (w *Wallet) Close()

Close closes all Wallet accounts making them incapable of signing anything (unless they're decrypted again). It's not doing anything to the underlying wallet file.

func (*Wallet) CreateAccount

func (w *Wallet) CreateAccount(name, passphrase string) error

CreateAccount generates a new account for the end user and encrypts the private key with the given passphrase.

func (*Wallet) GetAccount

func (w *Wallet) GetAccount(h util.Uint160) *Account

GetAccount returns an account corresponding to the provided scripthash.

func (*Wallet) GetChangeAddress

func (w *Wallet) GetChangeAddress() util.Uint160

GetChangeAddress returns the default address to send transaction's change to.

func (*Wallet) JSON

func (w *Wallet) JSON() ([]byte, error)

JSON outputs a pretty JSON representation of the wallet.

func (*Wallet) Path

func (w *Wallet) Path() string

Path returns the location of the wallet on the filesystem.

func (*Wallet) RemoveAccount

func (w *Wallet) RemoveAccount(addr string) error

RemoveAccount removes an Account with the specified addr from the wallet.

func (*Wallet) RemoveToken

func (w *Wallet) RemoveToken(h util.Uint160) error

RemoveToken removes the token with the specified hash from the wallet.

func (*Wallet) Save

func (w *Wallet) Save() error

Save saves the wallet data. It's the internal io.ReadWriter that is responsible for saving the data. This can be a buffer, file, etc..

func (*Wallet) SavePretty added in v0.99.1

func (w *Wallet) SavePretty() error

SavePretty saves the wallet in a beautiful JSON.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL