-
Notifications
You must be signed in to change notification settings - Fork 175
/
meter.go
67 lines (59 loc) · 1.96 KB
/
meter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package meter
import "github.com/onflow/cadence/runtime/common"
type MetringOperationType uint
const (
// [2_000, 3_000) reserved for the FVM
_ common.ComputationKind = iota + 2_000
ComputationKindHash
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
)
type MeteredComputationIntensities map[common.ComputationKind]uint
type MeteredMemoryIntensities map[common.MemoryKind]uint
type Meter interface {
// merge child funcionality
NewChild() Meter
MergeMeter(child Meter, enforceLimits bool) error
// computation metering
MeterComputation(kind common.ComputationKind, intensity uint) error
ComputationIntensities() MeteredComputationIntensities
TotalComputationUsed() uint
TotalComputationLimit() uint
// memory metering
MeterMemory(kind common.MemoryKind, intensity uint) error
MemoryIntensities() MeteredMemoryIntensities
TotalMemoryUsed() uint
TotalMemoryLimit() uint
// TODO move storage metering to here
// MeterStorageRead(byteSize uint) error
// MeterStorageWrite(byteSize uint) error
// TotalBytesReadFromStorage() int
// TotalBytesWroteToStorage() int
// TotalBytesOfStorageInteractions() int
}