Exemple #1
0
        public CatalystNodePoa(IKeySigner keySigner,
                               IPeerService peer,
                               IConsensus consensus,
                               IDfsService dfsService,
                               ILedger ledger,
                               ILogger logger,
                               IPeerClient peerClient,
                               IPeerSettings peerSettings,
                               IMempool <PublicEntryDao> memPool,
                               ISynchroniser synchronizer,
                               IPeerRepository peerRepository,
                               IContract contract = null)
        {
            Guard.Argument(peerRepository, nameof(peerRepository)).NotNull();

            _peer           = peer;
            _peerClient     = peerClient;
            _peerSettings   = peerSettings;
            Consensus       = consensus;
            _dfsService     = dfsService;
            _ledger         = ledger;
            _keySigner      = keySigner;
            _logger         = logger;
            _memPool        = memPool;
            _contract       = contract;
            _synchronizer   = synchronizer;
            _peerRepository = peerRepository;

            var privateKey = keySigner.KeyStore.KeyStoreDecrypt(KeyRegistryTypes.DefaultKey);

            _publicKey = keySigner.CryptoContext.GetPublicKeyFromPrivateKey(privateKey);
        }
Exemple #2
0
        private async Task Setup()
        {
            _peerChallenger = ContainerProvider.Container.Resolve <IPeerChallenger>();

            var eventLoopGroupFactoryConfiguration = new EventLoopGroupFactoryConfiguration
            {
                TcpClientHandlerWorkerThreads = 2,
                TcpServerHandlerWorkerThreads = 3,
                UdpServerHandlerWorkerThreads = 4,
                UdpClientHandlerWorkerThreads = 5
            };

            var keySigner = Substitute.For <IKeySigner>();

            keySigner.Verify(Arg.Any <ISignature>(), Arg.Any <byte[]>(), default).ReturnsForAnyArgs(true);
            var signature = Substitute.For <ISignature>();

            keySigner.Sign(Arg.Any <byte[]>(), default).ReturnsForAnyArgs(signature);

            _peerService = new PeerService(new UdpServerEventLoopGroupFactory(eventLoopGroupFactoryConfiguration),
                                           new PeerServerChannelFactory(ContainerProvider.Container.Resolve <IPeerMessageCorrelationManager>(),
                                                                        ContainerProvider.Container.Resolve <IBroadcastManager>(),
                                                                        keySigner,
                                                                        ContainerProvider.Container.Resolve <IPeerIdValidator>(),
                                                                        ContainerProvider.Container.Resolve <IPeerSettings>()),
                                           new DiscoveryHelper.DevDiscover(),
                                           ContainerProvider.Container.Resolve <IEnumerable <IP2PMessageObserver> >(),
                                           _peerSettings,
                                           ContainerProvider.Container.Resolve <ILogger>(),
                                           ContainerProvider.Container.Resolve <IHealthChecker>());

            await _peerService.StartAsync();
        }
Exemple #3
0
        public CatalystNodePoa(IKeySigner keySigner,
                               IPeerService peer,
                               IConsensus consensus,
                               IDfs dfs,
                               ILedger ledger,
                               ILogger logger,
                               IPeerClient peerClient,
                               IPeerSettings peerSettings,
                               IMempool <PublicEntryDao> memPool,
                               IContract contract = null)
        {
            _peer         = peer;
            _peerClient   = peerClient;
            _peerSettings = peerSettings;
            Consensus     = consensus;
            _dfs          = dfs;
            _ledger       = ledger;
            _keySigner    = keySigner;
            _logger       = logger;
            _memPool      = memPool;
            _contract     = contract;

            var privateKey = keySigner.KeyStore.KeyStoreDecrypt(KeyRegistryTypes.DefaultKey);

            _publicKey = keySigner.CryptoContext.GetPublicKeyFromPrivateKey(privateKey);
        }
