示例#1
0
        public PacketHandlingFlow(int iteration, ICoreVerifiersBulkFactory coreVerifiersBulkFactory,
                                  IPacketVerifiersRepository packetTypeHandlersFactory, IBlockParsersRepositoriesRepository blockParsersFactoriesRepository,
                                  IBlocksHandlersRegistry blocksProcessorFactory, IPerformanceCountersRepository performanceCountersRepository, ILoggerService loggerService)
        {
            _coreVerifiers = coreVerifiersBulkFactory.Create();
            _log           = loggerService.GetLogger($"{nameof(PacketHandlingFlow)}#{iteration}");
            _blockParsersFactoriesRepository    = blockParsersFactoriesRepository;
            _chainTypeValidationHandlersFactory = packetTypeHandlersFactory;
            _blocksHandlersRegistry             = blocksProcessorFactory;

            _decodeBlock = new TransformBlock <byte[], byte[]>((Func <byte[], byte[]>)DecodeMessage, new ExecutionDataflowBlockOptions()
            {
                MaxDegreeOfParallelism = 1, BoundedCapacity = 1000000
            });
            _parseBlock = new TransformBlock <byte[], BlockBase>((Func <byte[], BlockBase>)ParseMessagePacket, new ExecutionDataflowBlockOptions()
            {
                MaxDegreeOfParallelism = 1, BoundedCapacity = 1000000
            });
            _processBlock = new ActionBlock <BlockBase>((Action <BlockBase>)DispatchBlock, new ExecutionDataflowBlockOptions()
            {
                MaxDegreeOfParallelism = 1, BoundedCapacity = 1000000
            });
            _endToEndCountersService = performanceCountersRepository.GetInstance <EndToEndCountersService>();

            _decodeBlock.LinkTo(_parseBlock);
            _parseBlock.LinkTo(_processBlock);
        }
示例#2
0
        public TestBase()
        {
            _transactionHashKeyProvider         = Substitute.For <IIdentityKeyProvider>();
            _identityKeyProvider                = Substitute.For <IIdentityKeyProvider>();
            _identityKeyProvidersRegistry       = Substitute.For <IIdentityKeyProvidersRegistry>();
            _hashCalculationRepository          = Substitute.For <IHashCalculationsRepository>();
            _blockParsersRepositoriesRepository = Substitute.For <IBlockParsersRepositoriesRepository>();
            _blockParsersRepository             = Substitute.For <IBlockParsersRepository>();
            _cryptoService = Substitute.For <ICryptoService>();

            _identityKeyProvidersRegistry.GetInstance().Returns(_identityKeyProvider);
            _identityKeyProvidersRegistry.GetTransactionsIdenityKeyProvider().Returns(_transactionHashKeyProvider);
            _identityKeyProvider.GetKey(null).ReturnsForAnyArgs(c => new Key32()
            {
                Value = c.Arg <Memory <byte> >()
            });
            _transactionHashKeyProvider.GetKey(null).ReturnsForAnyArgs(c => new Key16()
            {
                Value = c.Arg <Memory <byte> >()
            });
            _hashCalculationRepository.Create(HashType.MurMur).Returns(new MurMurHashCalculation());
            _blockParsersRepositoriesRepository.GetBlockParsersRepository(PacketType.Registry).ReturnsForAnyArgs(_blockParsersRepository);

            _privateKey = CryptoHelper.GetRandomSeed();
            Ed25519.KeyPairFromSeed(out _publicKey, out _expandedPrivateKey, _privateKey);

            _cryptoService.Sign(null).ReturnsForAnyArgs(c => Ed25519.Sign(c.Arg <byte[]>(), _expandedPrivateKey));
            _cryptoService.PublicKey.Returns(new Key32()
            {
                Value = _publicKey
            });


            ServiceLocator.Current.GetInstance <IUnityContainer>().RegisterInstance(_blockParsersRepositoriesRepository);
        }
示例#3
0
 public VoteViewModel(IDataAccessService dataAccessService, IStatesRepository statesRepository,
                      IBlockParsersRepositoriesRepository blockParsersRepositoriesRepository, IWalletManager walletManager)
 {
     _dataAccessService = dataAccessService;
     _blockParsersRepositoriesRepository = blockParsersRepositoriesRepository;
     _walletManager = walletManager;
     _clientState   = statesRepository.GetInstance <IClientState>();
 }
