state

package
v0.18.0 Latest Latest
Warning

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

Go to latest
Published: May 8, 2018 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetMutableAccount

func GetMutableAccount(getter AccountGetter, address acm.Address) (acm.MutableAccount, error)

func GlobalAccountPermissions

func GlobalAccountPermissions(getter AccountGetter) ptypes.AccountPermissions

Get global permissions from the account at GlobalPermissionsAddress

func GlobalPermissionsAccount

func GlobalPermissionsAccount(getter AccountGetter) acm.Account

Types

type AccountGetter

type AccountGetter interface {
	// Get an account by its address return nil if it does not exist (which should not be an error)
	GetAccount(address acm.Address) (acm.Account, error)
}

type AccountIterable

type AccountIterable interface {
	// Iterates through accounts calling passed function once per account, if the consumer
	// returns true the iteration breaks and returns true to indicate it iteration
	// was escaped
	IterateAccounts(consumer func(acm.Account) (stop bool)) (stopped bool, err error)
}

type AccountUpdater

type AccountUpdater interface {
	// Updates the fields of updatedAccount by address, creating the account
	// if it does not exist
	UpdateAccount(updatedAccount acm.Account) error
	// Remove the account at address
	RemoveAccount(address acm.Address) error
}

type Cache

type Cache interface {
	Writer
	Sync(state Writer) error
	Reset(backend Iterable)
	Flush(state IterableWriter) error
}

func NewCache

func NewCache(backend Reader, options ...CacheOption) Cache

Returns a Cache that wraps an underlying Reader to use on a cache miss, can write to an output Writer via Sync. Goroutine safe for concurrent access.

type CacheOption

type CacheOption func(*stateCache)

func Name

func Name(name string) CacheOption

type Iterable

type Iterable interface {
	Reader
	AccountIterable
	StorageIterable
}

Read and list account and storage state

type MemoryState

type MemoryState struct {
	Accounts map[acm.Address]acm.Account
	Storage  map[acm.Address]map[binary.Word256]binary.Word256
}

func NewMemoryState

func NewMemoryState() *MemoryState

Get an in-memory state Iterable

func (*MemoryState) GetAccount

func (ms *MemoryState) GetAccount(address acm.Address) (acm.Account, error)

func (*MemoryState) GetStorage

func (ms *MemoryState) GetStorage(address acm.Address, key binary.Word256) (binary.Word256, error)

func (*MemoryState) IterateAccounts

func (ms *MemoryState) IterateAccounts(consumer func(acm.Account) (stop bool)) (stopped bool, err error)

func (*MemoryState) IterateStorage

func (ms *MemoryState) IterateStorage(address acm.Address, consumer func(key, value binary.Word256) (stop bool)) (stopped bool, err error)

func (*MemoryState) RemoveAccount

func (ms *MemoryState) RemoveAccount(address acm.Address) error

func (*MemoryState) SetStorage

func (ms *MemoryState) SetStorage(address acm.Address, key, value binary.Word256) error

func (*MemoryState) UpdateAccount

func (ms *MemoryState) UpdateAccount(updatedAccount acm.Account) error

type Reader

type Reader interface {
	AccountGetter
	StorageGetter
}

Read-only account and storage state

type StorageGetter

type StorageGetter interface {
	// Retrieve a 32-byte value stored at key for the account at address, return Zero256 if key does not exist but
	// error if address does not
	GetStorage(address acm.Address, key binary.Word256) (value binary.Word256, err error)
}

type StorageIterable

type StorageIterable interface {
	// Iterates through the storage of account ad address calling the passed function once per account,
	// if the iterator function returns true the iteration breaks and returns true to indicate it iteration
	// was escaped
	IterateStorage(address acm.Address, consumer func(key, value binary.Word256) (stop bool)) (stopped bool, err error)
}

type StorageSetter

type StorageSetter interface {
	// Store a 32-byte value at key for the account at address, setting to Zero256 removes the key
	SetStorage(address acm.Address, key, value binary.Word256) error
}

type Writer

type Writer interface {
	Reader
	AccountUpdater
	StorageSetter
}

Read and write account and storage state

Jump to

Keyboard shortcuts

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