account

package
v4.8.11+incompatible Latest Latest
Warning

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

Go to latest
Published: Oct 21, 2020 License: AGPL-3.0 Imports: 28 Imported by: 7

Documentation

Overview

Package account stores and tracks accounts within a Bytom Core.

Package account stores and tracks accounts within a Bytom Core.

Index

Constants

View Source
const (

	// HardenedKeyStart bip32 hierarchical deterministic wallets
	// keys with index ≥ 0x80000000 are hardened keys
	HardenedKeyStart = 0x80000000
)

Variables

View Source
var (
	ErrDuplicateAlias    = errors.New("Duplicate account alias")
	ErrDuplicateIndex    = errors.New("Duplicate account with same xPubs and index")
	ErrFindAccount       = errors.New("Failed to find account")
	ErrMarshalAccount    = errors.New("Failed to marshal account")
	ErrInvalidAddress    = errors.New("Invalid address")
	ErrFindCtrlProgram   = errors.New("Failed to find account control program")
	ErrDeriveRule        = errors.New("Invalid key derivation rule")
	ErrContractIndex     = errors.New("Exceeded maximum addresses per account")
	ErrAccountIndex      = errors.New("Exceeded maximum accounts per xpub")
	ErrFindTransaction   = errors.New("No transaction")
	ErrFindMiningAddress = errors.New("Failed to find mining address")
	ErrAccountIDEmpty    = errors.New("account_id is empty")
)

pre-define errors for supporting bytom errorFormatter

View Source
var (
	ErrInsufficient = errors.New("reservation found insufficient funds")
	ErrImmature     = errors.New("reservation found immature funds")
	ErrVoteLock     = errors.New("Locked by the vote")
	ErrReserved     = errors.New("reservation found outputs already reserved")
	ErrMatchUTXO    = errors.New("can't find utxo with given hash")
	ErrReservation  = errors.New("couldn't find reservation")
)

pre-define error types

Functions

func Annotated

func Annotated(a *Account) *query.AnnotatedAccount

Annotated init an annotated account object

func MergeSpendAction

func MergeSpendAction(actions []txbuilder.Action) []txbuilder.Action

MergeSpendAction merge common assetID and accountID spend action

func SpendAccountChain

func SpendAccountChain(ctx context.Context, builder *txbuilder.TemplateBuilder, action txbuilder.Action) ([]*txbuilder.Template, error)

SpendAccountChain build the spend action with auto merge utxo function

func UtxoToInputs

func UtxoToInputs(signer *signers.Signer, u *UTXO) (*types.TxInput, *txbuilder.SigningInstruction, error)

UtxoToInputs convert an utxo to the txinput

Types

type Account

type Account struct {
	*signers.Signer
	ID    string `json:"id"`
	Alias string `json:"alias"`
}

Account is structure of Bytom account

func CreateAccount

func CreateAccount(xpubs []chainkd.XPub, quorum int, alias string, acctIndex uint64, deriveRule uint8) (*Account, error)

CreateAccount creates a new Account.

type AccountStore added in v0.3.0

type AccountStore interface {
	InitBatch() AccountStore
	CommitBatch() error
	DeleteAccount(*Account) error
	DeleteStandardUTXO(bc.Hash)
	GetAccountByAlias(string) (*Account, error)
	GetAccountByID(string) (*Account, error)
	GetAccountIndex([]chainkd.XPub) uint64
	GetBip44ContractIndex(string, bool) uint64
	GetCoinbaseArbitrary() []byte
	GetContractIndex(string) uint64
	GetControlProgram(bc.Hash) (*CtrlProgram, error)
	GetMiningAddress() (*CtrlProgram, error)
	GetUTXO(bc.Hash) (*UTXO, error)
	ListAccounts(string) ([]*Account, error)
	ListControlPrograms() ([]*CtrlProgram, error)
	ListUTXOs() ([]*UTXO, error)
	SetAccount(*Account) error
	SetAccountIndex(*Account)
	SetBip44ContractIndex(string, bool, uint64)
	SetCoinbaseArbitrary([]byte)
	SetContractIndex(string, uint64)
	SetControlProgram(bc.Hash, *CtrlProgram) error
	SetMiningAddress(*CtrlProgram) error
	SetStandardUTXO(bc.Hash, *UTXO) error
}

