@@ -56,9 +56,9 @@ type DecodedTransaction struct {
5656func DecodeTransactions (chainId string , txs []Transaction ) []* DecodedTransaction {
5757 decodedTxs := make ([]* DecodedTransaction , len (txs ))
5858 abiCache := make (map [string ]* abi.ABI )
59- decodeTxFunc := func (transaction * Transaction ) * DecodedTransaction {
59+ decodeTxFunc := func (transaction * Transaction , mut * sync. Mutex ) * DecodedTransaction {
6060 decodedTransaction := DecodedTransaction {Transaction : * transaction }
61- abi := GetABIForContractWithCache (chainId , transaction .ToAddress , abiCache )
61+ abi := GetABIForContractWithCache (chainId , transaction .ToAddress , abiCache , mut )
6262 if abi == nil {
6363 return & decodedTransaction
6464 }
@@ -84,13 +84,14 @@ func DecodeTransactions(chainId string, txs []Transaction) []*DecodedTransaction
8484 }
8585
8686 var wg sync.WaitGroup
87+ mut := & sync.Mutex {}
8788 for idx , transaction := range txs {
8889 wg .Add (1 )
89- go func (idx int , transaction Transaction ) {
90+ go func (idx int , transaction Transaction , mut * sync. Mutex ) {
9091 defer wg .Done ()
91- decodedTx := decodeTxFunc (& transaction )
92+ decodedTx := decodeTxFunc (& transaction , mut )
9293 decodedTxs [idx ] = decodedTx
93- }(idx , transaction )
94+ }(idx , transaction , mut )
9495 }
9596 wg .Wait ()
9697 return decodedTxs
0 commit comments