mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-07 06:36:46 +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
|
MaximumTransactionCount uint64
|
||||||
TransactionExpireIntervalDAAScore uint64
|
TransactionExpireIntervalDAAScore uint64
|
||||||
TransactionExpireScanIntervalDAAScore uint64
|
TransactionExpireScanIntervalDAAScore uint64
|
||||||
|
TransactionExpireScanIntervalSeconds uint64
|
||||||
OrphanExpireIntervalDAAScore uint64
|
OrphanExpireIntervalDAAScore uint64
|
||||||
OrphanExpireScanIntervalDAAScore uint64
|
OrphanExpireScanIntervalDAAScore uint64
|
||||||
MaximumOrphanTransactionSize uint64
|
MaximumOrphanTransactionSize uint64
|
||||||
@ -57,6 +58,7 @@ func DefaultConfig(dagParams *dagconfig.Params) *Config {
|
|||||||
MaximumTransactionCount: defaultMaximumTransactionCount,
|
MaximumTransactionCount: defaultMaximumTransactionCount,
|
||||||
TransactionExpireIntervalDAAScore: defaultTransactionExpireIntervalSeconds / targetBlocksPerSecond,
|
TransactionExpireIntervalDAAScore: defaultTransactionExpireIntervalSeconds / targetBlocksPerSecond,
|
||||||
TransactionExpireScanIntervalDAAScore: defaultTransactionExpireScanIntervalSeconds / targetBlocksPerSecond,
|
TransactionExpireScanIntervalDAAScore: defaultTransactionExpireScanIntervalSeconds / targetBlocksPerSecond,
|
||||||
|
TransactionExpireScanIntervalSeconds: defaultTransactionExpireScanIntervalSeconds,
|
||||||
OrphanExpireIntervalDAAScore: defaultOrphanExpireIntervalSeconds / targetBlocksPerSecond,
|
OrphanExpireIntervalDAAScore: defaultOrphanExpireIntervalSeconds / targetBlocksPerSecond,
|
||||||
OrphanExpireScanIntervalDAAScore: defaultOrphanExpireScanIntervalSeconds / targetBlocksPerSecond,
|
OrphanExpireScanIntervalDAAScore: defaultOrphanExpireScanIntervalSeconds / targetBlocksPerSecond,
|
||||||
MaximumOrphanTransactionSize: defaultMaximumOrphanTransactionSize,
|
MaximumOrphanTransactionSize: defaultMaximumOrphanTransactionSize,
|
||||||
|
@ -3,6 +3,7 @@ package mempool
|
|||||||
import (
|
import (
|
||||||
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
||||||
"github.com/kaspanet/kaspad/domain/miningmanager/mempool/model"
|
"github.com/kaspanet/kaspad/domain/miningmanager/mempool/model"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type transactionsPool struct {
|
type transactionsPool struct {
|
||||||
@ -11,7 +12,8 @@ type transactionsPool struct {
|
|||||||
highPriorityTransactions model.IDToTransactionMap
|
highPriorityTransactions model.IDToTransactionMap
|
||||||
chainedTransactionsByPreviousOutpoint model.OutpointToTransactionMap
|
chainedTransactionsByPreviousOutpoint model.OutpointToTransactionMap
|
||||||
transactionsOrderedByFeeRate model.TransactionsOrderedByFeeRate
|
transactionsOrderedByFeeRate model.TransactionsOrderedByFeeRate
|
||||||
lastExpireScan uint64
|
lastExpireScanDAAScore uint64
|
||||||
|
lastExpireScanTime time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
func newTransactionsPool(mp *mempool) *transactionsPool {
|
func newTransactionsPool(mp *mempool) *transactionsPool {
|
||||||
@ -21,7 +23,8 @@ func newTransactionsPool(mp *mempool) *transactionsPool {
|
|||||||
highPriorityTransactions: model.IDToTransactionMap{},
|
highPriorityTransactions: model.IDToTransactionMap{},
|
||||||
chainedTransactionsByPreviousOutpoint: model.OutpointToTransactionMap{},
|
chainedTransactionsByPreviousOutpoint: model.OutpointToTransactionMap{},
|
||||||
transactionsOrderedByFeeRate: model.TransactionsOrderedByFeeRate{},
|
transactionsOrderedByFeeRate: model.TransactionsOrderedByFeeRate{},
|
||||||
lastExpireScan: 0,
|
lastExpireScanDAAScore: 0,
|
||||||
|
lastExpireScanTime: time.Now(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,7 +91,8 @@ func (tp *transactionsPool) expireOldTransactions() error {
|
|||||||
return err
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,7 +114,8 @@ func (tp *transactionsPool) expireOldTransactions() error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tp.lastExpireScan = virtualDAAScore
|
tp.lastExpireScanDAAScore = virtualDAAScore
|
||||||
|
tp.lastExpireScanTime = time.Now()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user