dao

package
v0.76.0 Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2020 License: MIT Imports: 13 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Cached

type Cached struct {
	DAO
	// contains filtered or unexported fields
}

Cached is a data access object that mimics DAO, but has a write cache for accounts and read cache for contracts. These are the most frequently used objects in the storeBlock().

func NewCached

func NewCached(d DAO) *Cached

NewCached returns new Cached wrapping around given backing store.

func (*Cached) AppendNEP5Transfer

func (cd *Cached) AppendNEP5Transfer(acc util.Uint160, index uint32, tr *state.NEP5Transfer) (bool, error)

AppendNEP5Transfer appends new transfer to a transfer event log.

func (*Cached) DeleteContractState

func (cd *Cached) DeleteContractState(hash util.Uint160) error

DeleteContractState deletes given contract state in cache and backing store.

func (*Cached) DeleteStorageItem

func (cd *Cached) DeleteStorageItem(scripthash util.Uint160, key []byte) error

DeleteStorageItem drops storage item for the given script with the given key from the store.

func (*Cached) FlushStorage

func (cd *Cached) FlushStorage() error

FlushStorage flushes storage changes to the underlying DAO.

func (*Cached) GetAccountState

func (cd *Cached) GetAccountState(hash util.Uint160) (*state.Account, error)

GetAccountState retrieves Account from cache or underlying store.

func (*Cached) GetAccountStateOrNew

func (cd *Cached) GetAccountStateOrNew(hash util.Uint160) (*state.Account, error)

GetAccountStateOrNew retrieves Account from cache or underlying store or creates a new one if it doesn't exist.

func (*Cached) GetContractState

func (cd *Cached) GetContractState(hash util.Uint160) (*state.Contract, error)

GetContractState returns contract state from cache or underlying store.

func (*Cached) GetNEP5Balances

func (cd *Cached) GetNEP5Balances(acc util.Uint160) (*state.NEP5Balances, error)

GetNEP5Balances retrieves NEP5Balances for the acc.

func (*Cached) GetNEP5TransferLog

func (cd *Cached) GetNEP5TransferLog(acc util.Uint160, index uint32) (*state.NEP5TransferLog, error)

GetNEP5TransferLog retrieves NEP5TransferLog for the acc.

func (*Cached) GetStorageItem

func (cd *Cached) GetStorageItem(scripthash util.Uint160, key []byte) *state.StorageItem

GetStorageItem returns StorageItem if it exists in the given store.

func (*Cached) GetStorageItems

func (cd *Cached) GetStorageItems(hash util.Uint160, prefix []byte) ([]StorageItemWithKey, error)

GetStorageItems returns all storage items for a given scripthash.

func (*Cached) GetStorageItemsIterator

func (cd *Cached) GetStorageItemsIterator(hash util.Uint160, prefix []byte) (StorageIteratorFunc, error)

GetStorageItemsIterator returns iterator over all storage items. Function returned can be called until first error.

func (*Cached) GetUnspentCoinState

func (cd *Cached) GetUnspentCoinState(hash util.Uint256) (*state.UnspentCoin, error)

GetUnspentCoinState retrieves UnspentCoin from cache or underlying store.

func (*Cached) GetWrapped

func (cd *Cached) GetWrapped() DAO

GetWrapped implements DAO interface.

func (*Cached) Persist

func (cd *Cached) Persist() (int, error)

Persist flushes all the changes made into the (supposedly) persistent underlying store.

func (*Cached) PutAccountState

func (cd *Cached) PutAccountState(as *state.Account) error

PutAccountState saves given Account in the cache.

func (*Cached) PutContractState

func (cd *Cached) PutContractState(cs *state.Contract) error

PutContractState puts given contract state into the given store.

func (*Cached) PutNEP5Balances

func (cd *Cached) PutNEP5Balances(acc util.Uint160, bs *state.NEP5Balances) error

PutNEP5Balances saves NEP5Balances for the acc.

func (*Cached) PutNEP5TransferLog

func (cd *Cached) PutNEP5TransferLog(acc util.Uint160, index uint32, bs *state.NEP5TransferLog) error

PutNEP5TransferLog saves NEP5TransferLog for the acc.

func (*Cached) PutStorageItem

func (cd *Cached) PutStorageItem(scripthash util.Uint160, key []byte, si *state.StorageItem) error

PutStorageItem puts given StorageItem for given script with given key into the given store.

func (*Cached) PutUnspentCoinState

func (cd *Cached) PutUnspentCoinState(hash util.Uint256, ucs *state.UnspentCoin) error

PutUnspentCoinState saves given UnspentCoin in the cache.

type DAO

