mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-06 22:26:47 +00:00
Expire old transactions when both an amount of DAA and an amount of time had passed. (#1784)
Co-authored-by: Ori Newman <orinewman1@gmail.com>
This commit is contained in:
parent
e3a6d9e49a
commit
2f272cd517
@ -38,6 +38,7 @@ type Config struct {
|
||||
MaximumTransactionCount uint64
|
||||
TransactionExpireIntervalDAAScore uint64
|
||||
TransactionExpireScanIntervalDAAScore uint64
|
||||
TransactionExpireScanIntervalSeconds uint64
|
||||
OrphanExpireIntervalDAAScore uint64
|
||||
OrphanExpireScanIntervalDAAScore uint64
|
||||
MaximumOrphanTransactionSize uint64
|
||||
@ -57,6 +58,7 @@ func DefaultConfig(dagParams *dagconfig.Params) *Config {
|
||||
MaximumTransactionCount: defaultMaximumTransactionCount,
|
||||
TransactionExpireIntervalDAAScore: defaultTransactionExpireIntervalSeconds / targetBlocksPerSecond,
|
||||
TransactionExpireScanIntervalDAAScore: defaultTransactionExpireScanIntervalSeconds / targetBlocksPerSecond,
|
||||
TransactionExpireScanIntervalSeconds: defaultTransactionExpireScanIntervalSeconds,
|
||||
OrphanExpireIntervalDAAScore: defaultOrphanExpireIntervalSeconds / targetBlocksPerSecond,
|
||||
OrphanExpireScanIntervalDAAScore: defaultOrphanExpireScanIntervalSeconds / targetBlocksPerSecond,
|
||||
MaximumOrphanTransactionSize: defaultMaximumOrphanTransactionSize,
|
||||
|
@ -3,6 +3,7 @@ package mempool
|
||||
import (
|
||||
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
||||
"github.com/kaspanet/kaspad/domain/miningmanager/mempool/model"
|
||||
"time"
|
||||
)
|
||||
|
||||
type transactionsPool struct {
|
||||
@ -11,7 +12,8 @@ type transactionsPool struct {
|
||||
highPriorityTransactions model.IDToTransactionMap
|
||||
chainedTransactionsByPreviousOutpoint model.OutpointToTransactionMap
|
||||
transactionsOrderedByFeeRate model.TransactionsOrderedByFeeRate
|
||||
lastExpireScan uint64
|
||||
lastExpireScanDAAScore uint64
|
||||
lastExpireScanTime time.Time
|
||||
}
|
||||
|
||||
func newTransactionsPool(mp *mempool) *transactionsPool {
|
||||
@ -21,7 +23,8 @@ func newTransactionsPool(mp *mempool) *transactionsPool {
|
||||
highPriorityTransactions: model.IDToTransactionMap{},
|
||||
chainedTransactionsByPreviousOutpoint: model.OutpointToTransactionMap{},
|
||||
transactionsOrderedByFeeRate: model.TransactionsOrderedByFeeRate{},
|
||||
lastExpireScan: 0,
|
||||
lastExpireScanDAAScore: 0,
|
||||
lastExpireScanTime: time.Now(),
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,7 +91,8 @@ func (tp *transactionsPool) expireOldTransactions() error {
|
||||
return err
|
||||
}
|
||||
|
||||
if virtualDAAScore-tp.lastExpireScan < tp.mempool.config.TransactionExpireScanIntervalDAAScore {
|
||||
if virtualDAAScore-tp.lastExpireScanDAAScore < tp.mempool.config.TransactionExpireScanIntervalDAAScore ||
|
||||
time.Since(tp.lastExpireScanTime).Seconds() < float64(tp.mempool.config.TransactionExpireScanIntervalSeconds) {
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -110,7 +114,8 @@ func (tp *transactionsPool) expireOldTransactions() error {
|
||||
}
|
||||
}
|
||||
|
||||
tp.lastExpireScan = virtualDAAScore
|
||||
tp.lastExpireScanDAAScore = virtualDAAScore
|
||||
tp.lastExpireScanTime = time.Now()
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user