account

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Jan 3, 2018 License: AGPL-3.0 Imports: 25 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")
)

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(account *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
	Alias string
	Tags  map[string]interface{} `json:"tags,omitempty"`
}

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
	ExpiresAt      time.Time
}

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{}, accessToken string) (*Account, error)

Create creates a new Account.

func (*Manager) CreateAddress added in v0.3.0

func (m *Manager) CreateAddress(ctx context.Context, accountInfo string, expiresAt time.Time) (*txbuilder.Receiver, error)

CreateAddress creates a new address receiver for an account

func (*Manager) CreateControlProgram

func (m *Manager) CreateControlProgram(ctx context.Context, accountID string, change bool, expiresAt time.Time) ([]byte, error)

CreateControlProgram creates a control program that is tied to the Account and stores it in the database.

func (*Manager) CreateP2PKH added in v0.3.0

func (m *Manager) CreateP2PKH(ctx context.Context, accountID string, change bool, expiresAt time.Time) (*CtrlProgram, error)

CreateP2PKH generate an address for the select account

func (*Manager) CreateReceiver

func (m *Manager) CreateReceiver(ctx context.Context, accountInfo string, expiresAt time.Time) (*txbuilder.Receiver, error)

CreateReceiver creates a new account receiver for an account with the provided expiry. If a zero time is provided for the expiry, a default expiry of 30 days from the current time is used.

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"`
}) 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) (*signers.Signer, 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

func (*Manager) GetCoinbaseControlProgram added in v0.2.0

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

GetCoinbaseControlProgram will return a coinbase script

func (*Manager) ListAccounts added in v0.3.0

func (m *Manager) ListAccounts(id string) ([]annotatedAccount, 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{}) 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
}

UTXO describes an individual account utxo.

Jump to

Keyboard shortcuts

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