Exemple #1
0
        public LedgerTests()
        {
            _testScheduler  = new TestScheduler();
            _fakeRepository = Substitute.For <IAccountRepository>();
            _hashProvider   = new HashProvider(HashingAlgorithm.GetAlgorithmMetadata("keccak-256"));
            _mapperProvider = new TestMapperProvider();

            _logger            = Substitute.For <ILogger>();
            _mempool           = Substitute.For <IMempool <PublicEntryDao> >();
            _deltaHashProvider = Substitute.For <IDeltaHashProvider>();
            _receipts          = Substitute.For <ITransactionRepository>();
            _synchroniser      = Substitute.For <ISynchroniser>();
            _genesisHash       = _hashProvider.ComputeUtf8MultiHash("genesis").ToCid();
            _synchroniser.DeltaCache.GenesisHash.Returns(_genesisHash);
            _executor        = Substitute.For <IDeltaExecutor>();
            _stateProvider   = Substitute.For <IStateProvider>();
            _storageProvider = Substitute.For <IStorageProvider>();
            _cryptoContext   = new FfiWrapper();
            _signingContext  = new SigningContext
            {
                NetworkType   = NetworkType.Devnet,
                SignatureType = SignatureType.TransactionPublic
            };

            _deltaIndexService = new DeltaIndexService(new InMemoryRepository <DeltaIndexDao, string>());
        }
Exemple #2
0
        public PoaTestNode(string name,
                           IPrivateKey privateKey,
                           IPeerSettings nodeSettings,
                           IDfsService dfsService,
                           IEnumerable <PeerId> knownPeerIds,
                           IFileSystem parentTestFileSystem)
        {
            Name          = name;
            _nodeSettings = nodeSettings;

            _nodeDirectory = parentTestFileSystem.GetCatalystDataDir();

            _dfsService = dfsService;

            _rpcSettings = RpcSettingsHelper.GetRpcServerSettings(nodeSettings.Port + 100);
            _nodePeerId  = nodeSettings.PeerId;

            _memPool        = new Mempool(new MempoolService(new InMemoryRepository <PublicEntryDao, string>()));
            _peerRepository = new PeerRepository(new InMemoryRepository <Peer, string>());
            var peersInRepo = knownPeerIds.Select(p => new Peer
            {
                PeerId    = p,
                IsPoaNode = true,
                LastSeen  = DateTime.UtcNow
            }).ToList();

            _peerRepository.Add(peersInRepo);

            _deltaByNumber = new DeltaByNumberRepository(new InMemoryRepository <DeltaByNumber, string>());

            _containerProvider = new ContainerProvider(new[]
            {
                Constants.NetworkConfigFile(NetworkType.Devnet),
                Constants.SerilogJsonConfigFile
            }
                                                       .Select(f => Path.Combine(Constants.ConfigSubFolder, f)), parentTestFileSystem, TestContext.CurrentContext);

            RegisterNodeDependencies(_containerProvider.ContainerBuilder,
                                     excludedModules: new List <Type>
            {
                typeof(ApiModule),
                typeof(RpcServerModule)
            }
                                     );
            _containerProvider.ConfigureContainerBuilder(true, true);
            OverrideContainerBuilderRegistrations();

            _scope = _containerProvider.Container.BeginLifetimeScope(Name);
            _node  = _scope.Resolve <ICatalystNode>();

            var keyStore    = _scope.Resolve <IKeyStore>();
            var keyRegistry = _scope.Resolve <IKeyRegistry>();

            keyRegistry.RemoveItemFromRegistry(KeyRegistryTypes.DefaultKey);
            keyRegistry.AddItemToRegistry(KeyRegistryTypes.DefaultKey, privateKey);

            keyStore.KeyStoreEncryptAsync(privateKey, nodeSettings.NetworkType, KeyRegistryTypes.DefaultKey)
            .ConfigureAwait(false).GetAwaiter()
            .GetResult();
        }
