From 4b3c82162956fb1f4114f2c457e5ddeb6f144280 Mon Sep 17 00:00:00 2001 From: Martin Boehm Date: Tue, 28 Feb 2023 18:25:38 +0100 Subject: [PATCH] Compute values of internal transactions in balance history --- api/worker.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/api/worker.go b/api/worker.go index c07d9f8a..5f0873a3 100644 --- a/api/worker.go +++ b/api/worker.go @@ -1465,6 +1465,35 @@ func (w *Worker) balanceHistoryForTxid(addrDesc bchain.AddressDescriptor, txid s } } } + // process internal transactions + if eth.ProcessInternalTransactions { + internalData, err := w.db.GetEthereumInternalData(txid) + if err != nil { + return nil, err + } + if internalData != nil { + for i := range internalData.Transfers { + f := &internalData.Transfers[i] + txAddrDesc, err := w.chainParser.GetAddrDescFromAddress(f.From) + if err != nil { + return nil, err + } + if bytes.Equal(addrDesc, txAddrDesc) { + (*big.Int)(bh.SentSat).Add((*big.Int)(bh.SentSat), &f.Value) + if f.From == f.To { + (*big.Int)(bh.SentToSelfSat).Add((*big.Int)(bh.SentToSelfSat), &f.Value) + } + } + txAddrDesc, err = w.chainParser.GetAddrDescFromAddress(f.To) + if err != nil { + return nil, err + } + if bytes.Equal(addrDesc, txAddrDesc) { + (*big.Int)(bh.ReceivedSat).Add((*big.Int)(bh.ReceivedSat), &f.Value) + } + } + } + } } for i := range bchainTx.Vin { bchainVin := &bchainTx.Vin[i]