Skip to content

Commit df1eddf

Browse files
authored
Merge pull request #356 from multiversx/fix-txs-fields-after-relayed-v1-v2-disable
Fix transaction fields
2 parents bdd1a7b + dd76781 commit df1eddf

File tree

8 files changed

+94
-8
lines changed

8 files changed

+94
-8
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ require (
1010
github.com/multiversx/mx-chain-communication-go v1.3.0
1111
github.com/multiversx/mx-chain-core-go v1.4.0
1212
github.com/multiversx/mx-chain-logger-go v1.1.0
13-
github.com/multiversx/mx-chain-vm-common-go v1.6.0
13+
github.com/multiversx/mx-chain-vm-common-go v1.6.1-0.20251127112501-0b5f28e33b2e
1414
github.com/prometheus/client_model v0.6.1
1515
github.com/prometheus/common v0.62.0
1616
github.com/stretchr/testify v1.10.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ github.com/multiversx/mx-chain-crypto-go v1.3.0 h1:0eK2bkDOMi8VbSPrB1/vGJSYT81IB
136136
github.com/multiversx/mx-chain-crypto-go v1.3.0/go.mod h1:nPIkxxzyTP8IquWKds+22Q2OJ9W7LtusC7cAosz7ojM=
137137
github.com/multiversx/mx-chain-logger-go v1.1.0 h1:97x84A6L4RfCa6YOx1HpAFxZp1cf/WI0Qh112whgZNM=
138138
github.com/multiversx/mx-chain-logger-go v1.1.0/go.mod h1:K9XgiohLwOsNACETMNL0LItJMREuEvTH6NsoXWXWg7g=
139-
github.com/multiversx/mx-chain-vm-common-go v1.6.0 h1:M2zmf/ptEINciWxYCPLIkwOMTvvzWjELYYB+0MMQ5Gw=
140-
github.com/multiversx/mx-chain-vm-common-go v1.6.0/go.mod h1:Lc7r4VDPYRDS0CVIaWAoLtf3YQn6PZEYHv4QtaOE2Z0=
139+
github.com/multiversx/mx-chain-vm-common-go v1.6.1-0.20251127112501-0b5f28e33b2e h1:3gboKT4hPEb9ZkAYO2Z/y3sOaUBzxVMN4FhyLFcRSHI=
140+
github.com/multiversx/mx-chain-vm-common-go v1.6.1-0.20251127112501-0b5f28e33b2e/go.mod h1:Lc7r4VDPYRDS0CVIaWAoLtf3YQn6PZEYHv4QtaOE2Z0=
141141
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
142142
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
143143
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=

integrationtests/relayedTx_test.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,3 +245,63 @@ func TestRelayedTransactionIntraShard(t *testing.T) {
245245
string(genericResponse.Docs[0].Source),
246246
)
247247
}
248+
249+
func TestRelayedV2Disabled(t *testing.T) {
250+
esClient, err := createESClient(esURL)
251+
require.Nil(t, err)
252+
253+
esProc, err := CreateElasticProcessor(esClient)
254+
require.Nil(t, err)
255+
256+
txHash := []byte("relayedTxIntra")
257+
header := &dataBlock.Header{
258+
Round: 50,
259+
TimeStamp: 5040,
260+
// Relayed v1 and v2 transactions are disabled starting from epoch 1
261+
Epoch: 10,
262+
}
263+
264+
body := &dataBlock.Body{
265+
MiniBlocks: dataBlock.MiniBlockSlice{
266+
{
267+
Type: dataBlock.TxBlock,
268+
SenderShardID: 0,
269+
ReceiverShardID: 0,
270+
TxHashes: [][]byte{txHash},
271+
},
272+
},
273+
}
274+
275+
address1 := "erd1k7j6ewjsla4zsgv8v6f6fe3dvrkgv3d0d9jerczw45hzedhyed8sh2u34u"
276+
address2 := "erd14eyayfrvlrhzfrwg5zwleua25mkzgncggn35nvc6xhv5yxwml2es0f3dht"
277+
tx := &transaction.Transaction{
278+
Nonce: 1196665,
279+
SndAddr: decodeAddress(address1),
280+
RcvAddr: decodeAddress(address2),
281+
GasLimit: 15406000,
282+
GasPrice: 1000000000,
283+
Data: []byte("relayedTxV2@a56f37f2356753eb2db8b8fe6dbf026261653973fc08785b69d0406162e16f9d@028e@4d756c7469455344544e46545472616e73666572403438386264303665386233643233626239386235303663643566323937363838316465323661306438333030303365336564643231373164366666353935646640323040353835303431343334383439343535363435326433353631333033353331333940306440303140343135333438326436313336333433323634333140403035366636303133626238343166656440353734353437346334343264363236343334363433373339404033363035363862306336616330634034643439346534333535326433333338363533393333363440403035366263373565326436333130303030304035373431353434353532326433393635363433343330333040403032326230656162356237336638396330303030403433353235343464343235343264333936323335333633393339403033403031403439353334353534326433383334363533353335363540403138313034626265403533343634393534326436313635363236333339333040403033633738343165323736666535653035664035383530343134333438343934353536343532643335363133303335333133394030314030314034383539353034353264333633313339333633363331404036633662393335623862626434303030303040356135303431353932643332333433373338333733354040303839633831363734383032653636643364403532343934343435326433373634333133383635333940403038343564366639366664666564613540353535333434343332643633333733363636333136364040303831663139403531353735343264333433363631363333303331404030653530636131334034313435353234663264333433353338363236323636404030373937383734356663383339326532613140343334373533326436363331333833363339363440403135326430326337653134616636383030303030403534346634643264363636313331333633343631404034633462343040343534363436346635323534326436313331333333353331333340403037393738373435666338333932653261314035333438343135323434326433393339363133313337333240406430326162343836636564633030303040346434353538326433343335333536333335333740403031306232356130353531303435313139326266403535353334343534326436363338363333303338363340403135363540353734353534343832643632333436333631333233394040393665656261366166304034393534343834353535346432643634363633363636333233364040326162663662323236656464643835323636403534343134633439346634653264333433393336363236313632404063333530403436346635383533353932643335363433353636333336354040303861323332343837623736613830304034363439353234353264363133393631333333323631404030323261616438363563386136346530303030304035353534346232643332363633383330363533394040303632356561633765303761396666633735403438353434643264363633353331363433353335404030666361633939343734343939394034333532353432643335333236343635363336364040303132613966653935666262666563634034333532353532643631333536363334363136314040306132313361316233653263646240353734323534343332643335333333343339363233334040303440343234383431353432643633333136363634363533334040386332626462353330666632396333386265@cf52df0a6c31738ff283b3dade4e18f1c3029a062eccc22fba5cda8510fc02931d7824abdf1bca7d8c24cc72ddc02af5e060dc99fbde1e531b857b63818ff20a"),
284+
Value: big.NewInt(0),
285+
}
286+
txInfo := &outport.TxInfo{
287+
Transaction: tx,
288+
}
289+
290+
pool := &outport.TransactionPool{
291+
Transactions: map[string]*outport.TxInfo{
292+
hex.EncodeToString(txHash): txInfo,
293+
},
294+
}
295+
err = esProc.SaveTransactions(createOutportBlockWithHeader(body, header, pool, nil, testNumOfShards))
296+
require.Nil(t, err)
297+
298+
ids := []string{hex.EncodeToString(txHash)}
299+
genericResponse := &GenericResponse{}
300+
err = esClient.DoMultiGet(context.Background(), ids, indexerdata.TransactionsIndex, true, genericResponse)
301+
require.Nil(t, err)
302+
303+
require.JSONEq(t,
304+
readExpectedResult("./testdata/relayedTx/relayed-tx-after-disable.json"),
305+
string(genericResponse.Docs[0].Source),
306+
)
307+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"miniBlockHash": "be053e3ccb556eb39be6f388fb0ab5256d394d634887be06a6ed996560cbcae7",
3+
"nonce": 1196665,
4+
"round": 50,
5+
"value": "0",
6+
"valueNum": 0,
7+
"receiver": "erd14eyayfrvlrhzfrwg5zwleua25mkzgncggn35nvc6xhv5yxwml2es0f3dht",
8+
"sender": "erd1k7j6ewjsla4zsgv8v6f6fe3dvrkgv3d0d9jerczw45hzedhyed8sh2u34u",
9+
"receiverShard": 0,
10+
"senderShard": 0,
11+
"gasPrice": 1000000000,
12+
"gasLimit": 15406000,
13+
"gasUsed": 0,
14+
"fee": "0",
15+
"feeNum": 0,
16+
"initialPaidFee": "0",
17+
"data": "cmVsYXllZFR4VjJAYTU2ZjM3ZjIzNTY3NTNlYjJkYjhiOGZlNmRiZjAyNjI2MTY1Mzk3M2ZjMDg3ODViNjlkMDQwNjE2MmUxNmY5ZEAwMjhlQDRkNzU2Yzc0Njk0NTUzNDQ1NDRlNDY1NDU0NzI2MTZlNzM2NjY1NzI0MDM0MzgzODYyNjQzMDM2NjUzODYyMzM2NDMyMzM2MjYyMzkzODYyMzUzMDM2NjM2NDM1NjYzMjM5MzczNjM4MzgzMTY0NjUzMjM2NjEzMDY0MzgzMzMwMzAzMDMzNjUzMzY1NjQ2NDMyMzEzNzMxNjQzNjY2NjYzNTM5MzU2NDY2NDAzMjMwNDAzNTM4MzUzMDM0MzEzNDMzMzQzODM0MzkzNDM1MzUzNjM0MzUzMjY0MzMzNTM2MzEzMzMwMzMzNTMzMzEzMzM5NDAzMDY0NDAzMDMxNDAzNDMxMzUzMzM0MzgzMjY0MzYzMTMzMzYzMzM0MzMzMjM2MzQzMzMxNDA0MDMwMzUzNjY2MzYzMDMxMzM2MjYyMzgzNDMxNjY2NTY0NDAzNTM3MzQzNTM0MzczNDYzMzQzNDMyNjQzNjMyMzYzNDMzMzQzNjM0MzMzNzMzMzk0MDQwMzMzNjMwMzUzNjM4NjIzMDYzMzY2MTYzMzA2MzQwMzQ2NDM0MzkzNDY1MzQzMzM1MzUzMjY0MzMzMzMzMzgzNjM1MzMzOTMzMzMzNjM0NDA0MDMwMzUzNjYyNjMzNzM1NjUzMjY0MzYzMzMxMzAzMDMwMzAzMDQwMzUzNzM0MzEzNTM0MzQzNTM1MzIzMjY0MzMzOTM2MzUzNjM0MzMzNDMzMzAzMzMwNDA0MDMwMzIzMjYyMzA2NTYxNjIzNTYyMzczMzY2MzgzOTYzMzAzMDMwMzA0MDM0MzMzNTMyMzUzNDM0NjQzNDMyMzUzNDMyNjQzMzM5MzYzMjMzMzUzMzM2MzMzOTMzMzk0MDMwMzM0MDMwMzE0MDM0MzkzNTMzMzQzNTM1MzQzMjY0MzMzODMzMzQzNjM1MzMzNTMzMzUzNjM1NDA0MDMxMzgzMTMwMzQ2MjYyNjU0MDM1MzMzNDM2MzQzOTM1MzQzMjY0MzYzMTM2MzUzNjMyMzYzMzMzMzkzMzMwNDA0MDMwMzM2MzM3MzgzNDMxNjUzMjM3MzY2NjY1MzU2NTMwMzU2NjQwMzUzODM1MzAzNDMxMzQzMzM0MzgzNDM5MzQzNTM1MzYzNDM1MzI2NDMzMzUzNjMxMzMzMDMzMzUzMzMxMzMzOTQwMzAzMTQwMzAzMTQwMzQzODM1MzkzNTMwMzQzNTMyNjQzMzM2MzMzMTMzMzkzMzM2MzMzNjMzMzE0MDQwMzY2MzM2NjIzOTMzMzU2MjM4NjI2MjY0MzQzMDMwMzAzMDMwNDAzNTYxMzUzMDM0MzEzNTM5MzI2NDMzMzIzMzM0MzMzNzMzMzgzMzM3MzMzNTQwNDAzMDM4Mzk2MzM4MzEzNjM3MzQzODMwMzI2NTM2MzY2NDMzNjQ0MDM1MzIzNDM5MzQzNDM0MzUzMjY0MzMzNzM2MzQzMzMxMzMzODM2MzUzMzM5NDA0MDMwMzgzNDM1NjQzNjY2MzkzNjY2NjQ2NjY1NjQ2MTM1NDAzNTM1MzUzMzM0MzQzNDMzMzI2NDM2MzMzMzM3MzMzNjM2MzYzMzMxMzYzNjQwNDAzMDM4MzE2NjMxMzk0MDM1MzEzNTM3MzUzNDMyNjQzMzM0MzMzNjM2MzEzNjMzMzMzMDMzMzE0MDQwMzA2NTM1MzA2MzYxMzEzMzQwMzQzMTM0MzUzNTMyMzQ2NjMyNjQzMzM0MzMzNTMzMzgzNjMyMzYzMjM2MzY0MDQwMzAzNzM5MzczODM3MzQzNTY2NjMzODMzMzkzMjY1MzI2MTMxNDAzNDMzMzQzNzM1MzMzMjY0MzYzNjMzMzEzMzM4MzMzNjMzMzkzNjM0NDA0MDMxMzUzMjY0MzAzMjYzMzc2NTMxMzQ2MTY2MzYzODMwMzAzMDMwMzA0MDM1MzQzNDY2MzQ2NDMyNjQzNjM2MzYzMTMzMzEzMzM2MzMzNDM2MzE0MDQwMzQ2MzM0NjIzNDMwNDAzNDM1MzQzNjM0MzYzNDY2MzUzMjM1MzQzMjY0MzYzMTMzMzEzMzMzMzMzNTMzMzEzMzMzNDA0MDMwMzczOTM3MzgzNzM0MzU2NjYzMzgzMzM5MzI2NTMyNjEzMTQwMzUzMzM0MzgzNDMxMzUzMjM0MzQzMjY0MzMzOTMzMzkzNjMxMzMzMTMzMzczMzMyNDA0MDY0MzAzMjYxNjIzNDM4MzY2MzY1NjQ2MzMwMzAzMDMwNDAzNDY0MzQzNTM1MzgzMjY0MzMzNDMzMzUzMzM1MzYzMzMzMzUzMzM3NDA0MDMwMzEzMDYyMzIzNTYxMzAzNTM1MzEzMDM0MzUzMTMxMzkzMjYyNjY0MDM1MzUzNTMzMzQzNDM1MzQzMjY0MzYzNjMzMzgzNjMzMzMzMDMzMzgzNjMzNDA0MDMxMzUzNjM1NDAzNTM3MzQzNTM1MzQzNDM4MzI2NDM2MzIzMzM0MzYzMzM2MzEzMzMyMzMzOTQwNDAzOTM2NjU2NTYyNjEzNjYxNjYzMDQwMzQzOTM1MzQzNDM4MzQzNTM1MzUzNDY0MzI2NDM2MzQzNjM2MzMzNjM2MzYzMzMyMzMzNjQwNDAzMjYxNjI2NjM2NjIzMjMyMzY2NTY0NjQ2NDM4MzUzMjM2MzY0MDM1MzQzNDMxMzQ2MzM0MzkzNDY2MzQ2NTMyNjQzMzM0MzMzOTMzMzYzNjMyMzYzMTM2MzI0MDQwNjMzMzM1MzA0MDM0MzYzNDY2MzUzODM1MzMzNTM5MzI2NDMzMzUzNjM0MzMzNTM2MzYzMzMzMzYzNTQwNDAzMDM4NjEzMjMzMzIzNDM4Mzc2MjM3MzY2MTM4MzAzMDQwMzQzNjM0MzkzNTMyMzQzNTMyNjQzNjMxMzMzOTM2MzEzMzMzMzMzMjM2MzE0MDQwMzAzMjMyNjE2MTY0MzgzNjM1NjMzODYxMzYzNDY1MzAzMDMwMzAzMDQwMzUzNTM1MzQzNDYyMzI2NDMzMzIzNjM2MzMzODMzMzAzNjM1MzMzOTQwNDAzMDM2MzIzNTY1NjE2MzM3NjUzMDM3NjEzOTY2NjY2MzM3MzU0MDM0MzgzNTM0MzQ2NDMyNjQzNjM2MzMzNTMzMzEzNjM0MzMzNTMzMzU0MDQwMzA2NjYzNjE2MzM5MzkzNDM3MzQzNDM5MzkzOTQwMzQzMzM1MzIzNTM0MzI2NDMzMzUzMzMyMzYzNDM2MzUzNjMzMzYzNjQwNDAzMDMxMzI2MTM5NjY2NTM5MzU2NjYyNjI2NjY1NjM2MzQwMzQzMzM1MzIzNTM1MzI2NDM2MzEzMzM1MzYzNjMzMzQzNjMxMzYzMTQwNDAzMDYxMzIzMTMzNjEzMTYyMzM2NTMyNjM2NDYyNDAzNTM3MzQzMjM1MzQzNDMzMzI2NDMzMzUzMzMzMzMzNDMzMzkzNjMyMzMzMzQwNDAzMDM0NDAzNDMyMzQzODM0MzEzNTM0MzI2NDM2MzMzMzMxMzYzNjM2MzQzNjM1MzMzMzQwNDAzODYzMzI2MjY0NjIzNTMzMzA2NjY2MzIzOTYzMzMzODYyNjVAY2Y1MmRmMGE2YzMxNzM4ZmYyODNiM2RhZGU0ZTE4ZjFjMzAyOWEwNjJlY2NjMjJmYmE1Y2RhODUxMGZjMDI5MzFkNzgyNGFiZGYxYmNhN2Q4YzI0Y2M3MmRkYzAyYWY1ZTA2MGRjOTlmYmRlMWU1MzFiODU3YjYzODE4ZmYyMGE=",
18+
"signature": "",
19+
"timestamp": 5040,
20+
"timestampMs": 5040000,
21+
"status": "success",
22+
"searchOrder": 0,
23+
"operation": "transfer",
24+
"epoch": 10
25+
}