Exemple #3
0
        public Ledger(IDeltaExecutor deltaExecutor,
                      IStateProvider stateProvider,
                      IStorageProvider storageProvider,
                      ISnapshotableDb stateDb,
                      ISnapshotableDb codeDb,
                      IAccountRepository accounts,
                      IDeltaHashProvider deltaHashProvider,
                      ILedgerSynchroniser synchroniser,
                      IMempool <PublicEntryDao> mempool,
                      IMapperProvider mapperProvider,
                      ILogger logger)
        {
            Accounts         = accounts;
            _deltaExecutor   = deltaExecutor;
            _stateProvider   = stateProvider;
            _storageProvider = storageProvider;
            _stateDb         = stateDb;
            _codeDb          = codeDb;
            _synchroniser    = synchroniser;
            _mempool         = mempool;
            _mapperProvider  = mapperProvider;
            _logger          = logger;

            _deltaUpdatesSubscription = deltaHashProvider.DeltaHashUpdates.Subscribe(Update);
            LatestKnownDelta          = _synchroniser.DeltaCache.GenesisHash;
        }
Exemple #4
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 #5
0
 public GetMempoolRequestObserver(IPeerSettings peerSettings,
                                  IMempool <MempoolDocument> mempool,
                                  ILogger logger)
     : base(logger, peerSettings)
 {
     _mempool = mempool;
 }
Exemple #6
0
        public Web3EthApi(IStateReader stateReader,
                          IDeltaResolver deltaResolver,
                          IDeltaCache deltaCache,
                          IDeltaExecutor executor,
                          IStorageProvider storageProvider,
                          IStateProvider stateProvider,
                          ITransactionRepository receipts,
                          ITransactionReceivedEvent transactionReceived,
                          IPeerRepository peerRepository,
                          IMempool <PublicEntryDao> mempoolRepository,
                          IDfsService dfsService,
                          IHashProvider hashProvider,
                          SyncState syncState,
                          IMapperProvider mapperProvider,
                          IPeerSettings peerSettings)
        {
            _receipts            = receipts;
            _transactionReceived = transactionReceived ?? throw new ArgumentNullException(nameof(transactionReceived));
            HashProvider         = hashProvider;
            _peerId            = peerSettings.PeerId;
            _mempoolRepository = mempoolRepository;
            PeerRepository     = peerRepository;
            _mapperProvider    = mapperProvider;

            StateReader     = stateReader ?? throw new ArgumentNullException(nameof(stateReader));
            DeltaResolver   = deltaResolver ?? throw new ArgumentNullException(nameof(deltaResolver));
            DeltaCache      = deltaCache ?? throw new ArgumentNullException(nameof(deltaCache));
            Executor        = executor ?? throw new ArgumentNullException(nameof(executor));
            StorageProvider = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider));
            StateProvider   = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
            DfsService      = dfsService;
            SyncState       = syncState;
        }
Exemple #7
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 #8
0
 public DeltaTransactionRetriever(IMempool <PublicEntryDao> mempool,
                                  IMapperProvider mapperProvider,
                                  ITransactionComparer transactionComparer)
 {
     _mempool            = mempool;
     _mapperProvider     = mapperProvider;
     TransactionComparer = transactionComparer;
 }
Exemple #9
0
 public GetMempoolRequestObserver(IPeerSettings peerSettings,
                                  IMempool <PublicEntryDao> mempool,
                                  IMapperProvider mappingProvider,
                                  ILogger logger)
     : base(logger, peerSettings)
 {
     _mempool         = mempool;
     _mappingProvider = mappingProvider;
 }
 public TransactionReceivedEvent(ITransactionValidator validator,
                                 IMempool <PublicEntryDao> mempool,
                                 IBroadcastManager broadcastManager,
                                 IMapperProvider mapperProvider,
                                 ILogger logger)
 {
     _mapperProvider   = mapperProvider;
     _broadcastManager = broadcastManager;
     _mempool          = mempool;
     _validator        = validator;
     _logger           = logger;
 }
