Skip to content

Commit

Permalink
Merge pull request #24 from Dharitri-org/bhagya
Browse files Browse the repository at this point in the history
v0.1.9
  • Loading branch information
bhagyaraj1208117 committed Mar 22, 2024
2 parents a2f8ece + 20da641 commit bc65784
Show file tree
Hide file tree
Showing 6 changed files with 251 additions and 62 deletions.
2 changes: 1 addition & 1 deletion builtInFunctions/creator.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ func (b *builtInFuncCreator) CreateBuiltInFunctionContainer() error {
return err
}

newFunc, err = NewSaveKeyValueStorageFunc(b.gasConfig.BaseOperationCost, b.gasConfig.BuiltInCost.SaveKeyValue)
newFunc, err = NewSaveKeyValueStorageFunc(b.gasConfig.BaseOperationCost, b.gasConfig.BuiltInCost.SaveKeyValue, b.enableEpochsHandler)
if err != nil {
return err
}
Expand Down
39 changes: 30 additions & 9 deletions builtInFunctions/keyValueStorage.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,26 @@ import (

type saveKeyValueStorage struct {
baseAlwaysActiveHandler
gasConfig vmcommon.BaseOperationCost
funcGasCost uint64
mutExecution sync.RWMutex
gasConfig vmcommon.BaseOperationCost
funcGasCost uint64
mutExecution sync.RWMutex
enableEpochsHandler vmcommon.EnableEpochsHandler
}

// NewSaveKeyValueStorageFunc returns the save key-value storage built in function
func NewSaveKeyValueStorageFunc(
gasConfig vmcommon.BaseOperationCost,
funcGasCost uint64,
enableEpochsHandler vmcommon.EnableEpochsHandler,
) (*saveKeyValueStorage, error) {
if check.IfNil(enableEpochsHandler) {
return nil, ErrNilEnableEpochsHandler
}

s := &saveKeyValueStorage{
gasConfig: gasConfig,
funcGasCost: funcGasCost,
gasConfig: gasConfig,
funcGasCost: funcGasCost,
enableEpochsHandler: enableEpochsHandler,
}

return s, nil
Expand All @@ -51,9 +58,9 @@ func (k *saveKeyValueStorage) ProcessBuiltinFunction(
k.mutExecution.RLock()
defer k.mutExecution.RUnlock()

err := checkArgumentsForSaveKeyValue(acntDest, input)
if err != nil {
return nil, err
errCheck := checkArgumentsForSaveKeyValue(acntDest, input)
if errCheck != nil {
return nil, errCheck
}

vmOutput := &vmcommon.VMOutput{
Expand Down Expand Up @@ -100,7 +107,21 @@ func (k *saveKeyValueStorage) ProcessBuiltinFunction(
}
}

vmOutput.GasRemaining -= useGas
return k.subtractGasFromVMoutput(vmOutput, useGas)
}

func (k *saveKeyValueStorage) subtractGasFromVMoutput(vmOutput *vmcommon.VMOutput, usedGas uint64) (*vmcommon.VMOutput, error) {
if !k.enableEpochsHandler.FixGasRemainingForSaveKeyValueBuiltinFunctionEnabled() {
// backwards compatibility
vmOutput.GasRemaining -= usedGas

return vmOutput, nil
}
if vmOutput.GasRemaining < usedGas {
return nil, ErrNotEnoughGas
}

vmOutput.GasRemaining -= usedGas

return vmOutput, nil
}
Expand Down
109 changes: 94 additions & 15 deletions builtInFunctions/keyValueStorage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,39 @@ import (
"github.com/stretchr/testify/require"
)

var disabledFixForSaveKeyValueEnableEpochsHandler = &mock.EnableEpochsHandlerStub{
FixGasRemainingForSaveKeyValueBuiltinFunctionEnabledField: false,
}

func TestNewSaveKeyValueStorageFunc(t *testing.T) {
t.Parallel()

funcGasCost := uint64(1)
gasConfig := vmcommon.BaseOperationCost{
StorePerByte: 1,
}

kvs, err := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost)
require.NoError(t, err)
require.False(t, check.IfNil(kvs))
require.Equal(t, funcGasCost, kvs.funcGasCost)
require.Equal(t, gasConfig, kvs.gasConfig)
t.Run("nil enable epoch hanlder should error", func(t *testing.T) {
t.Parallel()

funcGasCost := uint64(1)
gasConfig := vmcommon.BaseOperationCost{
StorePerByte: 1,
}

kvs, err := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost, nil)
assert.Nil(t, kvs)
assert.Equal(t, ErrNilEnableEpochsHandler, err)
})
t.Run("should work", func(t *testing.T) {
t.Parallel()

funcGasCost := uint64(1)
gasConfig := vmcommon.BaseOperationCost{
StorePerByte: 1,
}

kvs, err := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost, disabledFixForSaveKeyValueEnableEpochsHandler)
require.NoError(t, err)
require.False(t, check.IfNil(kvs))
require.Equal(t, funcGasCost, kvs.funcGasCost)
require.Equal(t, gasConfig, kvs.gasConfig)
})
}

