Skip to content

Commit 31e0bea

Browse files
authored
Merge pull request #7096 from multiversx/fix-get-balance-opcode
fix get balance opcode
2 parents 9fbf3ed + 79f7a46 commit 31e0bea

File tree

12 files changed

+30
-5
lines changed

12 files changed

+30
-5
lines changed

cmd/node/config/enableEpochs.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,9 @@
363363
# BarnardOpcodesEnableEpoch represents the epoch when Barnard opcodes will be enabled
364364
BarnardOpcodesEnableEpoch = 2
365365

366+
# FixGetBalanceEnableEpoch represents the epoch when Barnard opcodes will be enabled
367+
FixGetBalanceEnableEpoch = 2
368+
366369
# AutomaticActivationOfNodesDisableEpoch represents the epoch when automatic activation of nodes for validators is disabled
367370
AutomaticActivationOfNodesDisableEpoch = 2
368371

common/constants.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,9 @@ const (
761761
// MetricBarnardOpcodesEnableEpoch represents the epoch when Barnard opcodes will be enabled
762762
MetricBarnardOpcodesEnableEpoch = "erd_barnard_opcodes_enable_epoch"
763763

764+
// MetricFixGetBalanceEnableEpoch represents the epoch when get balance opcode fix is enabled
765+
MetricFixGetBalanceEnableEpoch = "erd_fix_get_balance_enable_epoch"
766+
764767
// MetricValidationOnGobDecodeEnableEpoch represents the epoch when validation on GobDecode will be taken into account
765768
MetricValidationOnGobDecodeEnableEpoch = "erd_validation_on_gobdecode_enable_epoch"
766769

@@ -1171,8 +1174,8 @@ const (
11711174
ESDTFlag core.EnableEpochFlag = "ESDTFlag"
11721175
ESDTFlagInSpecificEpochOnly core.EnableEpochFlag = "ESDTFlagInSpecificEpochOnly"
11731176
GovernanceFlag core.EnableEpochFlag = "GovernanceFlag"
1174-
GovernanceDisableProposeFlag core.EnableEpochFlag = "GovernanceDisableProposeFlag"
1175-
GovernanceFixesFlag core.EnableEpochFlag = "GovernanceFixesFlag"
1177+
GovernanceDisableProposeFlag core.EnableEpochFlag = "GovernanceDisableProposeFlag"
1178+
GovernanceFixesFlag core.EnableEpochFlag = "GovernanceFixesFlag"
11761179
GovernanceFlagInSpecificEpochOnly core.EnableEpochFlag = "GovernanceFlagInSpecificEpochOnly"
11771180
DelegationManagerFlag core.EnableEpochFlag = "DelegationManagerFlag"
11781181
DelegationSmartContractFlag core.EnableEpochFlag = "DelegationSmartContractFlag"
@@ -1282,5 +1285,6 @@ const (
12821285
ValidationOnGobDecodeFlag core.EnableEpochFlag = "ValidationOnGobDecodeFlag"
12831286
BarnardOpcodesFlag core.EnableEpochFlag = "BarnardOpcodesFlag"
12841287
AutomaticActivationOfNodesDisableFlag core.EnableEpochFlag = "AutomaticActivationOfNodesDisableFlag"
1288+
FixGetBalanceFlag core.EnableEpochFlag = "FixGetBalanceFlag"
12851289
// all new flags must be added to createAllFlagsMap method, as part of enableEpochsHandler allFlagsDefined
12861290
)

common/enablers/enableEpochsHandler.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -847,6 +847,12 @@ func (handler *enableEpochsHandler) createAllFlagsMap() {
847847
},
848848
activationEpoch: handler.enableEpochsConfig.BarnardOpcodesEnableEpoch,
849849
},
850+
common.FixGetBalanceFlag: {
851+
isActiveInEpoch: func(epoch uint32) bool {
852+
return epoch >= handler.enableEpochsConfig.FixGetBalanceEnableEpoch
853+
},
854+
activationEpoch: handler.enableEpochsConfig.FixGetBalanceEnableEpoch,
855+
},
850856
}
851857
}
852858

