Documentation ¶
Index ¶
- Constants
- func IsFVMStateKey(owner, key string) bool
- func PrintableKey(key string) string
- type Ledger
- type NestedTransactionId
- type State
- func (s *State) ComputationIntensities() meter.MeteredComputationIntensities
- func (s *State) Delete(owner, key string, enforceLimit bool) error
- func (s *State) Get(owner, key string, enforceLimit bool) (flow.RegisterValue, error)
- func (s *State) InteractionUsed() uint64
- func (s *State) MemoryIntensities() meter.MeteredMemoryIntensities
- func (s *State) MergeState(other *State) error
- func (s *State) Meter() *meter.Meter
- func (s *State) MeterComputation(kind common.ComputationKind, intensity uint) error
- func (s *State) MeterEmittedEvent(byteSize uint64) error
- func (s *State) MeterMemory(kind common.MemoryKind, intensity uint) error
- func (s *State) NewChild() *State
- func (s *State) Set(owner, key string, value flow.RegisterValue, enforceLimit bool) error
- func (s *State) TotalComputationLimit() uint
- func (s *State) TotalComputationUsed() uint
- func (s *State) TotalEmittedEventBytes() uint64
- func (s *State) TotalMemoryEstimate() uint64
- func (s *State) TotalMemoryLimit() uint
- func (s *State) Touch(owner, key string) error
- func (s *State) UpdatedAddresses() []flow.Address
- func (s *State) View() View
- type StateOption
- type StateParameters
- func (params StateParameters) WithMaxInteractionSizeAllowed(limit uint64) StateParameters
- func (params StateParameters) WithMaxKeySizeAllowed(limit uint64) StateParameters
- func (params StateParameters) WithMaxValueSizeAllowed(limit uint64) StateParameters
- func (params StateParameters) WithMeterParameters(meterParams meter.MeterParameters) StateParameters
- type TransactionState
- func (s *TransactionState) AttachAndCommitParseRestricted(cachedNestedTransaction *State) error
- func (s *TransactionState) BeginNestedTransaction() (NestedTransactionId, error)
- func (s *TransactionState) BeginParseRestrictedNestedTransaction(location common.AddressLocation) (NestedTransactionId, error)
- func (s *TransactionState) Commit(expectedId NestedTransactionId) error
- func (s *TransactionState) CommitParseRestricted(location common.AddressLocation) (*State, error)
- func (s *TransactionState) ComputationIntensities() meter.MeteredComputationIntensities
- func (s *TransactionState) DisableAllLimitEnforcements()
- func (s *TransactionState) EnableAllLimitEnforcements()
- func (s *TransactionState) EnforceComputationLimits() bool
- func (s *TransactionState) EnforceLimits() bool
- func (s *TransactionState) Get(owner string, key string, enforceLimit bool) (flow.RegisterValue, error)
- func (s *TransactionState) InteractionUsed() uint64
- func (s *TransactionState) IsCurrent(id NestedTransactionId) bool
- func (s *TransactionState) IsParseRestricted() bool
- func (s *TransactionState) MainTransactionId() NestedTransactionId
- func (s *TransactionState) MemoryIntensities() meter.MeteredMemoryIntensities
- func (s *TransactionState) MeterComputation(kind common.ComputationKind, intensity uint) error
- func (s *TransactionState) MeterEmittedEvent(byteSize uint64) error
- func (s *TransactionState) MeterMemory(kind common.MemoryKind, intensity uint) error
- func (s *TransactionState) NumNestedTransactions() int
- func (s *TransactionState) RestartNestedTransaction(id NestedTransactionId) error
- func (s *TransactionState) RunWithAllLimitsDisabled(f func())
- func (s *TransactionState) Set(owner string, key string, value flow.RegisterValue, enforceLimit bool) error
- func (s *TransactionState) TotalComputationLimit() uint
- func (s *TransactionState) TotalComputationUsed() uint
- func (s *TransactionState) TotalEmittedEventBytes() uint64
- func (s *TransactionState) TotalMemoryEstimate() uint64
- func (s *TransactionState) UpdatedAddresses() []flow.Address
- func (s *TransactionState) ViewForTestingOnly() View
- type View
Constants ¶
const ( DefaultMaxKeySize = 16_000 // ~16KB DefaultMaxValueSize = 256_000_000 // ~256MB DefaultMaxInteractionSize = 20_000_000 // ~20MB AccountKeyPrefix = "a." KeyAccountStatus = AccountKeyPrefix + "s" KeyCode = "code" KeyContractNames = "contract_names" )
Variables ¶
This section is empty.
Functions ¶
func IsFVMStateKey ¶ added in v0.16.2
IsFVMStateKey returns true if the key is controlled by the fvm env and return false otherwise (key controlled by the cadence env)
func PrintableKey ¶ added in v0.23.4
PrintableKey formats slabs properly and avoids invalid utf8s
Types ¶
type Ledger ¶
type Ledger interface { Set(owner, key string, value flow.RegisterValue) error Get(owner, key string) (flow.RegisterValue, error) Touch(owner, key string) error Delete(owner, key string) error }
Ledger is the storage interface used by the virtual machine to read and write register values.
TODO Rename this to Storage and remove reference to flow.RegisterValue and use byte[]
type NestedTransactionId ¶ added in v0.28.0
type NestedTransactionId struct {
// contains filtered or unexported fields
}
Opaque identifier used for Restarting nested transactions
func (NestedTransactionId) StateForTestingOnly ¶ added in v0.28.0
func (id NestedTransactionId) StateForTestingOnly() *State
type State ¶ added in v0.14.0
type State struct {
// contains filtered or unexported fields
}
State represents the execution state it holds draft of updates and captures all register touches
func NewState ¶ added in v0.14.0
func NewState(view View, params StateParameters) *State
NewState constructs a new state
func (*State) ComputationIntensities ¶ added in v0.25.2
func (s *State) ComputationIntensities() meter.MeteredComputationIntensities
ComputationIntensities returns computation intensities
func (*State) InteractionUsed ¶ added in v0.14.0
InteractionUsed returns the amount of ledger interaction (total ledger byte read + total ledger byte written)
func (*State) MemoryIntensities ¶ added in v0.25.2
func (s *State) MemoryIntensities() meter.MeteredMemoryIntensities
MemoryIntensities returns computation intensities
func (*State) MergeState ¶ added in v0.15.0
MergeState applies the changes from a the given view to this view.
func (*State) MeterComputation ¶ added in v0.25.2
func (s *State) MeterComputation(kind common.ComputationKind, intensity uint) error
MeterComputation meters computation usage
func (*State) MeterEmittedEvent ¶ added in v0.28.0
func (*State) MeterMemory ¶ added in v0.25.2
func (s *State) MeterMemory(kind common.MemoryKind, intensity uint) error
MeterMemory meters memory usage
func (*State) TotalComputationLimit ¶ added in v0.25.2
TotalComputationLimit returns total computation limit
func (*State) TotalComputationUsed ¶ added in v0.25.2
TotalComputationUsed returns total computation used
func (*State) TotalEmittedEventBytes ¶ added in v0.28.0
func (*State) TotalMemoryEstimate ¶ added in v0.27.0
TotalMemoryEstimate returns total memory used
func (*State) TotalMemoryLimit ¶ added in v0.25.2
TotalMemoryLimit returns total memory limit
func (*State) UpdatedAddresses ¶ added in v0.14.0
UpdatedAddresses returns a sorted list of addresses that were updated (at least 1 register update)
type StateOption ¶ added in v0.14.0
type StateParameters ¶ added in v0.28.0
type StateParameters struct { meter.MeterParameters // contains filtered or unexported fields }
func DefaultParameters ¶ added in v0.28.0
func DefaultParameters() StateParameters
func (StateParameters) WithMaxInteractionSizeAllowed ¶ added in v0.28.0
func (params StateParameters) WithMaxInteractionSizeAllowed(limit uint64) StateParameters
WithMaxInteractionSizeAllowed sets limit on total byte interaction with ledger
func (StateParameters) WithMaxKeySizeAllowed ¶ added in v0.28.0
func (params StateParameters) WithMaxKeySizeAllowed(limit uint64) StateParameters
WithMaxKeySizeAllowed sets limit on max key size
func (StateParameters) WithMaxValueSizeAllowed ¶ added in v0.28.0
func (params StateParameters) WithMaxValueSizeAllowed(limit uint64) StateParameters
WithMaxValueSizeAllowed sets limit on max value size
func (StateParameters) WithMeterParameters ¶ added in v0.28.0
func (params StateParameters) WithMeterParameters( meterParams meter.MeterParameters, ) StateParameters
WithMeterParameters sets the state's meter parameters
type TransactionState ¶ added in v0.28.0
type TransactionState struct {
// contains filtered or unexported fields
}
TransactionState provides active transaction states and facilitates common state management operations.
func NewTransactionState ¶ added in v0.28.0
func NewTransactionState( startView View, params StateParameters, ) *TransactionState
NewTransactionState constructs a new state transaction which manages nested transactions.
func (*TransactionState) AttachAndCommitParseRestricted ¶ added in v0.28.0
func (s *TransactionState) AttachAndCommitParseRestricted( cachedNestedTransaction *State, ) error
AttachAndCommitParseRestricted commits the changes in the cached nested transaction to the current (nested) transaction.
func (*TransactionState) BeginNestedTransaction ¶ added in v0.28.0
func (s *TransactionState) BeginNestedTransaction() ( NestedTransactionId, error, )
BeginNestedTransaction creates a unrestricted nested transaction within the current unrestricted (nested) transaction. This returns error if the current nested transaction is program restricted.
func (*TransactionState) BeginParseRestrictedNestedTransaction ¶ added in v0.28.0
func (s *TransactionState) BeginParseRestrictedNestedTransaction( location common.AddressLocation, ) ( NestedTransactionId, error, )
BeginParseRestrictedNestedTransaction creates a restricted nested transaction within the current (nested) transaction.
func (*TransactionState) Commit ¶ added in v0.28.0
func (s *TransactionState) Commit( expectedId NestedTransactionId, ) error
Commit commits the changes in the current unrestricted nested transaction to the parent (nested) transaction. This returns error if the expectedId does not match the current nested transaction.
func (*TransactionState) CommitParseRestricted ¶ added in v0.28.0
func (s *TransactionState) CommitParseRestricted( location common.AddressLocation, ) ( *State, error, )
CommitParseRestricted commits the changes in the current restricted nested transaction to the parent (nested) transaction. This returns error if the specified location does not match the tracked location.
func (*TransactionState) ComputationIntensities ¶ added in v0.28.0
func (s *TransactionState) ComputationIntensities() meter.MeteredComputationIntensities
func (*TransactionState) DisableAllLimitEnforcements ¶ added in v0.28.0
func (s *TransactionState) DisableAllLimitEnforcements()
DisableAllLimitEnforcements disables all the limits
func (*TransactionState) EnableAllLimitEnforcements ¶ added in v0.28.0
func (s *TransactionState) EnableAllLimitEnforcements()
EnableAllLimitEnforcements enables all the limits
func (*TransactionState) EnforceComputationLimits ¶ added in v0.28.0
func (s *TransactionState) EnforceComputationLimits() bool
EnforceComputationLimits returns if the computation limits should be enforced or not.
func (*TransactionState) EnforceLimits ¶ added in v0.28.0
func (s *TransactionState) EnforceLimits() bool
EnforceInteractionLimits returns if the interaction limits should be enforced or not
func (*TransactionState) Get ¶ added in v0.28.0
func (s *TransactionState) Get( owner string, key string, enforceLimit bool, ) ( flow.RegisterValue, error, )
func (*TransactionState) InteractionUsed ¶ added in v0.28.0
func (s *TransactionState) InteractionUsed() uint64
func (*TransactionState) IsCurrent ¶ added in v0.28.0
func (s *TransactionState) IsCurrent(id NestedTransactionId) bool
IsCurrent returns true if the provide id refers to the current (nested) transaction.
func (*TransactionState) IsParseRestricted ¶ added in v0.28.0
func (s *TransactionState) IsParseRestricted() bool
IsParseRestricted returns true if the current nested transaction is in parse resticted access mode.
func (*TransactionState) MainTransactionId ¶ added in v0.28.0
func (s *TransactionState) MainTransactionId() NestedTransactionId
func (*TransactionState) MemoryIntensities ¶ added in v0.28.0
func (s *TransactionState) MemoryIntensities() meter.MeteredMemoryIntensities
func (*TransactionState) MeterComputation ¶ added in v0.28.0
func (s *TransactionState) MeterComputation( kind common.ComputationKind, intensity uint, ) error
func (*TransactionState) MeterEmittedEvent ¶ added in v0.28.0
func (s *TransactionState) MeterEmittedEvent(byteSize uint64) error
func (*TransactionState) MeterMemory ¶ added in v0.28.0
func (s *TransactionState) MeterMemory( kind common.MemoryKind, intensity uint, ) error
func (*TransactionState) NumNestedTransactions ¶ added in v0.28.0
func (s *TransactionState) NumNestedTransactions() int
NumNestedTransactions returns the number of uncommitted nested transactions. Note that the main transaction is not considered a nested transaction.
func (*TransactionState) RestartNestedTransaction ¶ added in v0.28.0
func (s *TransactionState) RestartNestedTransaction( id NestedTransactionId, ) error
RestartNestedTransaction merges all changes that belongs to the nested transaction about to be restart (for spock/meter bookkeeping), then wipes its view changes.
func (*TransactionState) RunWithAllLimitsDisabled ¶ added in v0.28.0
func (s *TransactionState) RunWithAllLimitsDisabled(f func())
RunWithAllLimitsDisabled runs f with limits disabled
func (*TransactionState) Set ¶ added in v0.28.0
func (s *TransactionState) Set( owner string, key string, value flow.RegisterValue, enforceLimit bool, ) error
func (*TransactionState) TotalComputationLimit ¶ added in v0.28.0
func (s *TransactionState) TotalComputationLimit() uint
func (*TransactionState) TotalComputationUsed ¶ added in v0.28.0
func (s *TransactionState) TotalComputationUsed() uint
func (*TransactionState) TotalEmittedEventBytes ¶ added in v0.28.0
func (s *TransactionState) TotalEmittedEventBytes() uint64
func (*TransactionState) TotalMemoryEstimate ¶ added in v0.28.0
func (s *TransactionState) TotalMemoryEstimate() uint64
func (*TransactionState) UpdatedAddresses ¶ added in v0.28.0
func (s *TransactionState) UpdatedAddresses() []flow.Address
func (*TransactionState) ViewForTestingOnly ¶ added in v0.28.0
func (s *TransactionState) ViewForTestingOnly() View
type View ¶ added in v0.15.0
type View interface { NewChild() View MergeView(child View) error DropDelta() // drops all the delta changes RegisterUpdates() ([]flow.RegisterID, []flow.RegisterValue) AllRegisters() []flow.RegisterID Ledger }