/// <summary>
 /// Initializes a new instance of the object.
 /// </summary>
 /// <param name="state">Shared state among time sync behaviors.</param>
 /// <param name="dateTimeProvider">Provider of time functions.</param>
 /// <param name="loggerFactory">Factory for creating loggers.</param>
 public TimeSyncBehavior(ITimeSyncBehaviorState state, IDateTimeProvider dateTimeProvider, ILoggerFactory loggerFactory)
 {
     this.loggerFactory    = loggerFactory;
     this.logger           = loggerFactory.CreateLogger(this.GetType().FullName);
     this.dateTimeProvider = dateTimeProvider;
     this.state            = state;
 }
예제 #2
0
 public NodeServices(DataFolder dataFolder, ChainIndexer chainIndexer, Network network,
                     IBroadcasterManager broadcasterManager, ILoggerFactory loggerFactory,
                     INodeLifetime nodeLifetime, ISignals signals, IBlockStore blockStore,
                     ITimeSyncBehaviorState timeSyncBehaviorState, IInitialBlockDownloadState initialBlockDownloadState,
                     IBlockProvider blockProvider, IConsensusManager consensusManager, IStakeChain stakeChain,
                     ICoinView coinView, IDateTimeProvider dateTimeProvider, IChainState chainState)
 {
     C.Network = network;
     Log.SetLogger(loggerFactory.CreateLogger(nameof(X1Wallet)));
     this.LoggerFactory             = loggerFactory;
     this.DataFolder                = dataFolder;
     this.ChainIndexer              = chainIndexer;
     this.BroadcasterManager        = broadcasterManager;
     this.NodeLifetime              = nodeLifetime;
     this.InitialBlockDownloadState = initialBlockDownloadState;
     this.Signals               = signals;
     this.BlockStore            = blockStore;
     this.TimeSyncBehaviorState = timeSyncBehaviorState;
     this.BlockProvider         = blockProvider;
     this.ConsensusManager      = consensusManager;
     this.PosCoinviewRule       = consensusManager?.ConsensusRules.GetRule <PosCoinviewRule>();
     this.StakeChain            = stakeChain;
     this.DateTimeProvider      = dateTimeProvider;
     this.CoinView              = coinView;
     this.ChainState            = chainState;
 }
예제 #3
0
 /// <summary>
 /// Initializes a new instance of the object.
 /// </summary>
 /// <param name="state">Shared state among time sync behaviors.</param>
 /// <param name="dateTimeProvider">Provider of time functions.</param>
 /// <param name="loggerFactory">Factory for creating loggers.</param>
 public TimeSyncBehavior(ITimeSyncBehaviorState state, IDateTimeProvider dateTimeProvider, ILoggerFactory loggerFactory)
 {
     this.loggerFactory    = loggerFactory;
     this.logger           = loggerFactory.CreateLogger("Impleum.Bitcoin.FullNode");
     this.dateTimeProvider = dateTimeProvider;
     this.state            = state;
 }
예제 #4
0
        public BaseFeature(NodeSettings nodeSettings,
                           DataFolder dataFolder,
                           INodeLifetime nodeLifetime,
                           ChainIndexer chainIndexer,
                           IChainState chainState,
                           IConnectionManager connectionManager,
                           IChainRepository chainRepository,
                           IFinalizedBlockInfoRepository finalizedBlockInfo,
                           IDateTimeProvider dateTimeProvider,
                           IAsyncProvider asyncProvider,
                           ITimeSyncBehaviorState timeSyncBehaviorState,
                           ILoggerFactory loggerFactory,
                           IInitialBlockDownloadState initialBlockDownloadState,
                           IPeerBanning peerBanning,
                           IPeerAddressManager peerAddressManager,
                           IConsensusManager consensusManager,
                           IConsensusRuleEngine consensusRules,
                           IPartialValidator partialValidator,
                           IBlockPuller blockPuller,
                           IBlockStore blockStore,
                           Network network,
                           ITipsManager tipsManager,
                           NodeDeployments nodeDeployments,
                           IKeyValueRepository keyValueRepo,
                           INodeStats nodeStats,
                           IBroadcasterManager broadcasterManager,
                           IProvenBlockHeaderStore provenBlockHeaderStore = null)
        {
            this.chainState      = Guard.NotNull(chainState, nameof(chainState));
            this.chainRepository = Guard.NotNull(chainRepository, nameof(chainRepository));
            this.finalizedBlockInfoRepository = Guard.NotNull(finalizedBlockInfo, nameof(finalizedBlockInfo));
            this.nodeSettings           = Guard.NotNull(nodeSettings, nameof(nodeSettings));
            this.dataFolder             = Guard.NotNull(dataFolder, nameof(dataFolder));
            this.nodeLifetime           = Guard.NotNull(nodeLifetime, nameof(nodeLifetime));
            this.chainIndexer           = Guard.NotNull(chainIndexer, nameof(chainIndexer));
            this.connectionManager      = Guard.NotNull(connectionManager, nameof(connectionManager));
            this.consensusManager       = consensusManager;
            this.consensusRules         = consensusRules;
            this.blockPuller            = blockPuller;
            this.blockStore             = blockStore;
            this.network                = network;
            this.nodeStats              = nodeStats;
            this.broadcasterManager     = broadcasterManager;
            this.provenBlockHeaderStore = provenBlockHeaderStore;
            this.partialValidator       = partialValidator;
            this.peerBanning            = Guard.NotNull(peerBanning, nameof(peerBanning));
            this.tipsManager            = Guard.NotNull(tipsManager, nameof(tipsManager));
            this.keyValueRepo           = Guard.NotNull(keyValueRepo, nameof(keyValueRepo));
            this.nodeDeployments        = nodeDeployments;

            this.peerAddressManager = Guard.NotNull(peerAddressManager, nameof(peerAddressManager));
            this.peerAddressManager.PeerFilePath = this.dataFolder;

            this.initialBlockDownloadState = initialBlockDownloadState;
            this.dateTimeProvider          = dateTimeProvider;
            this.asyncProvider             = asyncProvider;
            this.timeSyncBehaviorState     = timeSyncBehaviorState;
            this.loggerFactory             = loggerFactory;
            this.logger = loggerFactory.CreateLogger(this.GetType().FullName);
        }
