Ejemplo n.º 1
0
        public void Setup()
        {
            _container?.Dispose();
            TestUtils.DeleteTestChainData();
            _eventData = new Dictionary <UInt256, ByteString>();
            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.json"),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <StorageModule>();
            _container          = containerBuilder.Build();
            _blockManager       = _container.Resolve <IBlockManager>();
            _transactionBuilder = _container.Resolve <ITransactionBuilder>();
            _stateManager       = _container.Resolve <IStateManager>();
            _wallet             = _container.Resolve <IPrivateWallet>();
            _transactionPool    = _container.Resolve <ITransactionPool>();
            _configManager      = _container.Resolve <IConfigManager>();
            // set chainId from config
            if (TransactionUtils.ChainId(false) == 0)
            {
                var chainId    = _configManager.GetConfig <NetworkConfig>("network")?.ChainId;
                var newChainId = _configManager.GetConfig <NetworkConfig>("network")?.NewChainId;
                TransactionUtils.SetChainId((int)chainId !, (int)newChainId !);
                HardforkHeights.SetHardforkHeights(_configManager.GetConfig <HardforkConfig>("hardfork") ?? throw new InvalidOperationException());
                StakingContract.Initialize(_configManager.GetConfig <NetworkConfig>("network") ?? throw new InvalidOperationException());
                CycleDuration = StakingContract.CycleDuration;
            }
        }
Ejemplo n.º 2
0
        public void Setup()
        {
            _container?.Dispose();
            TestUtils.DeleteTestChainData();
            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.json"),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <StorageModule>();
            _container       = containerBuilder.Build();
            _blockManager    = _container.Resolve <IBlockManager>();
            _stateManager    = _container.Resolve <IStateManager>();
            _wallet          = _container.Resolve <IPrivateWallet>();
            _transactionPool = _container.Resolve <ITransactionPool>();
            _configManager   = _container.Resolve <IConfigManager>();
            // set chainId from config
            if (TransactionUtils.ChainId(false) == 0)
            {
                var chainId    = _configManager.GetConfig <NetworkConfig>("network")?.ChainId;
                var newChainId = _configManager.GetConfig <NetworkConfig>("network")?.ChainId;
                TransactionUtils.SetChainId((int)chainId !, (int)newChainId !);
                HardforkHeights.SetHardforkHeights(_configManager.GetConfig <HardforkConfig>("hardfork") ?? throw new InvalidOperationException());
            }
            _validatorStatusManager = new ValidatorStatusManager(
                _transactionPool, _container.Resolve <ITransactionSigner>(), _container.Resolve <ITransactionBuilder>(),
                _wallet, _stateManager, _container.Resolve <IValidatorAttendanceRepository>(),
                _container.Resolve <ISystemContractReader>()
                );
        }
Ejemplo n.º 3
0
        public void Setup()
        {
            TestUtils.DeleteTestChainData();

            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.json"),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <StorageModule>();

            _container = containerBuilder.Build();

            _stateManager       = _container.Resolve <IStateManager>();
            _contractRegisterer = _container.Resolve <IContractRegisterer>();

            _minterKeyPair = new EcdsaKeyPair("0xD95D6DB65F3E2223703C5D8E205D98E3E6B470F067B0F94F6C6BF73D4301CE48"
                                              .HexToBytes().ToPrivateKey());
            _minterPubKey = CryptoUtils.EncodeCompressed(_minterKeyPair.PublicKey);
            _minterAdd    = _minterKeyPair.PublicKey.GetAddress();

            _mintCntrlKeyPair = new EcdsaKeyPair("0xE83385AF76B2B1997326B567461FB73DD9C27EAB9E1E86D26779F4650C5F2B75".HexToBytes()
                                                 .ToPrivateKey());
            _mintCntrlPubKey = CryptoUtils.EncodeCompressed(_mintCntrlKeyPair.PublicKey);
            _mintCntrlAdd    = _mintCntrlKeyPair.PublicKey.GetAddress();
        }
Ejemplo n.º 4
0
        public Application(string configPath, RunOptions options)
        {
            var logLevel = options.LogLevel ?? Environment.GetEnvironmentVariable("LOG_LEVEL");

            if (logLevel != null)
            {
                logLevel = char.ToUpper(logLevel[0]) + logLevel.ToLower().Substring(1);
            }
            if (!new[] { "Trace", "Debug", "Info", "Warn", "Error", "Fatal" }.Contains(logLevel))
            {
                logLevel = "Info";
            }
            LogManager.Configuration.Variables["consoleLogLevel"] = logLevel;
            LogManager.ReconfigExistingLoggers();

            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(configPath, options));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <ConsensusModule>();
            containerBuilder.RegisterModule <NetworkModule>();
            containerBuilder.RegisterModule <StorageModule>();
            containerBuilder.RegisterModule <RpcModule>();
            containerBuilder.RegisterModule <ConsoleModule>();
            _container = containerBuilder.Build();
        }
