Documentation ¶
Index ¶
- Constants
- Variables
- func RegisterSize(address flow.Address, isController bool, key string, value flow.RegisterValue) int
- func WithMaxInteractionSizeAllowed(limit uint64) func(st *State) *State
- func WithMaxKeySizeAllowed(limit uint64) func(st *State) *State
- func WithMaxValueSizeAllowed(limit uint64) func(st *State) *State
- type Accounts
- func (a *Accounts) AppendPublicKey(address flow.Address, publicKey flow.AccountPublicKey) error
- func (a *Accounts) Create(publicKeys []flow.AccountPublicKey, newAddress flow.Address) error
- func (a *Accounts) DeleteContract(contractName string, address flow.Address) error
- func (a *Accounts) Exists(address flow.Address) (bool, error)
- func (a *Accounts) Get(address flow.Address) (*flow.Account, error)
- func (a *Accounts) GetContract(contractName string, address flow.Address) ([]byte, error)
- func (a *Accounts) GetContractNames(address flow.Address) ([]string, error)
- func (a *Accounts) GetPublicKey(address flow.Address, keyIndex uint64) (flow.AccountPublicKey, error)
- func (a *Accounts) GetPublicKeyCount(address flow.Address) (uint64, error)
- func (a *Accounts) GetPublicKeys(address flow.Address) (publicKeys []flow.AccountPublicKey, err error)
- func (a *Accounts) GetStorageUsed(address flow.Address) (uint64, error)
- func (a *Accounts) GetValue(address flow.Address, key string) (flow.RegisterValue, error)
- func (a *Accounts) SetAllPublicKeys(address flow.Address, publicKeys []flow.AccountPublicKey) error
- func (a *Accounts) SetContract(contractName string, address flow.Address, contract []byte) error
- func (a *Accounts) SetPublicKey(address flow.Address, keyIndex uint64, publicKey flow.AccountPublicKey) (encodedPublicKey []byte, err error)
- func (a *Accounts) SetValue(address flow.Address, key string, value flow.RegisterValue) error
- func (a *Accounts) TouchContract(contractName string, address flow.Address)
- type Ledger
- type LedgerFailure
- type MapLedger
- type State
- func (s *State) Commit() error
- func (s *State) Delete(owner, controller, key string) error
- func (s *State) Get(owner, controller, key string) (flow.RegisterValue, error)
- func (s *State) InteractionUsed() uint64
- func (s *State) Ledger() Ledger
- func (s *State) Rollback() error
- func (s *State) Set(owner, controller, key string, value flow.RegisterValue) error
- func (s *State) Touch(owner, controller, key string) error
- func (s *State) UpdatedAddresses() []flow.Address
- type StateBoundAddressGenerator
- type StateInteractionLimitExceededError
- type StateKeySizeLimitError
- type StateOption
- type StateValueSizeLimitError
- type UUIDs
Constants ¶
const ( KeyExists = "exists" KeyCode = "code" KeyContractNames = "contract_names" KeyPublicKeyCount = "public_key_count" KeyStorageUsed = "storage_used" )
const ( DefaultMaxKeySize = 16_000 // ~16KB DefaultMaxValueSize = 256_000_000 // ~256MB DefaultMaxInteractionSize = 2_000_000_000 // ~2GB )
TODO we started with high numbers here and we might tune (reduce) them when we have more data
Variables ¶
var ( ErrAccountNotFound = errors.New("account not found") ErrAccountPublicKeyNotFound = errors.New("account public key not found") )
Functions ¶
func RegisterSize ¶ added in v0.13.0
func WithMaxInteractionSizeAllowed ¶ added in v0.14.0
WithMaxInteractionSizeAllowed sets limit on total byte interaction with ledger
func WithMaxKeySizeAllowed ¶ added in v0.14.0
WithMaxKeySizeAllowed sets limit on max key size
func WithMaxValueSizeAllowed ¶ added in v0.14.0
WithMaxValueSizeAllowed sets limit on max value size
Types ¶
type Accounts ¶
type Accounts struct {
// contains filtered or unexported fields
}
func NewAccounts ¶
func (*Accounts) AppendPublicKey ¶
func (*Accounts) DeleteContract ¶ added in v0.12.0
func (*Accounts) GetContract ¶ added in v0.12.0
func (*Accounts) GetContractNames ¶ added in v0.12.0
GetContractNames gets a sorted list of names of contracts deployed on an address
func (*Accounts) GetPublicKey ¶
func (*Accounts) GetPublicKeyCount ¶
func (*Accounts) GetPublicKeys ¶
func (*Accounts) GetStorageUsed ¶ added in v0.13.0
GetStorageUsed returns the amount of storage used in bytes by this account
func (*Accounts) SetAllPublicKeys ¶
func (*Accounts) SetContract ¶ added in v0.12.0
func (*Accounts) SetPublicKey ¶
type Ledger ¶
type Ledger interface { Set(owner, controller, key string, value flow.RegisterValue) error Get(owner, controller, key string) (flow.RegisterValue, error) Touch(owner, controller, key string) error Delete(owner, controller, key string) error }
Rename this to Storage remove reference to flow.RegisterValue and use byte[] A Ledger is the storage interface used by the virtual machine to read and write register values.
type LedgerFailure ¶ added in v0.14.0
type LedgerFailure struct {
// contains filtered or unexported fields
}
func (*LedgerFailure) Error ¶ added in v0.14.0
func (e *LedgerFailure) Error() string
type MapLedger ¶
type MapLedger struct { Registers map[string]flow.RegisterEntry RegisterTouches map[string]bool }
A MapLedger is a naive ledger storage implementation backed by a simple map.
This implementation is designed for testing purposes.
func NewMapLedger ¶
func NewMapLedger() *MapLedger
func (MapLedger) Get ¶
func (m MapLedger) Get(owner, controller, key string) (flow.RegisterValue, error)
type State ¶ added in v0.14.0
type State struct {
// contains filtered or unexported fields
}
func NewState ¶ added in v0.14.0
func NewState(ledger Ledger, opts ...StateOption) *State
NewState constructs a new state
func (*State) Get ¶ added in v0.14.0
func (s *State) Get(owner, controller, key string) (flow.RegisterValue, error)
func (*State) InteractionUsed ¶ added in v0.14.0
func (*State) Set ¶ added in v0.14.0
func (s *State) Set(owner, controller, key string, value flow.RegisterValue) error
func (*State) UpdatedAddresses ¶ added in v0.14.0
type StateBoundAddressGenerator ¶ added in v0.14.0
type StateBoundAddressGenerator struct {
// contains filtered or unexported fields
}
StateBoundAddressGenerator is a decorator for an address generator. It uses the underlying generator it gets from the chain. The only change is that when next address is called the state is updated as well.
func NewStateBoundAddressGenerator ¶ added in v0.14.0
func NewStateBoundAddressGenerator(state *State, chain flow.Chain) (*StateBoundAddressGenerator, error)
func (*StateBoundAddressGenerator) Bytes ¶ added in v0.14.0
func (g *StateBoundAddressGenerator) Bytes() []byte
func (*StateBoundAddressGenerator) CurrentAddress ¶ added in v0.14.0
func (g *StateBoundAddressGenerator) CurrentAddress() flow.Address
func (*StateBoundAddressGenerator) NextAddress ¶ added in v0.14.0
func (g *StateBoundAddressGenerator) NextAddress() (flow.Address, error)
type StateInteractionLimitExceededError ¶ added in v0.14.0
A StateInteractionLimitExceededError
func (*StateInteractionLimitExceededError) Error ¶ added in v0.14.0
func (e *StateInteractionLimitExceededError) Error() string
type StateKeySizeLimitError ¶ added in v0.14.0
type StateKeySizeLimitError struct { Owner string Controller string Key string Size uint64 Limit uint64 }
A StateKeySizeLimitError indicates that the provided key has exceeded the size limit allowed by the storage
func (*StateKeySizeLimitError) Error ¶ added in v0.14.0
func (e *StateKeySizeLimitError) Error() string
type StateOption ¶ added in v0.14.0
type StateValueSizeLimitError ¶ added in v0.14.0
type StateValueSizeLimitError struct { Value flow.RegisterValue Size uint64 Limit uint64 }
A StateValueSizeLimitError indicates that the provided value has exceeded the size limit allowed by the storage
func (*StateValueSizeLimitError) Error ¶ added in v0.14.0
func (e *StateValueSizeLimitError) Error() string