func TestSaveKeyValueStorageFunc_SetNewGasConfig(t *testing.T) {
Expand All @@ -37,7 +57,7 @@ func TestSaveKeyValueStorageFunc_SetNewGasConfig(t *testing.T) {
StorePerByte: 1,
}

kvs, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost)
kvs, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost, disabledFixForSaveKeyValueEnableEpochsHandler)
require.NotNil(t, kvs)

newGasConfig := vmcommon.BaseOperationCost{
Expand All @@ -63,7 +83,7 @@ func TestSaveKeyValue_ProcessBuiltinFunction(t *testing.T) {
AoTPreparePerByte: 1,
}

skv, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost)
skv, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost, disabledFixForSaveKeyValueEnableEpochsHandler)

addr := []byte("addr")
acc := mock.NewUserAccount(addr)
Expand Down Expand Up @@ -119,7 +139,7 @@ func TestSaveKeyValue_ProcessBuiltinFunctionGetNodeFromDbKey(t *testing.T) {
AoTPreparePerByte: 1,
}

skv, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost)
skv, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost, disabledFixForSaveKeyValueEnableEpochsHandler)
addr := []byte("addr")
acc := &mock.AccountWrapMock{
RetrieveValueCalled: func(_ []byte) ([]byte, uint32, error) {
Expand Down Expand Up @@ -156,7 +176,7 @@ func TestSaveKeyValueStorage_ProcessBuiltinFunctionNilAccountSender(t *testing.T
AoTPreparePerByte: 1,
}

skv, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost)
skv, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost, disabledFixForSaveKeyValueEnableEpochsHandler)

addr := []byte("addr")
acc := mock.NewUserAccount(addr)
Expand All @@ -180,6 +200,17 @@ func TestSaveKeyValueStorage_ProcessBuiltinFunctionNilAccountSender(t *testing.T
}

func TestSaveKeyValue_ProcessBuiltinFunctionMultipleKeys(t *testing.T) {
t.Run("should work with disabled fix", func(t *testing.T) {
processBuiltinFunctionMultipleKeys(t, disabledFixForSaveKeyValueEnableEpochsHandler)
})
t.Run("should work with enabled fix", func(t *testing.T) {
processBuiltinFunctionMultipleKeys(t, &mock.EnableEpochsHandlerStub{
FixGasRemainingForSaveKeyValueBuiltinFunctionEnabledField: true,
})
})
}

func processBuiltinFunctionMultipleKeys(t *testing.T, enableEpochHandler vmcommon.EnableEpochsHandler) {
t.Parallel()

funcGasCost := uint64(1)
Expand All @@ -190,7 +221,7 @@ func TestSaveKeyValue_ProcessBuiltinFunctionMultipleKeys(t *testing.T) {
PersistPerByte: 1,
CompilePerByte: 1,
}
skv, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost)
skv, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost, enableEpochHandler)

addr := []byte("addr")
acc := mock.NewUserAccount(addr)
Expand Down Expand Up @@ -226,3 +257,51 @@ func TestSaveKeyValue_ProcessBuiltinFunctionMultipleKeys(t *testing.T) {
_, err = skv.ProcessBuiltinFunction(acc, acc, vmInput)
require.Equal(t, err, ErrNotEnoughGas)
}

