Exemplo n.º 1
0
 public ProofOfWorkCalculator(ILogger <ProofOfWorkCalculator> logger,
                              IConsensusParameters consensusParameters,
                              IBlockHeaderRepository blockHeaderRepository)
 {
     _logger = logger;
     _consensusParameters   = consensusParameters;
     _blockHeaderRepository = blockHeaderRepository;
 }
Exemplo n.º 2
0
        public ProofOfWorkCalculatorTests(ITestOutputHelper output)
        {
            _logger = new XunitLogger <ProofOfWorkCalculator>(output); // or new NullLogger<ProofOfWorkCalculator>

            var headerHashCalculator = new BlockHeaderHashCalculator(new BlockHeaderSerializer(new UInt256Serializer()));

            _consensusParameters = new BitcoinMainDefinition(headerHashCalculator).ConfigureConsensus();
        }
Exemplo n.º 3
0
        public HeadersTree(ILogger <HeadersTree> logger, IConsensusParameters consensusParameters)
        {
            _logger = logger;
            _consensusParameters = consensusParameters ?? throw new ArgumentNullException(nameof(consensusParameters));

            Genesis = HeaderNode.GenerateGenesis(_consensusParameters.GenesisHeader);

            ResetToGenesis();
        }
Exemplo n.º 4
0
        public ChainState(ILogger <ChainState> logger,
                          IHeadersTree headersTree,
                          ICoinsView coinsView,
                          IBlockHeaderRepository blockHeaderRepository,
                          IConsensusParameters consensusParameters)
        {
            this.logger            = logger;
            HeadersTree            = headersTree;
            this.coinsView         = coinsView;
            _blockHeaderRepository = blockHeaderRepository;
            _consensusParameters   = consensusParameters;
            ChainTip   = headersTree.Genesis;
            BestHeader = headersTree.Genesis;

            _blockHeaderRepository.TryAdd(consensusParameters.GenesisHeader);
        }
Exemplo n.º 5
0
        public BlockValidator(ILogger <BlockValidator> logger,
                              IConsensusParameters consensusParameters,
                              IChainState chainState,
                              IValidationRuleSet <IBlockValidationRule> blockValidationRules,
                              IBlockValidationContextFactory blockValidationContextFactory,
                              IPeriodicWork validationLoop,
                              IEventBus eventBus)
        {
            _logger                        = logger;
            _validationLoop                = validationLoop;
            _chainState                    = chainState;
            _blockValidationRules          = blockValidationRules;
            _blockValidationContextFactory = blockValidationContextFactory;
            _eventBus                      = eventBus;

            _blocksToValidate = Channel.CreateUnbounded <BlockToValidate>(new UnboundedChannelOptions {
                SingleReader = true, SingleWriter = false
            });
            _genesisHash = consensusParameters.GenesisHeader.Hash !;

            _validationLoop.Configure(false, this);
        }
Exemplo n.º 6
0
        public SynchronizationProcessor(ILogger <SynchronizationProcessor> logger,
                                        IEventBus eventBus,
                                        IDateTimeProvider dateTimeProvider,
                                        IPeerBehaviorManager peerBehaviorManager,
                                        IConsensusParameters consensusParameters,
                                        IInitialBlockDownloadTracker ibdState,
                                        IBlockHeaderHashCalculator blockHeaderHashCalculator,
                                        ITransactionHashCalculator transactionHashCalculator,
                                        IBlockFetcherManager blockFetcherManager,
                                        ILocalServiceProvider localServiceProvider,
                                        IChainState chainState,
                                        IHeaderValidator headerValidator,
                                        IBlockValidator blockValidator,
                                        IPeriodicWork headerSyncLoop,
                                        IOptions <BitcoinSettings> options)
            : base(logger, eventBus, peerBehaviorManager, isHandshakeAware: true, receiveMessagesOnlyIfHandshaked: true)
        {
            _dateTimeProvider          = dateTimeProvider;
            _consensusParameters       = consensusParameters;
            _ibdState                  = ibdState;
            _blockHeaderHashCalculator = blockHeaderHashCalculator;
            _transactionHashCalculator = transactionHashCalculator;
            _blockFetcherManager       = blockFetcherManager;
            _localServiceProvider      = localServiceProvider;
            _chainState                = chainState;
            _headerValidator           = headerValidator;
            _blockValidator            = blockValidator;
            _headerSyncLoop            = headerSyncLoop;
            _options = options.Value;


            _minimumChainWork = _options.MinimumChainWork ?? _consensusParameters.MinimumChainWork;
            if (_minimumChainWork < _consensusParameters.MinimumChainWork)
            {
                this.logger.LogWarning($"{nameof(_minimumChainWork)} set below default value of {_consensusParameters.MinimumChainWork}");
            }

            headerSyncLoop.Configure(stopOnException: false, this);
        }
        public InitialBlockDownloadTracker(ILogger <InitialBlockDownloadTracker> logger,
                                           IEventBus eventBus,
                                           IChainState chainState,
                                           IConsensusParameters consensusParameters,
                                           IOptions <BitcoinSettings> options,
                                           IDateTimeProvider dateTimeProvider)
        {
            _logger              = logger;
            _eventBus            = eventBus;
            _chainState          = chainState;
            _consensusParameters = consensusParameters;
            _dateTimeProvider    = dateTimeProvider;

            //TODO register to tip advance
            //this.subscriptionManager.RegisterSubscriptions(this.eventBus.Subscribe())

            _minimumChainWork = options.Value.MinimumChainWork ?? _consensusParameters.MinimumChainWork;
            if (_minimumChainWork < _consensusParameters.MinimumChainWork)
            {
                _logger.LogWarning($"{nameof(_minimumChainWork)} set below default value of {_consensusParameters.MinimumChainWork}");
            }

            _maxTipAge = options.Value.MaxTipAge;
        }
Exemplo n.º 8
0
 protected void Initialize()
 {
     NetworkDefinition = ConfigureNetwork();
     Consensus         = ConfigureConsensus();
 }
Exemplo n.º 9
0
 public CheckSize(ILogger <CheckSize> logger, IProtocolTypeSerializer <Protocol.Types.Block> blockSerializer, IConsensusParameters consensusParameters)
 {
     _logger              = logger;
     _blockSerializer     = blockSerializer;
     _consensusParameters = consensusParameters;
 }
Exemplo n.º 10
0
 public CheckTransactions(ILogger <CheckTransactions> logger, IProtocolTypeSerializer <Transaction> transactionSerializer, IConsensusParameters consensusParameters)
 {
     _logger = logger;
     _transactionSerializer = transactionSerializer;
     _consensusParameters   = consensusParameters;
 }