status-im/status-go

View on GitHub
services/wallet/transfer/transaction_manager_internal.go

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
package transfer

import (
    "math/big"

    "github.com/ethereum/go-ethereum/common"
    ethTypes "github.com/ethereum/go-ethereum/core/types"
    "github.com/status-im/status-go/services/wallet/router/pathprocessor"
)

func (tm *TransactionManager) buildTransactions(pathProcessors map[string]pathprocessor.PathProcessor) ([]string, error) {
    tm.transactionsForKeycardSigning = make(map[common.Hash]*TransactionDescription)
    var hashes []string
    for _, bridgeTx := range tm.multipathTransactionsData {
        builtTx, err := pathProcessors[bridgeTx.Name].BuildTransaction(bridgeTx)
        if err != nil {
            return hashes, err
        }

        signer := ethTypes.NewLondonSigner(big.NewInt(int64(bridgeTx.ChainID)))
        txHash := signer.Hash(builtTx)

        tm.transactionsForKeycardSigning[txHash] = &TransactionDescription{
            from:    common.Address(bridgeTx.From()),
            chainID: bridgeTx.ChainID,
            builtTx: builtTx,
        }

        hashes = append(hashes, txHash.String())
    }

    return hashes, nil
}