コード例 #1
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>()
                );
        }
コード例 #2
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;
            }
        }
コード例 #3
0
 public IEnumerable <string> GetAddresses(IPrivateWallet wallet)
 {
     if (IsValidAddress(wallet.WalletAddress))
     {
         yield return(wallet.WalletAddress);
     }
 }
コード例 #4
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);
        }
コード例 #5
0
 public SystemContractReader(IStateManager stateManager, IPrivateWallet privateWallet, IContractRegisterer contractRegisterer)
 {
     _stateManager       = stateManager;
     _contractRegisterer = contractRegisterer;
     _nodeAddress        = privateWallet.EcdsaKeyPair.PublicKey.GetAddress();
     _nodePublicKey      = privateWallet.EcdsaKeyPair.PublicKey.Buffer.ToByteArray();
 }
コード例 #6
0
 public PrivateWallet(IPrivateWallet privateWallet)
 {
     ClientId          = privateWallet.ClientId;
     WalletAddress     = privateWallet.WalletAddress;
     WalletName        = privateWallet.WalletName;
     EncodedPrivateKey = privateWallet.EncodedPrivateKey;
     IsColdStorage     = privateWallet.IsColdStorage;
 }
コード例 #7
0
 public ValidatorServiceWeb3(
     IValidatorStatusManager validatorStatusManager, IPrivateWallet privateWallet,
     ITransactionBuilder transactionBuilder)
 {
     _validatorStatusManager = validatorStatusManager;
     _privateWallet          = privateWallet;
     _transactionBuilder     = transactionBuilder;
 }
 public PrivateWallet(IPrivateWallet privateWallet)
 {
     ClientId          = privateWallet.ClientId;
     WalletAddress     = privateWallet.WalletAddress;
     WalletName        = privateWallet.WalletName;
     EncodedPrivateKey = privateWallet.EncodedPrivateKey;
     IsColdStorage     = privateWallet.IsColdStorage;
     BlockchainType    = privateWallet.BlockchainType;
     Number            = privateWallet.Number;
 }
コード例 #9
0
ファイル: EraBroadcaster.cs プロジェクト: LAToken/lachain
 public EraBroadcaster(
     long era, IConsensusMessageDeliverer consensusMessageDeliverer,
     IPrivateWallet wallet, IValidatorAttendanceRepository validatorAttendanceRepository
     )
 {
     _consensusMessageDeliverer = consensusMessageDeliverer;
     _messageFactory            = new MessageFactory(wallet.EcdsaKeyPair);
     _wallet     = wallet;
     _terminated = false;
     _era        = era;
     _myIdx      = -1;
     _validatorAttendanceRepository = validatorAttendanceRepository;
 }
コード例 #10
0
 public static PrivateWalletEntity Create(IPrivateWallet privateWallet)
 {
     return(new PrivateWalletEntity
     {
         PartitionKey = GeneratePartitionKey(),
         RowKey = GenerateRowKey(privateWallet.WalletAddress),
         ClientId = privateWallet.ClientId,
         WalletName = privateWallet.WalletName,
         WalletAddress = privateWallet.WalletAddress,
         EncodedPrivateKey = privateWallet.EncodedPrivateKey,
         IsColdStorage = privateWallet.IsColdStorage,
         BlockchainType = privateWallet.BlockchainType,
         Number = privateWallet.Number
     });
 }
コード例 #11
0
ファイル: AccountService.cs プロジェクト: LAToken/lachain
 public AccountService(
     IStateManager stateManager,
     ITransactionManager transactionManager,
     ITransactionPool transactionPool,
     IPrivateWallet privateWallet,
     ITransactionBuilder transactionBuilder,
     ITransactionSigner transactionSigner
     )
 {
     _stateManager       = stateManager;
     _transactionManager = transactionManager;
     _transactionPool    = transactionPool;
     _privateWallet      = privateWallet;
     _transactionBuilder = transactionBuilder;
     _transactionSigner  = transactionSigner;
 }
コード例 #12
0
 public TransactionServiceWeb3(
     IStateManager stateManager,
     ITransactionManager transactionManager,
     ITransactionBuilder transactionBuilder,
     ITransactionSigner transactionSigner,
     ITransactionPool transactionPool,
     IContractRegisterer contractRegisterer,
     IPrivateWallet privateWallet)
 {
     _stateManager       = stateManager;
     _transactionManager = transactionManager;
     _transactionBuilder = transactionBuilder;
     _transactionSigner  = transactionSigner;
     _transactionPool    = transactionPool;
     _contractRegisterer = contractRegisterer;
     _privateWallet      = privateWallet;
 }