func TestSaveKeyValue_ProcessBuiltinFunctionExistingKeyAndNotEnoughGas(t *testing.T) {
t.Parallel()

funcGasCost := uint64(100)
persistPerByte := uint64(5)
gasConfig := vmcommon.BaseOperationCost{
StorePerByte: 1,
ReleasePerByte: 1,
DataCopyPerByte: 1,
PersistPerByte: persistPerByte,
CompilePerByte: 1,
}

addr := []byte("addr")
acc := mock.NewUserAccount(addr)
vmInput := &vmcommon.ContractCallInput{
VMInput: vmcommon.VMInput{
CallerAddr: addr,
GasProvided: 0,
CallValue: big.NewInt(0),
},
RecipientAddr: addr,
}

key := []byte("key")
value := []byte("value")
vmInput.Arguments = [][]byte{key, value}

acc.Storage[string(key)] = value

t.Run("backward compatibility: do not return error but a negative gas remaining value", func(t *testing.T) {
skv, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost, disabledFixForSaveKeyValueEnableEpochsHandler)
vmOutput, err := skv.ProcessBuiltinFunction(acc, acc, vmInput)
assert.Nil(t, err)
expectedGasRemaining := 0 - funcGasCost - persistPerByte*uint64(len(key)+len(value))
assert.Equal(t, expectedGasRemaining, vmOutput.GasRemaining) // overflow on uint64 occurs here
})
t.Run("should return not enough of gas if the fix is enabled", func(t *testing.T) {
epochsHandler := &mock.EnableEpochsHandlerStub{
FixGasRemainingForSaveKeyValueBuiltinFunctionEnabledField: true,
}
skv, _ := NewSaveKeyValueStorageFunc(gasConfig, funcGasCost, epochsHandler)
vmOutput, err := skv.ProcessBuiltinFunction(acc, acc, vmInput)
assert.Equal(t, ErrNotEnoughGas, err)
assert.Nil(t, vmOutput)
})
}
101 changes: 64 additions & 37 deletions coverage.txt
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,21 @@ github.com/Dharitri-org/drtg-vm-common/returnCodes.go:26.25,27.31 1 0
github.com/Dharitri-org/drtg-vm-common/returnCodes.go:28.23,29.28 1 0
github.com/Dharitri-org/drtg-vm-common/returnCodes.go:30.23,31.28 1 0
github.com/Dharitri-org/drtg-vm-common/returnCodes.go:32.10,33.52 1 0
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:27.74,34.2 1 7
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:38.59,39.41 1 3
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:39.41,41.3 1 1
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:43.2,45.44 2 2
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:50.129,51.44 1 5
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:51.44,53.3 1 1
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:55.2,55.47 1 4
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:55.47,57.3 1 3
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:59.2,59.52 1 4
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:62.91,63.43 1 3
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:63.43,65.3 1 1
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:67.2,69.67 2 2
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:73.70,75.2 1 1
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:78.55,80.2 1 2
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:83.52,85.2 1 1
github.com/Dharitri-org/drtg-vm-common/parsers/callArgsParser.go:9.42,11.2 1 4
github.com/Dharitri-org/drtg-vm-common/parsers/callArgsParser.go:15.80,20.16 4 5
github.com/Dharitri-org/drtg-vm-common/parsers/callArgsParser.go:20.16,22.3 1 2
Expand Down Expand Up @@ -256,6 +271,8 @@ github.com/Dharitri-org/drtg-vm-common/parsers/tokenize.go:35.52,36.24 1 2
github.com/Dharitri-org/drtg-vm-common/parsers/tokenize.go:36.24,38.3 1 1
github.com/Dharitri-org/drtg-vm-common/parsers/tokenize.go:40.2,40.29 1 1



github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:12.30,16.2 1 13
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:19.62,25.2 4 107
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:29.67,33.9 3 102
Expand All @@ -268,9 +285,10 @@ github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:65.42,68.27 3 102
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:68.27,70.3 1 303
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:71.2,73.13 2 102
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:77.44,80.34 3 103
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:80.34,82.3 1 5154
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:80.34,82.3 1 5155
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:83.2,85.15 2 103