示例#4
0
 public ResultsViewModel(IDataAccessService dataAccessService, IWalletManager walletManager,
                         IBlockParsersRepositoriesRepository blockParsersRepositoriesRepository, IStatesRepository statesRepository)
 {
     _dataAccessService = dataAccessService;
     _walletManager     = walletManager;
     _blockParsersRepositoriesRepository = blockParsersRepositoriesRepository;
     _clientState = statesRepository.GetInstance <IClientState>();
     Utxos        = new ObservableCollection <UtxoIncomingBlockDesc>();
 }
示例#5
0
        public ServiceProviderUpdater(ulong accountId, IStateClientCryptoService clientCryptoService, IAssetsService assetsService, IDataAccessService dataAccessService, IIdentityAttributesService identityAttributesService, IBlockParsersRepositoriesRepository blockParsersRepositoriesRepository, IGatewayService gatewayService, IStateTransactionsService transactionsService, IHubContext <IdentitiesHub> idenitiesHubContext, IAppConfig appConfig, ILoggerService loggerService)
        {
            _accountId                          = accountId;
            _clientCryptoService                = clientCryptoService;
            _assetsService                      = assetsService;
            _dataAccessService                  = dataAccessService;
            _identityAttributesService          = identityAttributesService;
            _blockParsersRepositoriesRepository = blockParsersRepositoriesRepository;
            _gatewayService                     = gatewayService;
            _transactionsService                = transactionsService;
            _idenitiesHubContext                = idenitiesHubContext;
            _appConfig                          = appConfig;
            _logger = loggerService.GetLogger(nameof(ServiceProviderUpdater));

            PipeIn = new ActionBlock <PacketBase>(p =>
            {
                if (p is DocumentSignRecord documentSignRecord)
                {
                    ProcessDocumentSignRecord(documentSignRecord);
                }

                if (p is DocumentRecord documentRecord)
                {
                    ProcessDocumentRecord(documentRecord);
                }

                if (p is DocumentSignRequest documentSignRequest)
                {
                    ProcessDocumentSignRequest(documentSignRequest);
                }

                if (p is EmployeeRegistrationRequest employeeRegistrationRequest)
                {
                    ProcessEmployeeRegistrationRequest(employeeRegistrationRequest);
                }

                if (p is OnboardingRequest packet)
                {
                    ProcessOnboarding(packet);
                }

                if (p is TransitionAuthenticationProofs transitionAuthentication)
                {
                    ProcessAuthentication(transitionAuthentication);
                }

                if (p is TransitionCompromisedProofs compromisedProofs)
                {
                    ProcessCompromisedProofs(compromisedProofs);
                }

                if (p is TransferAsset transferAsset)
                {
                    ProcessTransferAsset(transferAsset);
                }
            });
        }
示例#6
0
 public PollViewModel(IWalletManager walletManager, IStatesRepository statesRepository, IDataAccessService dataAccessService, IBlockParsersRepositoriesRepository blockParsersRepositoriesRepository)
 {
     InitPoll();
     Polls              = new ObservableCollection <IPoll>();
     _walletManager     = walletManager;
     _dataAccessService = dataAccessService;
     _blockParsersRepositoriesRepository = blockParsersRepositoriesRepository;
     _clientState     = statesRepository.GetInstance <IClientState>();
     ResultsViewModel = new ResultsViewModel(dataAccessService, walletManager, blockParsersRepositoriesRepository, statesRepository);
 }
示例#7
0
 public ExecutionContextManager(IHubContext <IdentitiesHub> identitiesHubContext, IAssetsService assetsService, IDataAccessService dataAccessService, IIdentityAttributesService identityAttributesService, IBlockParsersRepositoriesRepository blockParsersRepositoriesRepository, IAppConfig appConfig, IGatewayService gatewayService, ITrackingService trackingService, ILoggerService loggerService, IRelationsProofsValidationService relationsProofsValidationService)
 {
     _accountIdCancellationList          = new Dictionary <ulong, ICollection <IDisposable> >();
     _identitiesHubContext               = identitiesHubContext;
     _assetsService                      = assetsService;
     _dataAccessService                  = dataAccessService;
     _identityAttributesService          = identityAttributesService;
     _blockParsersRepositoriesRepository = blockParsersRepositoriesRepository;
     _appConfig       = appConfig;
     _gatewayService  = gatewayService;
     _trackingService = trackingService;
     _loggerService   = loggerService;
     _relationsProofsValidationService = relationsProofsValidationService;
 }