process/elasticproc/transactions/interface.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
// DataFieldParser defines what a data field parser should be able to do
99
type DataFieldParser interface {
10-
Parse(dataField []byte, sender, receiver []byte, numOfShards uint32) *datafield.ResponseParseData
10+
Parse(dataField []byte, sender, receiver []byte, numOfShards uint32, epoch uint32) *datafield.ResponseParseData
1111
}
1212

1313
type feeInfoHandler interface {

process/elasticproc/transactions/smartContractResultsProcessor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func (proc *smartContractResultsProcessor) prepareSmartContractResult(
136136
originalSenderAddr = proc.pubKeyConverter.SilentEncode(scr.OriginalSender, log)
137137
}
138138

139-
res := proc.dataFieldParser.Parse(scr.Data, scr.SndAddr, scr.RcvAddr, numOfShards)
139+
res := proc.dataFieldParser.Parse(scr.Data, scr.SndAddr, scr.RcvAddr, numOfShards, header.GetEpoch())
140140

141141
senderAddr := proc.pubKeyConverter.SilentEncode(scr.SndAddr, log)
142142
receiverAddr := proc.pubKeyConverter.SilentEncode(scr.RcvAddr, log)

process/elasticproc/transactions/transactionDBBuilder.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func (dtb *dbTransactionBuilder) prepareTransaction(
4949
tx := txInfo.Transaction
5050

5151
isScCall := core.IsSmartContractAddress(tx.RcvAddr)
52-
res := dtb.dataFieldParser.Parse(tx.Data, tx.SndAddr, tx.RcvAddr, numOfShards)
52+
res := dtb.dataFieldParser.Parse(tx.Data, tx.SndAddr, tx.RcvAddr, numOfShards, header.GetEpoch())
5353

5454
receiverAddr := dtb.addressPubkeyConverter.SilentEncode(tx.RcvAddr, log)
5555
senderAddr := dtb.addressPubkeyConverter.SilentEncode(tx.SndAddr, log)

process/elasticproc/transactions/transactionsProcessor.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,9 @@ func NewTransactionsProcessor(args *ArgsTransactionProcessor) (*txsDatabaseProce
4545
}
4646

4747
argsParser := &datafield.ArgsOperationDataFieldParser{
48-
AddressLength: args.AddressPubkeyConverter.Len(),
49-
Marshalizer: args.Marshalizer,
48+
AddressLength: args.AddressPubkeyConverter.Len(),
49+
Marshalizer: args.Marshalizer,
50+
RelayedTransactionsV1V2DisableEpoch: args.EnableEpochsConfig.RelayedTransactionsV1V2DisableEpoch,
5051
}
5152
operationsDataParser, err := datafield.NewOperationDataFieldParser(argsParser)
5253
if err != nil {

0 commit comments

Comments
 (0)