Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions txnprovider/txpool/senders.go
Original file line number Diff line number Diff line change
Expand Up @@ -250,18 +250,25 @@ func (sc *sendersBatch) registerNewSenders(newTxns *TxnSlots, logger log.Logger)
}

func (sc *sendersBatch) onNewBlock(stateChanges *remoteproto.StateChangeBatch, unwindTxns, minedTxns TxnSlots, logger log.Logger) error {
var processedTxns bool
for _, diff := range stateChanges.ChangeBatch {
for _, change := range diff.Changes { // merge state changes
addrB := gointerfaces.ConvertH160toAddress(change.Address)
sc.getOrCreateID(addrB, logger)
}

for i, txn := range unwindTxns.Txns {
txn.SenderID, txn.Traced = sc.getOrCreateID(unwindTxns.Senders.AddressAt(i), logger)
// unwindTxns/minedTxns do not depend on individual diffs inside the batch.
// Processing them for every diff only repeats the same work.
if processedTxns {
continue
}
processedTxns = true

for i, txn := range minedTxns.Txns {
txn.SenderID, txn.Traced = sc.getOrCreateID(minedTxns.Senders.AddressAt(i), logger)
if err := sc.registerNewSenders(&unwindTxns, logger); err != nil {
return err
}
if err := sc.registerNewSenders(&minedTxns, logger); err != nil {
return err
}
}
return nil
Expand All @@ -286,7 +293,6 @@ func EncodeSender(nonce uint64, balance uint256.Int, buffer []byte) {
fieldSet = 1
nonceBytes := common.BitLenToByteLen(bits.Len64(nonce))
buffer[pos] = byte(nonceBytes)
var nonce = nonce
for i := nonceBytes; i > 0; i-- {
buffer[pos+i] = byte(nonce)
nonce >>= 8
Expand Down
Loading