示例#8
0
        public PacketsHandler(IPacketVerifiersRepository packetTypeHandlersFactory, IBlockParsersRepositoriesRepository blockParsersFactoriesRepository, IBlocksHandlersRegistry blocksProcessorFactory, ICoreVerifiersBulkFactory coreVerifiersBulkFactory, IPerformanceCountersRepository performanceCountersRepository, ILoggerService loggerService)
        {
            _log                     = loggerService.GetLogger(GetType().Name);
            _messagePackets          = new BlockingCollection <byte[]>();
            _endToEndCountersService = performanceCountersRepository.GetInstance <EndToEndCountersService>();

            _maxDegreeOfParallelism = 4;

            _handlingFlows = new PacketHandlingFlow[_maxDegreeOfParallelism];

            for (int i = 0; i < _maxDegreeOfParallelism; i++)
            {
                _handlingFlows[i] = new PacketHandlingFlow(i, coreVerifiersBulkFactory, packetTypeHandlersFactory, blockParsersFactoriesRepository, blocksProcessorFactory, performanceCountersRepository, loggerService);
            }
        }
示例#9
0
 public WalletManager(INetworkAdapter networkAdapter, IBlockCreator blockCreator, IDataAccessService dataAccessService, IHashCalculationsRepository hashCalculationsRepository,
                      IIdentityKeyProvidersRegistry identityKeyProvidersRegistry, IStatesRepository statesRepository, ISerializersFactory signatureSupportSerializersFactory,
                      IBlockParsersRepositoriesRepository blockParsersRepositoriesRepository)
 {
     _networkAdapter    = networkAdapter;
     _blockCreator      = blockCreator;
     _dataAccessService = dataAccessService;
     _signatureSupportSerializersFactory = signatureSupportSerializersFactory;
     _blockParsersRepositoriesRepository = blockParsersRepositoriesRepository;
     _heightsDictionary      = new Dictionary <byte[], ulong>();
     _hashCalculation        = hashCalculationsRepository.Create(Globals.DEFAULT_HASH);
     _proofOfWorkCalculation = hashCalculationsRepository.Create(Globals.POW_TYPE);
     _identityKeyProvider    = identityKeyProvidersRegistry.GetInstance();
     _clientState            = statesRepository.GetInstance <IClientState>();
 }
示例#10
0
 public NetworkSynchronizer(IBlockCreator blockCreator, IClientCommunicationServiceRepository clientCommunicationServiceRepository, ICryptoService cryptoService,
                            IDataAccessService dataAccessService, IHashCalculationsRepository hashCalculationsRepository, IConfigurationService configurationService,
                            IBlockParsersRepositoriesRepository blockParsersRepositoriesRepository, IIdentityKeyProvidersRegistry identityKeyProvidersRegistry, INodesResolutionService nodesResolutionService,
                            IStatesRepository statesRepository, ILoggerService loggerService)
 {
     _cryptoService                      = cryptoService;
     _dataAccessService                  = dataAccessService;
     _blockCreator                       = blockCreator;
     _communicationService               = clientCommunicationServiceRepository.GetInstance("TcpClientCommunicationService");
     _defaultHashCalculation             = hashCalculationsRepository.Create(Globals.DEFAULT_HASH);
     _synchronizerConfiguration          = configurationService.Get <ISynchronizerConfiguration>();
     _communicationConfiguration         = (CommunicationConfigurationBase)configurationService["generalTcpCommunication"];
     _blockParsersRepositoriesRepository = blockParsersRepositoriesRepository;
     _nodesResolutionService             = nodesResolutionService;
     _identityKeyProvider                = identityKeyProvidersRegistry.GetInstance();
     _clientState = statesRepository.GetInstance <IClientState>();
     _logger      = loggerService.GetLogger(nameof(NetworkSynchronizer));
 }