Ejemplo n.º 5
0
        public void Setup()
        {
            _container?.Dispose();
            TestUtils.DeleteTestChainData();

            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config2.json"),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <StorageModule>();
            _container = containerBuilder.Build();

            _configManager              = _container.Resolve <IConfigManager>();
            _stateManager               = _container.Resolve <IStateManager>();
            _transactionPool            = _container.Resolve <ITransactionPool>();
            _transactionSigner          = _container.Resolve <ITransactionSigner>();
            _systemContractReader       = _container.Resolve <ISystemContractReader>();
            _localTransactionRepository = _container.Resolve <ILocalTransactionRepository>();
            _privateWallet              = _container.Resolve <IPrivateWallet>();
            _transactionManager         = _container.Resolve <ITransactionManager>();
            _validatorStatusManager     = _validatorStatusManager = new ValidatorStatusManager(
                _transactionPool, _container.Resolve <ITransactionSigner>(), _container.Resolve <ITransactionBuilder>(),
                _privateWallet, _stateManager, _container.Resolve <IValidatorAttendanceRepository>(),
                _container.Resolve <ISystemContractReader>()
                );
            ServiceBinder.BindService <GenericParameterAttributes>();
            _fes = new FrontEndService(_stateManager, _transactionPool, _transactionSigner,
                                       _systemContractReader, _localTransactionRepository, _validatorStatusManager, _privateWallet, _transactionManager);
        }
Ejemplo n.º 6
0
        public void Setup()
        {
            _container?.Dispose();
            TestUtils.DeleteTestChainData();

            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config2.json"),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <StorageModule>();
            containerBuilder.RegisterModule <ConsensusModule>();
            containerBuilder.RegisterModule <NetworkModule>();

            _container = containerBuilder.Build();


            _privateWallet          = _container.Resolve <IPrivateWallet>();
            _validatorStatusManager = _container.Resolve <IValidatorStatusManager>();
            _configManager          = _container.Resolve <IConfigManager>();
            _transactionBuilder     = _container.Resolve <ITransactionBuilder>();

            ServiceBinder.BindService <GenericParameterAttributes>();
            _apiService = new ValidatorServiceWeb3(_validatorStatusManager, _privateWallet, _transactionBuilder);
        }
Ejemplo n.º 7
0
        public void Setup()
        {
            _container?.Dispose();
            TestUtils.DeleteTestChainData();

            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.json"),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <ConfigModule>();

            _container = containerBuilder.Build();

            _configManager = _container.Resolve <IConfigManager>();
            if (TransactionUtils.ChainId(false) == 0)
            {
                var chainId    = _configManager.GetConfig <NetworkConfig>("network")?.ChainId;
                var newChainId = _configManager.GetConfig <NetworkConfig>("network")?.NewChainId;
                TransactionUtils.SetChainId((int)chainId !, (int)newChainId !);
                HardforkHeights.SetHardforkHeights(_configManager.GetConfig <HardforkConfig>("hardfork") ?? throw new InvalidOperationException());
            }

            Console.WriteLine($"old chain id: {TransactionUtils.ChainId(false)}, new chain id: {TransactionUtils.ChainId(true)}");
        }
Ejemplo n.º 8
0
        public void Setup()
        {
            var containerBuilder = new SimpleInjectorContainerBuilder();

            containerBuilder.RegisterInstanceCreator <IPeer, TcpPeer>();
            containerBuilder.RegisterSingleton(ConfigureLogger);
            containerBuilder.Register(typeof(ILogger <>), typeof(LoggerAdapter <>));
            var container = containerBuilder.Build();

            _uub = () => container.Resolve <IPeer>();
        }
Ejemplo n.º 9
0
        public void Setup()
        {
            _container?.Dispose();
            TestUtils.DeleteTestChainData();
            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.json"),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <ConfigModule>();
            _container     = containerBuilder.Build();
            _configManager = _container.Resolve <IConfigManager>();
        }
Ejemplo n.º 10
0
        public LARC20CompilationTest()
        {
            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.json"),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <StorageModule>();

            _container = containerBuilder.Build();
        }