common/enablers/enableEpochsHandler_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,7 @@ func TestEnableEpochsHandler_GetActivationEpoch(t *testing.T) {
474474
require.Equal(t, cfg.ValidationOnGobDecodeEnableEpoch, handler.GetActivationEpoch(common.ValidationOnGobDecodeFlag))
475475
require.Equal(t, cfg.BarnardOpcodesEnableEpoch, handler.GetActivationEpoch(common.BarnardOpcodesFlag))
476476
require.Equal(t, cfg.AutomaticActivationOfNodesDisableEpoch, handler.GetActivationEpoch(common.AutomaticActivationOfNodesDisableFlag))
477+
require.Equal(t, cfg.FixGetBalanceEnableEpoch, handler.GetActivationEpoch(common.FixGetBalanceFlag))
477478
}
478479

479480
func TestEnableEpochsHandler_IsInterfaceNil(t *testing.T) {

config/epochConfig.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ type EnableEpochs struct {
132132
FixBackTransferOPCODEEnableEpoch uint32
133133
ValidationOnGobDecodeEnableEpoch uint32
134134
BarnardOpcodesEnableEpoch uint32
135+
FixGetBalanceEnableEpoch uint32
135136
AutomaticActivationOfNodesDisableEpoch uint32
136137
BLSMultiSignerEnableEpoch []MultiSignerConfig
137138
}

config/tomlConfig_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,9 @@ func TestEnableEpochConfig(t *testing.T) {
938938
# AutomaticActivationOfNodesDisableEpoch represents the epoch when automatic activation of nodes for validators is disabled
939939
AutomaticActivationOfNodesDisableEpoch = 111
940940
941+
# FixGetBalanceEnableEpoch represents the epoch when Barnard opcodes will be enabled
942+
FixGetBalanceEnableEpoch = 112
943+
941944
# MaxNodesChangeEnableEpoch holds configuration for changing the maximum number of nodes and the enabling epoch
942945
MaxNodesChangeEnableEpoch = [
943946
{ EpochEnable = 44, MaxNumNodes = 2169, NodesToShufflePerShard = 80 },
@@ -1069,6 +1072,7 @@ func TestEnableEpochConfig(t *testing.T) {
10691072
ValidationOnGobDecodeEnableEpoch: 109,
10701073
BarnardOpcodesEnableEpoch: 110,
10711074
AutomaticActivationOfNodesDisableEpoch: 111,
1075+
FixGetBalanceEnableEpoch: 112,
10721076
MaxNodesChangeEnableEpoch: []MaxNodesChangeConfig{
10731077
{
10741078
EpochEnable: 44,

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ require (
2424
github.com/multiversx/mx-chain-scenario-go v1.6.0
2525
github.com/multiversx/mx-chain-storage-go v1.1.0
2626
github.com/multiversx/mx-chain-vm-common-go v1.6.0
27-
github.com/multiversx/mx-chain-vm-go v1.5.41
27+
github.com/multiversx/mx-chain-vm-go v1.6.1-0.20250707105646-d7048a2657c2
2828
github.com/multiversx/mx-chain-vm-v1_2-go v1.2.69
2929
github.com/multiversx/mx-chain-vm-v1_3-go v1.3.70
3030
github.com/multiversx/mx-chain-vm-v1_4-go v1.4.99

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,8 @@ github.com/multiversx/mx-chain-storage-go v1.1.0 h1:M1Y9DqMrJ62s7Zw31+cyuqsnPIvl
415415
github.com/multiversx/mx-chain-storage-go v1.1.0/go.mod h1:o6Jm7cjfPmcc6XpyihYWrd6sx3sgqwurrunw3ZrfyxI=
416416
github.com/multiversx/mx-chain-vm-common-go v1.6.0 h1:M2zmf/ptEINciWxYCPLIkwOMTvvzWjELYYB+0MMQ5Gw=
417417
github.com/multiversx/mx-chain-vm-common-go v1.6.0/go.mod h1:Lc7r4VDPYRDS0CVIaWAoLtf3YQn6PZEYHv4QtaOE2Z0=
418-
github.com/multiversx/mx-chain-vm-go v1.5.41 h1:FeIFZnmatgT3eQ8gp6Bbvu+FOvd+d/imfVlHhtVxmk0=
419-
github.com/multiversx/mx-chain-vm-go v1.5.41/go.mod h1:Qc2Sckw+EfQwnapkzghFfhuUAOGv29oSZgvj8LJ+xWQ=
418+
github.com/multiversx/mx-chain-vm-go v1.6.1-0.20250707105646-d7048a2657c2 h1:mWerES8Wk3a9NJVgsjG7d39o3IHtT5AX4uR3Znbzd8k=
419+
github.com/multiversx/mx-chain-vm-go v1.6.1-0.20250707105646-d7048a2657c2/go.mod h1:Qc2Sckw+EfQwnapkzghFfhuUAOGv29oSZgvj8LJ+xWQ=
420420
github.com/multiversx/mx-chain-vm-v1_2-go v1.2.69 h1:5gSR3IMw1mcp/v5oO+vZ5YOyWO8w7O2qKhCKNPwsWNE=
421421
github.com/multiversx/mx-chain-vm-v1_2-go v1.2.69/go.mod h1:Qqn+B6IBlOi5huybKlvqNYDMsAHognVI6a6uiSZvaj0=
422422
github.com/multiversx/mx-chain-vm-v1_3-go v1.3.70 h1:UnTw+KJcLLqkqTR6EoZksqiM8PP4/BI6RcJlx25H9hc=

node/metrics/metrics.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ func InitConfigMetrics(
211211
appStatusHandler.SetUInt64Value(common.MetricValidationOnGobDecodeEnableEpoch, uint64(enableEpochs.ValidationOnGobDecodeEnableEpoch))
212212
appStatusHandler.SetUInt64Value(common.MetricBarnardOpcodesEnableEpoch, uint64(enableEpochs.BarnardOpcodesEnableEpoch))
213213
appStatusHandler.SetUInt64Value(common.MetricAutomaticActivationOfNodesDisableEpoch, uint64(enableEpochs.AutomaticActivationOfNodesDisableEpoch))
214+
appStatusHandler.SetUInt64Value(common.MetricFixGetBalanceEnableEpoch, uint64(enableEpochs.FixGetBalanceEnableEpoch))
214215

215216
for i, nodesChangeConfig := range enableEpochs.MaxNodesChangeEnableEpoch {
216217
epochEnable := fmt.Sprintf("%s%d%s", common.MetricMaxNodesChangeEnableEpoch, i, common.EpochEnableSuffix)

node/metrics/metrics_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ func TestInitConfigMetrics(t *testing.T) {
220220
ValidationOnGobDecodeEnableEpoch: 112,
221221
BarnardOpcodesEnableEpoch: 113,
222222
AutomaticActivationOfNodesDisableEpoch: 114,
223+
FixGetBalanceEnableEpoch: 115,
223224
MaxNodesChangeEnableEpoch: []config.MaxNodesChangeConfig{
224225
{
225226
EpochEnable: 0,
@@ -349,6 +350,7 @@ func TestInitConfigMetrics(t *testing.T) {
349350
"erd_validation_on_gobdecode_enable_epoch": uint32(112),
350351
"erd_barnard_opcodes_enable_epoch": uint32(113),
351352
"erd_automatic_activation_of_nodes_disable_epoch": uint32(114),
353+
"erd_fix_get_balance_enable_epoch": uint32(115),
352354
"erd_max_nodes_change_enable_epoch": nil,
353355
"erd_total_supply": "12345",
354356
"erd_hysteresis": "0.100000",

0 commit comments

Comments
 (0)