type DAO interface {
	AppendNEP5Transfer(acc util.Uint160, index uint32, tr *state.NEP5Transfer) (bool, error)
	DeleteContractState(hash util.Uint160) error
	DeleteStorageItem(scripthash util.Uint160, key []byte) error
	DeleteValidatorState(vs *state.Validator) error
	GetAccountState(hash util.Uint160) (*state.Account, error)
	GetAccountStateOrNew(hash util.Uint160) (*state.Account, error)
	GetAndDecode(entity io.Serializable, key []byte) error
	GetAppExecResult(hash util.Uint256) (*state.AppExecResult, error)
	GetAssetState(assetID util.Uint256) (*state.Asset, error)
	GetBatch() *storage.MemBatch
	GetBlock(hash util.Uint256) (*block.Block, uint32, error)
	GetContractState(hash util.Uint160) (*state.Contract, error)
	GetCurrentBlockHeight() (uint32, error)
	GetCurrentHeaderHeight() (i uint32, h util.Uint256, err error)
	GetCurrentStateRootHeight() (uint32, error)
	GetHeaderHashes() ([]util.Uint256, error)
	GetNEP5Balances(acc util.Uint160) (*state.NEP5Balances, error)
	GetNEP5TransferLog(acc util.Uint160, index uint32) (*state.NEP5TransferLog, error)
	GetStateRoot(height uint32) (*state.MPTRootState, error)
	PutStateRoot(root *state.MPTRootState) error
	GetStorageItem(scripthash util.Uint160, key []byte) *state.StorageItem
	GetStorageItems(hash util.Uint160, prefix []byte) ([]StorageItemWithKey, error)
	GetTransaction(hash util.Uint256) (*transaction.Transaction, uint32, error)
	GetUnspentCoinState(hash util.Uint256) (*state.UnspentCoin, error)
	GetValidatorState(publicKey *keys.PublicKey) (*state.Validator, error)
	GetValidatorStateOrNew(publicKey *keys.PublicKey) (*state.Validator, error)
	GetValidators() []*state.Validator
	GetValidatorsCount() (*state.ValidatorsCount, error)
	GetVersion() (string, error)
	GetWrapped() DAO
	HasTransaction(hash util.Uint256) bool
	IsDoubleClaim(claim *transaction.ClaimTX) bool
	IsDoubleSpend(tx *transaction.Transaction) bool
	Persist() (int, error)
	PutAccountState(as *state.Account) error
	PutAppExecResult(aer *state.AppExecResult) error
	PutAssetState(as *state.Asset) error
	PutContractState(cs *state.Contract) error
	PutCurrentHeader(hashAndIndex []byte) error
	PutNEP5Balances(acc util.Uint160, bs *state.NEP5Balances) error
	PutNEP5TransferLog(acc util.Uint160, index uint32, lg *state.NEP5TransferLog) error
	PutStorageItem(scripthash util.Uint160, key []byte, si *state.StorageItem) error
	PutUnspentCoinState(hash util.Uint256, ucs *state.UnspentCoin) error
	PutValidatorState(vs *state.Validator) error
	PutValidatorsCount(vc *state.ValidatorsCount) error
	PutVersion(v string) error
	StoreAsBlock(block *block.Block, sysFee uint32) error
	StoreAsCurrentBlock(block *block.Block) error
	StoreAsTransaction(tx *transaction.Transaction, index uint32) error
	// contains filtered or unexported methods
}

DAO is a data access object.

type Simple

type Simple struct {
	MPT   *mpt.Trie
	Store *storage.MemCachedStore
}

Simple is memCached wrapper around DB, simple DAO implementation.

func NewSimple

func NewSimple(backend storage.Store) *Simple

NewSimple creates new simple dao using provided backend store.

func (*Simple) AppendNEP5Transfer

func (dao *Simple) AppendNEP5Transfer(acc util.Uint160, index uint32, tr *state.NEP5Transfer) (bool, error)

AppendNEP5Transfer appends a single NEP5 transfer to a log. First return value signalizes that log size has exceeded batch size.

func (*Simple) DeleteContractState

func (dao *Simple) DeleteContractState(hash util.Uint160) error

DeleteContractState deletes given contract state in the given store.

func (*Simple) DeleteStorageItem

func (dao *Simple) DeleteStorageItem(scripthash util.Uint160, key []byte) error

DeleteStorageItem drops storage item for the given script with the given key from the store.

func (*Simple) DeleteValidatorState

func (dao *Simple) DeleteValidatorState(vs *state.Validator) error

DeleteValidatorState deletes given Validator into the given store.

func (*Simple) GetAccountState

func (dao *Simple) GetAccountState(hash util.Uint160) (*state.Account, error)

