Skip to content

Commit

Permalink
Merge branch 'feat/relayedv3' into MX-16207-mempool-chain-simulator
Browse files Browse the repository at this point in the history
  • Loading branch information
andreibancioiu committed Dec 19, 2024
2 parents 5d301c7 + e9c7ccb commit 276ffeb
Show file tree
Hide file tree
Showing 75 changed files with 2,374 additions and 457 deletions.
32 changes: 17 additions & 15 deletions api/groups/transactionGroup.go
Original file line number Diff line number Diff line change
Expand Up @@ -720,21 +720,23 @@ func (tg *transactionGroup) getTransactionsPoolNonceGapsForSender(sender string,

func (tg *transactionGroup) createTransaction(receivedTx *transaction.FrontendTransaction) (*transaction.Transaction, []byte, error) {
txArgs := &external.ArgsCreateTransaction{
Nonce: receivedTx.Nonce,
Value: receivedTx.Value,
Receiver: receivedTx.Receiver,
ReceiverUsername: receivedTx.ReceiverUsername,
Sender: receivedTx.Sender,
SenderUsername: receivedTx.SenderUsername,
GasPrice: receivedTx.GasPrice,
GasLimit: receivedTx.GasLimit,
DataField: receivedTx.Data,
SignatureHex: receivedTx.Signature,
ChainID: receivedTx.ChainID,
Version: receivedTx.Version,
Options: receivedTx.Options,
Guardian: receivedTx.GuardianAddr,
GuardianSigHex: receivedTx.GuardianSignature,
Nonce: receivedTx.Nonce,
Value: receivedTx.Value,
Receiver: receivedTx.Receiver,
ReceiverUsername: receivedTx.ReceiverUsername,
Sender: receivedTx.Sender,
SenderUsername: receivedTx.SenderUsername,
GasPrice: receivedTx.GasPrice,
GasLimit: receivedTx.GasLimit,
DataField: receivedTx.Data,
SignatureHex: receivedTx.Signature,
ChainID: receivedTx.ChainID,
Version: receivedTx.Version,
Options: receivedTx.Options,
Guardian: receivedTx.GuardianAddr,
GuardianSigHex: receivedTx.GuardianSignature,
Relayer: receivedTx.RelayerAddr,
RelayerSignatureHex: receivedTx.RelayerSignature,
}
start := time.Now()
tx, txHash, err := tg.getFacade().CreateTransaction(txArgs)
Expand Down
3 changes: 3 additions & 0 deletions cmd/node/config/enableEpochs.toml
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,9 @@
# FixRelayedMoveBalanceToNonPayableSCEnableEpoch represents the epoch when the fix for relayed move balance to non payable sc will be enabled
FixRelayedMoveBalanceToNonPayableSCEnableEpoch = 1

# RelayedTransactionsV3EnableEpoch represents the epoch when the relayed transactions v3 will be enabled
RelayedTransactionsV3EnableEpoch = 2

# BLSMultiSignerEnableEpoch represents the activation epoch for different types of BLS multi-signers
BLSMultiSignerEnableEpoch = [
{ EnableEpoch = 0, Type = "no-KOSK" },
Expand Down
26 changes: 26 additions & 0 deletions common/common.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package common

import "github.com/multiversx/mx-chain-core-go/data"

// IsValidRelayedTxV3 returns true if the provided transaction is a valid transaction of type relayed v3
func IsValidRelayedTxV3(tx data.TransactionHandler) bool {
relayedTx, isRelayedV3 := tx.(data.RelayedTransactionHandler)
if !isRelayedV3 {
return false
}
hasValidRelayer := len(relayedTx.GetRelayerAddr()) == len(tx.GetSndAddr()) && len(relayedTx.GetRelayerAddr()) > 0
hasValidRelayerSignature := len(relayedTx.GetRelayerSignature()) == len(relayedTx.GetSignature()) && len(relayedTx.GetRelayerSignature()) > 0
return hasValidRelayer && hasValidRelayerSignature
}

// IsRelayedTxV3 returns true if the provided transaction is a transaction of type relayed v3, without any further checks
func IsRelayedTxV3(tx data.TransactionHandler) bool {
relayedTx, isRelayedV3 := tx.(data.RelayedTransactionHandler)
if !isRelayedV3 {
return false
}

hasRelayer := len(relayedTx.GetRelayerAddr()) > 0
hasRelayerSignature := len(relayedTx.GetRelayerSignature()) > 0
return hasRelayer || hasRelayerSignature
}
70 changes: 70 additions & 0 deletions common/common_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package common

import (
"math/big"
"testing"

"github.com/multiversx/mx-chain-core-go/data/smartContractResult"
"github.com/multiversx/mx-chain-core-go/data/transaction"
"github.com/stretchr/testify/require"
)

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

scr := &smartContractResult.SmartContractResult{}
require.False(t, IsValidRelayedTxV3(scr))
require.False(t, IsRelayedTxV3(scr))

notRelayedTxV3 := &transaction.Transaction{
Nonce: 1,
Value: big.NewInt(100),
RcvAddr: []byte("receiver"),
SndAddr: []byte("sender0"),
GasPrice: 100,
GasLimit: 10,
Signature: []byte("signature"),
}
require.False(t, IsValidRelayedTxV3(notRelayedTxV3))
require.False(t, IsRelayedTxV3(notRelayedTxV3))

invalidRelayedTxV3 := &transaction.Transaction{
Nonce: 1,
Value: big.NewInt(100),
RcvAddr: []byte("receiver"),
SndAddr: []byte("sender0"),
GasPrice: 100,
GasLimit: 10,
Signature: []byte("signature"),
RelayerAddr: []byte("relayer"),
}
require.False(t, IsValidRelayedTxV3(invalidRelayedTxV3))
require.True(t, IsRelayedTxV3(invalidRelayedTxV3))

invalidRelayedTxV3 = &transaction.Transaction{
Nonce: 1,
Value: big.NewInt(100),
RcvAddr: []byte("receiver"),
SndAddr: []byte("sender0"),
GasPrice: 100,
GasLimit: 10,
Signature: []byte("signature"),
RelayerSignature: []byte("signature"),
}
require.False(t, IsValidRelayedTxV3(invalidRelayedTxV3))
require.True(t, IsRelayedTxV3(invalidRelayedTxV3))

relayedTxV3 := &transaction.Transaction{
Nonce: 1,
Value: big.NewInt(100),
RcvAddr: []byte("receiver"),
SndAddr: []byte("sender1"),
GasPrice: 100,
GasLimit: 10,
Signature: []byte("signature"),
RelayerAddr: []byte("relayer"),
RelayerSignature: []byte("signature"),
}
require.True(t, IsValidRelayedTxV3(relayedTxV3))
require.True(t, IsRelayedTxV3(relayedTxV3))
}
4 changes: 4 additions & 0 deletions common/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -737,6 +737,9 @@ const (
// MetricFixRelayedMoveBalanceToNonPayableSCEnableEpoch represents the epoch when the fix for relayed move balance to non-payable sc is enabled
MetricFixRelayedMoveBalanceToNonPayableSCEnableEpoch = "erd_fix_relayed_move_balance_to_non_payable_sc_enable_epoch"

// MetricRelayedTransactionsV3EnableEpoch represents the epoch when the relayed transactions v3 are enabled
MetricRelayedTransactionsV3EnableEpoch = "erd_relayed_transactions_v3_enable_epoch"

// MetricMaxNodesChangeEnableEpoch holds configuration for changing the maximum number of nodes and the enabling epoch
MetricMaxNodesChangeEnableEpoch = "erd_max_nodes_change_enable_epoch"

Expand Down Expand Up @@ -1234,5 +1237,6 @@ const (
FixRelayedBaseCostFlag core.EnableEpochFlag = "FixRelayedBaseCostFlag"
MultiESDTNFTTransferAndExecuteByUserFlag core.EnableEpochFlag = "MultiESDTNFTTransferAndExecuteByUserFlag"
FixRelayedMoveBalanceToNonPayableSCFlag core.EnableEpochFlag = "FixRelayedMoveBalanceToNonPayableSCFlag"
RelayedTransactionsV3Flag core.EnableEpochFlag = "RelayedTransactionsV3Flag"
// all new flags must be added to createAllFlagsMap method, as part of enableEpochsHandler allFlagsDefined
)
6 changes: 6 additions & 0 deletions common/enablers/enableEpochsHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -780,6 +780,12 @@ func (handler *enableEpochsHandler) createAllFlagsMap() {
},
activationEpoch: handler.enableEpochsConfig.FixRelayedMoveBalanceToNonPayableSCEnableEpoch,
},
common.RelayedTransactionsV3Flag: {
isActiveInEpoch: func(epoch uint32) bool {
return epoch >= handler.enableEpochsConfig.RelayedTransactionsV3EnableEpoch
},
activationEpoch: handler.enableEpochsConfig.RelayedTransactionsV3EnableEpoch,
},
}
}