Exemple #4
0
 public AdminController(
     IWebHostEnvironment environment,
     ILogger <AdminController> logger,
     SignInManager <UserProfileModel> signInManager,
     UserManager <UserProfileModel> userManager,
     IPostService posts,
     IUserProfileService localProfiles,
     IPublicProfileService publicProfiles,
     IDebugService debugService,
     RoleManager <UserGroupModel> roleManager,
     IReactionService reactions,
     ITagService tags,
     INotificationService notifications,
     IPeerService peers,
     IAuthService auth,
     ISettingsService settings,
     IInvitationService invitationService,
     IActivityStreamRepository activityStreams
     ) :
     base(environment, signInManager, userManager, posts, localProfiles, publicProfiles, reactions, tags, notifications, peers, auth, settings, activityStreams)
 {
     _logger            = logger;
     _debugService      = debugService;
     _roleManager       = roleManager;
     _invitationService = invitationService;
 }
        private async Task Setup()
        {
            _peerChallengeRequest = ContainerProvider.Container.Resolve <IPeerChallengeRequest>();

            var eventLoopGroupFactoryConfiguration = new EventLoopGroupFactoryConfiguration
            {
                TcpClientHandlerWorkerThreads = 2,
                TcpServerHandlerWorkerThreads = 3,
                UdpServerHandlerWorkerThreads = 4,
                UdpClientHandlerWorkerThreads = 5
            };

            var keySigner = ContainerProvider.Container.Resolve <IKeySigner>(); // @@

            _peerService = new PeerService(
                new UdpServerEventLoopGroupFactory(eventLoopGroupFactoryConfiguration),
                new PeerServerChannelFactory(ContainerProvider.Container.Resolve <IPeerMessageCorrelationManager>(),
                                             ContainerProvider.Container.Resolve <IBroadcastManager>(),
                                             keySigner,
                                             ContainerProvider.Container.Resolve <IPeerIdValidator>(),
                                             ContainerProvider.Container.Resolve <IPeerSettings>()),
                new DiscoveryHelper.DevDiscover(),
                ContainerProvider.Container.Resolve <IEnumerable <IP2PMessageObserver> >(),
                _peerSettings,
                ContainerProvider.Container.Resolve <ILogger>(),
                ContainerProvider.Container.Resolve <IHealthChecker>());

            await _peerService.StartAsync();
        }
 public ChannelMessageLoggingService(IServiceScopeFactory scopeFactory, IPeerService peerService,
                                     IChannelService channelService, IConfiguration configuration)
 {
     _localPersistenceContext = scopeFactory.CreateScopedService <LocalPersistenceContext>();
     _peerService             = peerService;
     _channelService          = channelService;
     _persist = configuration.GetConfiguration <ChannelConfiguration>().PersistChannelLogs;
 }
Exemple #7
0
 public SystemController(IAuthService auth, SimpleDbContext db, IPeerService peers, IApiDescriptionGroupCollectionProvider apiExplorer, IActivityStreamRepository activityStreams)
 {
     _auth            = auth;
     _db              = db;
     _peers           = peers;
     _apiExplorer     = apiExplorer;
     _activityStreams = activityStreams;
 }
Exemple #8
0
 //todo add unit tests
 public PeerSyncManagerUnitTests()
 {
     _hashProvider             = new HashProvider(HashingAlgorithm.GetAlgorithmMetadata("keccak-256"));
     _peerService              = Substitute.For <IPeerService>();
     _peerClient               = Substitute.For <IPeerClient>();
     _peerRepository           = new PeerRepository(new InMemoryRepository <Peer, string>());
     _deltaHeightReplaySubject = new ReplaySubject <IObserverDto <ProtocolMessage> >(1);
     _peerService.MessageStream.Returns(_deltaHeightReplaySubject.AsObservable());
 }
        public void Init()
        {
            Setup(TestContext.CurrentContext);

            var logger = Substitute.For <ILogger>();

            var keyRegistry = TestKeyRegistry.MockKeyRegistry();

            ContainerProvider.ContainerBuilder.RegisterInstance(keyRegistry).As <IKeyRegistry>();

            ContainerProvider.ContainerBuilder.RegisterModule(new KeystoreModule());
            ContainerProvider.ContainerBuilder.RegisterModule(new KeySignerModule());
            ContainerProvider.ContainerBuilder.RegisterModule(new HashingModule());
            ContainerProvider.ContainerBuilder.RegisterModule(new BulletProofsModule());

            _peerSettings = new PeerSettings(ContainerProvider.ConfigurationRoot);

            var peerSettings =
                PeerIdHelper.GetPeerId("sender", _peerSettings.BindAddress, _peerSettings.Port)
                .ToSubstitutedPeerSettings();

            ContainerProvider.ContainerBuilder.Register(c =>
            {
                var peerClient = c.Resolve <IPeerClient>();
                peerClient.StartAsync().ConfigureAwait(false).GetAwaiter().GetResult();
                return(new PeerChallengeRequest(logger, peerClient, peerSettings, 10));
            }).As <IPeerChallengeRequest>().SingleInstance();

            _peerChallengeRequest = ContainerProvider.Container.Resolve <IPeerChallengeRequest>();

            var eventLoopGroupFactoryConfiguration = new EventLoopGroupFactoryConfiguration
            {
                TcpClientHandlerWorkerThreads = 2,
                TcpServerHandlerWorkerThreads = 3,
                UdpServerHandlerWorkerThreads = 4,
                UdpClientHandlerWorkerThreads = 5
            };

            var keySigner = ContainerProvider.Container.Resolve <IKeySigner>(); // @@

            _peerService = new PeerService(
                new UdpServerEventLoopGroupFactory(eventLoopGroupFactoryConfiguration),
                new PeerServerChannelFactory(ContainerProvider.Container.Resolve <IPeerMessageCorrelationManager>(),
                                             ContainerProvider.Container.Resolve <IBroadcastManager>(),
                                             keySigner,
                                             ContainerProvider.Container.Resolve <IPeerIdValidator>(),
                                             ContainerProvider.Container.Resolve <IPeerSettings>()),
                new DiscoveryHelper.DevDiscover(),
                ContainerProvider.Container.Resolve <IEnumerable <IP2PMessageObserver> >(),
                _peerSettings,
                ContainerProvider.Container.Resolve <ILogger>(),
                ContainerProvider.Container.Resolve <IHealthChecker>());

            _peerService.StartAsync().Wait();
        }