GetAccountState returns Account from the given Store if it's present there. Returns nil otherwise.

func (*Simple) GetAccountStateOrNew

func (dao *Simple) GetAccountStateOrNew(hash util.Uint160) (*state.Account, error)

GetAccountStateOrNew retrieves Account from temporary or persistent Store or creates a new one if it doesn't exist and persists it.

func (*Simple) GetAndDecode

func (dao *Simple) GetAndDecode(entity io.Serializable, key []byte) error

GetAndDecode performs get operation and decoding with serializable structures.

func (*Simple) GetAppExecResult

func (dao *Simple) GetAppExecResult(hash util.Uint256) (*state.AppExecResult, error)

GetAppExecResult gets application execution result from the given store.

func (*Simple) GetAssetState

func (dao *Simple) GetAssetState(assetID util.Uint256) (*state.Asset, error)

GetAssetState returns given asset state as recorded in the given store.

func (*Simple) GetBatch

func (dao *Simple) GetBatch() *storage.MemBatch

GetBatch returns currently accumulated DB changeset.

func (*Simple) GetBlock

func (dao *Simple) GetBlock(hash util.Uint256) (*block.Block, uint32, error)

GetBlock returns Block by the given hash if it exists in the store.

func (*Simple) GetContractState

func (dao *Simple) GetContractState(hash util.Uint160) (*state.Contract, error)

GetContractState returns contract state as recorded in the given store by the given script hash.

func (*Simple) GetCurrentBlockHeight

func (dao *Simple) GetCurrentBlockHeight() (uint32, error)

GetCurrentBlockHeight returns the current block height found in the underlying store.

func (*Simple) GetCurrentHeaderHeight

func (dao *Simple) GetCurrentHeaderHeight() (i uint32, h util.Uint256, err error)

GetCurrentHeaderHeight returns the current header height and hash from the underlying store.

func (*Simple) GetCurrentStateRootHeight added in v0.76.0

func (dao *Simple) GetCurrentStateRootHeight() (uint32, error)

GetCurrentStateRootHeight returns current state root height.

func (*Simple) GetHeaderHashes

func (dao *Simple) GetHeaderHashes() ([]util.Uint256, error)

GetHeaderHashes returns a sorted list of header hashes retrieved from the given underlying store.

func (*Simple) GetNEP5Balances

func (dao *Simple) GetNEP5Balances(acc util.Uint160) (*state.NEP5Balances, error)

GetNEP5Balances retrieves nep5 balances from the cache.

func (*Simple) GetNEP5TransferLog

func (dao *Simple) GetNEP5TransferLog(acc util.Uint160, index uint32) (*state.NEP5TransferLog, error)

GetNEP5TransferLog retrieves transfer log from the cache.

func (*Simple) GetStateRoot added in v0.76.0

func (dao *Simple) GetStateRoot(height uint32) (*state.MPTRootState, error)

GetStateRoot returns state root of a given height.

func (*Simple) GetStorageItem

func (dao *Simple) GetStorageItem(scripthash util.Uint160, key []byte) *state.StorageItem

GetStorageItem returns StorageItem if it exists in the given store.

func (*Simple) GetStorageItems

func (dao *Simple) GetStorageItems(hash util.Uint160, prefix []byte) ([]StorageItemWithKey, error)

GetStorageItems returns all storage items for a given scripthash.

func (*Simple) GetTransaction

func (dao *Simple) GetTransaction(hash util.Uint256) (*transaction.Transaction, uint32, error)

GetTransaction returns Transaction and its height by the given hash if it exists in the store.

func (*Simple) GetUnspentCoinState

func (dao *Simple) GetUnspentCoinState(hash util.Uint256) (*state.UnspentCoin, error)

GetUnspentCoinState retrieves UnspentCoinState from the given store.

func (*Simple) GetValidatorState

func (dao *Simple) GetValidatorState(publicKey *keys.PublicKey) (*state.Validator, error)

GetValidatorState returns validator by publicKey.

func (*Simple) GetValidatorStateOrNew

func (dao *Simple) GetValidatorStateOrNew(publicKey *keys.PublicKey) (*state.Validator, error)

GetValidatorStateOrNew gets validator from store or created new one in case of error.

func (*Simple) GetValidators

func (dao *Simple) GetValidators() []*state.Validator

GetValidators returns all validators from store.

func (*Simple) GetValidatorsCount

func (dao *Simple) GetValidatorsCount() (*state.ValidatorsCount, error)

GetValidatorsCount returns current ValidatorsCount or new one if there is none in the DB.

func (*Simple) GetVersion

func (dao *Simple) GetVersion() (string, error)

GetVersion attempts to get the current version stored in the underlying store.