Expand Down
2 changes: 2 additions & 0 deletions common/enablers/enableEpochsHandler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ func createEnableEpochsConfig() config.EnableEpochs {
MultiESDTNFTTransferAndExecuteByUserEnableEpoch: 106,
FixRelayedMoveBalanceToNonPayableSCEnableEpoch: 107,
UseGasBoundedShouldFailExecutionEnableEpoch: 108,
RelayedTransactionsV3EnableEpoch: 109,
}
}

Expand Down Expand Up @@ -448,6 +449,7 @@ func TestEnableEpochsHandler_GetActivationEpoch(t *testing.T) {
require.Equal(t, cfg.FixRelayedBaseCostEnableEpoch, handler.GetActivationEpoch(common.FixRelayedBaseCostFlag))
require.Equal(t, cfg.MultiESDTNFTTransferAndExecuteByUserEnableEpoch, handler.GetActivationEpoch(common.MultiESDTNFTTransferAndExecuteByUserFlag))
require.Equal(t, cfg.FixRelayedMoveBalanceToNonPayableSCEnableEpoch, handler.GetActivationEpoch(common.FixRelayedMoveBalanceToNonPayableSCFlag))
require.Equal(t, cfg.RelayedTransactionsV3EnableEpoch, handler.GetActivationEpoch(common.RelayedTransactionsV3Flag))
}

