protected BlockDefinition(
            IConsensusManager consensusManager,
            IDateTimeProvider dateTimeProvider,
            ILoggerFactory loggerFactory,
            ITxMempool mempool,
            MempoolSchedulerLock mempoolLock,
            MinerSettings minerSettings,
            Network network,
            NodeDeployments nodeDeployments)
        {
            this.ConsensusManager = consensusManager;
            this.DateTimeProvider = dateTimeProvider;
            this.logger           = loggerFactory.CreateLogger(this.GetType().FullName);
            this.Mempool          = mempool;
            this.MempoolLock      = mempoolLock;
            this.Network          = network;
            this.nodeDeployments  = nodeDeployments;

            this.Options         = minerSettings.BlockDefinitionOptions;
            this.BlockMinFeeRate = this.Options.BlockMinFeeRate;

            // Whether we need to account for byte usage (in addition to weight usage).
            this.NeedSizeAccounting = (this.Options.BlockMaxSize < network.Consensus.Options.MaxBlockSerializedSize);

            this.Configure();
        }
Example #2
0
 public PowBlockDefinition(
     IConsensusManager consensusManager,
     IDateTimeProvider dateTimeProvider,
     ILoggerFactory loggerFactory,
     ITxMempool mempool,
     MempoolSchedulerLock mempoolLock,
     MinerSettings minerSettings,
     Network network,
     IConsensusRuleEngine consensusRules,
     BlockDefinitionOptions options = null)
     : base(consensusManager, dateTimeProvider, loggerFactory, mempool, mempoolLock, minerSettings, network)
 {
     this.consensusRules = consensusRules;
     this.logger         = loggerFactory.CreateLogger("Impleum.Bitcoin.FullNode");
 }
Example #3
0
 public PowBlockDefinition(
     IConsensusLoop consensusLoop,
     IDateTimeProvider dateTimeProvider,
     ILoggerFactory loggerFactory,
     ITxMempool mempool,
     MempoolSchedulerLock mempoolLock,
     MinerSettings minerSettings,
     Network network,
     IConsensusRules consensusRules,
     BlockDefinitionOptions options = null)
     : base(consensusLoop, dateTimeProvider, loggerFactory, mempool, mempoolLock, minerSettings, network)
 {
     this.consensusRules = consensusRules;
     this.logger         = loggerFactory.CreateLogger(this.GetType().FullName);
 }
 public PosBlockDefinition(
     IConsensusManager consensusManager,
     IDateTimeProvider dateTimeProvider,
     ILoggerFactory loggerFactory,
     ITxMempool mempool,
     MempoolSchedulerLock mempoolLock,
     MinerSettings minerSettings,
     Network network,
     IStakeChain stakeChain,
     IStakeValidator stakeValidator)
     : base(consensusManager, dateTimeProvider, loggerFactory, mempool, mempoolLock, minerSettings, network)
 {
     this.logger         = loggerFactory.CreateLogger(this.GetType().FullName);
     this.stakeChain     = stakeChain;
     this.stakeValidator = stakeValidator;
 }
 public PosPowBlockDefinition(
     IConsensusManager consensusManager,
     IDateTimeProvider dateTimeProvider,
     ILoggerFactory loggerFactory,
     ITxMempool mempool,
     MempoolSchedulerLock mempoolLock,
     Network network,
     MinerSettings minerSettings,
     IStakeChain stakeChain,
     IStakeValidator stakeValidator)
     : base(consensusManager, dateTimeProvider, loggerFactory, mempool, mempoolLock, minerSettings, network)
 {
     this.logger         = loggerFactory.CreateLogger("Impleum.Bitcoin.Fullnode");
     this.stakeChain     = stakeChain;
     this.stakeValidator = stakeValidator;
 }
 /// <summary>
 /// Initializes the instance of the object.
 /// </summary>
 /// <param name="network">Specification of the network the node runs on - regtest/testnet/mainnet.</param>
 /// <param name="minerSettings">Settings relevant to mining or staking.</param>
 /// <param name="nodeSettings">The node's configuration settings.</param>
 /// <param name="loggerFactory">Factory to be used to create logger for the node.</param>
 /// <param name="timeSyncBehaviorState">State of time synchronization feature that stores collected data samples.</param>
 /// <param name="powMining">POW miner.</param>
 /// <param name="posMinting">POS staker.</param>
 public MiningFeature(
     Network network,
     MinerSettings minerSettings,
     NodeSettings nodeSettings,
     ILoggerFactory loggerFactory,
     ITimeSyncBehaviorState timeSyncBehaviorState,
     IPowMining powMining,
     IPosMinting posMinting = null)
 {
     this.network               = network;
     this.minerSettings         = minerSettings;
     this.nodeSettings          = nodeSettings;
     this.powMining             = powMining;
     this.timeSyncBehaviorState = timeSyncBehaviorState;
     this.posMinting            = posMinting;
     this.logger = loggerFactory.CreateLogger(this.GetType().FullName);
 }
Example #7
0
 /// <summary>
 /// Initializes the instance of the object.
 /// </summary>
 /// <param name="network">Specification of the network the node runs on - regtest/testnet/mainnet.</param>
 /// <param name="minerSettings">Settings relevant to mining or staking.</param>
 /// <param name="nodeSettings">The node's configuration settings.</param>
 /// <param name="loggerFactory">Factory to be used to create logger for the node.</param>
 /// <param name="powMining">POW miner.</param>
 /// <param name="posMinting">POS staker.</param>
 /// <param name="walletManager">Manager providing operations on wallets.</param>
 public MiningFeature(
     Network network,
     MinerSettings minerSettings,
     NodeSettings nodeSettings,
     ILoggerFactory loggerFactory,
     IPowMining powMining,
     IPosMinting posMinting       = null,
     IWalletManager walletManager = null)
 {
     this.network       = network;
     this.minerSettings = minerSettings;
     this.minerSettings.Load(nodeSettings);
     this.powMining     = powMining;
     this.posMinting    = posMinting;
     this.walletManager = walletManager;
     this.logger        = loggerFactory.CreateLogger(this.GetType().FullName);
 }
Example #8
0
 public MiningFeature(
     ConnectionManagerSettings connectionManagerSettings,
     Network network,
     MinerSettings minerSettings,
     NodeSettings nodeSettings,
     ILoggerFactory loggerFactory,
     ITimeSyncBehaviorState timeSyncBehaviorState,
     IPowMining powMining,
     IPosMinting posMinting = null)
 {
     this.connectionManagerSettings = connectionManagerSettings;
     this.network               = network;
     this.minerSettings         = minerSettings;
     this.nodeSettings          = nodeSettings;
     this.powMining             = powMining;
     this.timeSyncBehaviorState = timeSyncBehaviorState;
     this.posMinting            = posMinting;
     this.logger = loggerFactory.CreateLogger("Impleum.Bitcoin.Fullnode");
 }
 /// <summary>
 /// Get the default configuration.
 /// </summary>
 /// <param name="builder">The string builder to add the settings to.</param>
 /// <param name="network">The network to base the defaults off.</param>
 public static void BuildDefaultConfigurationFile(StringBuilder builder, Network network)
 {
     MinerSettings.BuildDefaultConfigurationFile(builder, network);
 }
 /// <summary>
 /// Prints command-line help.
 /// </summary>
 /// <param name="network">The network to extract values from.</param>
 public static void PrintHelp(Network network)
 {
     MinerSettings.PrintHelp(network);
 }