AccountStore interface contains account storage functions.

type CtrlProgram

type CtrlProgram struct {
	AccountID      string
	Address        string
	KeyIndex       uint64
	ControlProgram []byte
	Change         bool // Mark whether this control program is for UTXO change
}

CtrlProgram is structure of account control program

func CreateCtrlProgram

func CreateCtrlProgram(account *Account, addrIdx uint64, change bool) (cp *CtrlProgram, err error)

CreateCtrlProgram generate an address for the select account

type Image

type Image struct {
	Slice []*ImageSlice `json:"slices"`
}

Image is the struct for hold export account data

type ImageSlice

type ImageSlice struct {
	Account       *Account `json:"account"`
	ContractIndex uint64   `json:"contract_index"`
}

ImageSlice record info of single account

type Manager

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

Manager stores accounts and their associated control programs.

func NewManager

func NewManager(store AccountStore, chain *protocol.Chain) *Manager

NewManager creates a new account manager

func (*Manager) AddUnconfirmedUtxo

func (m *Manager) AddUnconfirmedUtxo(utxos []*UTXO)

AddUnconfirmedUtxo add untxo list to utxoKeeper

func (*Manager) Backup

func (m *Manager) Backup() (*Image, error)

Backup export all the account info into image

func (*Manager) BuildBtmTxChain added in v0.3.0

func (m *Manager) BuildBtmTxChain(utxos []*UTXO, signer *signers.Signer) ([]*txbuilder.Template, *UTXO, error)

func (*Manager) Create

func (m *Manager) Create(xpubs []chainkd.XPub, quorum int, alias string, deriveRule uint8) (*Account, error)

Create creates and save a new Account.

func (*Manager) CreateAddress

func (m *Manager) CreateAddress(accountID string, change bool) (cp *CtrlProgram, err error)

CreateAddress generate an address for the select account

func (*Manager) CreateBatchAddresses

func (m *Manager) CreateBatchAddresses(accountID string, change bool, stopIndex uint64) error

CreateBatchAddresses generate a batch of addresses for the select account

func (*Manager) DecodeSpendAction

func (m *Manager) DecodeSpendAction(data []byte) (txbuilder.Action, error)

DecodeSpendAction unmarshal JSON-encoded data of spend action

func (*Manager) DecodeSpendUTXOAction

func (m *Manager) DecodeSpendUTXOAction(data []byte) (txbuilder.Action, error)

DecodeSpendUTXOAction unmarshal JSON-encoded data of spend utxo action

func (*Manager) DecodeVetoAction

func (m *Manager) DecodeVetoAction(data []byte) (txbuilder.Action, error)

DecodeVetoAction unmarshal JSON-encoded data of spend action

func (*Manager) DeleteAccount

func (m *Manager) DeleteAccount(accountID string) error

DeleteAccount deletes the account's ID or alias matching account ID.

func (*Manager) DeleteStandardUTXO added in v0.3.0

func (m *Manager) DeleteStandardUTXO(outputID bc.Hash)

func (*Manager) FindByAlias

func (m *Manager) FindByAlias(alias string) (*Account, error)

FindByAlias retrieves an account's Signer record by its alias

func (*Manager) FindByID

func (m *Manager) FindByID(id string) (*Account, error)

FindByID returns an account's Signer record by its ID.

func (*Manager) GetAccountByProgram

func (m *Manager) GetAccountByProgram(program *CtrlProgram) (*Account, error)

GetAccountByProgram return Account by given CtrlProgram

func (*Manager) GetAccountByXPubsIndex