示例#11
0
        public TestBase()
        {
            _transactionHashKeyProvider         = Substitute.For <IIdentityKeyProvider>();
            _identityKeyProvider                = Substitute.For <IIdentityKeyProvider>();
            _identityKeyProvidersRegistry       = Substitute.For <IIdentityKeyProvidersRegistry>();
            _hashCalculationRepository          = Substitute.For <IHashCalculationsRepository>();
            _blockParsersRepositoriesRepository = Substitute.For <IBlockParsersRepositoriesRepository>();
            _blockParsersRepository             = Substitute.For <IBlockParsersRepository>();
            _signingService = Substitute.For <ISigningService>();

            _identityKeyProvidersRegistry.GetInstance().Returns(_identityKeyProvider);
            _identityKeyProvidersRegistry.GetTransactionsIdenityKeyProvider().Returns(_transactionHashKeyProvider);
            _identityKeyProvider.GetKey(null).ReturnsForAnyArgs(c => new Key32()
            {
                Value = c.Arg <Memory <byte> >()
            });
            _transactionHashKeyProvider.GetKey(null).ReturnsForAnyArgs(c => new Key16()
            {
                Value = c.Arg <Memory <byte> >()
            });
            _hashCalculationRepository.Create(HashType.MurMur).Returns(new MurMurHashCalculation());
            _blockParsersRepositoriesRepository.GetBlockParsersRepository(PacketType.Registry).ReturnsForAnyArgs(_blockParsersRepository);

            _privateKey     = ConfidentialAssetsHelper.GetRandomSeed();
            _privateViewKey = ConfidentialAssetsHelper.GetRandomSeed();
            Ed25519.KeyPairFromSeed(out _publicKey, out _expandedPrivateKey, _privateKey);

            _signingService.WhenForAnyArgs(s => s.Sign(null, null)).Do(c =>
            {
                ((SignedPacketBase)c.ArgAt <IPacket>(0)).Signer    = new Key32(_publicKey);
                ((SignedPacketBase)c.ArgAt <IPacket>(0)).Signature = Ed25519.Sign(((SignedPacketBase)c.ArgAt <IPacket>(0)).BodyBytes.ToArray(), _expandedPrivateKey);
            });
            _signingService.PublicKeys.Returns(new IKey[] { new Key32()
                                                            {
                                                                Value = _publicKey
                                                            } });

            _utxoSigningService = new UtxoSigningService(_identityKeyProvidersRegistry);
            _utxoSigningService.Initialize(_privateKey, _privateViewKey);


            ServiceLocator.Current.GetInstance <IUnityContainer>().RegisterInstance(_blockParsersRepositoriesRepository);
        }
示例#12
0
 public ExecutionContextManager(IServiceProvider serviceProvider,
                                IHubContext <IdentitiesHub> identitiesHubContext,
                                IAssetsService assetsService,
                                IDataAccessService dataAccessService,
                                IIdentityAttributesService identityAttributesService,
                                IWitnessPackagesProviderRepository witnessPackagesProviderRepository,
                                IBlockParsersRepositoriesRepository blockParsersRepositoriesRepository,
                                IConfigurationService configurationService,
                                IGatewayService gatewayService,
                                ITrackingService trackingService,
                                ILoggerService loggerService,
                                ISpValidationsService spValidationsService,
                                IRelationsProofsValidationService relationsProofsValidationService,
                                ISchemeResolverService schemeResolverService,
                                IUniversalProofsPool universalProofsPool,
                                IExternalUpdatersRepository externalUpdatersRepository,
                                IConsentManagementService consentManagementService)
 {
     _accountIdCancellationList          = new Dictionary <long, ICollection <IDisposable> >();
     _serviceProvider                    = serviceProvider;
     _identitiesHubContext               = identitiesHubContext;
     _assetsService                      = assetsService;
     _dataAccessService                  = dataAccessService;
     _identityAttributesService          = identityAttributesService;
     _witnessPackagesProviderRepository  = witnessPackagesProviderRepository;
     _blockParsersRepositoriesRepository = blockParsersRepositoriesRepository;
     _gatewayService                     = gatewayService;
     _trackingService                    = trackingService;
     _loggerService                      = loggerService;
     _spValidationsService               = spValidationsService;
     _logger = loggerService.GetLogger(nameof(ExecutionContextManager));
     _relationsProofsValidationService = relationsProofsValidationService;
     _schemeResolverService            = schemeResolverService;
     _universalProofsPool        = universalProofsPool;
     _externalUpdatersRepository = externalUpdatersRepository;
     _consentManagementService   = consentManagementService;
     _restApiConfiguration       = configurationService.Get <IRestApiConfiguration>();
 }
示例#13
0
 public UtxoConfidentialMapperBase(IBlockParsersRepositoriesRepository blockParsersFactoriesRepository)
 {
     _blockParsersRepository = blockParsersFactoriesRepository.GetBlockParsersRepository(PacketType.UtxoConfidential);
 }
示例#14
0
 public TransactionalMapperBase(IBlockParsersRepositoriesRepository blockParsersFactoriesRepository)
 {
     _blockParsersRepository = blockParsersFactoriesRepository.GetBlockParsersRepository(PacketType.Transactional);
 }