Exemple #10
0
        private IPeerService CreatePeerService(IPEndPoint peer)
        {
            EndpointAddress ep      = new EndpointAddress(string.Format(Config.P2PUri, peer.Address, peer.Port));
            NetTcpBinding   binding = new NetTcpBinding();

            binding.Security.Mode = SecurityMode.None;
            var          factory     = new ChannelFactory <IPeerService>(binding);
            IPeerService peerService = factory.CreateChannel(ep);

            return(peerService);
        }
 public ChannelCloseService(ILoggerFactory loggerFactory, IChannelService channelService, IPeerService peerService,
                            IWalletService walletService, IConfiguration configuration, IBlockchainClientService blockchainClientService,
                            IChannelLoggingService channelLoggingService)
 {
     _channelService          = channelService;
     _peerService             = peerService;
     _walletService           = walletService;
     _blockchainClientService = blockchainClientService;
     _channelLoggingService   = channelLoggingService;
     _configuration           = configuration.GetConfiguration <ChannelConfiguration>();
     _logger = loggerFactory.CreateLogger(GetType());
 }
 public ChannelStateService(ILoggerFactory loggerFactory, IChannelService channelService,
                            IPeerService peerService, IChannelLoggingService channelLoggingService,
                            IChannelEstablishmentService channelEstablishmentService,
                            IChannelReestablishmentService channelReestablishmentService,
                            IChannelCloseService channelCloseService)
 {
     _logger                        = loggerFactory.CreateLogger(GetType());
     _channelService                = channelService;
     _peerService                   = peerService;
     _channelLoggingService         = channelLoggingService;
     _channelEstablishmentService   = channelEstablishmentService;
     _channelReestablishmentService = channelReestablishmentService;
     _channelCloseService           = channelCloseService;
 }
Exemple #13
0
 public DeltaHeightWatcher(IPeerClient peerClient,
                           IPeerRepository peerRepository,
                           IPeerService peerService,
                           double threshold = 0.5d,
                           int minimumPeers = 2)
 {
     _peerClient           = peerClient;
     DeltaHeightRanker     = new DeltaHeightRanker(peerRepository, 100, threshold);
     _peerRepository       = peerRepository;
     _peerService          = peerService;
     _manualResetEventSlim = new ManualResetEventSlim(false);
     _threshold            = threshold;
     _minimumPeers         = minimumPeers;
 }
        private async Task InitialisePeerServiceAndSendMessage(IP2PMessageObserver pingRequestHandler, ProtocolMessage message)
        {
            _p2PMessageHandlers.Add(pingRequestHandler);

            _peerService = new PeerService(new UdpServerEventLoopGroupFactory(new EventLoopGroupFactoryConfiguration()),
                                           _udpServerServerChannelFactory,
                                           _peerDiscovery,
                                           _p2PMessageHandlers,
                                           _peerSettings,
                                           _logger,
                                           Substitute.For <IHealthChecker>());

            await _peerService.StartAsync();

            _serverChannel.SimulateReceivingMessagesAsync(message);
        }
