Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Link inner tx to results #6527

Closed
wants to merge 11 commits into from
2 changes: 1 addition & 1 deletion cmd/node/config/enableEpochs.toml
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@
MultiESDTNFTTransferAndExecuteByUserEnableEpoch = 9999999

# HashForInnerTransactionEnableEpoch represents the epoch when the inner transactions of relayed V3 will be indexed by their own hash
HashForInnerTransactionEnableEpoch = 5
HashForInnerTransactionEnableEpoch = 4

# BLSMultiSignerEnableEpoch represents the activation epoch for different types of BLS multi-signers
BLSMultiSignerEnableEpoch = [
Expand Down
1 change: 1 addition & 0 deletions factory/api/apiResolverFactory.go
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,7 @@ func CreateApiResolver(args *ApiResolverArgs) (facade.ApiResolver, error) {
DataFieldParser: dataFieldParser,
TxMarshaller: args.CoreComponents.TxMarshalizer(),
EnableEpochsHandler: args.CoreComponents.EnableEpochsHandler(),
Hasher: args.CoreComponents.Hasher(),
}
apiTransactionProcessor, err := transactionAPI.NewAPITransactionProcessor(argsAPITransactionProc)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ 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.0
github.com/multiversx/mx-chain-core-go v1.2.22
github.com/multiversx/mx-chain-core-go v1.2.23-0.20241010094929-2bbea4371d73
github.com/multiversx/mx-chain-crypto-go v1.2.12
github.com/multiversx/mx-chain-es-indexer-go v1.7.10-0.20241007132117-9e25a5f84d3d
github.com/multiversx/mx-chain-logger-go v1.0.15
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -387,8 +387,8 @@ 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.0 h1:J7bX6HoN3HiHY7cUeEjG8AJWgQDDPcY+OPDOsSUOkRE=
github.com/multiversx/mx-chain-communication-go v1.1.0/go.mod h1:WK6bP4pGEHGDDna/AYRIMtl6G9OA0NByI1Lw8PmOnRM=
github.com/multiversx/mx-chain-core-go v1.2.22 h1:yDYrvoQOBbsDerEp7L3+de5AfMy3pTF333gWPpd+FNk=
github.com/multiversx/mx-chain-core-go v1.2.22/go.mod h1:B5zU4MFyJezmEzCsAHE9YNULmGCm2zbPHvl9hazNxmE=
github.com/multiversx/mx-chain-core-go v1.2.23-0.20241010094929-2bbea4371d73 h1:+pnMCOuqq3kbGB+vBfzKebPOe1WVOVEHIfyEbgGnNt0=
github.com/multiversx/mx-chain-core-go v1.2.23-0.20241010094929-2bbea4371d73/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-0.20241007132117-9e25a5f84d3d h1:QzzAdWFcn1hpRdqvJIr8CBV3ZEc8pA0N1+ixbeCqOFg=
Expand Down
48 changes: 26 additions & 22 deletions integrationTests/chainSimulator/relayedTx/relayedTx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ func TestRelayedTransactionInMultiShardEnvironmentWithChainSimulator(t *testing.
relayedTx := generateTransaction(relayer.Bytes, 0, relayer.Bytes, big.NewInt(0), "", relayedTxGasLimit)
relayedTx.InnerTransactions = innerTxs

result, err = cs.SendTxAndGenerateBlockTilTxIsExecuted(relayedTx, maxNumOfBlocksToGenerateWhenExecutingTx)
relayedTxResult, err := cs.SendTxAndGenerateBlockTilTxIsExecuted(relayedTx, maxNumOfBlocksToGenerateWhenExecutingTx)
require.NoError(t, err)

// generate few more blocks for the cross shard scrs to be done
Expand All @@ -155,12 +155,13 @@ func TestRelayedTransactionInMultiShardEnvironmentWithChainSimulator(t *testing.
shardC := relayerShardNode.GetShardCoordinator()
providedInnerTxHashes := getInnerTxsHashes(t, relayerShardNode, innerTxs)

require.Zero(t, len(result.SmartContractResults))
require.Zero(t, len(relayedTxResult.SmartContractResults))

// 1 log events with inner tx hashes
require.Equal(t, 1, len(result.Logs.Events))
for idx, innerTxHash := range result.Logs.Events[0].Topics {
require.Equal(t, 1, len(relayedTxResult.Logs.Events))
for idx, innerTxHash := range relayedTxResult.Logs.Events[0].Topics {
require.True(t, bytes.Equal(providedInnerTxHashes[idx], innerTxHash))
require.Equal(t, hex.EncodeToString(providedInnerTxHashes[idx]), relayedTxResult.InnerTransactions[idx].Hash)

result, err = relayerShardNode.GetFacadeHandler().GetTransaction(hex.EncodeToString(innerTxHash), true)
require.NoError(t, err)
Expand Down Expand Up @@ -247,24 +248,25 @@ func TestRelayedTransactionInMultiShardEnvironmentWithChainSimulatorAndInvalidNo
relayedTx := generateTransaction(relayer.Bytes, 0, relayer.Bytes, big.NewInt(0), "", relayedTxGasLimit)
relayedTx.InnerTransactions = innerTxs

result, err := cs.SendTxAndGenerateBlockTilTxIsExecuted(relayedTx, maxNumOfBlocksToGenerateWhenExecutingTx)
relayedTxResult, err := cs.SendTxAndGenerateBlockTilTxIsExecuted(relayedTx, maxNumOfBlocksToGenerateWhenExecutingTx)
require.NoError(t, err)

relayedTxHash := result.Hash
relayedTxHash := relayedTxResult.Hash

providedInnerTxHashes := getInnerTxsHashes(t, relayerShardNode, innerTxs)

require.Zero(t, len(result.SmartContractResults))
require.Zero(t, len(relayedTxResult.SmartContractResults))

// 1 log events with inner tx hashes
require.Equal(t, 1, len(result.Logs.Events))
require.Equal(t, 1, len(relayedTxResult.Logs.Events))
// one topic for each inner tx
require.Equal(t, len(providedInnerTxHashes), len(result.Logs.Events[0].Topics))
scrsMap := make(map[string]int, len(result.SmartContractResults))
for idx, innerTxHash := range result.Logs.Events[0].Topics {
require.Equal(t, len(providedInnerTxHashes), len(relayedTxResult.Logs.Events[0].Topics))
scrsMap := make(map[string]int, len(relayedTxResult.SmartContractResults))
for idx, innerTxHash := range relayedTxResult.Logs.Events[0].Topics {
require.True(t, bytes.Equal(providedInnerTxHashes[idx], innerTxHash))
require.Equal(t, hex.EncodeToString(providedInnerTxHashes[idx]), relayedTxResult.InnerTransactions[idx].Hash)

result, err = relayerShardNode.GetFacadeHandler().GetTransaction(hex.EncodeToString(innerTxHash), true)
result, err := relayerShardNode.GetFacadeHandler().GetTransaction(hex.EncodeToString(innerTxHash), true)
require.NoError(t, err)

require.Equal(t, relayedTxHash, result.OriginalTransactionHash)
Expand Down Expand Up @@ -380,21 +382,22 @@ func TestRelayedTransactionInMultiShardEnvironmentWithChainSimulatorScCalls(t *t
relayedTx := generateTransaction(relayer.Bytes, 0, relayer.Bytes, big.NewInt(0), "", relayedTxGasLimit)
relayedTx.InnerTransactions = innerTxs

result, err := cs.SendTxAndGenerateBlockTilTxIsExecuted(relayedTx, maxNumOfBlocksToGenerateWhenExecutingTx)
relayedTxResult, err := cs.SendTxAndGenerateBlockTilTxIsExecuted(relayedTx, maxNumOfBlocksToGenerateWhenExecutingTx)
require.NoError(t, err)

relayedTxHash := result.Hash
relayedTxHash := relayedTxResult.Hash

checkSum(t, scShardNodeHandler, scAddressBytes, owner.Bytes, 4)

providedInnerTxHashes := getInnerTxsHashes(t, relayerShardNode, innerTxs)

// 1 log events with inner tx hashes
require.Equal(t, 1, len(result.Logs.Events))
for idx, innerTxHash := range result.Logs.Events[0].Topics {
require.Equal(t, 1, len(relayedTxResult.Logs.Events))
for idx, innerTxHash := range relayedTxResult.Logs.Events[0].Topics {
require.True(t, bytes.Equal(providedInnerTxHashes[idx], innerTxHash))
require.Equal(t, hex.EncodeToString(providedInnerTxHashes[idx]), relayedTxResult.InnerTransactions[idx].Hash)

result, err = relayerShardNode.GetFacadeHandler().GetTransaction(hex.EncodeToString(innerTxHash), true)
result, err := relayerShardNode.GetFacadeHandler().GetTransaction(hex.EncodeToString(innerTxHash), true)
require.NoError(t, err)

require.Equal(t, relayedTxHash, result.OriginalTransactionHash)
Expand Down Expand Up @@ -780,10 +783,10 @@ func TestRelayedTransactionInMultiShardEnvironmentWithChainSimulatorInnerNotExec
relayedTx := generateTransaction(relayer.Bytes, 0, relayer.Bytes, big.NewInt(0), "", relayedTxGasLimit)
relayedTx.InnerTransactions = innerTxs

result, err := cs.SendTxAndGenerateBlockTilTxIsExecuted(relayedTx, maxNumOfBlocksToGenerateWhenExecutingTx)
relayedTxResult, err := cs.SendTxAndGenerateBlockTilTxIsExecuted(relayedTx, maxNumOfBlocksToGenerateWhenExecutingTx)
require.NoError(t, err)

relayedTxHash := result.Hash
relayedTxHash := relayedTxResult.Hash

// generate few more blocks for the cross shard scrs to be done
err = cs.GenerateBlocks(maxNumOfBlocksToGenerateWhenExecutingTx)
Expand All @@ -792,11 +795,12 @@ func TestRelayedTransactionInMultiShardEnvironmentWithChainSimulatorInnerNotExec
providedInnerTxHashes := getInnerTxsHashes(t, relayerShardNode, innerTxs)

// 1 log events with inner tx hashes
require.Equal(t, 1, len(result.Logs.Events))
for idx, innerTxHash := range result.Logs.Events[0].Topics {
require.Equal(t, 1, len(relayedTxResult.Logs.Events))
for idx, innerTxHash := range relayedTxResult.Logs.Events[0].Topics {
require.True(t, bytes.Equal(providedInnerTxHashes[idx], innerTxHash))
require.Equal(t, hex.EncodeToString(providedInnerTxHashes[idx]), relayedTxResult.InnerTransactions[idx].Hash)

result, err = relayerShardNode.GetFacadeHandler().GetTransaction(hex.EncodeToString(innerTxHash), true)
result, err := relayerShardNode.GetFacadeHandler().GetTransaction(hex.EncodeToString(innerTxHash), true)
require.NoError(t, err)

require.Equal(t, relayedTxHash, result.OriginalTransactionHash)
Expand Down
1 change: 1 addition & 0 deletions integrationTests/testProcessorNodeWithTestWebServer.go
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,7 @@ func createFacadeComponents(tpn *TestProcessorNode) nodeFacade.ApiResolver {
DataFieldParser: dataFieldParser,
TxMarshaller: &marshallerMock.MarshalizerMock{},
EnableEpochsHandler: tpn.EnableEpochsHandler,
Hasher: TestHasher,
}
apiTransactionHandler, err := transactionAPI.NewAPITransactionProcessor(argsApiTransactionProc)
log.LogIfError(err)
Expand Down
2 changes: 2 additions & 0 deletions node/external/transactionAPI/apiTransactionArgs.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

"github.com/multiversx/mx-chain-core-go/core"
"github.com/multiversx/mx-chain-core-go/data/typeConverters"
"github.com/multiversx/mx-chain-core-go/hashing"
"github.com/multiversx/mx-chain-core-go/marshal"
"github.com/multiversx/mx-chain-go/common"
"github.com/multiversx/mx-chain-go/dataRetriever"
Expand All @@ -30,4 +31,5 @@ type ArgAPITransactionProcessor struct {
DataFieldParser DataFieldParser
TxMarshaller marshal.Marshalizer
EnableEpochsHandler common.EnableEpochsHandler
Hasher hashing.Hasher
}
21 changes: 20 additions & 1 deletion node/external/transactionAPI/apiTransactionProcessor.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,13 @@ func NewAPITransactionProcessor(args *ArgAPITransactionProcessor) (*apiTransacti
return nil, err
}

txUnmarshalerAndPreparer := newTransactionUnmarshaller(args.Marshalizer, args.AddressPubKeyConverter, args.DataFieldParser, args.ShardCoordinator)
txUnmarshalerAndPreparer := newTransactionUnmarshaller(
args.Marshalizer,
args.AddressPubKeyConverter,
args.DataFieldParser,
args.ShardCoordinator,
args.Hasher,
)
txResultsProc := newAPITransactionResultProcessor(
args.AddressPubKeyConverter,
args.HistoryRepository,
Expand Down Expand Up @@ -542,6 +548,7 @@ func (atp *apiTransactionProcessor) lookupHistoricalTransaction(hash []byte, wit
encodedParentTxHash := hex.EncodeToString(parentTxHash)
tx.OriginalTransactionHash = encodedParentTxHash
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

tx.PreviousTransactionHash = encodedParentTxHash
tx.Type = string(transaction.TxTypeInner)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should announce this, or should be extra careful on downstream applications. Can be considered a somehow-breaking change.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to double check from downstream applications.

}

putMiniblockFieldsInTransaction(tx, miniblockMetadata)
Expand Down Expand Up @@ -575,6 +582,7 @@ func (atp *apiTransactionProcessor) lookupHistoricalTransaction(hash []byte, wit
func putMiniblockFieldsInTransaction(tx *transaction.ApiTransactionResult, miniblockMetadata *dblookupext.MiniblockMetadata) *transaction.ApiTransactionResult {
tx.Epoch = miniblockMetadata.Epoch
tx.Round = miniblockMetadata.Round
putRoundAndEpochOnInnerTxs(tx)

tx.MiniBlockType = block.Type(miniblockMetadata.Type).String()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no need for the next fields to be set in the inner txs?
maybe at least the miniblockHash and miniBlockType.

tx.MiniBlockHash = hex.EncodeToString(miniblockMetadata.MiniblockHash)
Expand All @@ -591,6 +599,17 @@ func putMiniblockFieldsInTransaction(tx *transaction.ApiTransactionResult, minib
return tx
}

func putRoundAndEpochOnInnerTxs(tx *transaction.ApiTransactionResult) {
if len(tx.InnerTransactions) == 0 {
return
}

for _, innerTx := range tx.InnerTransactions {
innerTx.Epoch = tx.Epoch
innerTx.Round = tx.Round
}
}

func (atp *apiTransactionProcessor) getTransactionFromStorage(hash []byte) (*transaction.ApiTransactionResult, error) {
txBytes, txType, found := atp.getTxBytesFromStorage(hash)
if !found {
Expand Down
13 changes: 13 additions & 0 deletions node/external/transactionAPI/apiTransactionProcessor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ func createMockArgAPITransactionProcessor() *ArgAPITransactionProcessor {
},
TxMarshaller: &marshallerMock.MarshalizerMock{},
EnableEpochsHandler: enableEpochsHandlerMock.NewEnableEpochsHandlerStub(),
Hasher: &mock.HasherMock{},
}
}

Expand Down Expand Up @@ -203,6 +204,15 @@ func TestNewAPITransactionProcessor(t *testing.T) {
_, err := NewAPITransactionProcessor(arguments)
require.Equal(t, process.ErrNilEnableEpochsHandler, err)
})
t.Run("NilHasher", func(t *testing.T) {
t.Parallel()

arguments := createMockArgAPITransactionProcessor()
arguments.Hasher = nil

_, err := NewAPITransactionProcessor(arguments)
require.Equal(t, process.ErrNilHasher, err)
})
}

func TestNode_GetTransactionInvalidHashShouldErr(t *testing.T) {
Expand Down Expand Up @@ -362,6 +372,7 @@ func TestNode_GetSCRs(t *testing.T) {
},
EnableEpochsHandler: enableEpochsHandlerMock.NewEnableEpochsHandlerStub(),
TxMarshaller: &mock.MarshalizerFake{},
Hasher: &mock.HasherMock{},
}
apiTransactionProc, _ := NewAPITransactionProcessor(args)

Expand Down Expand Up @@ -572,6 +583,7 @@ func TestNode_GetTransactionWithResultsFromStorage(t *testing.T) {
},
TxMarshaller: &marshallerMock.MarshalizerMock{},
EnableEpochsHandler: enableEpochsHandlerMock.NewEnableEpochsHandlerStub(),
Hasher: &mock.HasherMock{},
}
apiTransactionProc, _ := NewAPITransactionProcessor(args)

Expand Down Expand Up @@ -1142,6 +1154,7 @@ func createAPITransactionProc(t *testing.T, epoch uint32, withDbLookupExt bool)
DataFieldParser: dataFieldParser,
TxMarshaller: &marshallerMock.MarshalizerMock{},
EnableEpochsHandler: enableEpochsHandlerMock.NewEnableEpochsHandlerStub(),
Hasher: &mock.HasherMock{},
}
apiTransactionProc, err := NewAPITransactionProcessor(args)
require.Nil(t, err)
Expand Down
8 changes: 4 additions & 4 deletions node/external/transactionAPI/apiTransactionResults_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func TestPutEventsInTransactionReceipt(t *testing.T) {
},
}
shardCoordinator := mock.NewOneShardCoordinatorMock()
txUnmarshalerAndPreparer := newTransactionUnmarshaller(marshalizerdMock, pubKeyConverter, dataFieldParser, shardCoordinator)
txUnmarshalerAndPreparer := newTransactionUnmarshaller(marshalizerdMock, pubKeyConverter, dataFieldParser, shardCoordinator, &mock.HasherMock{})
n := newAPITransactionResultProcessor(pubKeyConverter, historyRepo, dataStore, marshalizerdMock, txUnmarshalerAndPreparer, logsFacade, shardCoordinator, dataFieldParser)

epoch := uint32(0)
Expand Down Expand Up @@ -107,7 +107,7 @@ func TestApiTransactionProcessor_PutResultsInTransactionWhenNoResultsShouldWork(
historyRepo,
genericMocks.NewChainStorerMock(epoch),
&marshallerMock.MarshalizerMock{},
newTransactionUnmarshaller(&marshallerMock.MarshalizerMock{}, testscommon.RealWorldBech32PubkeyConverter, dataFieldParser, shardCoordinator),
newTransactionUnmarshaller(&marshallerMock.MarshalizerMock{}, testscommon.RealWorldBech32PubkeyConverter, dataFieldParser, shardCoordinator, &mock.HasherMock{}),
&testscommon.LogsFacadeStub{},
shardCoordinator,
dataFieldParser,
Expand Down Expand Up @@ -217,7 +217,7 @@ func TestPutEventsInTransactionSmartContractResults(t *testing.T) {
}
shardCoordinator := mock.NewOneShardCoordinatorMock()
pubKeyConverter := testscommon.NewPubkeyConverterMock(3)
txUnmarshalerAndPreparer := newTransactionUnmarshaller(marshalizerdMock, pubKeyConverter, dataFieldParser, shardCoordinator)
txUnmarshalerAndPreparer := newTransactionUnmarshaller(marshalizerdMock, pubKeyConverter, dataFieldParser, shardCoordinator, &mock.HasherMock{})
n := newAPITransactionResultProcessor(pubKeyConverter, historyRepo, dataStore, marshalizerdMock, txUnmarshalerAndPreparer, logsFacade, shardCoordinator, dataFieldParser)

encodedSndAddr, err := pubKeyConverter.Encode(scr1.SndAddr)
Expand Down Expand Up @@ -315,7 +315,7 @@ func TestPutLogsInTransaction(t *testing.T) {
}
shardCoordinator := mock.NewOneShardCoordinatorMock()
pubKeyConverter := &testscommon.PubkeyConverterMock{}
txUnmarshalerAndPreparer := newTransactionUnmarshaller(marshalizerMock, pubKeyConverter, dataFieldParser, shardCoordinator)
txUnmarshalerAndPreparer := newTransactionUnmarshaller(marshalizerMock, pubKeyConverter, dataFieldParser, shardCoordinator, &mock.HasherMock{})
n := newAPITransactionResultProcessor(pubKeyConverter, historyRepo, dataStore, marshalizerMock, txUnmarshalerAndPreparer, logsFacade, shardCoordinator, dataFieldParser)

tx := &transaction.ApiTransactionResult{}
Expand Down
3 changes: 3 additions & 0 deletions node/external/transactionAPI/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ func checkNilArgs(arg *ArgAPITransactionProcessor) error {
if check.IfNil(arg.EnableEpochsHandler) {
return process.ErrNilEnableEpochsHandler
}
if check.IfNil(arg.Hasher) {
return process.ErrNilHasher
}

return nil
}
24 changes: 20 additions & 4 deletions node/external/transactionAPI/unmarshaller.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
rewardTxData "github.com/multiversx/mx-chain-core-go/data/rewardTx"
"github.com/multiversx/mx-chain-core-go/data/smartContractResult"
"github.com/multiversx/mx-chain-core-go/data/transaction"
"github.com/multiversx/mx-chain-core-go/hashing"
"github.com/multiversx/mx-chain-core-go/marshal"
"github.com/multiversx/mx-chain-go/sharding"
)
Expand All @@ -19,6 +20,7 @@ type txUnmarshaller struct {
shardCoordinator sharding.Coordinator
addressPubKeyConverter core.PubkeyConverter
marshalizer marshal.Marshalizer
hasher hashing.Hasher
dataFieldParser DataFieldParser
}

Expand All @@ -27,12 +29,14 @@ func newTransactionUnmarshaller(
addressPubKeyConverter core.PubkeyConverter,
dataFieldParser DataFieldParser,
shardCoordinator sharding.Coordinator,
hasher hashing.Hasher,
) *txUnmarshaller {
return &txUnmarshaller{
marshalizer: marshalizer,
addressPubKeyConverter: addressPubKeyConverter,
dataFieldParser: dataFieldParser,
shardCoordinator: shardCoordinator,
hasher: hasher,
}
}

Expand Down Expand Up @@ -160,20 +164,32 @@ func (tu *txUnmarshaller) prepareNormalTx(tx *transaction.Transaction) *transact
return apiTx
}

func (tu *txUnmarshaller) prepareInnerTxs(tx *transaction.Transaction) []*transaction.FrontendTransaction {
func (tu *txUnmarshaller) prepareInnerTxs(tx *transaction.Transaction) []*transaction.ApiTransactionResult {
if len(tx.InnerTransactions) == 0 {
return nil
}

innerTxs := make([]*transaction.FrontendTransaction, 0, len(tx.InnerTransactions))
innerTxs := make([]*transaction.ApiTransactionResult, 0, len(tx.InnerTransactions))
for _, innerTx := range tx.InnerTransactions {
frontEndTx := &transaction.FrontendTransaction{
innerTxHash, err := core.CalculateHash(tu.marshalizer, tu.hasher, innerTx)
if err != nil {
innerTxHash = make([]byte, 0)
}

tu.shardCoordinator.ComputeId(innerTx.RcvAddr)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this can be removed


frontEndTx := &transaction.ApiTransactionResult{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rename the variable ?

Tx: innerTx,
Type: string(transaction.TxTypeInner),
Hash: hex.EncodeToString(innerTxHash),
Nonce: innerTx.Nonce,
Value: innerTx.Value.String(),
Receiver: tu.addressPubKeyConverter.SilentEncode(innerTx.RcvAddr, log),
Sender: tu.addressPubKeyConverter.SilentEncode(innerTx.SndAddr, log),
SenderUsername: innerTx.SndUserName,
ReceiverUsername: innerTx.RcvUserName,
SourceShard: tu.shardCoordinator.ComputeId(innerTx.SndAddr),
DestinationShard: tu.shardCoordinator.ComputeId(innerTx.RcvAddr),
GasPrice: innerTx.GasPrice,
GasLimit: innerTx.GasLimit,
Data: innerTx.Data,
Expand All @@ -189,7 +205,7 @@ func (tu *txUnmarshaller) prepareInnerTxs(tx *transaction.Transaction) []*transa
}

if len(innerTx.RelayerAddr) > 0 {
frontEndTx.Relayer = tu.addressPubKeyConverter.SilentEncode(innerTx.RelayerAddr, log)
frontEndTx.RelayerAddress = tu.addressPubKeyConverter.SilentEncode(innerTx.RelayerAddr, log)
}

innerTxs = append(innerTxs, frontEndTx)
Expand Down
Loading