|
|
@ -19,7 +19,6 @@ package rawdb |
|
|
|
import ( |
|
|
|
import ( |
|
|
|
"bytes" |
|
|
|
"bytes" |
|
|
|
"encoding/binary" |
|
|
|
"encoding/binary" |
|
|
|
"errors" |
|
|
|
|
|
|
|
"fmt" |
|
|
|
"fmt" |
|
|
|
"math/big" |
|
|
|
"math/big" |
|
|
|
"slices" |
|
|
|
"slices" |
|
|
@ -695,27 +694,6 @@ func (r *receiptLogs) DecodeRLP(s *rlp.Stream) error { |
|
|
|
return nil |
|
|
|
return nil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// deriveLogFields fills the logs in receiptLogs with information such as block number, txhash, etc.
|
|
|
|
|
|
|
|
func deriveLogFields(receipts []*receiptLogs, hash common.Hash, number uint64, txs types.Transactions) error { |
|
|
|
|
|
|
|
logIndex := uint(0) |
|
|
|
|
|
|
|
if len(txs) != len(receipts) { |
|
|
|
|
|
|
|
return errors.New("transaction and receipt count mismatch") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
for i := 0; i < len(receipts); i++ { |
|
|
|
|
|
|
|
txHash := txs[i].Hash() |
|
|
|
|
|
|
|
// The derived log fields can simply be set from the block and transaction
|
|
|
|
|
|
|
|
for j := 0; j < len(receipts[i].Logs); j++ { |
|
|
|
|
|
|
|
receipts[i].Logs[j].BlockNumber = number |
|
|
|
|
|
|
|
receipts[i].Logs[j].BlockHash = hash |
|
|
|
|
|
|
|
receipts[i].Logs[j].TxHash = txHash |
|
|
|
|
|
|
|
receipts[i].Logs[j].TxIndex = uint(i) |
|
|
|
|
|
|
|
receipts[i].Logs[j].Index = logIndex |
|
|
|
|
|
|
|
logIndex++ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return nil |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ReadLogs retrieves the logs for all transactions in a block. In case
|
|
|
|
// ReadLogs retrieves the logs for all transactions in a block. In case
|
|
|
|
// receipts is not found, a nil is returned.
|
|
|
|
// receipts is not found, a nil is returned.
|
|
|
|
// Note: ReadLogs does not derive unstored log fields.
|
|
|
|
// Note: ReadLogs does not derive unstored log fields.
|
|
|
|