func (m *Manager) GetAccountByXPubsIndex(xPubs []chainkd.XPub, index uint64) (*Account, error)

GetAccountByXPubsIndex get account by xPubs and index

func (*Manager) GetAliasByID

func (m *Manager) GetAliasByID(id string) string

GetAliasByID return the account alias by given ID

func (*Manager) GetBip44ContractIndex

func (m *Manager) GetBip44ContractIndex(accountID string, change bool) uint64

GetBip44ContractIndex return the current bip44 contract index

func (*Manager) GetCoinbaseArbitrary

func (m *Manager) GetCoinbaseArbitrary() []byte

func (*Manager) GetCoinbaseControlProgram

func (m *Manager) GetCoinbaseControlProgram() ([]byte, error)

GetCoinbaseControlProgram will return a coinbase script

func (*Manager) GetCoinbaseCtrlProgram

func (m *Manager) GetCoinbaseCtrlProgram() (*CtrlProgram, error)

GetCoinbaseCtrlProgram will return the coinbase CtrlProgram

func (*Manager) GetContractIndex

func (m *Manager) GetContractIndex(accountID string) uint64

func (*Manager) GetControlProgram added in v0.3.0

func (m *Manager) GetControlProgram(hash bc.Hash) (*CtrlProgram, error)

func (*Manager) GetLocalCtrlProgramByAddress

func (m *Manager) GetLocalCtrlProgramByAddress(address string) (*CtrlProgram, error)

GetLocalCtrlProgramByAddress return CtrlProgram by given address

func (*Manager) GetMiningAddress

func (m *Manager) GetMiningAddress() (string, error)

GetMiningAddress will return the mining address

func (*Manager) IsLocalControlProgram

func (m *Manager) IsLocalControlProgram(prog []byte) bool

IsLocalControlProgram check is the input control program belong to local

func (*Manager) ListAccounts

func (m *Manager) ListAccounts(id string) ([]*Account, error)

ListAccounts will return the accounts in the db

func (*Manager) ListControlProgram

func (m *Manager) ListControlProgram() ([]*CtrlProgram, error)

ListControlProgram return all the local control program

func (*Manager) ListUnconfirmedUtxo

func (m *Manager) ListUnconfirmedUtxo(accountID string, isSmartContract bool) []*UTXO

func (*Manager) RemoveUnconfirmedUtxo

func (m *Manager) RemoveUnconfirmedUtxo(hashes []*bc.Hash)

RemoveUnconfirmedUtxo remove utxos from the utxoKeeper

func (*Manager) Restore

func (m *Manager) Restore(image *Image) error

Restore import the accountImages into account manage

func (*Manager) SaveAccount

func (m *Manager) SaveAccount(account *Account) error

SaveAccount save a new account.

func (*Manager) SaveControlPrograms

func (m *Manager) SaveControlPrograms(progs ...*CtrlProgram) error

SaveControlPrograms save account control programs

func (*Manager) SetCoinbaseArbitrary

func (m *Manager) SetCoinbaseArbitrary(arbitrary []byte)

func (*Manager) SetMiningAddress

func (m *Manager) SetMiningAddress(miningAddress string) (string, error)

SetMiningAddress will set the mining address

func (*Manager) SetStandardUTXO added in v0.3.0

func (m *Manager) SetStandardUTXO(outputID bc.Hash, utxo *UTXO) error

func (*Manager) UpdateAccountAlias

func (m *Manager) UpdateAccountAlias(accountID string, newAlias string) error

type UTXO

type UTXO struct {
	OutputID            bc.Hash
	SourceID            bc.Hash
	AssetID             bc.AssetID
	Amount              uint64
	SourcePos           uint64
	ControlProgram      []byte
	Vote                []byte
	AccountID           string
	Address             string
	ControlProgramIndex uint64
	ValidHeight         uint64
	Change              bool
}

UTXO describes an individual account utxo.

Jump to

Keyboard shortcuts

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