func (*Simple) GetWrapped

func (dao *Simple) GetWrapped() DAO

GetWrapped returns new DAO instance with another layer of wrapped MemCachedStore around the current DAO Store.

func (*Simple) HasTransaction

func (dao *Simple) HasTransaction(hash util.Uint256) bool

HasTransaction returns true if the given store contains the given Transaction hash.

func (*Simple) InitMPT added in v0.76.0

func (dao *Simple) InitMPT(height uint32) error

InitMPT initializes MPT at the given height.

func (*Simple) IsDoubleClaim

func (dao *Simple) IsDoubleClaim(claim *transaction.ClaimTX) bool

IsDoubleClaim verifies that given claim inputs are not already claimed by another tx.

func (*Simple) IsDoubleSpend

func (dao *Simple) IsDoubleSpend(tx *transaction.Transaction) bool

IsDoubleSpend verifies that the input transactions are not double spent.

func (*Simple) Persist

func (dao *Simple) Persist() (int, error)

Persist flushes all the changes made into the (supposedly) persistent underlying store.

func (*Simple) Put

func (dao *Simple) Put(entity io.Serializable, key []byte) error

Put performs put operation with serializable structures.

func (*Simple) PutAccountState

func (dao *Simple) PutAccountState(as *state.Account) error

PutAccountState saves given Account in given store.

func (*Simple) PutAppExecResult

func (dao *Simple) PutAppExecResult(aer *state.AppExecResult) error

PutAppExecResult puts given application execution result into the given store.

func (*Simple) PutAssetState

func (dao *Simple) PutAssetState(as *state.Asset) error

PutAssetState puts given asset state into the given store.

func (*Simple) PutContractState

func (dao *Simple) PutContractState(cs *state.Contract) error

PutContractState puts given contract state into the given store.

func (*Simple) PutCurrentHeader

func (dao *Simple) PutCurrentHeader(hashAndIndex []byte) error

PutCurrentHeader stores current header.

func (*Simple) PutCurrentStateRootHeight added in v0.76.0

func (dao *Simple) PutCurrentStateRootHeight(height uint32) error

PutCurrentStateRootHeight updates current state root height.

func (*Simple) PutNEP5Balances

func (dao *Simple) PutNEP5Balances(acc util.Uint160, bs *state.NEP5Balances) error

PutNEP5Balances saves nep5 balances from the cache.

func (*Simple) PutNEP5TransferLog

func (dao *Simple) PutNEP5TransferLog(acc util.Uint160, index uint32, lg *state.NEP5TransferLog) error

PutNEP5TransferLog saves given transfer log in the cache.

func (*Simple) PutStateRoot added in v0.76.0

func (dao *Simple) PutStateRoot(r *state.MPTRootState) error

PutStateRoot puts state root of a given height into the store.

func (*Simple) PutStorageItem

func (dao *Simple) PutStorageItem(scripthash util.Uint160, key []byte, si *state.StorageItem) error

PutStorageItem puts given StorageItem for given script with given key into the given store.

func (*Simple) PutUnspentCoinState

func (dao *Simple) PutUnspentCoinState(hash util.Uint256, ucs *state.UnspentCoin) error

PutUnspentCoinState puts given UnspentCoinState into the given store.

func (*Simple) PutValidatorState

func (dao *Simple) PutValidatorState(vs *state.Validator) error

PutValidatorState puts given Validator into the given store.

func (*Simple) PutValidatorsCount

func (dao *Simple) PutValidatorsCount(vc *state.ValidatorsCount) error

PutValidatorsCount put given ValidatorsCount in the store.

func (*Simple) PutVersion

func (dao *Simple) PutVersion(v string) error

PutVersion stores the given version in the underlying store.

func (*Simple) StoreAsBlock

func (dao *Simple) StoreAsBlock(block *block.Block, sysFee uint32) error

StoreAsBlock stores the given block as DataBlock.

func (*Simple) StoreAsCurrentBlock

func (dao *Simple) StoreAsCurrentBlock(block *block.Block) error

StoreAsCurrentBlock stores the given block witch prefix SYSCurrentBlock.

func (*Simple) StoreAsTransaction

func (dao *Simple) StoreAsTransaction(tx *transaction.Transaction, index uint32) error

StoreAsTransaction stores the given TX as DataTransaction.

type StorageItemWithKey

type StorageItemWithKey struct {
	state.StorageItem
	Key []byte
}

StorageItemWithKey is a Key-Value pair together with possible const modifier.

type StorageIteratorFunc

type StorageIteratorFunc func() ([]byte, []byte, error)

StorageIteratorFunc is a function returning key-value pair or error.

Jump to

Keyboard shortcuts

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