コード例 #1
0
        public async Task Execute(CancellationToken cancellationToken)
        {
            // why is the await Task.Run here?
            await Task.Run(() =>
            {
                IKeyStoreConfig keyStoreConfig = _context.Config <IKeyStoreConfig>();
                INetworkConfig networkConfig   = _context.Config <INetworkConfig>();

                AesEncrypter encrypter = new AesEncrypter(
                    keyStoreConfig,
                    _context.LogManager);

                _context.KeyStore = new FileKeyStore(
                    keyStoreConfig,
                    _context.EthereumJsonSerializer,
                    encrypter,
                    _context.CryptoRandom,
                    _context.LogManager);

                _context.Wallet = _context.Config <IInitConfig>() switch
                {
                    var config when config.EnableUnsecuredDevWallet&& config.KeepDevWalletInMemory
                    => new DevWallet(_context.Config <IWalletConfig>(), _context.LogManager),
                    var config when config.EnableUnsecuredDevWallet&& !config.KeepDevWalletInMemory
                    => new DevKeyStoreWallet(_context.KeyStore, _context.LogManager),
                    _ => NullWallet.Instance
                };

                INodeKeyManager nodeKeyManager = new NodeKeyManager(_context.CryptoRandom, _context.KeyStore, keyStoreConfig, _context.LogManager);
                _context.NodeKey = nodeKeyManager.LoadNodeKey();
                _context.Enode   = new Enode(_context.NodeKey.PublicKey, IPAddress.Parse(networkConfig.ExternalIp), networkConfig.P2PPort);

                _context.LogManager.SetGlobalVariable("enode", _context.Enode.ToString());
            });
        }
コード例 #2
0
        private void SetupKeyStore()
        {
            var encrypter = new AesEncrypter(
                _configProvider.GetConfig <IKeyStoreConfig>(),
                _logManager);

            _keyStore = new FileKeyStore(
                _configProvider.GetConfig <IKeyStoreConfig>(),
                _ethereumJsonSerializer,
                encrypter,
                _cryptoRandom,
                _logManager);

            switch (_initConfig)
            {
            case var _ when HiveEnabled:
                // todo: use the keystore wallet here
                _wallet = new HiveWallet();
                break;

            case var config when config.EnableUnsecuredDevWallet && config.KeepDevWalletInMemory:
                _wallet = new DevWallet(_configProvider.GetConfig <IWalletConfig>(), _logManager);
                break;

            case var config when config.EnableUnsecuredDevWallet && !config.KeepDevWalletInMemory:
                _wallet = new DevKeyStoreWallet(_keyStore, _logManager);
                break;

            default:
                _wallet = new NullWallet();
                break;
            }

            INodeKeyManager nodeKeyManager = new NodeKeyManager(_cryptoRandom, _keyStore, _configProvider.GetConfig <IKeyStoreConfig>(), _logManager);

            _nodeKey = nodeKeyManager.LoadNodeKey();

            var ipVariable = Environment.GetEnvironmentVariable("NETHERMIND_ENODE_IPADDRESS");
            var localIp    = string.IsNullOrWhiteSpace(ipVariable)
                ? _networkHelper.GetLocalIp()
                : IPAddress.Parse(ipVariable);

            _enode = new Enode(_nodeKey.PublicKey, localIp, _initConfig.P2PPort);
        }
コード例 #3
0
        public async Task Execute(CancellationToken cancellationToken)
        {
            var(_get, _set) = _api.ForInit;
            // why is the await Task.Run here?
            await Task.Run(() =>
            {
                IKeyStoreConfig keyStoreConfig = _get.Config <IKeyStoreConfig>();
                INetworkConfig networkConfig   = _get.Config <INetworkConfig>();

                AesEncrypter encrypter = new AesEncrypter(
                    keyStoreConfig,
                    _get.LogManager);

                var keyStore = _set.KeyStore = new FileKeyStore(
                    keyStoreConfig,
                    _get.EthereumJsonSerializer,
                    encrypter,
                    _get.CryptoRandom,
                    _get.LogManager,
                    new PrivateKeyStoreIOSettingsProvider(keyStoreConfig));

                _set.Wallet = _get.Config <IInitConfig>() switch
                {
                    var config when config.EnableUnsecuredDevWallet&& config.KeepDevWalletInMemory => new DevWallet(_get.Config <IWalletConfig>(), _get.LogManager),
                    var config when config.EnableUnsecuredDevWallet&& !config.KeepDevWalletInMemory => new DevKeyStoreWallet(_get.KeyStore, _get.LogManager),
                    _ => new ProtectedKeyStoreWallet(keyStore, new ProtectedPrivateKeyFactory(_get.CryptoRandom, _get.Timestamper), _get.Timestamper, _get.LogManager),
                };

                new AccountUnlocker(keyStoreConfig, _get.Wallet, _get.LogManager, new KeyStorePasswordProvider(keyStoreConfig))
                .UnlockAccounts();

                var passwordProvider = new KeyStorePasswordProvider(keyStoreConfig)
                                       .OrReadFromConsole($"Provide password for validator account { keyStoreConfig.BlockAuthorAccount}");

                INodeKeyManager nodeKeyManager = new NodeKeyManager(_get.CryptoRandom, _get.KeyStore, keyStoreConfig, _get.LogManager, passwordProvider, _get.FileSystem);
                var nodeKey            = _set.NodeKey = nodeKeyManager.LoadNodeKey();
                _set.OriginalSignerKey = nodeKeyManager.LoadSignerKey();
                var enode = _set.Enode = new Enode(nodeKey.PublicKey, IPAddress.Parse(networkConfig.ExternalIp), networkConfig.P2PPort);

                _get.LogManager.SetGlobalVariable("enode", enode.ToString());
            }, cancellationToken);
        }