Ejemplo n.º 11
0
        public void Setup()
        {
            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.json"),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <StorageModule>();
            _container    = containerBuilder.Build();
            _stateManager = _container.Resolve <IStateManager>();
        }
Ejemplo n.º 12
0
        public StorageBenchmark()
        {
            AppDomain.CurrentDomain.UnhandledException += (sender, exception) =>
            {
                Console.Error.WriteLine(exception);
            };

            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager("config.json", new RunOptions()));

            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <StorageModule>();

            _container = containerBuilder.Build();
        }
Ejemplo n.º 13
0
        public static void Main(string[] args)
        {
            var containerBuilder = new SimpleInjectorContainerBuilder();

            containerBuilder.RegisterModule <ClientModule>();
            containerBuilder.RegisterModule <ConfigurationModule>();
            containerBuilder.RegisterModule <LoggingModule>();
            containerBuilder.RegisterModule <NetworkModule>();

            var container = containerBuilder.Build();

            var bootstrapper = container.Resolve <IBootstrapper>();

            bootstrapper.Start(args);
        }
Ejemplo n.º 14
0
        public VirtualMachineBenchmark()
        {
            var containerBuilder =
                new SimpleInjectorContainerBuilder(new ConfigManager("config.json", new RunOptions()));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <ConsensusModule>();
            containerBuilder.RegisterModule <NetworkModule>();
            containerBuilder.RegisterModule <StorageModule>();
            containerBuilder.RegisterModule <RpcModule>();
            containerBuilder.RegisterModule <ConsoleModule>();

            _container = containerBuilder.Build();
        }
Ejemplo n.º 15
0
        private static void UpdateDb(DbOptions options)
        {
            var logLevel = Environment.GetEnvironmentVariable("LOG_LEVEL");

            if (logLevel != null)
            {
                logLevel = char.ToUpper(logLevel[0]) + logLevel.ToLower().Substring(1);
            }
            if (!new[] { "Trace", "Debug", "Info", "Warn", "Error", "Fatal" }.Contains(logLevel))
            {
                logLevel = "Trace";
            }
            LogManager.Configuration.Variables["consoleLogLevel"] = logLevel;
            LogManager.ReconfigExistingLoggers();

            if (options.type == "soft")
            {
                IRocksDbContext dbContext = new RocksDbContext();
                dbContext.CompactAll();
            }
            else if (options.type == "hard")
            {
                // consider taking a backup of the folder ChainLachain in case anything goes wrong
                if (options.depth <= 0)
                {
                    throw new ArgumentException("depth must be positive integer");
                }

                var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                              "./config.json",
                                                                              new RunOptions()
                                                                              ));
                containerBuilder.RegisterModule <StorageModule>();
                IContainer _container   = containerBuilder.Build();
                var        stateManager = _container.Resolve <IStateManager>();
                var        dbShrink     = _container.Resolve <IDbShrink>();
                var        dbContext    = _container.Resolve <IRocksDbContext>();

                dbShrink.ShrinkDb(options.depth, stateManager.LastApprovedSnapshot.Blocks.GetTotalBlockHeight(), options.consistencyCheck);
                dbContext.CompactAll();
            }
            else
            {
                throw new Exception("compaction should be of either 'soft' or 'hard' type");
            }
        }
Ejemplo n.º 16
0
        public void Setup()
        {
            _container?.Dispose();
            TestUtils.DeleteTestChainData();

            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config2.json"),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <StorageModule>();
            _container = containerBuilder.Build();


            _configManager        = _container.Resolve <IConfigManager>();
            _stateManager         = _container.Resolve <IStateManager>();
            _contractRegisterer   = _container.Resolve <IContractRegisterer>();
            _privateWallet        = _container.Resolve <IPrivateWallet>();
            _snapshotIndexer      = _container.Resolve <ISnapshotIndexRepository>();
            _systemContractReader = _container.Resolve <ISystemContractReader>();

            _transactionManager = _container.Resolve <ITransactionManager>();
            _transactionBuilder = _container.Resolve <ITransactionBuilder>();
            _transactionSigner  = _container.Resolve <ITransactionSigner>();
            _transactionPool    = _container.Resolve <ITransactionPool>();
            _blockManager       = _container.Resolve <IBlockManager>();

            // set chainId from config
            if (TransactionUtils.ChainId(false) == 0)
            {
                var chainId    = _configManager.GetConfig <NetworkConfig>("network")?.ChainId;
                var newChainId = _configManager.GetConfig <NetworkConfig>("network")?.ChainId;
                TransactionUtils.SetChainId((int)chainId !, (int)newChainId !);
                HardforkHeights.SetHardforkHeights(_configManager.GetConfig <HardforkConfig>("hardfork") ?? throw new InvalidOperationException());
            }
            ServiceBinder.BindService <GenericParameterAttributes>();

            _apiService = new AccountServiceWeb3(_stateManager, _snapshotIndexer, _contractRegisterer, _systemContractReader, _transactionPool);

            _transactionApiService = new TransactionServiceWeb3(_stateManager, _transactionManager, _transactionBuilder, _transactionSigner,
                                                                _transactionPool, _contractRegisterer, _privateWallet);

            _blockManager.TryBuildGenesisBlock();
        }