コード例 #13
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();
        }
コード例 #14
0
ファイル: FrontEndService.cs プロジェクト: LAToken/lachain
 public FrontEndService(
     IStateManager stateManager,
     ITransactionPool transactionPool,
     ITransactionSigner transactionSigner,
     ISystemContractReader systemContractReader,
     ILocalTransactionRepository localTransactionRepository,
     IValidatorStatusManager validatorStatusManager,
     IPrivateWallet privateWallet,
     ITransactionManager transactionManager
     )
 {
     _stateManager               = stateManager;
     _transactionPool            = transactionPool;
     _transactionSigner          = transactionSigner;
     _systemContractReader       = systemContractReader;
     _localTransactionRepository = localTransactionRepository;
     _validatorStatusManager     = validatorStatusManager;
     _privateWallet              = privateWallet;
     _transactionManager         = transactionManager;
 }
コード例 #15
0
 public RpcManager(
     ITransactionManager transactionManager,
     IBlockManager blockManager,
     IConfigManager configManager,
     IStateManager stateManager,
     ISnapshotIndexRepository snapshotIndexer,
     ITransactionPool transactionPool,
     IVirtualMachine virtualMachine,
     IContractRegisterer contractRegisterer,
     IValidatorStatusManager validatorStatusManager,
     ISystemContractReader systemContractReader,
     IBlockSynchronizer blockSynchronizer,
     ILocalTransactionRepository localTransactionRepository,
     ITransactionSigner transactionSigner,
     IPrivateWallet privateWallet,
     ITransactionBuilder transactionBuilder,
     IBlockchainEventFilter blockchainEventFilter,
     INetworkManager networkManager,
     INodeRetrieval nodeRetrieval,
     IConsensusManager consensusManager
     )
 {
     _transactionManager         = transactionManager;
     _blockManager               = blockManager;
     _configManager              = configManager;
     _stateManager               = stateManager;
     _snapshotIndexer            = snapshotIndexer;
     _transactionPool            = transactionPool;
     _contractRegisterer         = contractRegisterer;
     _validatorStatusManager     = validatorStatusManager;
     _systemContractReader       = systemContractReader;
     _blockSynchronizer          = blockSynchronizer;
     _localTransactionRepository = localTransactionRepository;
     _transactionSigner          = transactionSigner;
     _transactionBuilder         = transactionBuilder;
     _privateWallet              = privateWallet;
     _blockchainEventFilter      = blockchainEventFilter;
     _networkManager             = networkManager;
     _nodeRetrieval              = nodeRetrieval;
     _consensusManager           = consensusManager;
 }
コード例 #16
0
 public ValidatorStatusManager(
     ITransactionPool transactionPool,
     ITransactionSigner transactionSigner,
     ITransactionBuilder transactionBuilder,
     IPrivateWallet privateWallet,
     IStateManager stateManager,
     IValidatorAttendanceRepository validatorAttendanceRepository,
     ISystemContractReader systemContractReader
     )
 {
     _transactionPool               = transactionPool;
     _transactionSigner             = transactionSigner;
     _transactionBuilder            = transactionBuilder;
     _privateWallet                 = privateWallet;
     _stateManager                  = stateManager;
     _validatorAttendanceRepository = validatorAttendanceRepository;
     _systemContractReader          = systemContractReader;
     _withdrawTriggered             = false;
     _started       = false;
     _thread        = null;
     _stopRequested = false;
 }
コード例 #17
0
 public KeyGenManager(
     IBlockManager blockManager,
     ITransactionManager transactionManager,
     ITransactionBuilder transactionBuilder,
     IPrivateWallet privateWallet,
     ITransactionPool transactionPool,
     ITransactionSigner transactionSigner,
     IKeyGenRepository keyGenRepository,
     IBlockSynchronizer blockSynchronizer,
     ISystemContractReader systemContractReader
     )
 {
     _blockManager         = blockManager;
     _transactionManager   = transactionManager;
     _transactionBuilder   = transactionBuilder;
     _privateWallet        = privateWallet;
     _transactionPool      = transactionPool;
     _transactionSigner    = transactionSigner;
     _keyGenRepository     = keyGenRepository;
     _blockSynchronizer    = blockSynchronizer;
     _systemContractReader = systemContractReader;
     _blockManager.OnSystemContractInvoked += BlockManagerOnSystemContractInvoked;
 }