Exemple #15
0
 public PersonController(
     IWebHostEnvironment environment,
     ILogger <PersonController> logger,
     SignInManager <UserProfileModel> signInManager,
     UserManager <UserProfileModel> userManager,
     IPostService posts,
     IUserProfileService localProfiles,
     IPublicProfileService publicProfiles,
     IReactionService reactions,
     ITagService tags,
     INotificationService notifications,
     IPeerService peers,
     IAuthService auth,
     ISettingsService settings,
     IActivityStreamRepository activityStreams) :
     base(environment, signInManager, userManager, posts, localProfiles, publicProfiles, reactions, tags, notifications, peers, auth, settings, activityStreams)
 {
     _logger = logger;
 }
Exemple #16
0
        public PeerSyncManager(IPeerClient peerClient,
                               IPeerRepository peerRepository,
                               IPeerService peerService,
                               IUserOutput userOutput,
                               IDeltaHeightWatcher deltaHeightWatcher,
                               IDfsService dfsService,
                               double threshold     = 0.5d,
                               int minimumPeers     = 2,
                               IScheduler scheduler = null)
        {
            _peerClient                   = peerClient;
            _peerRepository               = peerRepository;
            _peerService                  = peerService;
            _userOutput                   = userOutput;
            _deltaHeightWatcher           = deltaHeightWatcher;
            _dfsService                   = dfsService;
            _scoredDeltaIndexRangeSubject =
                new ReplaySubject <IEnumerable <DeltaIndex> >(1, scheduler ?? Scheduler.Default);
            ScoredDeltaIndexRange = _scoredDeltaIndexRangeSubject.AsObservable();

            _threshold    = threshold;
            _minimumPeers = minimumPeers;
        }
Exemple #17
0
 public AccountController(
     ILogger <AccountController> logger,
     IWebHostEnvironment environment,
     UserManager <UserProfileModel> userManager,
     SignInManager <UserProfileModel> signInManager,
     IPostService posts, IUserProfileService localProfiles, IPublicProfileService publicProfiles,
     IReactionService reactions, ITagService tags,
     INotificationService notifications,
     IPeerService peers,
     IAuthService auth,
     ISettingsService settings,
     IFido2 fido2,
     IInvitationService invitationService,
     IActivityStreamRepository activityStreams,
     IRateLimitService rateLimitService
     ) :
     base(environment, signInManager, userManager, posts, localProfiles, publicProfiles, reactions, tags, notifications, peers, auth, settings, activityStreams)
 {
     _logger            = logger;
     _fido2             = fido2;
     _invitationService = invitationService;
     _rateLimitService  = rateLimitService;
 }
Exemple #18
0
 public ActivityStreamController(
     IWebHostEnvironment environment,
     SignInManager <UserProfileModel> signInManager,
     UserManager <UserProfileModel> userManager,
     IPostService posts,
     IUserProfileService localProfiles,
     IPublicProfileService publicProfiles,
     IReactionService reactions,
     ITagService tags,
     INotificationService notifications,
     IPeerService peers,
     IAuthService auth,
     ISettingsService settings,
     IActivityStreamRepository activityStreams
     ) : base(signInManager, userManager, localProfiles, publicProfiles, auth, settings)
 {
     _environment     = environment;
     _posts           = posts;
     _reactions       = reactions;
     _tags            = tags;
     _notifications   = notifications;
     _peers           = peers;
     _activityStreams = activityStreams;
 }
Exemple #19
0
 public PeersController(IPeerService peerService)
 {
     this._peerService = peerService;
 }
