wallet

package
v1.3.1 Latest Latest
Warning

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

Go to latest
Published: Dec 19, 2017 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SiagFileExtension = ".siakey"

	// The header for all siag files. Do not change. Because siag was created
	// early in development, compatibility with siag requires manually handling
	// the headers and version instead of using the persist package.
	SiagFileHeader = "siag"

	SiagFileVersion = "1.0"
)
View Source
const (
	// RespendTimeout records the number of blocks that the wallet will wait
	// before spending an output that has been spent in the past. If the
	// transaction spending the output has not made it to the transaction pool
	// after the limit, the assumption is that it never will.
	RespendTimeout = 40
)

Variables

View Source
var (
	ErrInconsistentKeys = errors.New("keyfiles provided that are for different addresses")
	ErrInsufficientKeys = errors.New("not enough keys provided to spend the siafunds")
	ErrNoKeyfile        = errors.New("no keyfile has been presented")
	ErrUnknownHeader    = errors.New("file contains the wrong header")
	ErrUnknownVersion   = errors.New("file has an unknown version number")
)

Functions

This section is empty.

Types

type Dependencies added in v1.3.1

type Dependencies interface {
	// disrupt can be inserted in the code as a way to inject problems,
	Disrupt(string) bool
}

Dependencies defines all of the dependencies of the Host.

type ProductionDependencies added in v1.3.1

type ProductionDependencies struct{}

ProductionDependencies is an empty struct

func (*ProductionDependencies) Disrupt added in v1.3.1

Disrupt will always return false, but can be over-written during testing to trigger disruptions.

type Wallet

type Wallet struct {
	// contains filtered or unexported fields
}

Wallet is an object that tracks balances, creates keys and addresses, manages building and sending transactions.

func New

func New(cs modules.ConsensusSet, tpool modules.TransactionPool, persistDir string) (*Wallet, error)

New creates a new wallet, loading any known addresses from the input file name and then using the file to save in the future. Keys and addresses are not loaded into the wallet during the call to 'new', but rather during the call to 'Unlock'.

func (*Wallet) AddressTransactions added in v1.0.0

func (w *Wallet) AddressTransactions(uh types.UnlockHash) (pts []modules.ProcessedTransaction)

AddressTransactions returns all of the wallet transactions associated with a single unlock hash.

func (*Wallet) AddressUnconfirmedTransactions added in v1.0.0

func (w *Wallet) AddressUnconfirmedTransactions(uh types.UnlockHash) (pts []modules.ProcessedTransaction)

AddressUnconfirmedHistory returns all of the unconfirmed wallet transactions related to a specific address.

func (*Wallet) AllAddresses added in v1.0.0

func (w *Wallet) AllAddresses() []types.UnlockHash

AllAddresses returns all addresses that the wallet is able to spend from, including unseeded addresses. Addresses are returned sorted in byte-order.

func (*Wallet) AllSeeds added in v1.0.0

func (w *Wallet) AllSeeds() ([]modules.Seed, error)

AllSeeds returns a list of all seeds known to and used by the wallet.

func (*Wallet) ChangeKey added in v1.2.2

func (w *Wallet) ChangeKey(masterKey crypto.TwofishKey, newKey crypto.TwofishKey) error

ChangeKey changes the wallet's encryption key from masterKey to newKey.

func (*Wallet) Close added in v0.3.1

func (w *Wallet) Close() error

Close terminates all ongoing processes involving the wallet, enabling garbage collection.

func (*Wallet) ConfirmedBalance added in v1.0.0

func (w *Wallet) ConfirmedBalance() (siacoinBalance types.Currency, siafundBalance types.Currency, siafundClaimBalance types.Currency)

ConfirmedBalance returns the balance of the wallet according to all of the confirmed transactions.

func (*Wallet) CreateBackup added in v1.0.0

func (w *Wallet) CreateBackup(backupFilepath string) error

CreateBackup creates a backup file at the desired filepath.

func (*Wallet) DustThreshold added in v1.3.1

func (w *Wallet) DustThreshold() types.Currency

DustThreshold returns the quantity per byte below which a Currency is considered to be Dust.

func (*Wallet) Encrypt added in v1.0.0

func (w *Wallet) Encrypt(masterKey crypto.TwofishKey) (modules.Seed, error)

Encrypt will create a primary seed for the wallet and encrypt it using masterKey. If masterKey is blank, then the hash of the primary seed will be used instead. The wallet will still be locked after Encrypt is called.

Encrypt can only be called once throughout the life of the wallet, and will return an error on subsequent calls (even after restarting the wallet). To reset the wallet, the wallet files must be moved to a different directory or deleted.

func (*Wallet) Encrypted added in v1.0.0

func (w *Wallet) Encrypted() bool

Encrypted returns whether or not the wallet has been encrypted.

func (*Wallet) InitFromSeed added in v1.2.0

func (w *Wallet) InitFromSeed(masterKey crypto.TwofishKey, seed modules.Seed) error

InitFromSeed functions like Init, but using a specified seed. Unlike Init, the blockchain will be scanned to determine the seed's progress. For this reason, InitFromSeed should not be called until the blockchain is fully synced.

func (*Wallet) Load033xWallet added in v1.0.0

func (w *Wallet) Load033xWallet(masterKey crypto.TwofishKey, filepath033x string) error

Load033xWallet loads a v0.3.3.x wallet as an unseeded key, such that the funds become spendable to the current wallet.

func (*Wallet) LoadSeed added in v1.0.0

func (w *Wallet) LoadSeed(masterKey crypto.TwofishKey, seed modules.Seed) error

