Documentation ¶
Overview ¶
Package account stores and tracks accounts within a Bytom Core.
Package account stores and tracks accounts within a Bytom Core.
Index ¶
- Constants
- Variables
- func Annotated(a *Account) *query.AnnotatedAccount
- func ContractKey(hash common.Hash) []byte
- func ContractUTXOKey(id bc.Hash) []byte
- func Key(name string) []byte
- func MergeSpendAction(spendActions []txbuilder.Action) []txbuilder.Action
- func StandardUTXOKey(id bc.Hash) []byte
- func UtxoToInputs(signer *signers.Signer, u *UTXO) (*types.TxInput, *txbuilder.SigningInstruction, error)
- type Account
- type CtrlProgram
- type Image
- type ImageSlice
- type Manager
- func (m *Manager) Backup() (*Image, error)
- func (m *Manager) Create(ctx context.Context, xpubs []chainkd.XPub, quorum int, alias string) (*Account, error)
- func (m *Manager) CreateAddress(ctx context.Context, accountID string, change bool) (cp *CtrlProgram, err error)
- func (m *Manager) DecodeSpendAction(data []byte) (txbuilder.Action, error)
- func (m *Manager) DecodeSpendUTXOAction(data []byte) (txbuilder.Action, error)
- func (m *Manager) DeleteAccount(aliasOrID string) (err error)
- func (m *Manager) ExpireReservations(ctx context.Context, period time.Duration)
- func (m *Manager) FindByAlias(ctx context.Context, alias string) (*Account, error)
- func (m *Manager) FindByID(ctx context.Context, id string) (*Account, error)
- func (m *Manager) GetAccountByProgram(program *CtrlProgram) (*Account, error)
- func (m *Manager) GetAliasByID(id string) string
- func (m *Manager) GetCoinbaseControlProgram() ([]byte, error)
- func (m *Manager) GetProgramByAddress(address string) (*CtrlProgram, error)
- func (m *Manager) IsLocalControlProgram(prog []byte) bool
- func (m *Manager) ListAccounts(id string) ([]*Account, error)
- func (m *Manager) ListControlProgram() ([]*CtrlProgram, error)
- func (m *Manager) Restore(image *Image) error
- type UTXO
Constants ¶
const ( //UTXOPreFix is StandardUTXOKey prefix UTXOPreFix = "ACU:" //SUTXOPrefix is ContractUTXOKey prefix SUTXOPrefix = "SCU:" )
Variables ¶
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
var ( // ErrInsufficient indicates the account doesn't contain enough // units of the requested asset to satisfy the reservation. // New units must be deposited into the account in order to // satisfy the request; change will not be sufficient. ErrInsufficient = errors.New("reservation found insufficient funds") // ErrReserved indicates that a reservation could not be // satisfied because some of the outputs were already reserved. // When those reservations are finalized into a transaction // (and no other transaction spends funds from the account), // new change outputs will be created // in sufficient amounts to satisfy the request. ErrReserved = errors.New("reservation found outputs already reserved") // ErrMatchUTXO indicates the account doesn't contain enough utxo to satisfy the reservation. ErrMatchUTXO = errors.New("can't match enough valid utxos") // ErrReservation indicates the reserver doesn't found the reservation with the provided ID. ErrReservation = errors.New("couldn't find reservation") )
Functions ¶
func Annotated ¶
func Annotated(a *Account) *query.AnnotatedAccount
Annotated init an annotated account object
func ContractKey ¶ added in v0.5.0
ContractKey account control promgram store prefix
func ContractUTXOKey ¶
ContractUTXOKey makes a smart contract unspent outputs key to store
func MergeSpendAction ¶ added in v1.0.2
MergeSpendAction merge common assetID and accountID spend action
func StandardUTXOKey ¶
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 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 ¶ added in v0.5.0
type Image struct {
Slice []*ImageSlice `json:"slices"`
}
Image is the struct for hold export account data
type ImageSlice ¶ added in v0.5.0
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 ¶
NewManager creates a new account manager
func (*Manager) Create ¶
func (m *Manager) Create(ctx context.Context, xpubs []chainkd.XPub, quorum int, alias string) (*Account, error)
Create creates a new Account.
func (*Manager) CreateAddress ¶
func (m *Manager) CreateAddress(ctx context.Context, accountID string, change bool) (cp *CtrlProgram, err error)
CreateAddress generate an address for the select account
func (*Manager) DecodeSpendAction ¶
DecodeSpendAction unmarshal JSON-encoded data of spend action
func (*Manager) DecodeSpendUTXOAction ¶
DecodeSpendUTXOAction unmarshal JSON-encoded data of spend utxo action
func (*Manager) DeleteAccount ¶
DeleteAccount deletes the account's ID or alias matching accountInfo.
func (*Manager) ExpireReservations ¶
ExpireReservations removes reservations that have expired periodically. It blocks until the context is canceled.
func (*Manager) FindByAlias ¶
FindByAlias retrieves an account's Signer record by its alias
func (*Manager) GetAccountByProgram ¶ added in v1.0.2
func (m *Manager) GetAccountByProgram(program *CtrlProgram) (*Account, error)
GetAccountByProgram return Account by given CtrlProgram
func (*Manager) GetAliasByID ¶
GetAliasByID return the account alias by given ID
func (*Manager) GetCoinbaseControlProgram ¶
GetCoinbaseControlProgram will return a coinbase script
func (*Manager) GetProgramByAddress ¶ added in v1.0.2
func (m *Manager) GetProgramByAddress(address string) (*CtrlProgram, error)
GetProgramByAddress return CtrlProgram by given address
func (*Manager) IsLocalControlProgram ¶
IsLocalControlProgram check is the input control program belong to local
func (*Manager) ListAccounts ¶
ListAccounts will return the accounts in the db
func (*Manager) ListControlProgram ¶
func (m *Manager) ListControlProgram() ([]*CtrlProgram, error)
ListControlProgram return all the local control program
type UTXO ¶
type UTXO struct { OutputID bc.Hash SourceID bc.Hash // Avoiding AssetAmount here so that new(utxo) doesn't produce an // AssetAmount with a nil AssetId. 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.