コード例 #4
0
ファイル: EthereumRunner.cs プロジェクト: vicnaum/nethermind
        private void SetupKeyStore()
        {
            var encrypter = new AesEncrypter(
                _configProvider.GetConfig <IKeyStoreConfig>(),
                _logManager);

            _keyStore = new FileKeyStore(
                _configProvider.GetConfig <IKeyStoreConfig>(),
                _ethereumJsonSerializer,
                encrypter,
                _cryptoRandom,
                _logManager);

            switch (_initConfig)
            {
            case var _ when HiveEnabled:
                // todo: use the keystore wallet here
                _wallet = new HiveWallet();
                break;

            case var config when config.EnableUnsecuredDevWallet && config.KeepDevWalletInMemory:
                _wallet = new DevWallet(_configProvider.GetConfig <IWalletConfig>(), _logManager);
                break;

            case var config when config.EnableUnsecuredDevWallet && !config.KeepDevWalletInMemory:
                _wallet = new DevKeyStoreWallet(_keyStore, _logManager);
                break;

            default:
                _wallet = new NullWallet();
                break;
            }

            INodeKeyManager nodeKeyManager = new NodeKeyManager(_cryptoRandom, _keyStore, _configProvider.GetConfig <IKeyStoreConfig>(), _logManager);

            _nodeKey = nodeKeyManager.LoadNodeKey();
            _enode   = new Enode(_nodeKey.PublicKey, IPAddress.Parse(_networkConfig.ExternalIp), _networkConfig.P2PPort);
        }
コード例 #5
0
        public async Task Execute(CancellationToken cancellationToken)
        {
            // why is the await Task.Run here?
            await Task.Run(() =>
            {
                IKeyStoreConfig keyStoreConfig = _context.Config <IKeyStoreConfig>();
                INetworkConfig networkConfig   = _context.Config <INetworkConfig>();

                AesEncrypter encrypter = new AesEncrypter(
                    keyStoreConfig,
                    _context.LogManager);

                _context.KeyStore = new FileKeyStore(
                    keyStoreConfig,
                    _context.EthereumJsonSerializer,
                    encrypter,
                    _context.CryptoRandom,
                    _context.LogManager);

                _context.Wallet = _context.Config <IInitConfig>() switch
                {
                    var config when config.EnableUnsecuredDevWallet&& config.KeepDevWalletInMemory => new DevWallet(_context.Config <IWalletConfig>(), _context.LogManager),
                    var config when config.EnableUnsecuredDevWallet&& !config.KeepDevWalletInMemory => new DevKeyStoreWallet(_context.KeyStore, _context.LogManager),
                    _ => new ProtectedKeyStoreWallet(_context.KeyStore, new ProtectedPrivateKeyFactory(_context.CryptoRandom, _context.Timestamper), _context.Timestamper, _context.LogManager),
                };

                new AccountUnlocker(keyStoreConfig, _context.Wallet, new FileSystem(), _context.LogManager).UnlockAccounts();

                INodeKeyManager nodeKeyManager = new NodeKeyManager(_context.CryptoRandom, _context.KeyStore, keyStoreConfig, _context.LogManager);
                _context.NodeKey           = nodeKeyManager.LoadNodeKey();
                _context.OriginalSignerKey = nodeKeyManager.LoadSignerKey();
                _context.Enode             = new Enode(_context.NodeKey.PublicKey, IPAddress.Parse(networkConfig.ExternalIp), networkConfig.P2PPort);

                _context.LogManager.SetGlobalVariable("enode", _context.Enode.ToString());
            }, cancellationToken);
        }