Exemple #20
0
        public void Init()
        {
            _cancellationToken = new CancellationToken();

            _manualResetEventSlim = new ManualResetEventSlim(false);

            _testScheduler = new TestScheduler();
            _hashProvider  = new HashProvider(HashingAlgorithm.GetAlgorithmMetadata("keccak-256"));

            _peerSettings = Substitute.For <IPeerSettings>();
            _peerSettings.PeerId.Returns(PeerIdHelper.GetPeerId());

            _deltaDfsReader = Substitute.For <IDeltaDfsReader>();
            _deltaDfsReader.TryReadDeltaFromDfs(Arg.Any <Cid>(), out Arg.Any <Delta>()).Returns(x => true);

            _deltaCache = Substitute.For <IDeltaCache>();
            _deltaCache.GenesisHash.Returns("bafk2bzacecji5gcdd6lxsoazgnbg46c3vttjwwkptiw27enachziizhhkir2w".ToCid());

            _ledger = Substitute.For <ILedger>();

            _peerService = Substitute.For <IPeerService>();

            _deltaHashProvider = new DeltaHashProvider(_deltaCache, Substitute.For <IDeltaIndexService>(), Substitute.For <ILogger>());

            _deltaIndexService = new DeltaIndexService(new InMemoryRepository <DeltaIndexDao, string>());
            _deltaIndexService.Add(new DeltaIndexDao {
                Cid = _hashProvider.ComputeUtf8MultiHash("0").ToCid(), Height = 0
            });

            _peerClient = Substitute.For <IPeerClient>();
            ModifyPeerClient <LatestDeltaHashRequest>((request, senderPeerIdentifier) =>
            {
                var deltaHeightResponse = new LatestDeltaHashResponse
                {
                    DeltaIndex = new DeltaIndex
                    {
                        Cid = _hashProvider.ComputeUtf8MultiHash(_syncTestHeight.ToString()).ToCid().ToArray()
                              .ToByteString(),
                        Height = (uint)_syncTestHeight
                    }
                };

                _deltaHeightReplaySubject.OnNext(new ObserverDto(Substitute.For <IChannelHandlerContext>(),
                                                                 deltaHeightResponse.ToProtocolMessage(senderPeerIdentifier, CorrelationId.GenerateCorrelationId())));
            });

            ModifyPeerClient <DeltaHistoryRequest>((request, senderPeerIdentifier) =>
            {
                var data = GenerateSampleData((int)request.Height, (int)request.Range, (int)_syncTestHeight);
                _deltaIndexService.Add(data.DeltaIndex.Select(x => DeltaIndexDao.ToDao <DeltaIndex>(x, _mapperProvider)));

                _deltaHistoryReplaySubject.OnNext(new ObserverDto(Substitute.For <IChannelHandlerContext>(),
                                                                  data
                                                                  .ToProtocolMessage(senderPeerIdentifier, CorrelationId.GenerateCorrelationId())));
            });

            _peerRepository = new PeerRepository(new InMemoryRepository <Peer, string>());
            Enumerable.Repeat(new Peer {
                PeerId = PeerIdHelper.GetPeerId()
            }, 5).ToList().ForEach(_peerRepository.Add);

            _deltaHeightReplaySubject  = new ReplaySubject <IObserverDto <ProtocolMessage> >(1);
            _deltaHistoryReplaySubject = new ReplaySubject <IObserverDto <ProtocolMessage> >(1);

            var mergeMessageStreams = _deltaHeightReplaySubject.AsObservable()
                                      .Merge(_deltaHistoryReplaySubject.AsObservable());

            _peerService.MessageStream.Returns(mergeMessageStreams);

            _deltaHashProvider = Substitute.For <IDeltaHashProvider>();
            _deltaHashProvider.TryUpdateLatestHash(Arg.Any <Cid>(), Arg.Any <Cid>()).Returns(true);

            _mapperProvider = new TestMapperProvider();

            _userOutput = Substitute.For <IUserOutput>();

            _deltaHeightWatcher = new DeltaHeightWatcher(_peerClient, _peerRepository, _peerService, minimumPeers: 0);

            var dfsService = Substitute.For <IDfsService>();

            _peerSyncManager = new PeerSyncManager(_peerClient, _peerRepository,
                                                   _peerService, _userOutput, _deltaHeightWatcher, Substitute.For <IDfsService>(), 0.7, 0);
        }
Exemple #21
0
 public PeersController(PeersEngine peersEngine, IPeerService peers)
 {
     this.peersEngine = peersEngine;
     this.peers       = peers;
 }
 public ClientPeer(IPeerService peerService)
 {
     this.peerService = peerService;
     tcpClient = new TcpClient();
 }
Exemple #23
0
 public PeerAutoConnectService(IPeerService peerService, IConfiguration configuration, ILoggerFactory loggerFactory)
 {
     _peerService   = peerService;
     _logger        = loggerFactory.CreateLogger <PeerService>();
     _configuration = configuration.GetConfiguration <PeerConfiguration>();
 }