From 332de7ac7ffea8d733504a13a1df6525b02c7f4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20B=C4=83ncioiu?= Date: Fri, 27 Oct 2023 18:01:29 +0300 Subject: [PATCH 1/6] Fix memload on top of v1.4.81. --- vmhost/contexts/runtime.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vmhost/contexts/runtime.go b/vmhost/contexts/runtime.go index c55e2452..1ec571aa 100644 --- a/vmhost/contexts/runtime.go +++ b/vmhost/contexts/runtime.go @@ -1086,10 +1086,13 @@ func (context *runtimeContext) MemLoad(offset int32, length int32) ([]byte, erro return nil, fmt.Errorf("mem load: %w", vmhost.ErrNegativeLength) } - result := make([]byte, length) + var result []byte + if isRequestedEndTooLarge { + result = make([]byte, memoryLength-uint32(offset)) copy(result, memoryView[offset:]) } else { + result = make([]byte, requestedEnd-offset) copy(result, memoryView[offset:requestedEnd]) } From ae3dd817e0f2932e37b5a6a55d49314d9e6f9f21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20B=C4=83ncioiu?= Date: Fri, 27 Oct 2023 18:44:52 +0300 Subject: [PATCH 2/6] Fix unit test. --- vmhost/contexts/runtime_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vmhost/contexts/runtime_test.go b/vmhost/contexts/runtime_test.go index 581c0574..0e48a34b 100644 --- a/vmhost/contexts/runtime_test.go +++ b/vmhost/contexts/runtime_test.go @@ -638,7 +638,7 @@ func TestRuntimeContext_MemLoadCases(t *testing.T) { length = 9 memContents, err = runtimeContext.MemLoad(offset, length) require.Nil(t, err) - require.Equal(t, []byte{'e', 's', 't', ' ', 'd', 'a', 't', 'a', 0}, memContents) + require.Equal(t, []byte{'e', 's', 't', ' ', 'd', 'a', 't', 'a'}, memContents) // Zero length offset = int32(memory.Length() - 8) From 3a213f3a7aafffc4cef079e990fe2ffcfd84adf6 Mon Sep 17 00:00:00 2001 From: jules01 Date: Tue, 31 Oct 2023 12:26:56 +0200 Subject: [PATCH 3/6] - fixed workflows --- .github/workflows/code-coverage.yml | 2 +- .github/workflows/golangci-lint.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml index 0a097936..ea38e884 100644 --- a/.github/workflows/code-coverage.yml +++ b/.github/workflows/code-coverage.yml @@ -19,7 +19,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v2 with: - go-version: ^1.15.2 + go-version: 1.20.7 id: go - name: Check out code into the Go module directory diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index b920f714..611fadc3 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -16,13 +16,13 @@ jobs: steps: - uses: actions/setup-go@v3 with: - go-version: 1.17.6 + go-version: 1.20.7 - uses: actions/checkout@v3 - name: golangci-lint uses: golangci/golangci-lint-action@v3 with: # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. - version: v1.45.2 + version: v1.53.2 # Optional: working directory, useful for monorepos # working-directory: somedir From fe4ff42dab57ee07c0bff96f3b9b590cfc5e04e1 Mon Sep 17 00:00:00 2001 From: jules01 Date: Wed, 15 Nov 2023 17:17:06 +0200 Subject: [PATCH 4/6] - new vm-common version --- go.mod | 2 +- go.sum | 4 +- vmhost/mock/enableEpochsHandlerStub.go | 108 ++++++++++++++----------- 3 files changed, 63 insertions(+), 51 deletions(-) diff --git a/go.mod b/go.mod index 0c86fa30..8e5c5bcc 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/multiversx/mx-chain-core-go v1.2.14 github.com/multiversx/mx-chain-crypto-go v1.2.8 github.com/multiversx/mx-chain-logger-go v1.0.13 - github.com/multiversx/mx-chain-vm-common-go v1.5.5 + github.com/multiversx/mx-chain-vm-common-go v1.5.8-0.20231115145936-fb2d250cd688 github.com/multiversx/mx-components-big-int v1.0.0 github.com/pelletier/go-toml v1.9.3 github.com/stretchr/testify v1.8.3 diff --git a/go.sum b/go.sum index 910df395..27c1d84b 100644 --- a/go.sum +++ b/go.sum @@ -73,8 +73,8 @@ github.com/multiversx/mx-chain-crypto-go v1.2.8 h1:wOgVlUaO5X4L8iEbFjcQcL8SZvv6W github.com/multiversx/mx-chain-crypto-go v1.2.8/go.mod h1:fkaWKp1rbQN9wPKya5jeoRyC+c/SyN/NfggreyeBw+8= github.com/multiversx/mx-chain-logger-go v1.0.13 h1:eru/TETo0MkO4ZTnXsQDKf4PBRpAXmqjT02klNT/JnY= github.com/multiversx/mx-chain-logger-go v1.0.13/go.mod h1:MZJhTAtZTJxT+yK2EHc4ZW3YOHUc1UdjCD0iahRNBZk= -github.com/multiversx/mx-chain-vm-common-go v1.5.5 h1:NoG73lvcHSeUcoFlYybG8ceGuJ6KptD3QJjUNEnGDVk= -github.com/multiversx/mx-chain-vm-common-go v1.5.5/go.mod h1:sqkKMCnwkWl8DURdb9q7pctK8IANghdHY1KJLE0ox2c= +github.com/multiversx/mx-chain-vm-common-go v1.5.8-0.20231115145936-fb2d250cd688 h1:jI8BpuE40/3pMidHwMXSSX72bpZRxmtnOcp4iWi7cqc= +github.com/multiversx/mx-chain-vm-common-go v1.5.8-0.20231115145936-fb2d250cd688/go.mod h1:sqkKMCnwkWl8DURdb9q7pctK8IANghdHY1KJLE0ox2c= github.com/multiversx/mx-components-big-int v1.0.0 h1:Wkr8lSzK2nDqixOrrBa47VNuqdhV1m/aJhaP1EMaiS8= github.com/multiversx/mx-components-big-int v1.0.0/go.mod h1:maIEMgHlNE2u78JaDD0oLzri+ShgU4okHfzP3LWGdQM= github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= diff --git a/vmhost/mock/enableEpochsHandlerStub.go b/vmhost/mock/enableEpochsHandlerStub.go index 73446141..73ce5bba 100644 --- a/vmhost/mock/enableEpochsHandlerStub.go +++ b/vmhost/mock/enableEpochsHandlerStub.go @@ -6,54 +6,56 @@ var _ vmcommon.EnableEpochsHandler = (*EnableEpochsHandlerStub)(nil) // EnableEpochsHandlerStub - type EnableEpochsHandlerStub struct { - IsGlobalMintBurnFlagEnabledField bool - IsESDTTransferRoleFlagEnabledField bool - IsBuiltInFunctionsFlagEnabledField bool - IsCheckCorrectTokenIDForTransferRoleFlagEnabledField bool - IsMultiESDTTransferFixOnCallBackFlagEnabledField bool - IsFixOOGReturnCodeFlagEnabledField bool - IsRemoveNonUpdatedStorageFlagEnabledField bool - IsCreateNFTThroughExecByCallerFlagEnabledField bool - IsStorageAPICostOptimizationFlagEnabledField bool - IsFailExecutionOnEveryAPIErrorFlagEnabledField bool - IsManagedCryptoAPIsFlagEnabledField bool - IsSCDeployFlagEnabledField bool - IsAheadOfTimeGasUsageFlagEnabledField bool - IsRepairCallbackFlagEnabledField bool - IsDisableExecByCallerFlagEnabledField bool - IsRefactorContextFlagEnabledField bool - IsCheckFunctionArgumentFlagEnabledField bool - IsCheckExecuteOnReadOnlyFlagEnabledField bool - IsFixAsyncCallbackCheckFlagEnabledField bool - IsSaveToSystemAccountFlagEnabledField bool - IsCheckFrozenCollectionFlagEnabledField bool - IsSendAlwaysFlagEnabledField bool - IsValueLengthCheckFlagEnabledField bool - IsCheckTransferFlagEnabledField bool - IsTransferToMetaFlagEnabledField bool - IsESDTNFTImprovementV1FlagEnabledField bool - IsFixOldTokenLiquidityEnabledField bool - IsRuntimeMemStoreLimitEnabledField bool - IsRuntimeCodeSizeFixEnabledField bool - IsMaxBlockchainHookCountersFlagEnabledField bool - IsWipeSingleNFTLiquidityDecreaseEnabledField bool - IsAlwaysSaveTokenMetaDataEnabledField bool - IsGuardAccountEnabledField bool - IsSetGuardianEnabledField bool - IsChangeUsernameEnabledField bool - IsConsistentTokensValuesLengthCheckEnabledField bool - IsAutoBalanceDataTriesEnabledField bool - ScToScLogEventEnabledField bool - MultiESDTTransferAsyncCallBackEnableEpochField uint32 - FixOOGReturnCodeEnableEpochField uint32 - RemoveNonUpdatedStorageEnableEpochField uint32 - CreateNFTThroughExecByCallerEnableEpochField uint32 - FixFailExecutionOnErrorEnableEpochField uint32 - ManagedCryptoAPIEnableEpochField uint32 - DisableExecByCallerEnableEpochField uint32 - RefactorContextEnableEpochField uint32 - CheckExecuteReadOnlyEnableEpochField uint32 - StorageAPICostOptimizationEnableEpochField uint32 + IsGlobalMintBurnFlagEnabledField bool + IsESDTTransferRoleFlagEnabledField bool + IsBuiltInFunctionsFlagEnabledField bool + IsCheckCorrectTokenIDForTransferRoleFlagEnabledField bool + IsMultiESDTTransferFixOnCallBackFlagEnabledField bool + IsFixOOGReturnCodeFlagEnabledField bool + IsRemoveNonUpdatedStorageFlagEnabledField bool + IsCreateNFTThroughExecByCallerFlagEnabledField bool + IsStorageAPICostOptimizationFlagEnabledField bool + IsFailExecutionOnEveryAPIErrorFlagEnabledField bool + IsManagedCryptoAPIsFlagEnabledField bool + IsSCDeployFlagEnabledField bool + IsAheadOfTimeGasUsageFlagEnabledField bool + IsRepairCallbackFlagEnabledField bool + IsDisableExecByCallerFlagEnabledField bool + IsRefactorContextFlagEnabledField bool + IsCheckFunctionArgumentFlagEnabledField bool + IsCheckExecuteOnReadOnlyFlagEnabledField bool + IsFixAsyncCallbackCheckFlagEnabledField bool + IsSaveToSystemAccountFlagEnabledField bool + IsCheckFrozenCollectionFlagEnabledField bool + IsSendAlwaysFlagEnabledField bool + IsValueLengthCheckFlagEnabledField bool + IsCheckTransferFlagEnabledField bool + IsTransferToMetaFlagEnabledField bool + IsESDTNFTImprovementV1FlagEnabledField bool + IsFixOldTokenLiquidityEnabledField bool + IsRuntimeMemStoreLimitEnabledField bool + IsRuntimeCodeSizeFixEnabledField bool + IsMaxBlockchainHookCountersFlagEnabledField bool + IsWipeSingleNFTLiquidityDecreaseEnabledField bool + IsAlwaysSaveTokenMetaDataEnabledField bool + IsGuardAccountEnabledField bool + IsSetGuardianEnabledField bool + IsChangeUsernameEnabledField bool + IsConsistentTokensValuesLengthCheckEnabledField bool + IsAutoBalanceDataTriesEnabledField bool + ScToScLogEventEnabledField bool + IsChangeOwnerAddressCrossShardThroughSCEnabledField bool + FixGasRemainingForSaveKeyValueBuiltinFunctionEnabledField bool + MultiESDTTransferAsyncCallBackEnableEpochField uint32 + FixOOGReturnCodeEnableEpochField uint32 + RemoveNonUpdatedStorageEnableEpochField uint32 + CreateNFTThroughExecByCallerEnableEpochField uint32 + FixFailExecutionOnErrorEnableEpochField uint32 + ManagedCryptoAPIEnableEpochField uint32 + DisableExecByCallerEnableEpochField uint32 + RefactorContextEnableEpochField uint32 + CheckExecuteReadOnlyEnableEpochField uint32 + StorageAPICostOptimizationEnableEpochField uint32 } // IsDynamicGasCostForDataTrieStorageLoadEnabled - @@ -301,6 +303,16 @@ func (stub *EnableEpochsHandlerStub) IsScToScEventLogEnabled() bool { return stub.ScToScLogEventEnabledField } +// IsChangeOwnerAddressCrossShardThroughSCEnabled - +func (stub *EnableEpochsHandlerStub) IsChangeOwnerAddressCrossShardThroughSCEnabled() bool { + return stub.IsChangeOwnerAddressCrossShardThroughSCEnabledField +} + +// FixGasRemainingForSaveKeyValueBuiltinFunctionEnabled - +func (stub *EnableEpochsHandlerStub) FixGasRemainingForSaveKeyValueBuiltinFunctionEnabled() bool { + return stub.FixGasRemainingForSaveKeyValueBuiltinFunctionEnabledField +} + // IsInterfaceNil - func (stub *EnableEpochsHandlerStub) IsInterfaceNil() bool { return stub == nil From 0ee8ba5aea42a914c227873aea4dff9290b000f6 Mon Sep 17 00:00:00 2001 From: jules01 Date: Fri, 17 Nov 2023 10:23:55 +0200 Subject: [PATCH 5/6] - proper release --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8e5c5bcc..39fb3131 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/multiversx/mx-chain-core-go v1.2.14 github.com/multiversx/mx-chain-crypto-go v1.2.8 github.com/multiversx/mx-chain-logger-go v1.0.13 - github.com/multiversx/mx-chain-vm-common-go v1.5.8-0.20231115145936-fb2d250cd688 + github.com/multiversx/mx-chain-vm-common-go v1.5.8 github.com/multiversx/mx-components-big-int v1.0.0 github.com/pelletier/go-toml v1.9.3 github.com/stretchr/testify v1.8.3 diff --git a/go.sum b/go.sum index 27c1d84b..4e239a69 100644 --- a/go.sum +++ b/go.sum @@ -73,8 +73,8 @@ github.com/multiversx/mx-chain-crypto-go v1.2.8 h1:wOgVlUaO5X4L8iEbFjcQcL8SZvv6W github.com/multiversx/mx-chain-crypto-go v1.2.8/go.mod h1:fkaWKp1rbQN9wPKya5jeoRyC+c/SyN/NfggreyeBw+8= github.com/multiversx/mx-chain-logger-go v1.0.13 h1:eru/TETo0MkO4ZTnXsQDKf4PBRpAXmqjT02klNT/JnY= github.com/multiversx/mx-chain-logger-go v1.0.13/go.mod h1:MZJhTAtZTJxT+yK2EHc4ZW3YOHUc1UdjCD0iahRNBZk= -github.com/multiversx/mx-chain-vm-common-go v1.5.8-0.20231115145936-fb2d250cd688 h1:jI8BpuE40/3pMidHwMXSSX72bpZRxmtnOcp4iWi7cqc= -github.com/multiversx/mx-chain-vm-common-go v1.5.8-0.20231115145936-fb2d250cd688/go.mod h1:sqkKMCnwkWl8DURdb9q7pctK8IANghdHY1KJLE0ox2c= +github.com/multiversx/mx-chain-vm-common-go v1.5.8 h1:IRHB9/DasGrK5HU8TVeeLrEWt7tcb9zfnzHRLa6KES8= +github.com/multiversx/mx-chain-vm-common-go v1.5.8/go.mod h1:sqkKMCnwkWl8DURdb9q7pctK8IANghdHY1KJLE0ox2c= github.com/multiversx/mx-components-big-int v1.0.0 h1:Wkr8lSzK2nDqixOrrBa47VNuqdhV1m/aJhaP1EMaiS8= github.com/multiversx/mx-components-big-int v1.0.0/go.mod h1:maIEMgHlNE2u78JaDD0oLzri+ShgU4okHfzP3LWGdQM= github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= From 2b81df5658ee76f18e5c08894d922f85d86221e3 Mon Sep 17 00:00:00 2001 From: BeniaminDrasovean Date: Thu, 23 Nov 2023 15:35:18 +0200 Subject: [PATCH 6/6] update go mod --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index abe66aa8..dceea82c 100644 --- a/go.mod +++ b/go.mod @@ -7,10 +7,10 @@ require ( github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 github.com/gin-gonic/gin v1.9.1 github.com/mitchellh/mapstructure v1.5.0 - github.com/multiversx/mx-chain-core-go v1.2.17 + github.com/multiversx/mx-chain-core-go v1.2.19-0.20231123115253-158315dc4238 github.com/multiversx/mx-chain-crypto-go v1.2.8 github.com/multiversx/mx-chain-logger-go v1.0.13 - github.com/multiversx/mx-chain-vm-common-go v1.5.6 + github.com/multiversx/mx-chain-vm-common-go v1.5.9-0.20231123115741-c8a4816c447a github.com/multiversx/mx-components-big-int v1.0.0 github.com/pelletier/go-toml v1.9.3 github.com/stretchr/testify v1.8.3 diff --git a/go.sum b/go.sum index b77094dd..66e6d090 100644 --- a/go.sum +++ b/go.sum @@ -67,14 +67,14 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/multiversx/mx-chain-core-go v1.2.17 h1:/7YEuowxnpOtZLAJbuibNWE/8rDcG+WMhNVvrnljPg0= -github.com/multiversx/mx-chain-core-go v1.2.17/go.mod h1:BILOGHUOIG5dNNX8cgkzCNfDaVtoYrJRYcPnpxRMH84= +github.com/multiversx/mx-chain-core-go v1.2.19-0.20231123115253-158315dc4238 h1:nlDelmQou2635GW2YACZMAHTc+cRxBvtHE0dRQuVC0U= +github.com/multiversx/mx-chain-core-go v1.2.19-0.20231123115253-158315dc4238/go.mod h1:BILOGHUOIG5dNNX8cgkzCNfDaVtoYrJRYcPnpxRMH84= github.com/multiversx/mx-chain-crypto-go v1.2.8 h1:wOgVlUaO5X4L8iEbFjcQcL8SZvv6WZ7LqH73BiRPhxU= github.com/multiversx/mx-chain-crypto-go v1.2.8/go.mod h1:fkaWKp1rbQN9wPKya5jeoRyC+c/SyN/NfggreyeBw+8= github.com/multiversx/mx-chain-logger-go v1.0.13 h1:eru/TETo0MkO4ZTnXsQDKf4PBRpAXmqjT02klNT/JnY= github.com/multiversx/mx-chain-logger-go v1.0.13/go.mod h1:MZJhTAtZTJxT+yK2EHc4ZW3YOHUc1UdjCD0iahRNBZk= -github.com/multiversx/mx-chain-vm-common-go v1.5.6 h1:hAWCIkFc5vcweBzpataVsJf0PCPc7tfQBGW/q8nzQ8A= -github.com/multiversx/mx-chain-vm-common-go v1.5.6/go.mod h1:S8bbBlbOVKgl8YBnlmmHakYiSXjKPcSd6WW+Nku/Xys= +github.com/multiversx/mx-chain-vm-common-go v1.5.9-0.20231123115741-c8a4816c447a h1:LYEKM1wKOiT3SKqYIJEUDVZEV7VM5ISVjXkg1Jbxsk0= +github.com/multiversx/mx-chain-vm-common-go v1.5.9-0.20231123115741-c8a4816c447a/go.mod h1:Uu29N9DDx6iWDrDVPRUiLosrzlbNsYgpNfyhOQztEfE= github.com/multiversx/mx-components-big-int v1.0.0 h1:Wkr8lSzK2nDqixOrrBa47VNuqdhV1m/aJhaP1EMaiS8= github.com/multiversx/mx-components-big-int v1.0.0/go.mod h1:maIEMgHlNE2u78JaDD0oLzri+ShgU4okHfzP3LWGdQM= github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ=