account

package
v0.0.0-...-9eea1c9 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2019 License: AGPL-3.0 Imports: 25 Imported by: 0

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 (
	//UTXOPreFix is StandardUTXOKey prefix
	UTXOPreFix = "ACU:"
	//SUTXOPrefix is ContractUTXOKey prefix
	SUTXOPrefix = "SCU:"
)

Variables

View Source
var (
	ErrDuplicateAlias  = errors.New("duplicate account alias")
	ErrFindAccount     = errors.New("fail to find account")
	ErrMarshalAccount  = errors.New("failed marshal account")
	ErrInvalidAddress  = errors.New("invalid address")
	ErrFindCtrlProgram = errors.New("fail to find account control program")
)

pre-define errors for supporting bytom errorFormatter

View Source
var (
	ErrInsufficient = errors.New("reservation found insufficient funds")
	ErrImmature     = errors.New("reservation found immature funds")
	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

View Source
var (
	CoinbaseAbKey = []byte("CoinbaseArbitrary")
)

Functions

func Annotated

func Annotated(a *Account) *query.AnnotatedAccount

Annotated init an annotated account object

func ContractKey

func ContractKey(hash common.Hash) []byte

ContractKey account control promgram store prefix

func ContractUTXOKey

func ContractUTXOKey(id bc.Hash) []byte

ContractUTXOKey makes a smart contract unspent outputs key to store

func Key

func Key(name string) []byte

Key account store prefix

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 StandardUTXOKey

func StandardUTXOKey(id bc.Hash) []byte

StandardUTXOKey makes an account unspent outputs key to store

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

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

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(walletDB dbm.DB, 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) Create

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

Create creates 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) 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) DeleteAccount

func (m *Manager) DeleteAccount(aliasOrID string) (err error)

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

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) GetAliasByID

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

GetAliasByID return the account alias by given ID

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

GetContractIndex return the current index

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) SetCoinbaseArbitrary

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

func (*Manager) SetMiningAddress

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

SetMiningAddress will set the mining address

type UTXO

type UTXO struct {
	OutputID            bc.Hash
	SourceID            bc.Hash
	AssetID             bc.AssetID
	Amount              uint64
	SourcePos           uint64
	ControlProgram      []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