Documentation ¶
Index ¶
- Constants
- Variables
- func GetStorageKeyValueSizeForTesting(storageKey StorageInteractionKey, value flow.RegisterValue) uint64
- type ExecutionEffortWeights
- type ExecutionMemoryWeights
- type Meter
- func (m *Meter) ComputationIntensities() MeteredComputationIntensities
- func (m *Meter) GetStorageUpdateSizeMapForTesting() MeteredStorageInteractionMap
- func (m *Meter) MemoryIntensities() MeteredMemoryIntensities
- func (m *Meter) MergeMeter(child *Meter)
- func (m *Meter) MeterComputation(kind common.ComputationKind, intensity uint) error
- func (m *Meter) MeterEmittedEvent(byteSize uint64) error
- func (m *Meter) MeterMemory(kind common.MemoryKind, intensity uint) error
- func (m *Meter) MeterStorageRead(storageKey StorageInteractionKey, value flow.RegisterValue, enforceLimit bool) error
- func (m *Meter) MeterStorageWrite(storageKey StorageInteractionKey, value flow.RegisterValue, enforceLimit bool) error
- func (m *Meter) NewChild() *Meter
- func (m *Meter) TotalBytesOfStorageInteractions() uint64
- func (m *Meter) TotalBytesReadFromStorage() uint64
- func (m *Meter) TotalBytesWrittenToStorage() uint64
- func (m *Meter) TotalComputationUsed() uint
- func (m *Meter) TotalEmittedEventBytes() uint64
- func (m *Meter) TotalMemoryEstimate() uint64
- type MeterOptions
- type MeterParameters
- func (params MeterParameters) ComputationWeights() ExecutionEffortWeights
- func (params MeterParameters) MemoryWeights() ExecutionMemoryWeights
- func (params MeterParameters) TotalComputationLimit() uint
- func (params MeterParameters) TotalMemoryLimit() uint64
- func (params MeterParameters) WithComputationLimit(limit uint) MeterParameters
- func (params MeterParameters) WithComputationWeights(weights ExecutionEffortWeights) MeterParameters
- func (params MeterParameters) WithEventEmitByteLimit(byteLimit uint64) MeterParameters
- func (params MeterParameters) WithMemoryLimit(limit uint64) MeterParameters
- func (params MeterParameters) WithMemoryWeights(weights ExecutionMemoryWeights) MeterParameters
- func (params MeterParameters) WithStorageInteractionLimit(maxStorageInteractionLimit uint64) MeterParameters
- type MeteredComputationIntensities
- type MeteredMemoryIntensities
- type MeteredStorageInteractionMap
- type StorageInteractionKey
Constants ¶
const ( ComputationKindHash common.ComputationKind ComputationKindVerifySignature ComputationKindAddAccountKey ComputationKindAddEncodedAccountKey ComputationKindAllocateStorageIndex ComputationKindCreateAccount ComputationKindEmitEvent ComputationKindGenerateUUID ComputationKindGetAccountAvailableBalance ComputationKindGetAccountBalance ComputationKindGetAccountContractCode ComputationKindGetAccountContractNames ComputationKindGetAccountKey ComputationKindGetBlockAtHeight ComputationKindGetCode ComputationKindGetCurrentBlockHeight ComputationKindGetProgram ComputationKindGetStorageCapacity ComputationKindGetStorageUsed ComputationKindGetValue ComputationKindRemoveAccountContractCode ComputationKindResolveLocation ComputationKindRevokeAccountKey ComputationKindRevokeEncodedAccountKey ComputationKindSetProgram ComputationKindSetValue ComputationKindUpdateAccountContractCode ComputationKindValidatePublicKey ComputationKindValueExists )
TODO(patrick): rm after emulator is updated ...
const MeterExecutionInternalPrecisionBytes = 16
MeterExecutionInternalPrecisionBytes are the amount of bytes that are used internally by the WeigthedMeter to allow for metering computation smaller than one unit of computation. This allows for more fine weights. A weight of 1 unit of computation is equal to 1<<16. The minimum possible weight is 1/65536.
Variables ¶
var ( // DefaultComputationWeights is the default weights for computation intensities // these weighs make the computation metering the same as it was before dynamic execution fees DefaultComputationWeights = ExecutionEffortWeights{ common.ComputationKindStatement: 1 << MeterExecutionInternalPrecisionBytes, common.ComputationKindLoop: 1 << MeterExecutionInternalPrecisionBytes, common.ComputationKindFunctionInvocation: 1 << MeterExecutionInternalPrecisionBytes, } // DefaultMemoryWeights are currently hard-coded here. In the future we might like to // define this in a contract similar to the computation weights DefaultMemoryWeights = ExecutionMemoryWeights{}/* 176 elements not displayed */ )
Functions ¶
func GetStorageKeyValueSizeForTesting ¶ added in v0.28.0
func GetStorageKeyValueSizeForTesting( storageKey StorageInteractionKey, value flow.RegisterValue) uint64
Types ¶
type ExecutionEffortWeights ¶ added in v0.27.0
type ExecutionEffortWeights map[common.ComputationKind]uint64
type ExecutionMemoryWeights ¶ added in v0.27.0
type ExecutionMemoryWeights map[common.MemoryKind]uint64
type Meter ¶
type Meter struct { MeterParameters // contains filtered or unexported fields }
Meter collects memory and computation usage and enforces limits for any each memory/computation usage call it sums intensity multiplied by the weight of the intensity to the total memory/computation usage metrics and returns error if limits are not met.
func NewMeter ¶ added in v0.27.0
func NewMeter(params MeterParameters) *Meter
NewMeter constructs a new Meter
func (*Meter) ComputationIntensities ¶
func (m *Meter) ComputationIntensities() MeteredComputationIntensities
ComputationIntensities returns all the measured computational intensities
func (*Meter) GetStorageUpdateSizeMapForTesting ¶ added in v0.28.0
func (m *Meter) GetStorageUpdateSizeMapForTesting() MeteredStorageInteractionMap
func (*Meter) MemoryIntensities ¶
func (m *Meter) MemoryIntensities() MeteredMemoryIntensities
MemoryIntensities returns all the measured memory intensities
func (*Meter) MergeMeter ¶
MergeMeter merges the input meter into the current meter and checks for the limits
func (*Meter) MeterComputation ¶
func (m *Meter) MeterComputation(kind common.ComputationKind, intensity uint) error
MeterComputation captures computation usage and returns an error if it goes beyond the limit
func (*Meter) MeterEmittedEvent ¶ added in v0.28.0
func (*Meter) MeterMemory ¶
func (m *Meter) MeterMemory(kind common.MemoryKind, intensity uint) error
MeterMemory captures memory usage and returns an error if it goes beyond the limit
func (*Meter) MeterStorageRead ¶ added in v0.28.0
func (m *Meter) MeterStorageRead( storageKey StorageInteractionKey, value flow.RegisterValue, enforceLimit bool) error
MeterStorageRead captures storage read bytes count and returns an error if it goes beyond the total interaction limit and limit is enforced
func (*Meter) MeterStorageWrite ¶ added in v0.28.0
func (m *Meter) MeterStorageWrite( storageKey StorageInteractionKey, value flow.RegisterValue, enforceLimit bool) error
MeterStorageRead captures storage written bytes count and returns an error if it goes beyond the total interaction limit and limit is enforced
func (*Meter) TotalBytesOfStorageInteractions ¶ added in v0.28.0
TotalBytesOfStorageInteractions returns total number of byte read and written from/to storage
func (*Meter) TotalBytesReadFromStorage ¶ added in v0.28.0
TotalBytesReadFromStorage returns total number of byte read from storage
func (*Meter) TotalBytesWrittenToStorage ¶ added in v0.28.0
TotalBytesReadFromStorage returns total number of byte written to storage
func (*Meter) TotalComputationUsed ¶
TotalComputationUsed returns the total computation used
func (*Meter) TotalEmittedEventBytes ¶ added in v0.28.0
func (*Meter) TotalMemoryEstimate ¶ added in v0.27.0
TotalMemoryEstimate returns the total memory used
type MeterOptions ¶ added in v0.28.0
type MeterOptions func(*Meter)
type MeterParameters ¶ added in v0.28.0
type MeterParameters struct {
// contains filtered or unexported fields
}
func DefaultParameters ¶ added in v0.28.0
func DefaultParameters() MeterParameters
func (MeterParameters) ComputationWeights ¶ added in v0.28.0
func (params MeterParameters) ComputationWeights() ExecutionEffortWeights
func (MeterParameters) MemoryWeights ¶ added in v0.28.0
func (params MeterParameters) MemoryWeights() ExecutionMemoryWeights
func (MeterParameters) TotalComputationLimit ¶ added in v0.28.0
func (params MeterParameters) TotalComputationLimit() uint
TotalComputationLimit returns the total computation limit
func (MeterParameters) TotalMemoryLimit ¶ added in v0.28.0
func (params MeterParameters) TotalMemoryLimit() uint64
TotalMemoryLimit returns the total memory limit
func (MeterParameters) WithComputationLimit ¶ added in v0.28.0
func (params MeterParameters) WithComputationLimit(limit uint) MeterParameters
func (MeterParameters) WithComputationWeights ¶ added in v0.28.0
func (params MeterParameters) WithComputationWeights( weights ExecutionEffortWeights, ) MeterParameters
func (MeterParameters) WithEventEmitByteLimit ¶ added in v0.28.0
func (params MeterParameters) WithEventEmitByteLimit( byteLimit uint64, ) MeterParameters
func (MeterParameters) WithMemoryLimit ¶ added in v0.28.0
func (params MeterParameters) WithMemoryLimit(limit uint64) MeterParameters
func (MeterParameters) WithMemoryWeights ¶ added in v0.28.0
func (params MeterParameters) WithMemoryWeights( weights ExecutionMemoryWeights, ) MeterParameters
func (MeterParameters) WithStorageInteractionLimit ¶ added in v0.28.0
func (params MeterParameters) WithStorageInteractionLimit( maxStorageInteractionLimit uint64, ) MeterParameters
type MeteredComputationIntensities ¶ added in v0.26.0
type MeteredComputationIntensities map[common.ComputationKind]uint
type MeteredMemoryIntensities ¶ added in v0.26.0
type MeteredMemoryIntensities map[common.MemoryKind]uint
type MeteredStorageInteractionMap ¶ added in v0.28.0
type MeteredStorageInteractionMap map[StorageInteractionKey]uint64
type StorageInteractionKey ¶ added in v0.28.0
type StorageInteractionKey struct {
Owner, Key string
}