예제 #5
0
 public WalletController(
     WalletManagerFactory walletManagerFactory,
     IConnectionManager connectionManager,
     Network network,
     ChainIndexer chainIndexer,
     IBroadcasterManager broadcasterManager,
     IDateTimeProvider dateTimeProvider,
     IFullNode fullNode,
     NodeSettings nodeSettings,
     IChainState chainState,
     INetworkDifficulty networkDifficulty,
     ILoggerFactory loggerFactory,
     ITimeSyncBehaviorState timeSyncBehaviorState
     )
 {
     this.walletManagerFactory = walletManagerFactory;
     this.connectionManager    = connectionManager;
     this.network               = network;
     this.chainIndexer          = chainIndexer;
     this.broadcasterManager    = broadcasterManager;
     this.dateTimeProvider      = dateTimeProvider;
     this.fullNode              = fullNode;
     this.nodeSettings          = nodeSettings;
     this.chainState            = chainState;
     this.networkDifficulty     = networkDifficulty;
     this.loggerFactory         = loggerFactory;
     this.logger                = loggerFactory.CreateLogger(typeof(WalletController).Name);
     this.timeSyncBehaviorState = timeSyncBehaviorState;
 }
예제 #6
0
        public BaseFeature(
            NodeSettings nodeSettings,
            DataFolder dataFolder,
            INodeLifetime nodeLifetime,
            ConcurrentChain chain,
            IChainState chainState,
            IConnectionManager connectionManager,
            IChainRepository chainRepository,
            IFinalizedBlockInfoRepository finalizedBlockInfo,
            IDateTimeProvider dateTimeProvider,
            IAsyncLoopFactory asyncLoopFactory,
            ITimeSyncBehaviorState timeSyncBehaviorState,
            DBreezeSerializer dbreezeSerializer,
            ILoggerFactory loggerFactory,
            IInitialBlockDownloadState initialBlockDownloadState,
            IPeerBanning peerBanning,
            IPeerAddressManager peerAddressManager,
            IConsensusManager consensusManager,
            IConsensusRuleEngine consensusRules,
            IPartialValidator partialValidator,
            IBlockPuller blockPuller,
            IBlockStore blockStore,
            Network network)
        {
            this.chainState      = Guard.NotNull(chainState, nameof(chainState));
            this.chainRepository = Guard.NotNull(chainRepository, nameof(chainRepository));
            this.finalizedBlockInfoRepository = Guard.NotNull(finalizedBlockInfo, nameof(finalizedBlockInfo));
            this.nodeSettings      = Guard.NotNull(nodeSettings, nameof(nodeSettings));
            this.dataFolder        = Guard.NotNull(dataFolder, nameof(dataFolder));
            this.nodeLifetime      = Guard.NotNull(nodeLifetime, nameof(nodeLifetime));
            this.chain             = Guard.NotNull(chain, nameof(chain));
            this.connectionManager = Guard.NotNull(connectionManager, nameof(connectionManager));
            this.consensusManager  = consensusManager;
            this.consensusRules    = consensusRules;
            this.blockPuller       = blockPuller;
            this.blockStore        = blockStore;
            this.network           = network;
            this.partialValidator  = partialValidator;
            this.peerBanning       = Guard.NotNull(peerBanning, nameof(peerBanning));

            this.peerAddressManager = Guard.NotNull(peerAddressManager, nameof(peerAddressManager));
            this.peerAddressManager.PeerFilePath = this.dataFolder;

            this.initialBlockDownloadState = initialBlockDownloadState;
            this.dateTimeProvider          = dateTimeProvider;
            this.asyncLoopFactory          = asyncLoopFactory;
            this.timeSyncBehaviorState     = timeSyncBehaviorState;
            this.loggerFactory             = loggerFactory;
            this.dbreezeSerializer         = dbreezeSerializer;
            this.logger = loggerFactory.CreateLogger(this.GetType().FullName);
        }
 /// <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);
 }