func TestEnableEpochsHandler_IsInterfaceNil(t *testing.T) {
Expand Down
6 changes: 3 additions & 3 deletions common/reflectcommon/structFieldsUpdate.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ func trySetTheNewValue(value *reflect.Value, newValue interface{}) error {
case reflect.Map:
mapValue := reflect.ValueOf(newValue)

return tryUpdateMapValue(value, mapValue)
return trySetMapValue(value, mapValue)
default:
return fmt.Errorf("unsupported type <%s> when trying to set the value '%v' of type <%s>", valueKind, newValue, reflect.TypeOf(newValue))
}
Expand All @@ -141,7 +141,7 @@ func trySetSliceValue(value *reflect.Value, newValue interface{}) error {
item := sliceVal.Index(i)
newItem := reflect.New(value.Type().Elem()).Elem()

err := trySetStructValue(&newItem, item)
err := trySetTheNewValue(&newItem, item.Interface())
if err != nil {
return err
}
Expand All @@ -167,7 +167,7 @@ func trySetStructValue(value *reflect.Value, newValue reflect.Value) error {
}
}

func tryUpdateMapValue(value *reflect.Value, newValue reflect.Value) error {
func trySetMapValue(value *reflect.Value, newValue reflect.Value) error {
if value.IsNil() {
value.Set(reflect.MakeMap(value.Type()))
}
Expand Down
73 changes: 73 additions & 0 deletions common/reflectcommon/structFieldsUpdate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1204,6 +1204,79 @@ func TestAdaptStructureValueBasedOnPath(t *testing.T) {
require.Equal(t, "unsupported type <int> when trying to add value in type <map>", err.Error())
})

t.Run("should work and override string array", func(t *testing.T) {
t.Parallel()

testConfig, err := loadTestConfig("../../testscommon/toml/config.toml")
require.NoError(t, err)

expectedArray := []string{"x", "y", "z"}

err = AdaptStructureValueBasedOnPath(testConfig, "TestArray.Strings", expectedArray)
require.NoError(t, err)
require.Equal(t, expectedArray, testConfig.TestArray.Strings)
})

t.Run("should work and override int array", func(t *testing.T) {
t.Parallel()

testConfig, err := loadTestConfig("../../testscommon/toml/config.toml")
require.NoError(t, err)

expectedArray := []int{10, 20, 30}

err = AdaptStructureValueBasedOnPath(testConfig, "TestArray.Ints", expectedArray)
require.NoError(t, err)
require.Equal(t, expectedArray, testConfig.TestArray.Ints)
})

t.Run("should work and override string array from toml", func(t *testing.T) {
t.Parallel()

testConfig, err := loadTestConfig("../../testscommon/toml/config.toml")
require.NoError(t, err)

overrideConfig, err := loadOverrideConfig("../../testscommon/toml/overwrite.toml")
require.NoError(t, err)

err = AdaptStructureValueBasedOnPath(testConfig, overrideConfig.OverridableConfigTomlValues[38].Path, overrideConfig.OverridableConfigTomlValues[38].Value)
require.NoError(t, err)
expectedArray := []string{"x", "y", "z"}
require.Equal(t, expectedArray, testConfig.TestArray.Strings)
})

t.Run("should work and override int array from toml", func(t *testing.T) {
t.Parallel()

testConfig, err := loadTestConfig("../../testscommon/toml/config.toml")
require.NoError(t, err)

overrideConfig, err := loadOverrideConfig("../../testscommon/toml/overwrite.toml")
require.NoError(t, err)

err = AdaptStructureValueBasedOnPath(testConfig, overrideConfig.OverridableConfigTomlValues[39].Path, overrideConfig.OverridableConfigTomlValues[39].Value)
require.NoError(t, err)
expectedArray := []int{10, 20, 30}
require.Equal(t, expectedArray, testConfig.TestArray.Ints)
})

t.Run("should work and override struct of arrays from toml", func(t *testing.T) {
t.Parallel()

testConfig, err := loadTestConfig("../../testscommon/toml/config.toml")
require.NoError(t, err)

overrideConfig, err := loadOverrideConfig("../../testscommon/toml/overwrite.toml")
require.NoError(t, err)
expectedStringsArray := []string{"x", "y", "z"}
expectedIntsArray := []int{10, 20, 30}

err = AdaptStructureValueBasedOnPath(testConfig, overrideConfig.OverridableConfigTomlValues[40].Path, overrideConfig.OverridableConfigTomlValues[40].Value)
require.NoError(t, err)
require.Equal(t, expectedStringsArray, testConfig.TestArray.Strings)
require.Equal(t, expectedIntsArray, testConfig.TestArray.Ints)
})

}

func loadTestConfig(filepath string) (*toml.Config, error) {
Expand Down
1 change: 1 addition & 0 deletions config/epochConfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ type EnableEpochs struct {
FixRelayedBaseCostEnableEpoch uint32
MultiESDTNFTTransferAndExecuteByUserEnableEpoch uint32
FixRelayedMoveBalanceToNonPayableSCEnableEpoch uint32
RelayedTransactionsV3EnableEpoch uint32
BLSMultiSignerEnableEpoch []MultiSignerConfig
}

Expand Down
4 changes: 4 additions & 0 deletions config/tomlConfig_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -884,6 +884,9 @@ func TestEnableEpochConfig(t *testing.T) {
# FixRelayedMoveBalanceToNonPayableSCEnableEpoch represents the epoch when the fix for relayed move balance to non payable sc will be enabled
FixRelayedMoveBalanceToNonPayableSCEnableEpoch = 102
# RelayedTransactionsV3EnableEpoch represents the epoch when the relayed transactions v3 will be enabled
RelayedTransactionsV3EnableEpoch = 103
# MaxNodesChangeEnableEpoch holds configuration for changing the maximum number of nodes and the enabling epoch
MaxNodesChangeEnableEpoch = [
{ EpochEnable = 44, MaxNumNodes = 2169, NodesToShufflePerShard = 80 },
Expand Down Expand Up @@ -1004,6 +1007,7 @@ func TestEnableEpochConfig(t *testing.T) {
FixRelayedBaseCostEnableEpoch: 100,
MultiESDTNFTTransferAndExecuteByUserEnableEpoch: 101,
FixRelayedMoveBalanceToNonPayableSCEnableEpoch: 102,
RelayedTransactionsV3EnableEpoch: 103,
MaxNodesChangeEnableEpoch: []MaxNodesChangeConfig{
{
EpochEnable: 44,
Expand Down
6 changes: 3 additions & 3 deletions dataRetriever/txpool/memorytests/memory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ func TestShardedTxPool_MemoryFootprint(t *testing.T) {

journals = append(journals, runScenario(t, newScenario(100, 1, core.MegabyteSize, "1_0"), memoryAssertion{90, 100}, memoryAssertion{0, 1}))
journals = append(journals, runScenario(t, newScenario(10000, 1, 10240, "1_0"), memoryAssertion{96, 128}, memoryAssertion{0, 4}))
journals = append(journals, runScenario(t, newScenario(10, 10000, 1000, "1_0"), memoryAssertion{96, 140}, memoryAssertion{16, 25}))
journals = append(journals, runScenario(t, newScenario(150000, 1, 128, "1_0"), memoryAssertion{50, 80}, memoryAssertion{30, 40}))
journals = append(journals, runScenario(t, newScenario(1, 150000, 128, "1_0"), memoryAssertion{50, 80}, memoryAssertion{30, 40}))
journals = append(journals, runScenario(t, newScenario(10, 10000, 1000, "1_0"), memoryAssertion{96, 148}, memoryAssertion{16, 32}))
journals = append(journals, runScenario(t, newScenario(150000, 1, 128, "1_0"), memoryAssertion{50, 84}, memoryAssertion{30, 48}))
journals = append(journals, runScenario(t, newScenario(1, 150000, 128, "1_0"), memoryAssertion{50, 84}, memoryAssertion{30, 48}))

for _, journal := range journals {
journal.displayFootprintsSummary()
Expand Down
4 changes: 2 additions & 2 deletions factory/disabled/txCoordinator.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ func (txCoordinator *TxCoordinator) CreateReceiptsHash() ([]byte, error) {
}

// ComputeTransactionType does nothing as it is disabled
func (txCoordinator *TxCoordinator) ComputeTransactionType(_ data.TransactionHandler) (process.TransactionType, process.TransactionType) {
return 0, 0
func (txCoordinator *TxCoordinator) ComputeTransactionType(_ data.TransactionHandler) (process.TransactionType, process.TransactionType, bool) {
return 0, 0, false
}

// RequestMiniBlocksAndTransactions does nothing as it is disabled
Expand Down
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ require (
github.com/klauspost/cpuid/v2 v2.2.5
github.com/mitchellh/mapstructure v1.5.0
github.com/multiversx/mx-chain-communication-go v1.1.1
github.com/multiversx/mx-chain-core-go v1.2.23
github.com/multiversx/mx-chain-core-go v1.2.24-0.20241204105653-2beb13136490
github.com/multiversx/mx-chain-crypto-go v1.2.12
github.com/multiversx/mx-chain-es-indexer-go v1.7.10
github.com/multiversx/mx-chain-es-indexer-go v1.7.11-0.20241118100151-956a1f23c5c1
github.com/multiversx/mx-chain-logger-go v1.0.15
github.com/multiversx/mx-chain-scenario-go v1.4.4
github.com/multiversx/mx-chain-storage-go v1.0.18-0.20241202095036-f8323f446689
github.com/multiversx/mx-chain-storage-go v1.0.19-0.20241213090416-f46569554341
github.com/multiversx/mx-chain-vm-common-go v1.5.16
github.com/multiversx/mx-chain-vm-go v1.5.37
github.com/multiversx/mx-chain-vm-v1_2-go v1.2.68
Expand Down
12 changes: 6 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -387,18 +387,18 @@ github.com/multiversx/concurrent-map v0.1.4 h1:hdnbM8VE4b0KYJaGY5yJS2aNIW9TFFsUY
github.com/multiversx/concurrent-map v0.1.4/go.mod h1:8cWFRJDOrWHOTNSqgYCUvwT7c7eFQ4U2vKMOp4A/9+o=
github.com/multiversx/mx-chain-communication-go v1.1.1 h1:y4DoQeQOJTaSUsRzczQFazf8JYQmInddypApqA3AkwM=
github.com/multiversx/mx-chain-communication-go v1.1.1/go.mod h1:WK6bP4pGEHGDDna/AYRIMtl6G9OA0NByI1Lw8PmOnRM=
github.com/multiversx/mx-chain-core-go v1.2.23 h1:8WlCGqJHR2HQ0vN4feJwb7W4VrCwBGIzPPHunOOg5Wc=
github.com/multiversx/mx-chain-core-go v1.2.23/go.mod h1:B5zU4MFyJezmEzCsAHE9YNULmGCm2zbPHvl9hazNxmE=
github.com/multiversx/mx-chain-core-go v1.2.24-0.20241204105653-2beb13136490 h1:uK29uJdsvVYMp37wjC/qu74O8V04gFw0Bw7q9C9zc+c=
github.com/multiversx/mx-chain-core-go v1.2.24-0.20241204105653-2beb13136490/go.mod h1:B5zU4MFyJezmEzCsAHE9YNULmGCm2zbPHvl9hazNxmE=
github.com/multiversx/mx-chain-crypto-go v1.2.12 h1:zWip7rpUS4CGthJxfKn5MZfMfYPjVjIiCID6uX5BSOk=
github.com/multiversx/mx-chain-crypto-go v1.2.12/go.mod h1:HzcPpCm1zanNct/6h2rIh+MFrlXbjA5C8+uMyXj3LI4=
github.com/multiversx/mx-chain-es-indexer-go v1.7.10 h1:Umi7WN8h4BOXLw7CM3VgvaWkLGef7nXtaPIGbjBCT3U=
github.com/multiversx/mx-chain-es-indexer-go v1.7.10/go.mod h1:oGcRK2E3Syv6vRTszWrrb/TqD8akq0yeoMr1wPPiTO4=
github.com/multiversx/mx-chain-es-indexer-go v1.7.11-0.20241118100151-956a1f23c5c1 h1:wgMxgtUWd9//FPCTOLj/75j9Kwnd9PE2tHk0KLIFF6s=
github.com/multiversx/mx-chain-es-indexer-go v1.7.11-0.20241118100151-956a1f23c5c1/go.mod h1:/KoFDVgh9kGYiINm2THJsII7jfxmbTXWtBoSS1dJo1w=
github.com/multiversx/mx-chain-logger-go v1.0.15 h1:HlNdK8etyJyL9NQ+6mIXyKPEBo+wRqOwi3n+m2QIHXc=
github.com/multiversx/mx-chain-logger-go v1.0.15/go.mod h1:t3PRKaWB1M+i6gUfD27KXgzLJJC+mAQiN+FLlL1yoGQ=
github.com/multiversx/mx-chain-scenario-go v1.4.4 h1:DVE2V+FPeyD/yWoC+KEfPK3jsFzHeruelESfpTlf460=
github.com/multiversx/mx-chain-scenario-go v1.4.4/go.mod h1:kI+TWR3oIEgUkbwkHCPo2CQ3VjIge+ezGTibiSGwMxo=
github.com/multiversx/mx-chain-storage-go v1.0.18-0.20241202095036-f8323f446689 h1:qijedQ0WVc3ydsfNtMXbOiLgBc9Mw7iGzbhhrZVBY+0=
github.com/multiversx/mx-chain-storage-go v1.0.18-0.20241202095036-f8323f446689/go.mod h1:eFDEOrG7Wiyk5I/ObpwcN2eoBlOnnfeEMTvTer1cymk=
github.com/multiversx/mx-chain-storage-go v1.0.19-0.20241213090416-f46569554341 h1:SydNXPZIt7UpcveL8mUnOGAh+Oped851w2bGbaGqsWw=
github.com/multiversx/mx-chain-storage-go v1.0.19-0.20241213090416-f46569554341/go.mod h1:Ec+CrhDskz+UPcw/WjOCtQS4uCA1GNCseO3qM6SHj+A=
github.com/multiversx/mx-chain-vm-common-go v1.5.16 h1:g1SqYjxl7K66Y1O/q6tvDJ37fzpzlxCSfRzSm/woQQY=
github.com/multiversx/mx-chain-vm-common-go v1.5.16/go.mod h1:1rSkXreUZNXyPTTdhj47M+Fy62yjxbu3aAsXEtKN3UY=
github.com/multiversx/mx-chain-vm-go v1.5.37 h1:Iy3KCvM+DOq1f9UPA7uYK/rI3ZbBOXc2CVNO2/vm5zw=
Expand Down
Loading

0 comments on commit 276ffeb

Please sign in to comment.