Exemple #11
0
 public TransactionReceivedEvent(ITransactionValidator validator,
                                 IMempool <MempoolDocument> mempool,
                                 IBroadcastManager broadcastManager,
                                 IPeerSettings peerSettings,
                                 ILogger logger)
 {
     _peerSettings     = peerSettings;
     _broadcastManager = broadcastManager;
     _mempool          = mempool;
     _validator        = validator;
     _logger           = logger;
 }
Exemple #12
0
        public TransactionReceivedEventTests()
        {
            var mapperProvider = new TestMapperProvider();

            _mempool = Substitute.For <IMempool <PublicEntryDao> >();
            _transactionValidator     = Substitute.For <ITransactionValidator>();
            _broadcastManager         = Substitute.For <IBroadcastManager>();
            _transactionReceivedEvent = new TransactionReceivedEvent(_transactionValidator,
                                                                     _mempool,
                                                                     _broadcastManager,
                                                                     mapperProvider,
                                                                     Substitute.For <ILogger>());
        }
        public LedgerTests()
        {
            _testScheduler  = new TestScheduler();
            _fakeRepository = Substitute.For <IAccountRepository>();
            _hashProvider   = new HashProvider(HashingAlgorithm.GetAlgorithmMetadata("blake2b-256"));

            _logger             = Substitute.For <ILogger>();
            _mempool            = Substitute.For <IMempool <MempoolDocument> >();
            _deltaHashProvider  = Substitute.For <IDeltaHashProvider>();
            _ledgerSynchroniser = Substitute.For <ILedgerSynchroniser>();
            _genesisHash        = _hashProvider.ComputeUtf8MultiHash("genesis");
            _ledgerSynchroniser.DeltaCache.GenesisHash.Returns(_genesisHash);
            _ledgerSynchroniser.DeltaCache.GenesisAddress.Returns(_genesisHash.ToBase32());
        }
Exemple #14
0
        public TransactionReceivedEventTests()
        {
            _peerSettings = Substitute.For <IPeerSettings>();
            _peerSettings.NetworkType.Returns(NetworkType.Devnet);

            _mempool = Substitute.For <IMempool <MempoolDocument> >();
            _transactionValidator     = Substitute.For <ITransactionValidator>();
            _broadcastManager         = Substitute.For <IBroadcastManager>();
            _transactionReceivedEvent = new TransactionReceivedEvent(_transactionValidator,
                                                                     _mempool,
                                                                     _broadcastManager,
                                                                     _peerSettings,
                                                                     Substitute.For <ILogger>());
        }
Exemple #15
0
        public Ledger(IAccountRepository accounts,
                      IDeltaHashProvider deltaHashProvider,
                      ILedgerSynchroniser synchroniser,
                      IMempool <MempoolDocument> mempool,
                      ILogger logger)
        {
            Accounts      = accounts;
            _synchroniser = synchroniser;
            _mempool      = mempool;
            _logger       = logger;

            _deltaUpdatesSubscription = deltaHashProvider.DeltaHashUpdates.Subscribe(Update);
            LatestKnownDelta          = _synchroniser.DeltaCache.GenesisHash;
            _cryptoContext            = new FfiWrapper();
        }
