/// <summary>
        ///     The main method where we will create all useful dependencies for the chain
        /// </summary>
        /// <param name="centralCoordinator"></param>
        /// <returns></returns>
        protected override INeuraliumChainComponentsInjection CreateChainComponents(INeuraliumCentralCoordinator centralCoordinator, INeuraliumBlockChainInterface chainInterface)
        {
            NeuraliumWalletProvider      walletProvider      = new NeuraliumWalletProvider(centralCoordinator);
            NeuraliumWalletProviderProxy walletProviderProxy = new NeuraliumWalletProviderProxy(centralCoordinator, walletProvider);

            NeuraliumChainDalCreationFactory            chainDalCreationFactory  = new NeuraliumChainDalCreationFactory();
            NeuraliumChainTypeCreationFactory           chainTypeCreationFactory = new NeuraliumChainTypeCreationFactory(centralCoordinator);
            NeuraliumClientWorkflowFactory              clientWorkflowFactory    = new NeuraliumClientWorkflowFactory(centralCoordinator);
            NeuraliumGossipWorkflowFactory              gossipWorkflowFactory    = new NeuraliumGossipWorkflowFactory(centralCoordinator);
            NeuraliumServerWorkflowFactory              serverWorkflowFactory    = new NeuraliumServerWorkflowFactory(centralCoordinator);
            NeuraliumMainChainMessageFactory            messageFactory           = new NeuraliumMainChainMessageFactory(centralCoordinator.BlockchainServiceSet);
            NeuraliumWorkflowTaskFactory                taskFactory = new NeuraliumWorkflowTaskFactory(centralCoordinator);
            NeuraliumBlockchainEventsRehydrationFactory blockchainEventsRehydrationFactory = new NeuraliumBlockchainEventsRehydrationFactory(centralCoordinator);
            NeuraliumChainWorkflowFactory               workflowFactory = new NeuraliumChainWorkflowFactory(centralCoordinator);

            INeuraliumChainFactoryProvider chainFactoryProvider = new NeuraliumChainFactoryProvider(chainDalCreationFactory, chainTypeCreationFactory, workflowFactory, messageFactory, clientWorkflowFactory, serverWorkflowFactory, gossipWorkflowFactory, taskFactory, blockchainEventsRehydrationFactory);

            INeuraliumChainStateProvider         chainStateProvider         = new NeuraliumChainStateProvider(centralCoordinator);
            INeuraliumAccountSnapshotsProvider   accountSnapshotsProvider   = new NeuraliumAccountSnapshotsProvider(centralCoordinator);
            INeuraliumChainConfigurationProvider chainConfigurationProvider = new NeuraliumChainConfigurationProvider();

            INeuraliumChainMiningProvider chainMiningProvider = new NeuraliumChainMiningProvider(centralCoordinator);

            INeuraliumChainDataLoadProvider chainDataLoadProvider = new NeuraliumChainDataWriteProvider(centralCoordinator);

            INeuraliumInterpretationProvider interpretationProvider = new NeuraliumInterpretationProvider(centralCoordinator);

            INeuraliumAccreditationCertificateProvider accreditationCertificateProvider = new NeuraliumAccreditationCertificateProvider(centralCoordinator);

            INeuraliumChainNetworkingProvider chainNetworkingProvider = new NeuraliumChainNetworkingProvider(DIService.Instance.GetService <IBlockchainNetworkingService>(), centralCoordinator);

            INeuraliumAssemblyProvider assemblyProvider = new NeuraliumAssemblyProvider(centralCoordinator);

            // build the final component
            NeuraliumChainComponentsInjection componentsInjector = new NeuraliumChainComponentsInjection();

            componentsInjector.ChainComponentProvider = new NeuraliumChainComponentProvider(walletProviderProxy, assemblyProvider, chainFactoryProvider, chainStateProvider, chainConfigurationProvider, chainMiningProvider, chainDataLoadProvider, accreditationCertificateProvider, accountSnapshotsProvider, chainNetworkingProvider, interpretationProvider);

            NeuraliumBlockchainManager    transactionBlockchainManager = new NeuraliumBlockchainManager(centralCoordinator);
            NeuraliumSerializationManager serializationManager         = new NeuraliumSerializationManager(centralCoordinator);
            NeuraliumValidationManager    validationManager            = new NeuraliumValidationManager(centralCoordinator);
            NeuraliumGossipManager        gossipManager = new NeuraliumGossipManager(centralCoordinator);

            componentsInjector.blockchainManager    = transactionBlockchainManager;
            componentsInjector.serializationManager = serializationManager;
            componentsInjector.validationManager    = validationManager;
            componentsInjector.gossipManager        = gossipManager;

            componentsInjector.chainInterface = chainInterface;

            return(componentsInjector);
        }
        public override INeuraliumBlockChainInterface CreateNewChain(IServiceProvider serviceProvider, ChainRuntimeConfiguration chainRuntimeConfiguration = null, IFileSystem fileSystem = null)
        {
            chainRuntimeConfiguration = chainRuntimeConfiguration ?? new ChainRuntimeConfiguration();
            fileSystem = fileSystem ?? new FileSystem();

            DIService.Instance.AddServiceProvider(NeuraliumBlockchainTypes.NeuraliumInstance.Neuralium, serviceProvider);
            BlockchainServiceSet serviceSet = new BlockchainServiceSet(NeuraliumBlockchainTypes.NeuraliumInstance.Neuralium);

            INeuraliumCentralCoordinator centralCoordinator = this.CreateCentralCoordinator(serviceSet, chainRuntimeConfiguration, fileSystem);

            NeuraliumBlockChainInterface chainInterface = new NeuraliumBlockChainInterface(centralCoordinator);

            centralCoordinator.InitializeContents(this.CreateChainComponents(centralCoordinator, chainInterface));

            return(chainInterface);
        }
		public NeuraliumTransactionInterpretationProcessor(INeuraliumCentralCoordinator centralCoordinator, TransactionImpactSet.OperationModes operationMode) : base(centralCoordinator, operationMode) {
			this.snapshotCacheSet = new NeuraliumSnapshotCacheSet<ACCOUNT_SNAPSHOT, STANDARD_ACCOUNT_SNAPSHOT, STANDARD_ACCOUNT_FEATURE_SNAPSHOT, STANDARD_ACCOUNT_FREEZE_SNAPSHOT, JOINT_ACCOUNT_SNAPSHOT, JOINT_ACCOUNT_FEATURE_SNAPSHOT, JOINT_ACCOUNT_MEMBERS_SNAPSHOT, JOINT_ACCOUNT_FREEZE_SNAPSHOT, STANDARD_ACCOUNT_KEY_SNAPSHOT, ACCREDITATION_CERTIFICATE_SNAPSHOT, ACCREDITATION_CERTIFICATE_ACCOUNT_SNAPSHOT, CHAIN_OPTIONS_SNAPSHOT>(NeuraliumCardsUtils.Instance);
		}
		public NeuraliumTransactionInterpretationProcessor(INeuraliumCentralCoordinator centralCoordinator) : this(centralCoordinator, TransactionImpactSet.OperationModes.Real) {

		}
 protected override ITransactionInterpretationProcessor <INeuraliumCentralCoordinator, INeuraliumChainComponentProvider, ACCOUNT_SNAPSHOT, STANDARD_ACCOUNT_SNAPSHOT, STANDARD_ACCOUNT_FEATURE_SNAPSHOT, JOINT_ACCOUNT_SNAPSHOT, JOINT_ACCOUNT_FEATURE_SNAPSHOT, JOINT_ACCOUNT_MEMBERS_SNAPSHOT, STANDARD_ACCOUNT_KEY_SNAPSHOT, ACCREDITATION_CERTIFICATE_SNAPSHOT, ACCREDITATION_CERTIFICATE_ACCOUNT_SNAPSHOT, CHAIN_OPTIONS_SNAPSHOT> CreateV1ITransactionInterpretation(INeuraliumCentralCoordinator centralCoordinator)
 {
     return(new NeuraliumTransactionInterpretationProcessor <ACCOUNT_SNAPSHOT, STANDARD_ACCOUNT_SNAPSHOT, STANDARD_ACCOUNT_FEATURE_SNAPSHOT, STANDARD_ACCOUNT_FREEZE_SNAPSHOT, JOINT_ACCOUNT_SNAPSHOT, JOINT_ACCOUNT_FEATURE_SNAPSHOT, JOINT_ACCOUNT_MEMBERS_SNAPSHOT, JOINT_ACCOUNT_FREEZE_SNAPSHOT, STANDARD_ACCOUNT_KEY_SNAPSHOT, ACCREDITATION_CERTIFICATE_SNAPSHOT, ACCREDITATION_CERTIFICATE_ACCOUNT_SNAPSHOT, CHAIN_OPTIONS_SNAPSHOT>(centralCoordinator));
 }
 protected NeuraliumInterpretationProviderGenerix(INeuraliumCentralCoordinator centralCoordinator) : base(centralCoordinator)
 {
 }
 public NeuraliumInterpretationProvider(INeuraliumCentralCoordinator centralCoordinator) : base(centralCoordinator)
 {
 }
 public InsertDebugConfirmWorkflow(TransactionId guid, IByteArray hash, INeuraliumCentralCoordinator centralCoordinator) : base(centralCoordinator)
 {
     this.guid = guid;
     this.hash = hash;
 }
 protected NeuraliumGossipChainWorkflow(BlockchainType chainType, INeuraliumCentralCoordinator centralCoordinator, NeuraliumGossipMessageSet <NeuraliumGossipWorkflowTriggerMessage <EVENT_ENVELOPE_TYPE>, EVENT_ENVELOPE_TYPE> triggerMessage, PeerConnection peerConnectionn) : base(chainType, centralCoordinator, triggerMessage, peerConnectionn)
 {
 }
Beispiel #10
0
 public InsertDebugMessageWorkflow(INeuraliumCentralCoordinator centralCoordinator) : base(centralCoordinator)
 {
 }