Ejemplo n.º 17
0
        public static void Main(string[] args)
        {
            var containerBuilder = new SimpleInjectorContainerBuilder();

            containerBuilder.RegisterModule <CoreModule>();
            containerBuilder.RegisterModule <ConfigurationModule>();
            containerBuilder.RegisterModule <LoggingModule>();
            containerBuilder.RegisterModule <SerializationModule>();
            containerBuilder.RegisterModule <PersistenceModule>();
            containerBuilder.RegisterModule <ClientModule>();
            containerBuilder.RegisterModule <WalletModule>();
            containerBuilder.RegisterModule <VMModule>();

            var container = containerBuilder.Build();

            var bootstrapper = container.Resolve <IBootstrapper>();

            bootstrapper.Start(args);
        }
Ejemplo n.º 18
0
        public BlockchainBenchmark()
        {
            if (Directory.Exists("ChainLachain"))
            {
                Directory.Delete("ChainLachain", true);
            }

            var containerBuilder =
                new SimpleInjectorContainerBuilder(new ConfigManager("config.json", new RunOptions()));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <ConsensusModule>();
            containerBuilder.RegisterModule <NetworkModule>();
            containerBuilder.RegisterModule <StorageModule>();
            containerBuilder.RegisterModule <RpcModule>();
            containerBuilder.RegisterModule <ConsoleModule>();

            _container = containerBuilder.Build();
        }
Ejemplo n.º 19
0
        public void BuildForNetwork(string?networkName = null)
        {
            Teardown();
            string configPath = "config";

            if (networkName != null)
            {
                configPath += "_";
                configPath += networkName;
            }
            configPath += ".json";
            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), configPath),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <ConfigModule>();
            _container     = containerBuilder.Build();
            _configManager = _container.Resolve <IConfigManager>();
        }
Ejemplo n.º 20
0
        public void Test_Genesis()
        {
            Console.WriteLine(Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config2.json"));
            var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager(
                                                                          Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config2.json"),
                                                                          new RunOptions()
                                                                          ));

            containerBuilder.RegisterModule <BlockchainModule>();
            containerBuilder.RegisterModule <ConfigModule>();
            containerBuilder.RegisterModule <StorageModule>();
            using var container = containerBuilder.Build();

            var blockManager = container.Resolve <IBlockManager>();
            var stateManager = container.Resolve <IStateManager>();

            Assert.IsTrue(blockManager.TryBuildGenesisBlock());
            var genesis =
                stateManager.LastApprovedSnapshot.Blocks.GetBlockByHeight(stateManager.LastApprovedSnapshot.Blocks
                                                                          .GetTotalBlockHeight()) ?? throw new Exception();

            Console.WriteLine(
                stateManager.LastApprovedSnapshot.Balances
                .GetBalance("0x6bc32575acb8754886dc283c2c8ac54b1bd93195".HexToUInt160())
                );
            Assert.AreEqual(0, genesis.Header.Index);
            Assert.AreEqual(
                "0x0000000000000000000000000000000000000000000000000000000000000000".HexToUInt256(),
                genesis.Header.PrevBlockHash
                );
            Console.WriteLine(
                genesis.Header.StateHash.ToHex()
                );
            Assert.AreEqual(
                "0xe1cc48aee243f602ec9ab6247a8bfe082b96d2a8c963497543c9ddc4c8029789",
                genesis.Header.StateHash.ToHex()
                );
            Assert.AreEqual(0, genesis.GasPrice);
            Assert.AreEqual(null, genesis.Multisig);
            Assert.AreEqual(0, genesis.Timestamp);
        }
        public void Init()
        {
            var container = new Container();

            containerBuilder = new SimpleInjectorContainerBuilder(container);
        }