github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:27.74,34.2 1 7
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:38.59,39.41 1 3
github.com/Dharitri-org/drtg-vm-common/dataTrieMigrator/dataTrieMigrator.go:39.41,41.3 1 1
Expand Down Expand Up @@ -398,6 +416,7 @@ github.com/Dharitri-org/drtg-vm-common/parsers/dataField/utils.go:105.34,106.34
github.com/Dharitri-org/drtg-vm-common/parsers/dataField/utils.go:106.34,108.4 1 4
github.com/Dharitri-org/drtg-vm-common/parsers/dataField/utils.go:111.2,111.13 1 31


github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:12.30,16.2 1 13
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:19.62,25.2 4 107
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:29.67,33.9 3 102
Expand All @@ -413,6 +432,7 @@ github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:77.44,80.34 3 103
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:80.34,82.3 1 5155
github.com/Dharitri-org/drtg-vm-common/container/mutexMap.go:83.2,85.15 2 103


github.com/Dharitri-org/drtg-vm-common/builtInFunctions/baseAccountGuarder.go:32.86,33.34 1 29
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/baseAccountGuarder.go:33.34,35.3 1 3
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/baseAccountGuarder.go:36.2,36.43 1 26
Expand Down Expand Up @@ -1847,42 +1867,49 @@ github.com/Dharitri-org/drtg-vm-common/builtInFunctions/guardAccount.go:40.2,51.
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/guardAccount.go:54.62,56.26 2 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/guardAccount.go:56.26,58.3 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/guardAccount.go:60.2,62.12 3 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:25.33,32.2 2 7
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:35.74,36.20 1 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:36.20,38.3 1 0
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:40.2,43.25 4 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:50.31,55.16 4 11
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:55.16,57.3 1 6
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:59.2,65.47 3 5
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:65.47,71.45 5 6
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:71.45,73.4 1 0
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:75.3,76.37 2 6
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:76.37,78.4 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:79.3,79.35 1 5
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:79.35,80.12 1 0
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:83.3,86.38 4 5
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:86.38,88.4 1 5
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:90.3,91.33 2 5
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:91.33,93.4 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:97.3,98.17 2 4
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:98.17,100.4 1 0
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:103.2,105.22 2 3
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:108.114,109.18 1 11
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:109.18,111.3 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:112.2,112.30 1 10
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:112.30,114.3 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:115.2,115.33 1 9
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:115.33,117.3 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:118.2,118.36 1 8
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:118.36,120.3 1 0
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:121.2,121.26 1 8
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:121.26,123.3 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:124.2,124.57 1 7
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:124.57,126.3 1 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:127.2,127.55 1 5
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:127.55,129.3 1 0
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:131.2,131.12 1 5
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:135.53,137.2 1 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:27.33,28.38 1 11
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:28.38,30.3 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:32.2,38.15 2 10
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:42.74,43.20 1 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:43.20,45.3 1 0
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:47.2,50.25 4 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:57.31,62.21 4 16
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:62.21,64.3 1 7
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:66.2,72.47 3 9
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:72.47,78.45 5 11
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:78.45,80.4 1 0
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:82.3,83.37 2 11
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:83.37,85.4 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:86.3,86.35 1 10
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:86.35,87.12 1 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:90.3,93.38 4 8
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:93.38,95.4 1 8
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:97.3,98.33 2 8
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:98.33,100.4 1 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:104.3,105.17 2 6
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:105.17,107.4 1 0
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:110.2,110.52 1 6
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:113.128,114.83 1 6
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:114.83,119.3 2 4
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:120.2,120.37 1 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:120.37,122.3 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:124.2,126.22 2 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:129.114,130.18 1 16
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:130.18,132.3 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:133.2,133.30 1 15
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:133.30,135.3 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:136.2,136.33 1 14
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:136.33,138.3 1 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:139.2,139.36 1 12
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:139.36,141.3 1 0
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:142.2,142.26 1 12
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:142.26,144.3 1 1
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:145.2,145.57 1 11
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:145.57,147.3 1 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:148.2,148.55 1 9
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:148.55,150.3 1 0
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:152.2,152.12 1 9
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/keyValueStorage.go:156.53,158.2 1 2
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/logsAndEvents.go:30.3,33.43 2 23
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/logsAndEvents.go:33.43,36.3 2 24
github.com/Dharitri-org/drtg-vm-common/builtInFunctions/logsAndEvents.go:37.2,46.26 3 23
Expand Down
Loading

0 comments on commit bc65784

Please sign in to comment.