mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-08-13 22:23:15 +00:00
56 lines
2.4 KiB
Go
56 lines
2.4 KiB
Go
package transactionvalidator
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/model"
|
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
|
"github.com/kaspanet/kaspad/domain/consensus/utils/txscript"
|
|
"github.com/kaspanet/kaspad/util/txmass"
|
|
)
|
|
|
|
const sigCacheSize = 10_000
|
|
|
|
// transactionValidator exposes a set of validation classes, after which
|
|
// it's possible to determine whether either a transaction is valid
|
|
type transactionValidator struct {
|
|
blockCoinbaseMaturity uint64
|
|
databaseContext model.DBReader
|
|
pastMedianTimeManager model.PastMedianTimeManager
|
|
ghostdagDataStore model.GHOSTDAGDataStore
|
|
daaBlocksStore model.DAABlocksStore
|
|
enableNonNativeSubnetworks bool
|
|
maxCoinbasePayloadLength uint64
|
|
ghostdagK externalapi.KType
|
|
coinbasePayloadScriptPublicKeyMaxLength uint8
|
|
sigCache *txscript.SigCache
|
|
sigCacheECDSA *txscript.SigCacheECDSA
|
|
txMassCalculator *txmass.Calculator
|
|
}
|
|
|
|
// New instantiates a new TransactionValidator
|
|
func New(blockCoinbaseMaturity uint64,
|
|
enableNonNativeSubnetworks bool,
|
|
maxCoinbasePayloadLength uint64,
|
|
ghostdagK externalapi.KType,
|
|
coinbasePayloadScriptPublicKeyMaxLength uint8,
|
|
databaseContext model.DBReader,
|
|
pastMedianTimeManager model.PastMedianTimeManager,
|
|
ghostdagDataStore model.GHOSTDAGDataStore,
|
|
daaBlocksStore model.DAABlocksStore,
|
|
txMassCalculator *txmass.Calculator) model.TransactionValidator {
|
|
|
|
return &transactionValidator{
|
|
blockCoinbaseMaturity: blockCoinbaseMaturity,
|
|
enableNonNativeSubnetworks: enableNonNativeSubnetworks,
|
|
maxCoinbasePayloadLength: maxCoinbasePayloadLength,
|
|
ghostdagK: ghostdagK,
|
|
coinbasePayloadScriptPublicKeyMaxLength: coinbasePayloadScriptPublicKeyMaxLength,
|
|
databaseContext: databaseContext,
|
|
pastMedianTimeManager: pastMedianTimeManager,
|
|
ghostdagDataStore: ghostdagDataStore,
|
|
daaBlocksStore: daaBlocksStore,
|
|
sigCache: txscript.NewSigCache(sigCacheSize),
|
|
sigCacheECDSA: txscript.NewSigCacheECDSA(sigCacheSize),
|
|
txMassCalculator: txMassCalculator,
|
|
}
|
|
}
|