Exemple #16
0
        public Ledger(IDeltaExecutor deltaExecutor,
                      IStateProvider stateProvider,
                      IStorageProvider storageProvider,
                      ISnapshotableDb stateDb,
                      IDb codeDb,
                      IAccountRepository accounts,
                      IDeltaIndexService deltaIndexService,
                      ITransactionRepository receipts,
                      IDeltaHashProvider deltaHashProvider,
                      ISynchroniser synchroniser,
                      IMempool <PublicEntryDao> mempool,
                      IMapperProvider mapperProvider,
                      IHashProvider hashProvider,
                      ILogger logger)
        {
            Accounts         = accounts;
            _deltaExecutor   = deltaExecutor;
            _stateProvider   = stateProvider;
            _storageProvider = storageProvider;

            _stateDb        = stateDb;
            _codeDb         = codeDb;
            _mempool        = mempool;
            _mapperProvider = mapperProvider;
            _hashProvider   = hashProvider;
            _logger         = logger;
            _receipts       = receipts;
            _synchroniser   = synchroniser;

            _deltaUpdatesSubscription = deltaHashProvider.DeltaHashUpdates.Subscribe(Update);

            _deltaIndexService = deltaIndexService;

            var latestDeltaIndex = _deltaIndexService.LatestDeltaIndex();

            if (latestDeltaIndex != null)
            {
                _latestKnownDelta       = latestDeltaIndex.Cid;
                _latestKnownDeltaNumber = (long)latestDeltaIndex.Height;
                return;
            }

            _latestKnownDelta = _synchroniser.DeltaCache.GenesisHash;
            WriteLatestKnownDelta(_latestKnownDelta);
        }
        public PoaTestNode(string name,
                           IPrivateKey privateKey,
                           IPeerSettings nodeSettings,
                           IEnumerable <PeerId> knownPeerIds,
                           IFileSystem parentTestFileSystem,
                           ITestOutputHelper output)
        {
            Name          = name;
            _nodeSettings = nodeSettings;

            _nodeDirectory = parentTestFileSystem.GetCatalystDataDir().SubDirectoryInfo(Name);
            var nodeFileSystem = Substitute.ForPartsOf <FileSystem>();

            nodeFileSystem.GetCatalystDataDir().Returns(_nodeDirectory);

            _rpcSettings = RpcSettingsHelper.GetRpcServerSettings(nodeSettings.Port + 100);
            _nodePeerId  = nodeSettings.PeerId;

            var baseDfsFolder = Path.Combine(parentTestFileSystem.GetCatalystDataDir().FullName, "dfs");
            var hashProvider  = new HashProvider(HashingAlgorithm.GetAlgorithmMetadata("blake2b-256"));

            _dfs = new DevDfs(parentTestFileSystem, hashProvider, baseDfsFolder);

            _memPool        = new Mempool(new TestMempoolRepository(new InMemoryRepository <TransactionBroadcastDao, string>()));
            _peerRepository = Substitute.For <IPeerRepository>();
            var peersInRepo = knownPeerIds.Select(p => new Peer
            {
                PeerId = p
            }).ToList();

            _peerRepository.AsQueryable().Returns(peersInRepo.AsQueryable());
            _peerRepository.GetAll().Returns(peersInRepo);
            _peerRepository.Get(Arg.Any <string>()).Returns(ci =>
            {
                return(peersInRepo.First(p => p.DocumentId.Equals((string)ci[0])));
            });

            _containerProvider = new ContainerProvider(new[]
            {
                Constants.NetworkConfigFile(NetworkType.Devnet),
                Constants.SerilogJsonConfigFile
            }
                                                       .Select(f => Path.Combine(Constants.ConfigSubFolder, f)), parentTestFileSystem, output);

            Program.RegisterNodeDependencies(_containerProvider.ContainerBuilder,
                                             excludedModules: new List <Type> {
                typeof(ApiModule), typeof(RpcServerModule)
            }
                                             );
            _containerProvider.ConfigureContainerBuilder(true, true);
            OverrideContainerBuilderRegistrations();

            _scope = _containerProvider.Container.BeginLifetimeScope(Name);
            _node  = _scope.Resolve <ICatalystNode>();

            var keyStore    = _scope.Resolve <IKeyStore>();
            var keyRegistry = _scope.Resolve <IKeyRegistry>();

            keyRegistry.AddItemToRegistry(KeyRegistryTypes.DefaultKey, privateKey);

            keyStore.KeyStoreEncryptAsync(privateKey, nodeSettings.NetworkType, KeyRegistryTypes.DefaultKey).ConfigureAwait(false).GetAwaiter()
            .GetResult();
        }
 public DeltaTransactionRetriever(IMempool <MempoolDocument> mempool,
                                  ITransactionComparer transactionComparer)
 {
     _mempool            = mempool;
     TransactionComparer = transactionComparer;
 }