예제 #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");
 }
예제 #9
0
        /// <summary>
        /// Initializes a new instance of the object.
        /// </summary>
        /// <param name="nodeSettings">User defined node settings.</param>
        /// <param name="dataFolder">Locations of important folders and files on disk.</param>
        /// <param name="nodeLifetime">Global application life cycle control - triggers when application shuts down.</param>
        /// <param name="chain">Thread safe access to the best chain of block headers (that the node is aware of) from genesis.</param>
        /// <param name="chainState">Information about node's chain.</param>
        /// <param name="connectionManager">Manager of node's network connections.</param>
        /// <param name="finalizedBlockHeight"><inheritdoc cref="IFinalizedBlockHeight"/></param>
        /// <param name="chainRepository">Access to the database of blocks.</param>
        /// <param name="dateTimeProvider">Provider of time functions.</param>
        /// <param name="asyncLoopFactory">Factory for creating background async loop tasks.</param>
        /// <param name="timeSyncBehaviorState">State of time synchronization feature that stores collected data samples.</param>
        /// <param name="dbreezeSerializer">Provider of binary (de)serialization for data stored in the database.</param>
        /// <param name="loggerFactory">Factory to be used to create logger for the node.</param>
        /// <param name="initialBlockDownloadState">Provider of IBD state.</param>
        /// <param name="bestChainSelector">Selects the best available chain based on tips provided by the peers and switches to it.</param>
        public BaseFeature(
            NodeSettings nodeSettings,
            DataFolder dataFolder,
            INodeLifetime nodeLifetime,
            ConcurrentChain chain,
            IChainState chainState,
            IConnectionManager connectionManager,
            IChainRepository chainRepository,
            IFinalizedBlockHeight finalizedBlockHeight,
            IDateTimeProvider dateTimeProvider,
            IAsyncLoopFactory asyncLoopFactory,
            ITimeSyncBehaviorState timeSyncBehaviorState,
            DBreezeSerializer dbreezeSerializer,
            ILoggerFactory loggerFactory,
            IInitialBlockDownloadState initialBlockDownloadState,
            IPeerBanning peerBanning,
            IPeerAddressManager peerAddressManager,
            BestChainSelector bestChainSelector)
        {
            this.chainState           = Guard.NotNull(chainState, nameof(chainState));
            this.chainRepository      = Guard.NotNull(chainRepository, nameof(chainRepository));
            this.finalizedBlockHeight = Guard.NotNull(finalizedBlockHeight, nameof(finalizedBlockHeight));
            this.nodeSettings         = Guard.NotNull(nodeSettings, nameof(nodeSettings));
            this.dataFolder           = Guard.NotNull(dataFolder, nameof(dataFolder));
            this.nodeLifetime         = Guard.NotNull(nodeLifetime, nameof(nodeLifetime));
            this.chain             = Guard.NotNull(chain, nameof(chain));
            this.connectionManager = Guard.NotNull(connectionManager, nameof(connectionManager));
            this.bestChainSelector = bestChainSelector;
            this.peerBanning       = Guard.NotNull(peerBanning, nameof(peerBanning));

            this.peerAddressManager = Guard.NotNull(peerAddressManager, nameof(peerAddressManager));
            this.peerAddressManager.PeerFilePath = this.dataFolder;

            this.initialBlockDownloadState = initialBlockDownloadState;
            this.dateTimeProvider          = dateTimeProvider;
            this.asyncLoopFactory          = asyncLoopFactory;
            this.timeSyncBehaviorState     = timeSyncBehaviorState;
            this.loggerFactory             = loggerFactory;
            this.dbreezeSerializer         = dbreezeSerializer;
            this.logger = loggerFactory.CreateLogger(this.GetType().FullName);
            this.disposableResources = new List <IDisposable>();
        }
예제 #10
0
 public StraxMinting(
     IBlockProvider blockProvider,
     IConsensusManager consensusManager,
     ChainIndexer chainIndexer,
     Network network,
     IDateTimeProvider dateTimeProvider,
     IInitialBlockDownloadState initialBlockDownloadState,
     INodeLifetime nodeLifetime,
     ICoinView coinView,
     IStakeChain stakeChain,
     IStakeValidator stakeValidator,
     MempoolSchedulerLock mempoolLock,
     ITxMempool mempool,
     IWalletManager walletManager,
     IAsyncProvider asyncProvider,
     ITimeSyncBehaviorState timeSyncBehaviorState,
     ILoggerFactory loggerFactory,
     MinerSettings minerSettings) : base(blockProvider, consensusManager, chainIndexer, network, dateTimeProvider,
                                         initialBlockDownloadState, nodeLifetime, coinView, stakeChain, stakeValidator, mempoolLock, mempool,
                                         walletManager, asyncProvider, timeSyncBehaviorState, loggerFactory, minerSettings)
 {
 }