LoadSeed will track all of the addresses generated by the input seed, reclaiming any funds that were lost due to a deleted file or lost encryption key. An error will be returned if the seed has already been integrated with the wallet.

func (*Wallet) LoadSiagKeys added in v1.0.0

func (w *Wallet) LoadSiagKeys(masterKey crypto.TwofishKey, keyfiles []string) error

LoadSiagKeys loads a set of siag-generated keys into the wallet.

func (*Wallet) Lock added in v1.0.0

func (w *Wallet) Lock() error

Lock will erase all keys from memory and prevent the wallet from spending coins until it is unlocked.

func (*Wallet) NextAddress added in v1.0.0

func (w *Wallet) NextAddress() (types.UnlockConditions, error)

NextAddress returns an unlock hash that is ready to receive siacoins or siafunds. The address is generated using the primary address seed.

func (*Wallet) PrimarySeed added in v1.0.0

func (w *Wallet) PrimarySeed() (modules.Seed, uint64, error)

PrimarySeed returns the decrypted primary seed of the wallet, as well as the number of addresses that the seed can be safely used to generate.

func (*Wallet) ProcessConsensusChange added in v1.0.0

func (w *Wallet) ProcessConsensusChange(cc modules.ConsensusChange)

ProcessConsensusChange parses a consensus change to update the set of confirmed outputs known to the wallet.

func (*Wallet) ReceiveUpdatedUnconfirmedTransactions added in v1.0.0

func (w *Wallet) ReceiveUpdatedUnconfirmedTransactions(diff *modules.TransactionPoolDiff)

ReceiveUpdatedUnconfirmedTransactions updates the wallet's unconfirmed transaction set.

func (*Wallet) RegisterTransaction

func (w *Wallet) RegisterTransaction(t types.Transaction, parents []types.Transaction) modules.TransactionBuilder

RegisterTransaction takes a transaction and its parents and returns a modules.TransactionBuilder which can be used to expand the transaction. The most typical call is 'RegisterTransaction(types.Transaction{}, nil)', which registers a new transaction without parents.

func (*Wallet) Rescanning added in v1.2.2

func (w *Wallet) Rescanning() bool

Rescanning reports whether the wallet is currently rescanning the blockchain.

func (*Wallet) Reset added in v1.2.0

func (w *Wallet) Reset() error

Reset will reset the wallet, clearing the database and returning it to the unencrypted state. Reset can only be called on a wallet that has already been encrypted.

func (*Wallet) SendSiacoins added in v1.0.0

func (w *Wallet) SendSiacoins(amount types.Currency, dest types.UnlockHash) (txns []types.Transaction, err error)

SendSiacoins creates a transaction sending 'amount' to 'dest'. The transaction is submitted to the transaction pool and is also returned.

func (*Wallet) SendSiacoinsMulti added in v1.3.0

func (w *Wallet) SendSiacoinsMulti(outputs []types.SiacoinOutput) (txns []types.Transaction, err error)

SendSiacoinsMulti creates a transaction that includes the specified outputs. The transaction is submitted to the transaction pool and is also returned.

func (*Wallet) SendSiafunds added in v1.0.0

func (w *Wallet) SendSiafunds(amount types.Currency, dest types.UnlockHash) ([]types.Transaction, error)

SendSiafunds creates a transaction sending 'amount' to 'dest'. The transaction is submitted to the transaction pool and is also returned.

func (*Wallet) StartTransaction added in v1.0.0

func (w *Wallet) StartTransaction() modules.TransactionBuilder

StartTransaction is a convenience function that calls RegisterTransaction(types.Transaction{}, nil).

func (*Wallet) SweepSeed added in v1.2.0

func (w *Wallet) SweepSeed(seed modules.Seed) (coins, funds types.Currency, err error)

SweepSeed scans the blockchain for outputs generated from seed and creates a transaction that transfers them to the wallet. Note that this incurs a transaction fee. It returns the total value of the outputs, minus the fee. If only siafunds were found, the fee is deducted from the wallet.

func (*Wallet) Transaction added in v1.0.0

func (w *Wallet) Transaction(txid types.TransactionID) (pt modules.ProcessedTransaction, found bool)

Transaction returns the transaction with the given id. 'False' is returned if the transaction does not exist.

func (*Wallet) Transactions added in v1.0.0

func (w *Wallet) Transactions(startHeight, endHeight types.BlockHeight) (pts []modules.ProcessedTransaction, err error)

Transactions returns all transactions relevant to the wallet that were confirmed in the range [startHeight, endHeight].

func (*Wallet) UnconfirmedBalance added in v1.0.0

func (w *Wallet) UnconfirmedBalance() (outgoingSiacoins types.Currency, incomingSiacoins types.Currency)

UnconfirmedBalance returns the number of outgoing and incoming siacoins in the unconfirmed transaction set. Refund outputs are included in this reporting.

func (*Wallet) UnconfirmedTransactions added in v1.0.0

func (w *Wallet) UnconfirmedTransactions() []modules.ProcessedTransaction

UnconfirmedTransactions returns the set of unconfirmed transactions that are relevant to the wallet.

func (*Wallet) Unlock added in v1.0.0

func (w *Wallet) Unlock(masterKey crypto.TwofishKey) error

Unlock will decrypt the wallet seed and load all of the addresses into memory.

func (*Wallet) Unlocked added in v1.0.0

func (w *Wallet) Unlocked() bool

Unlocked indicates whether the wallet is locked or unlocked.

Jump to

Keyboard shortcuts

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