Compute values of internal transactions in balance history

This commit is contained in:
Martin Boehm 2023-02-28 18:25:38 +01:00
parent fed5fb3dac
commit 4b3c821629

View File

@ -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]