示例#15
0
        public ServiceProviderUpdater(long accountId,
                                      IStateClientCryptoService clientCryptoService,
                                      IAssetsService assetsService,
                                      ISchemeResolverService schemeResolverService,
                                      IDataAccessService dataAccessService,
                                      IIdentityAttributesService identityAttributesService,
                                      IBlockParsersRepositoriesRepository blockParsersRepositoriesRepository,
                                      IGatewayService gatewayService,
                                      IStateTransactionsService transactionsService,
                                      ISpValidationsService spValidationsService,
                                      IHubContext <IdentitiesHub> idenitiesHubContext,
                                      ILoggerService loggerService,
                                      IConsentManagementService consentManagementService,
                                      IUniversalProofsPool universalProofsPool,
                                      CancellationToken cancellationToken)
        {
            _accountId                          = accountId;
            _clientCryptoService                = clientCryptoService;
            _assetsService                      = assetsService;
            _schemeResolverService              = schemeResolverService;
            _dataAccessService                  = dataAccessService;
            _identityAttributesService          = identityAttributesService;
            _blockParsersRepositoriesRepository = blockParsersRepositoriesRepository;
            _gatewayService                     = gatewayService;
            _transactionsService                = transactionsService;
            _spValidationsService               = spValidationsService;
            _idenitiesHubContext                = idenitiesHubContext;
            _consentManagementService           = consentManagementService;
            _universalProofsPool                = universalProofsPool;
            _cancellationToken                  = cancellationToken;
            _logger = loggerService.GetLogger(nameof(ServiceProviderUpdater));

            _cancellationToken.Register(() =>
            {
                PipeIn?.Complete();
                PipInNotifications?.Complete();
            });

            PipeIn = new ActionBlock <PacketBase>(async p =>
            {
                if (p == null)
                {
                    _logger.Error($"[{_accountId}]: Obtained NULL packet");
                    return;
                }

                _logger.Info($"[{_accountId}]: Obtained {p.GetType().Name} packet");

                try
                {
                    if (p is DocumentSignRecord documentSignRecord)
                    {
                        ProcessDocumentSignRecord(documentSignRecord);
                    }

                    if (p is DocumentRecord documentRecord)
                    {
                        ProcessDocumentRecord(documentRecord);
                    }

                    if (p is DocumentSignRequest documentSignRequest)
                    {
                        ProcessDocumentSignRequest(documentSignRequest);
                    }

                    if (p is EmployeeRegistrationRequest employeeRegistrationRequest)
                    {
                        ProcessEmployeeRegistrationRequest(employeeRegistrationRequest);
                    }

                    if (p is IdentityProofs packet)
                    {
                        await ProcessIdentityProofs(packet).ConfigureAwait(false);
                    }

                    if (p is TransitionCompromisedProofs compromisedProofs)
                    {
                        ProcessCompromisedProofs(new Key32(compromisedProofs.CompromisedKeyImage));
                    }

                    if (p is TransferAsset transferAsset)
                    {
                        ProcessTransferAsset(transferAsset);
                    }

                    if (p is UniversalTransport universalTransport)
                    {
                        await ProcessUniversalTransport(universalTransport).ConfigureAwait(false);
                    }
                }
                catch (Exception ex)
                {
                    _logger.Error($"[{_accountId}]: Failed to process packet {p.GetType().Name}", ex);
                }
            });
        }
示例#16
0
 public UpdaterService(IBlockParsersRepositoriesRepository blockParsersRepositoriesRepository)
 {
     _observers = new List <IObserver <BulkUpdate> >();
     _blockParsersRepositoriesRepository = blockParsersRepositoriesRepository;
 }
示例#17
0
 public SynchronizationBlockToBlockBaseMapper(IBlockParsersRepositoriesRepository blockParsersFactoriesRepository)
 {
     _blockParsersRepository = blockParsersFactoriesRepository.GetBlockParsersRepository(PacketType.Synchronization);
 }
示例#18
0
 public TransactionsRegistryBlockToBlockBaseMapper(IBlockParsersRepositoriesRepository blockParsersFactoriesRepository)
 {
     _blockParsersRepository = blockParsersFactoriesRepository.GetBlockParsersRepository(PacketType.Registry);
 }
示例#19
0
 public UtxoConfidentialBlockToBaseBlockMapper(IBlockParsersRepositoriesRepository blockParsersFactoriesRepository)
     : base(blockParsersFactoriesRepository)
 {
 }
示例#20
0
 public TransactionalBlockToBaseBlockMapper(IBlockParsersRepositoriesRepository blockParsersFactoriesRepository)
     : base(blockParsersFactoriesRepository)
 {
 }