コード例 #18
0
ファイル: NetworkManager.cs プロジェクト: LAToken/lachain
 public NetworkManager(
     IConfigManager configManager, IPrivateWallet privateWallet
     )
     : base(
         configManager.GetConfig <NetworkConfig>("network") !,
コード例 #19
0
        public void Start(RunOptions options)
        {
            _blockManager       = _container.Resolve <IBlockManager>();
            _configManager      = _container.Resolve <IConfigManager>();
            _stateManager       = _container.Resolve <IStateManager>();
            _transactionBuilder = _container.Resolve <ITransactionBuilder>();
            _transactionPool    = _container.Resolve <ITransactionPool>();
            _transactionSigner  = _container.Resolve <ITransactionSigner>();
            _wallet             = _container.Resolve <IPrivateWallet>();

            var keyPair = _wallet.EcdsaKeyPair;

            Console.WriteLine("-------------------------------");
            Console.WriteLine("Private Key: " + keyPair.PrivateKey.Encode().ToHex());
            Console.WriteLine("Public Key: " + keyPair.PublicKey.EncodeCompressed().ToHex());
            Console.WriteLine("Address: " + Crypto.ComputeAddress(keyPair.PublicKey.EncodeCompressed()).ToHex());
            Console.WriteLine("-------------------------------");

            if (_blockManager.TryBuildGenesisBlock())
            {
                Console.WriteLine("Generated genesis block");
            }

            var genesisBlock = _stateManager.LastApprovedSnapshot.Blocks.GetBlockByHeight(0);

            Console.WriteLine("Genesis Block: " + genesisBlock !.Hash.ToHex());
            Console.WriteLine($" + prevBlockHash: {genesisBlock.Header.PrevBlockHash.ToHex()}");
            Console.WriteLine($" + merkleRoot: {genesisBlock.Header.MerkleRoot.ToHex()}");
            Console.WriteLine($" + nonce: {genesisBlock.Header.Nonce}");
            Console.WriteLine($" + transactionHashes: {genesisBlock.TransactionHashes.Count}");
            foreach (var s in genesisBlock.TransactionHashes)
            {
                Console.WriteLine($" + - {s.ToHex()}");
            }
            Console.WriteLine($" + hash: {genesisBlock.Hash.ToHex()}");

            var address1 = "0xe3c7a20ee19c0107b9121087bcba18eb4dcb8576".HexToUInt160();
            var address2 = "0x6bc32575acb8754886dc283c2c8ac54b1bd93195".HexToUInt160();

            Console.WriteLine("-------------------------------");
            // Console.WriteLine("Current block header height: " + blockchainContext.CurrentBlockHeight);
            Console.WriteLine("-------------------------------");
            Console.WriteLine("Balance of LA 0x3e: " +
                              _stateManager.LastApprovedSnapshot.Balances.GetBalance(address1));
            Console.WriteLine("Balance of LA 0x6b: " +
                              _stateManager.LastApprovedSnapshot.Balances.GetBalance(address2));
            Console.WriteLine("-------------------------------");

            Logger.LogInformation($"Setting chainId");
            var chainId    = _configManager.GetConfig <NetworkConfig>("network")?.ChainId ?? 42;
            var newChainId = _configManager.GetConfig <NetworkConfig>("network")?.NewChainId ?? chainId;

            TransactionUtils.SetChainId((int)chainId, newChainId);

            // _BenchTxProcessing(_transactionBuilder, _transactionSigner, keyPair);
            // _BenchOneTxInBlock(_transactionBuilder, _transactionSigner, keyPair);

            Console.WriteLine("---------------START - TX POOL BENCHMARK----------------");
            _Bench_Tx_Pool(_transactionBuilder, _transactionSigner, keyPair);
            Console.WriteLine("---------------END - TX POOL BENCHMARK----------------");

            Console.WriteLine("---------------START - BLOCK EMULATE BENCHMARK----------------");
            _Bench_Emulate_Block(_transactionBuilder, _transactionSigner, keyPair);
            Console.WriteLine("---------------END - BLOCK EMULATE BENCHMARK----------------");

            Console.WriteLine("---------------START - BLOCK EMULATE + EXECUTE BENCHMARK----------------");
            _Bench_Emulate_Execute_Tx(_transactionBuilder, _transactionSigner, keyPair);
            Console.WriteLine("---------------END - BLOCK EMULATE + EXECUTE BENCHMARK----------------");

            Console.WriteLine("---------------START - MULTIPLE BLOCKS EMULATE + EXECUTE BENCHMARK----------------");
            _Bench_Execute_Blocks(_transactionBuilder, _transactionSigner, keyPair);
            Console.WriteLine("---------------END - MULTIPLE BLOCKS EMULATE + EXECUTE BENCHMARK----------------");

            Environment.Exit(0);
        }