Skip to content

Commit

Permalink
Merge pull request #5490 from multiversx/feat/logEvents
Browse files Browse the repository at this point in the history
Feat/log events
  • Loading branch information
miiu96 authored Aug 28, 2023
2 parents 1a3f0f2 + 4c59cad commit 1dd8735
Show file tree
Hide file tree
Showing 30 changed files with 417 additions and 159 deletions.
3 changes: 3 additions & 0 deletions cmd/node/config/enableEpochs.toml
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,9 @@
# DynamicGasCostForDataTrieStorageLoadEnableEpoch represents the epoch when dynamic gas cost for data trie storage load will be enabled
DynamicGasCostForDataTrieStorageLoadEnableEpoch = 3

# ScToScLogEventEnableEpoch represents the epoch when the sc to sc log event feature is enabled
ScToScLogEventEnableEpoch = 3

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

// MetricSetGuardianEnableEpoch represents the epoch when the guardian feature is enabled
MetricSetGuardianEnableEpoch = "erd_set_guardian_feature_enable_epoch"

// MetricSetScToScLogEventEnableEpoch represents the epoch when the sc to sc log event feature is enabled
MetricSetScToScLogEventEnableEpoch = "erd_set_sc_to_sc_log_event_enable_epoch"
)

const (
Expand Down
1 change: 1 addition & 0 deletions common/enablers/enableEpochsHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ func (handler *enableEpochsHandler) EpochConfirmed(epoch uint32, _ uint64) {
handler.setFlagValue(epoch >= handler.enableEpochsConfig.RelayedNonceFixEnableEpoch, handler.relayedNonceFixFlag, "relayedNonceFixFlag", epoch, handler.enableEpochsConfig.RelayedNonceFixEnableEpoch)
handler.setFlagValue(epoch >= handler.enableEpochsConfig.SetGuardianEnableEpoch, handler.setGuardianFlag, "setGuardianFlag", epoch, handler.enableEpochsConfig.SetGuardianEnableEpoch)
handler.setFlagValue(epoch >= handler.enableEpochsConfig.DeterministicSortOnValidatorsInfoEnableEpoch, handler.deterministicSortOnValidatorsInfoFixFlag, "deterministicSortOnValidatorsInfoFixFlag", epoch, handler.enableEpochsConfig.DeterministicSortOnValidatorsInfoEnableEpoch)
handler.setFlagValue(epoch >= handler.enableEpochsConfig.ScToScLogEventEnableEpoch, handler.scToScLogEventFlag, "setScToScLogEventFlag", epoch, handler.enableEpochsConfig.ScToScLogEventEnableEpoch)
handler.setFlagValue(epoch >= handler.enableEpochsConfig.MultiClaimOnDelegationEnableEpoch, handler.multiClaimOnDelegationFlag, "multiClaimOnDelegationFlag", epoch, handler.enableEpochsConfig.MultiClaimOnDelegationEnableEpoch)
handler.setFlagValue(epoch >= handler.enableEpochsConfig.KeepExecOrderOnCreatedSCRsEnableEpoch, handler.keepExecOrderOnCreatedSCRsFlag, "keepExecOrderOnCreatedSCRsFlag", epoch, handler.enableEpochsConfig.KeepExecOrderOnCreatedSCRsEnableEpoch)
handler.setFlagValue(epoch >= handler.enableEpochsConfig.ChangeUsernameEnableEpoch, handler.changeUsernameFlag, "changeUsername", epoch, handler.enableEpochsConfig.ChangeUsernameEnableEpoch)
Expand Down
4 changes: 4 additions & 0 deletions common/enablers/enableEpochsHandler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ func createEnableEpochsConfig() config.EnableEpochs {
ConsistentTokensValuesLengthCheckEnableEpoch: 86,
FixDelegationChangeOwnerOnAccountEnableEpoch: 87,
DeterministicSortOnValidatorsInfoEnableEpoch: 79,
ScToScLogEventEnableEpoch: 88,
}
}

Expand Down Expand Up @@ -231,6 +232,7 @@ func TestNewEnableEpochsHandler_EpochConfirmed(t *testing.T) {
assert.True(t, handler.IsRelayedNonceFixEnabled())
assert.True(t, handler.IsSetGuardianEnabled())
assert.True(t, handler.IsDeterministicSortOnValidatorsInfoFixEnabled())
assert.True(t, handler.IsScToScEventLogEnabled())
assert.True(t, handler.IsAutoBalanceDataTriesEnabled())
assert.True(t, handler.IsKeepExecOrderOnCreatedSCRsEnabled())
assert.True(t, handler.IsMultiClaimOnDelegationEnabled())
Expand Down Expand Up @@ -349,6 +351,7 @@ func TestNewEnableEpochsHandler_EpochConfirmed(t *testing.T) {
assert.True(t, handler.IsRelayedNonceFixEnabled())
assert.True(t, handler.IsSetGuardianEnabled())
assert.True(t, handler.IsDeterministicSortOnValidatorsInfoFixEnabled())
assert.True(t, handler.IsScToScEventLogEnabled())
assert.True(t, handler.IsAutoBalanceDataTriesEnabled())
assert.True(t, handler.IsKeepExecOrderOnCreatedSCRsEnabled())
assert.True(t, handler.IsMultiClaimOnDelegationEnabled())
Expand Down Expand Up @@ -462,6 +465,7 @@ func TestNewEnableEpochsHandler_EpochConfirmed(t *testing.T) {
assert.False(t, handler.IsRelayedNonceFixEnabled())
assert.False(t, handler.IsSetGuardianEnabled())
assert.False(t, handler.IsDeterministicSortOnValidatorsInfoFixEnabled())
assert.False(t, handler.IsScToScEventLogEnabled())
assert.False(t, handler.IsAutoBalanceDataTriesEnabled())
assert.False(t, handler.IsKeepExecOrderOnCreatedSCRsEnabled())
assert.False(t, handler.IsMultiClaimOnDelegationEnabled())
Expand Down
7 changes: 7 additions & 0 deletions common/enablers/epochFlags.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ type epochFlagsHolder struct {
wipeSingleNFTLiquidityDecreaseFlag *atomic.Flag
alwaysSaveTokenMetaDataFlag *atomic.Flag
setGuardianFlag *atomic.Flag
scToScLogEventFlag *atomic.Flag
relayedNonceFixFlag *atomic.Flag
deterministicSortOnValidatorsInfoFixFlag *atomic.Flag
keepExecOrderOnCreatedSCRsFlag *atomic.Flag
Expand Down Expand Up @@ -192,6 +193,7 @@ func newEpochFlagsHolder() *epochFlagsHolder {
wipeSingleNFTLiquidityDecreaseFlag: &atomic.Flag{},
alwaysSaveTokenMetaDataFlag: &atomic.Flag{},
setGuardianFlag: &atomic.Flag{},
scToScLogEventFlag: &atomic.Flag{},
relayedNonceFixFlag: &atomic.Flag{},
deterministicSortOnValidatorsInfoFixFlag: &atomic.Flag{},
keepExecOrderOnCreatedSCRsFlag: &atomic.Flag{},
Expand Down Expand Up @@ -692,6 +694,11 @@ func (holder *epochFlagsHolder) IsSetGuardianEnabled() bool {
return holder.setGuardianFlag.IsSet()
}

// IsScToScLogEventFlagEnabled returns true if scToScLogEventFlag is enabled
func (holder *epochFlagsHolder) IsScToScEventLogEnabled() bool {
return holder.scToScLogEventFlag.IsSet()
}

// IsRelayedNonceFixEnabled returns true if relayedNonceFixFlag is enabled
func (holder *epochFlagsHolder) IsRelayedNonceFixEnabled() bool {
return holder.relayedNonceFixFlag.IsSet()
Expand Down
1 change: 1 addition & 0 deletions common/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,7 @@ type EnableEpochsHandler interface {
IsWipeSingleNFTLiquidityDecreaseEnabled() bool
IsAlwaysSaveTokenMetaDataEnabled() bool
IsSetGuardianEnabled() bool
IsScToScEventLogEnabled() bool
IsRelayedNonceFixEnabled() bool
IsDeterministicSortOnValidatorsInfoFixEnabled() bool
IsKeepExecOrderOnCreatedSCRsEnabled() bool
Expand Down
1 change: 1 addition & 0 deletions config/epochConfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ type EnableEpochs struct {
WipeSingleNFTLiquidityDecreaseEnableEpoch uint32
AlwaysSaveTokenMetaDataEnableEpoch uint32
SetGuardianEnableEpoch uint32
ScToScLogEventEnableEpoch uint32
RelayedNonceFixEnableEpoch uint32
DeterministicSortOnValidatorsInfoEnableEpoch uint32
KeepExecOrderOnCreatedSCRsEnableEpoch uint32
Expand Down
118 changes: 61 additions & 57 deletions config/tomlConfig_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -814,6 +814,9 @@ func TestEnableEpochConfig(t *testing.T) {
# DynamicGasCostForDataTrieStorageLoadEnableEpoch represents the epoch when dynamic gas cost for data trie storage load will be enabled
DynamicGasCostForDataTrieStorageLoadEnableEpoch = 64
# ScToScLogEventEnableEpoch represents the epoch when the sc to sc log event feature is enabled
ScToScLogEventEnableEpoch = 88
# MaxNodesChangeEnableEpoch holds configuration for changing the maximum number of nodes and the enabling epoch
MaxNodesChangeEnableEpoch = [
{ EpochEnable = 44, MaxNumNodes = 2169, NodesToShufflePerShard = 80 },
Expand All @@ -834,63 +837,63 @@ func TestEnableEpochConfig(t *testing.T) {

expectedCfg := EpochConfig{
EnableEpochs: EnableEpochs{
SCDeployEnableEpoch: 1,
BuiltInFunctionsEnableEpoch: 2,
RelayedTransactionsEnableEpoch: 3,
PenalizedTooMuchGasEnableEpoch: 4,
SwitchJailWaitingEnableEpoch: 5,
BelowSignedThresholdEnableEpoch: 6,
SwitchHysteresisForMinNodesEnableEpoch: 7,
TransactionSignedWithTxHashEnableEpoch: 8,
MetaProtectionEnableEpoch: 9,
AheadOfTimeGasUsageEnableEpoch: 10,
GasPriceModifierEnableEpoch: 11,
RepairCallbackEnableEpoch: 12,
BlockGasAndFeesReCheckEnableEpoch: 13,
BalanceWaitingListsEnableEpoch: 14,
ReturnDataToLastTransferEnableEpoch: 15,
SenderInOutTransferEnableEpoch: 16,
StakeEnableEpoch: 17,
StakingV2EnableEpoch: 18,

DoubleKeyProtectionEnableEpoch: 19,
ESDTEnableEpoch: 20,
GovernanceEnableEpoch: 21,
DelegationManagerEnableEpoch: 22,
DelegationSmartContractEnableEpoch: 23,
CorrectLastUnjailedEnableEpoch: 24,

RelayedTransactionsV2EnableEpoch: 25,
UnbondTokensV2EnableEpoch: 26,
SaveJailedAlwaysEnableEpoch: 27,
ReDelegateBelowMinCheckEnableEpoch: 28,ValidatorToDelegationEnableEpoch: 29,

WaitingListFixEnableEpoch: 30,
IncrementSCRNonceInMultiTransferEnableEpoch: 31,
ESDTMultiTransferEnableEpoch: 32,
GlobalMintBurnDisableEpoch: 33,
ESDTTransferRoleEnableEpoch: 34,
BuiltInFunctionOnMetaEnableEpoch: 35,
ComputeRewardCheckpointEnableEpoch: 36,
SCRSizeInvariantCheckEnableEpoch: 37,
BackwardCompSaveKeyValueEnableEpoch: 38,
ESDTNFTCreateOnMultiShardEnableEpoch: 39,
MetaESDTSetEnableEpoch: 40,
AddTokensToDelegationEnableEpoch: 41,
MultiESDTTransferFixOnCallBackOnEnableEpoch: 42,
OptimizeGasUsedInCrossMiniBlocksEnableEpoch: 43,
CorrectFirstQueuedEpoch: 44,
DeleteDelegatorAfterClaimRewardsEnableEpoch: 45,
FixOOGReturnCodeEnableEpoch: 46,
RemoveNonUpdatedStorageEnableEpoch: 47,
OptimizeNFTStoreEnableEpoch: 48,
CreateNFTThroughExecByCallerEnableEpoch: 49,
StopDecreasingValidatorRatingWhenStuckEnableEpoch: 50,
FrontRunningProtectionEnableEpoch: 51,
IsPayableBySCEnableEpoch: 52,
CleanUpInformativeSCRsEnableEpoch: 53,
StorageAPICostOptimizationEnableEpoch: 54,
TransformToMultiShardCreateEnableEpoch: 55,
SCDeployEnableEpoch: 1,
BuiltInFunctionsEnableEpoch: 2,
RelayedTransactionsEnableEpoch: 3,
PenalizedTooMuchGasEnableEpoch: 4,
SwitchJailWaitingEnableEpoch: 5,
BelowSignedThresholdEnableEpoch: 6,
SwitchHysteresisForMinNodesEnableEpoch: 7,
TransactionSignedWithTxHashEnableEpoch: 8,
MetaProtectionEnableEpoch: 9,
AheadOfTimeGasUsageEnableEpoch: 10,
GasPriceModifierEnableEpoch: 11,
RepairCallbackEnableEpoch: 12,
BlockGasAndFeesReCheckEnableEpoch: 13,
BalanceWaitingListsEnableEpoch: 14,
ReturnDataToLastTransferEnableEpoch: 15,
SenderInOutTransferEnableEpoch: 16,
StakeEnableEpoch: 17,
StakingV2EnableEpoch: 18,

DoubleKeyProtectionEnableEpoch: 19,
ESDTEnableEpoch: 20,
GovernanceEnableEpoch: 21,
DelegationManagerEnableEpoch: 22,
DelegationSmartContractEnableEpoch: 23,
CorrectLastUnjailedEnableEpoch: 24,

RelayedTransactionsV2EnableEpoch: 25,
UnbondTokensV2EnableEpoch: 26,
SaveJailedAlwaysEnableEpoch: 27,
ReDelegateBelowMinCheckEnableEpoch: 28, ValidatorToDelegationEnableEpoch: 29,

WaitingListFixEnableEpoch: 30,
IncrementSCRNonceInMultiTransferEnableEpoch: 31,
ESDTMultiTransferEnableEpoch: 32,
GlobalMintBurnDisableEpoch: 33,
ESDTTransferRoleEnableEpoch: 34,
BuiltInFunctionOnMetaEnableEpoch: 35,
ComputeRewardCheckpointEnableEpoch: 36,
SCRSizeInvariantCheckEnableEpoch: 37,
BackwardCompSaveKeyValueEnableEpoch: 38,
ESDTNFTCreateOnMultiShardEnableEpoch: 39,
MetaESDTSetEnableEpoch: 40,
AddTokensToDelegationEnableEpoch: 41,
MultiESDTTransferFixOnCallBackOnEnableEpoch: 42,
OptimizeGasUsedInCrossMiniBlocksEnableEpoch: 43,
CorrectFirstQueuedEpoch: 44,
DeleteDelegatorAfterClaimRewardsEnableEpoch: 45,
FixOOGReturnCodeEnableEpoch: 46,
RemoveNonUpdatedStorageEnableEpoch: 47,
OptimizeNFTStoreEnableEpoch: 48,
CreateNFTThroughExecByCallerEnableEpoch: 49,
StopDecreasingValidatorRatingWhenStuckEnableEpoch: 50,
FrontRunningProtectionEnableEpoch: 51,
IsPayableBySCEnableEpoch: 52,
CleanUpInformativeSCRsEnableEpoch: 53,
StorageAPICostOptimizationEnableEpoch: 54,
TransformToMultiShardCreateEnableEpoch: 55,
ESDTRegisterAndSetAllRolesEnableEpoch: 56,
ScheduledMiniBlocksEnableEpoch: 57,
CorrectJailedNotUnstakedEmptyQueueEpoch: 58,
Expand Down Expand Up @@ -922,6 +925,7 @@ func TestEnableEpochConfig(t *testing.T) {
ChangeUsernameEnableEpoch: 85,
ConsistentTokensValuesLengthCheckEnableEpoch: 86,
FixDelegationChangeOwnerOnAccountEnableEpoch: 87,
ScToScLogEventEnableEpoch: 88,
MaxNodesChangeEnableEpoch: []MaxNodesChangeConfig{
{
EpochEnable: 44,
Expand Down
9 changes: 5 additions & 4 deletions facade/nodeFacade.go
Original file line number Diff line number Diff line change
Expand Up @@ -667,10 +667,11 @@ func (nf *nodeFacade) convertVmOutputToApiResponse(input *vmcommon.VMOutput) *vm
}

logs = append(logs, &vm.LogEntryApi{
Identifier: originalLog.Identifier,
Address: logAddress,
Topics: originalLog.Topics,
Data: originalLog.Data,
Identifier: originalLog.Identifier,
Address: logAddress,
Topics: originalLog.Topics,
Data: originalLog.GetFirstDataItem(),
AdditionalData: originalLog.Data,
})
}

Expand Down
37 changes: 31 additions & 6 deletions facade/nodeFacade_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1470,7 +1470,31 @@ func TestNodeFacade_GetInternalMiniBlockByHashShouldWork(t *testing.T) {
require.Equal(t, ret, blk)
}

func TestFacade_convertVmOutputToApiResponse(t *testing.T) {
func TestFacade_convertVmOutputToApiResponseNilLogData(t *testing.T) {
testConvertVmOutput(t, nil, nil, nil)
}

func TestFacade_convertVmOutputToApiResponseEmptyLogData(t *testing.T) {
logData := [][]byte{}
expectedAdditionalLogData := [][]byte{}
testConvertVmOutput(t, logData, nil, expectedAdditionalLogData)
}

func TestFacade_convertVmOutputToApiResponseSingleLogData(t *testing.T) {
logData := [][]byte{[]byte("log_data")}
expectedLogData := []byte("log_data")
expectedAdditionalLogData := [][]byte{[]byte("log_data")}
testConvertVmOutput(t, logData, expectedLogData, expectedAdditionalLogData)
}

func TestFacade_convertVmOutputToApiResponseMultiLogData(t *testing.T) {
logData := [][]byte{[]byte("log_data1"), []byte("log_data2"), []byte("log_data3")}
expectedLogData := []byte("log_data1")
expectedAdditionalLogData := [][]byte{[]byte("log_data1"), []byte("log_data2"), []byte("log_data3")}
testConvertVmOutput(t, logData, expectedLogData, expectedAdditionalLogData)
}

func testConvertVmOutput(t *testing.T, logData [][]byte, expectedLogData []byte, expectedAdditionalLogData [][]byte) {
arg := createMockArguments()
nf, _ := NewNodeFacade(arg)

Expand All @@ -1482,7 +1506,7 @@ func TestFacade_convertVmOutputToApiResponse(t *testing.T) {
retData := [][]byte{[]byte("ret_data_0")}
outAcc, outAccStorageKey, outAccOffset := []byte("addr0"), []byte("out_acc_storage_key"), []byte("offset")
outAccTransferSndrAddr := []byte("addr1")
logId, logAddr, logTopics, logData := []byte("log_id"), []byte("log_addr"), [][]byte{[]byte("log_topic")}, []byte("log_data")
logId, logAddr, logTopics := []byte("log_id"), []byte("log_addr"), [][]byte{[]byte("log_topic")}
vmInput := vmcommon.VMOutput{
ReturnData: retData,
OutputAccounts: map[string]*vmcommon.OutputAccount{
Expand Down Expand Up @@ -1528,10 +1552,11 @@ func TestFacade_convertVmOutputToApiResponse(t *testing.T) {

expectedLogs := []*vm.LogEntryApi{
{
Identifier: logId,
Address: convertAddressFunc(logAddr),
Topics: logTopics,
Data: logData,
Identifier: logId,
Address: convertAddressFunc(logAddr),
Topics: logTopics,
Data: expectedLogData,
AdditionalData: expectedAdditionalLogData,
},
}

Expand Down
1 change: 1 addition & 0 deletions genesis/process/shardGenesisBlockCreator.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ func createGenesisConfig() config.EnableEpochs {
MaxBlockchainHookCountersEnableEpoch: unreachableEpoch,
BLSMultiSignerEnableEpoch: blsMultiSignerEnableEpoch,
SetGuardianEnableEpoch: unreachableEpoch,
ScToScLogEventEnableEpoch: unreachableEpoch,
}
}

Expand Down
12 changes: 6 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@ require (
github.com/gorilla/websocket v1.5.0
github.com/mitchellh/mapstructure v1.5.0
github.com/multiversx/mx-chain-communication-go v1.0.6
github.com/multiversx/mx-chain-core-go v1.2.13
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-es-indexer-go v1.4.10
github.com/multiversx/mx-chain-logger-go v1.0.13
github.com/multiversx/mx-chain-scenario-go v1.2.1
github.com/multiversx/mx-chain-storage-go v1.0.12
github.com/multiversx/mx-chain-vm-common-go v1.5.4
github.com/multiversx/mx-chain-vm-go v1.5.6
github.com/multiversx/mx-chain-vm-v1_2-go v1.2.60
github.com/multiversx/mx-chain-vm-v1_3-go v1.3.61
github.com/multiversx/mx-chain-vm-v1_4-go v1.4.87
github.com/multiversx/mx-chain-vm-common-go v1.5.5
github.com/multiversx/mx-chain-vm-go v1.5.7
github.com/multiversx/mx-chain-vm-v1_2-go v1.2.61
github.com/multiversx/mx-chain-vm-v1_3-go v1.3.62
github.com/multiversx/mx-chain-vm-v1_4-go v1.4.88
github.com/pelletier/go-toml v1.9.3
github.com/pkg/errors v0.9.1
github.com/shirou/gopsutil v3.21.11+incompatible
Expand Down
Loading

0 comments on commit 1dd8735

Please sign in to comment.