account

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Feb 1, 2018 License: AGPL-3.0 Imports: 24 Imported by: 0

Documentation

Overview

Package account stores and tracks accounts within a Chain Core.

Index

Constants

View Source
const (
	//UTXOPreFix is AccountUTXOKey prefix
	UTXOPreFix = "ACU:"
)

Variables

View Source
var (
	ErrDuplicateAlias = errors.New("duplicate account alias")
	ErrFindAccount    = errors.New("fail to find account")
	ErrMarshalAccount = errors.New("failed marshal account")
	ErrMarshalTags    = errors.New("failed marshal account to update tags")
	ErrStandardQuorum = errors.New("need single key pair account to create standard transaction")
)

pre-define errors for supporting bytom errorFormatter

View Source
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   = errors.New("can't match enough valid utxos")
	ErrReservation = errors.New("couldn't find reservation")
)

Functions

func Annotated

func Annotated(a *Account) (*query.AnnotatedAccount, error)

Annotated init an annotated account object

func CPKey added in v0.3.0

func CPKey(hash common.Hash) []byte

CPKey account control promgram store prefix

func Key added in v0.3.0

func Key(name string) []byte

Key account store prefix

func UTXOKey added in v0.3.0

func UTXOKey(id bc.Hash) []byte

UTXOKey makes a account unspent outputs key to store

func UtxoToInputs added in v0.3.0

func UtxoToInputs(signer *signers.Signer, u *UTXO, refData []byte) (*legacy.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"`
	Tags  map[string]interface{} `json:"tags"`
}

Account is structure of Bytom account

type CtrlProgram added in v0.3.0

type CtrlProgram struct {
	AccountID      string
	Address        string
	KeyIndex       uint64
	ControlProgram []byte
	Change         bool
}

CtrlProgram is structure of account control program

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

func (m *Manager) Create(ctx context.Context, xpubs []chainkd.XPub, quorum int, alias string, tags map[string]interface{}) (*Account, error)

Create creates a new Account.

func (*Manager) CreateAddress added in v0.3.0

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) CreateAddressReceiver added in v0.4.0

func (m *Manager) CreateAddressReceiver(ctx context.Context, accountInfo string) (*txbuilder.Receiver, error)

CreateAddressReceiver creates a new address receiver for an account

func (*Manager) DecodeControlAction

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

DecodeControlAction unmarshal JSON-encoded data of control action

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 added in v0.3.0

func (m *Manager) DeleteAccount(in struct {
	AccountInfo string `json:"account_info"`
}) (err error)

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

func (*Manager) ExpireReservations

func (m *Manager) ExpireReservations(ctx context.Context, period time.Duration)

ExpireReservations removes reservations that have expired periodically. It blocks until the context is canceled.

func (*Manager) FindByAlias

func (m *Manager) FindByAlias(ctx context.Context, alias string) (*Account, error)

FindByAlias retrieves an account's Signer record by its alias

func (*Manager) GetAliasByID added in v0.3.0

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

GetAliasByID return the account alias by given ID

func (*Manager) GetCoinbaseControlProgram added in v0.2.0

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

GetCoinbaseControlProgram will return a coinbase script

func (*Manager) ListAccounts added in v0.3.0

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

ListAccounts will return the accounts in the db

func (*Manager) NewControlAction

func (m *Manager) NewControlAction(amt bc.AssetAmount, accountID string, refData chainjson.Map) txbuilder.Action

NewControlAction create new control action

func (*Manager) UpdateTags

func (m *Manager) UpdateTags(ctx context.Context, accountInfo string, tags map[string]interface{}) (err error)

UpdateTags modifies the tags of the specified account. The account may be identified either by ID or Alias, but not both.

type UTXO added in v0.2.0

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
	RefDataHash    bc.Hash

	AccountID           string
	Address             string
	ControlProgramIndex uint64
	ValidHeight         uint64
}

UTXO describes an individual account utxo.

Jump to

Keyboard shortcuts

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