/// <summary> /// Creates a new miner instance. /// </summary> /// <param name="id"></param> /// <param name="extraNonce"></param> /// <param name="connection"></param> /// <param name="pool"></param> /// <param name="minerManager"></param> /// <param name="storageLayer"></param> public StratumMiner(int id, UInt32 extraNonce, IConnection connection, IPool pool, IMinerManager minerManager, IStorageLayer storageLayer) { Id = id; // the id of the miner. ExtraNonce = extraNonce; Connection = connection; // the underlying connection. Pool = pool; _minerManager = minerManager; _storageLayer = storageLayer; Subscribed = false; // miner has to subscribe. Authenticated = false; // miner has to authenticate. _logger = Log.ForContext<StratumMiner>().ForContext("Component", pool.Config.Coin.Name); _packetLogger = LogManager.PacketLogger.ForContext<StratumMiner>().ForContext("Component", pool.Config.Coin.Name); _rpcResultHandler = callback => { var asyncData = ((JsonRpcStateAsync)callback); // get the async data. var result = asyncData.Result + "\n"; // read the result. var response = Encoding.UTF8.GetBytes(result); // set the response. Connection.Send(response); // send the response. _packetLogger.Verbose("tx: {0}", result.PrettifyJson()); }; }
/// <summary> /// Creates a new miner instance. /// </summary> /// <param name="id"></param> /// <param name="extraNonce"></param> /// <param name="connection"></param> /// <param name="pool"></param> /// <param name="minerManager"></param> /// <param name="storageLayer"></param> public StratumMiner(int id, UInt32 extraNonce, IConnection connection, IPool pool, IMinerManager minerManager, IStorageLayer storageLayer) { Id = id; // the id of the miner. ExtraNonce = extraNonce; Connection = connection; // the underlying connection. Pool = pool; _minerManager = minerManager; _storageLayer = storageLayer; Subscribed = false; // miner has to subscribe. Authenticated = false; // miner has to authenticate. _logger = Log.ForContext <StratumMiner>().ForContext("Component", pool.Config.Coin.Name); _packetLogger = LogManager.PacketLogger.ForContext <StratumMiner>().ForContext("Component", pool.Config.Coin.Name); _rpcResultHandler = callback => { var asyncData = ((JsonRpcStateAsync)callback); // get the async data. var result = asyncData.Result + "\n"; // read the result. var response = Encoding.UTF8.GetBytes(result); // set the response. Connection.Send(response); // send the response. _packetLogger.Verbose("tx: {0}", result.PrettifyJson()); }; }
public VanillaServer(IPool pool, IMinerManager minerManager, IJobManager jobManager, ICoinConfig coinConfig) { _pool = pool; _minerManager = minerManager; _jobManager = jobManager; _logger = Log.ForContext<VanillaServer>().ForContext("Component", coinConfig.Name); }
private void InitManagers() { //try //{ var storage = _objectFactory.GetStorage(Storages.Redis, Config); _minerManager = _objectFactory.GetMinerManager(Config, _daemonClient); var jobTracker = _objectFactory.GetJobTracker(); var blockProcessor = _objectFactory.GetBlockProcessor(Config, _daemonClient); _shareManager = _objectFactory.GetShareManager(Config, _daemonClient, jobTracker, storage, blockProcessor); var vardiffManager = _objectFactory.GetVardiffManager(Config, _shareManager); _banningManager = _objectFactory.GetBanManager(Config, _shareManager); _jobManager = _objectFactory.GetJobManager(Config, _daemonClient, jobTracker, _shareManager, _minerManager, _hashAlgorithm); _jobManager.Initialize(InstanceId); var paymentProcessor = _objectFactory.GetPaymentProcessor(Config, _daemonClient, storage, blockProcessor); paymentProcessor.Initialize(Config.Payments); var latestBlocks = _objectFactory.GetLatestBlocks(storage); var blockStats = _objectFactory.GetBlockStats(latestBlocks, storage); Statistics = _objectFactory.GetPerPoolStats(Config, _daemonClient, _minerManager, _hashAlgorithm, blockStats, storage); //} //catch (Exception e) //{ // _logger.Error("Pool initialization error: {0:l}", e.Message); //} }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <param name="pool"></param> /// <param name="minerManager"></param> public GetworkMiner(int id, IPool pool, IMinerManager minerManager) { Id = id; // the id of the miner. Pool = pool; _minerManager = minerManager; Authenticated = false; // miner has to authenticate. Software = MinerSoftware.Unknown; SoftwareVersion = new Version(); _logger = Log.ForContext<GetworkMiner>().ForContext("Component", pool.Config.Coin.Name); _packetLogger = LogManager.PacketLogger.ForContext<GetworkMiner>().ForContext("Component", pool.Config.Coin.Name); _rpcResultHandler = callback => { var asyncData = ((JsonRpcStateAsync) callback); var result = asyncData.Result; var response = Encoding.UTF8.GetBytes(result); var context = (GetworkContext) asyncData.AsyncState; context.Response.ContentType = "application/json"; context.Response.ContentEncoding = Encoding.UTF8; context.Response.ContentLength64 = response.Length; context.Response.OutputStream.Write(response, 0, response.Length); _packetLogger.Verbose("tx: {0}", result.PrettifyJson()); }; }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <param name="pool"></param> /// <param name="minerManager"></param> public GetworkMiner(int id, IPool pool, IMinerManager minerManager) { Id = id; // the id of the miner. Pool = pool; _minerManager = minerManager; Authenticated = false; // miner has to authenticate. Software = MinerSoftware.Unknown; SoftwareVersion = new Version(); _logger = Log.ForContext <GetworkMiner>().ForContext("Component", pool.Config.Coin.Name); _packetLogger = LogManager.PacketLogger.ForContext <GetworkMiner>().ForContext("Component", pool.Config.Coin.Name); _rpcResultHandler = callback => { var asyncData = ((JsonRpcStateAsync)callback); var result = asyncData.Result; var response = Encoding.UTF8.GetBytes(result); var context = (GetworkContext)asyncData.AsyncState; context.Response.ContentType = "application/json"; context.Response.ContentEncoding = Encoding.UTF8; context.Response.ContentLength64 = response.Length; context.Response.OutputStream.Write(response, 0, response.Length); _packetLogger.Verbose("tx: {0}", result.PrettifyJson()); }; }
public VanillaServer(IPoolConfig poolConfig, IPool pool, IMinerManager minerManager, IJobManager jobManager) { _pool = pool; _minerManager = minerManager; _jobManager = jobManager; _logger = Log.ForContext <VanillaServer>().ForContext("Component", poolConfig.Coin.Name); }
/// <summary> /// Initializes a new instance of the <see cref="StratumServer"/> class. /// </summary> /// <param name="pool"></param> /// <param name="minerManager">The miner manager.</param> /// <param name="jobManager"></param> /// <param name="banManager"></param> /// <param name="poolConfig"></param> public StratumServer(IPoolConfig poolConfig, IPool pool, IMinerManager minerManager, IJobManager jobManager, IBanManager banManager) { _pool = pool; _minerManager = minerManager; _jobManager = jobManager; _banManager = banManager; _logger = Log.ForContext<StratumServer>().ForContext("Component", poolConfig.Coin.Name); }
/// <summary> /// Initializes a new instance of the <see cref="StratumServer"/> class. /// </summary> /// <param name="pool"></param> /// <param name="minerManager">The miner manager.</param> /// <param name="jobManager"></param> /// <param name="banManager"></param> /// <param name="poolConfig"></param> public StratumServer(IPoolConfig poolConfig, IPool pool, IMinerManager minerManager, IJobManager jobManager, IBanManager banManager) { _pool = pool; _minerManager = minerManager; _jobManager = jobManager; _banManager = banManager; _logger = Log.ForContext <StratumServer>().ForContext("Component", poolConfig.Coin.Name); }
public JobManager(IDaemonClient daemonClient, IJobTracker jobTracker, IShareManager shareManager, IMinerManager minerManager, IHashAlgorithm hashAlgorithm) { _daemonClient = daemonClient; _jobTracker = jobTracker; _shareManager = shareManager; _minerManager = minerManager; _hashAlgorithm = hashAlgorithm; _jobCounter = new JobCounter(); }
/// <summary> /// Gets the specified service name. /// </summary> /// <param name="serverName">Name of the service.</param> /// <param name="pool"></param> /// <param name="minerManager">The miner manager.</param> /// <returns></returns> public IMiningServer Get(string serverName, IPool pool, IMinerManager minerManager, IJobManager jobManager) { var @params = new NamedParameterOverloads { {"pool", pool}, {"minerManager", minerManager}, {"jobManager", jobManager} }; return _applicationContext.Container.Resolve<IMiningServer>(serverName, @params); }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <param name="pool"></param> /// <param name="minerManager"></param> /// <param name="logManager"></param> public VanillaMiner(int id, IPool pool, IMinerManager minerManager) { Id = id; // the id of the miner. Pool = pool; _minerManager = minerManager; Authenticated = false; // miner has to authenticate. _logger = LogManager.PacketLogger.ForContext<VanillaMiner>().ForContext("Component", pool.Config.Coin.Name); }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <param name="minerManager"></param> public VanillaMiner(int id, IMinerManager minerManager) { Id = id; // the id of the miner. _minerManager = minerManager; Difficulty = new Difficulty(16); Subscribed = true; // vanilla miners are subscribed by default. Authenticated = false; // miner has to authenticate. SupportsJobNotifications = false; // vanilla miner's doesn't support new mining job notifications. }
public PerPool(IPoolConfig poolConfig, IDaemonClient daemonClient,IMinerManager minerManager, IHashAlgorithm hashAlgorithm, IBlocks blockStatistics, IStorage storage) { Config = poolConfig; _daemonClient = daemonClient; _minerManager = minerManager; Blocks = blockStatistics; _storage = storage; _response = new ExpandoObject(); _shareMultiplier = Math.Pow(2, 32) / hashAlgorithm.Multiplier; }
/// <summary> /// Creates a new miner instance. /// </summary> /// <param name="id"></param> /// <param name="extraNonce"></param> /// <param name="connection"></param> /// <param name="pool"></param> /// <param name="minerManager"></param> public StratumMiner(int id, UInt32 extraNonce, IConnection connection, IPool pool, IMinerManager minerManager) { Id = id; // the id of the miner. ExtraNonce = extraNonce; Connection = connection; // the underlying connection. _minerManager = minerManager; Pool = pool; Difficulty = new Difficulty(16); // set miner difficulty. Subscribed = false; // miner has to subscribe. Authenticated = false; // miner has to authenticate. SupportsJobNotifications = true; // stratum miner'ssupports new mining job notifications. }
/// <summary> /// Gets the specified daemon client. /// </summary> /// <param name="daemonClient">The daemon client.</param> /// <param name="jobTracker"></param> /// <param name="shareManager"></param> /// <param name="minerManager">The miner manager.</param> /// <param name="hashAlgorithm"></param> /// <returns></returns> public IJobManager Get(IDaemonClient daemonClient, IJobTracker jobTracker, IShareManager shareManager, IMinerManager minerManager, IHashAlgorithm hashAlgorithm) { var @params = new NamedParameterOverloads { {"daemonClient", daemonClient}, {"jobTracker", jobTracker}, {"shareManager", shareManager}, {"minerManager", minerManager}, {"hashAlgorithm", hashAlgorithm} }; return _applicationContext.Container.Resolve<IJobManager>(@params); }
public PerPool(IPoolConfig poolConfig, IConfigManager configManager, IDaemonClient daemonClient, IMinerManager minerManager, IHashAlgorithm hashAlgorithm, IBlocksCount blockStatistics, IStorage storage) { Config = poolConfig; _statisticsConfig = configManager.WebServerConfig.Statistics; _daemonClient = daemonClient; _minerManager = minerManager; _storage = storage; Blocks = blockStatistics; Workers = new Dictionary <string, double>(); _response = new ExpandoObject(); _shareMultiplier = Math.Pow(2, 32) / hashAlgorithm.Multiplier; }
private Timer _reBroadcastTimer; // timer for rebroadcasting jobs after an pre-configured idle perioud. #endregion Fields #region Constructors public JobManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJobTracker jobTracker, IShareManager shareManager, IMinerManager minerManager, IHashAlgorithm hashAlgorithm) { _daemonClient = daemonClient; _jobTracker = jobTracker; _shareManager = shareManager; _minerManager = minerManager; _hashAlgorithm = hashAlgorithm; _poolConfig = poolConfig; _jobCounter = new JobCounter(); // todo make this ioc based too. _logger = Log.ForContext<JobManager>().ForContext("Component", poolConfig.Coin.Name); }
private Timer _blockPollerTimer; // timer for polling new blocks. public JobManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJobTracker jobTracker, IShareManager shareManager, IMinerManager minerManager, IHashAlgorithm hashAlgorithm) { _daemonClient = daemonClient; _jobTracker = jobTracker; _shareManager = shareManager; _minerManager = minerManager; _hashAlgorithm = hashAlgorithm; _poolConfig = poolConfig; _jobCounter = new JobCounter(); // todo make this ioc based too. _logger = Log.ForContext <JobManager>().ForContext("Component", poolConfig.Coin.Name); }
/// <summary> /// Creates a new miner instance. /// </summary> /// <param name="id"></param> /// <param name="extraNonce"></param> /// <param name="connection"></param> /// <param name="pool"></param> /// <param name="minerManager"></param> /// <param name="logManager"></param> public StratumMiner(int id, UInt32 extraNonce, IConnection connection, IPool pool, IMinerManager minerManager) { Id = id; // the id of the miner. ExtraNonce = extraNonce; Connection = connection; // the underlying connection. _minerManager = minerManager; Pool = pool; Difficulty = 16; // set miner difficulty. Subscribed = false; // miner has to subscribe. Authenticated = false; // miner has to authenticate. _logger = LogManager.PacketLogger.ForContext<StratumMiner>().ForContext("Component", pool.Config.Coin.Name); }
public IJobManager GetJobManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJobTracker jobTracker, IShareManager shareManager, IMinerManager minerManager, IHashAlgorithm hashAlgorithm) { var @params = new NamedParameterOverloads { { "poolConfig", poolConfig }, { "daemonClient", daemonClient }, { "jobTracker", jobTracker }, { "shareManager", shareManager }, { "minerManager", minerManager }, { "hashAlgorithm", hashAlgorithm }, }; return(_applicationContext.Container.Resolve <IJobManager>(@params)); }
public JobManager(string pool, IDaemonClient daemonClient, IJobTracker jobTracker, IShareManager shareManager, IMinerManager minerManager, IHashAlgorithm hashAlgorithm, IWalletConfig walletConfig, IRewardsConfig rewardsConfig) { _daemonClient = daemonClient; _jobTracker = jobTracker; _shareManager = shareManager; _minerManager = minerManager; _hashAlgorithm = hashAlgorithm; _walletConfig = walletConfig; _rewardsConfig = rewardsConfig; _jobCounter = new JobCounter(); // todo make this ioc based too. _logger = Log.ForContext<JobManager>().ForContext("Component", pool); }
public VanillaServer(IPool pool, IMinerManager minerManager, IJobManager jobManager) { _pool = pool; _minerManager = minerManager; _jobManager = jobManager; }
private void InitManagers() { // init the algorithm _hashAlgorithm = _objectFactory.GetHashAlgorithm(Config.Coin.Algorithm); _storage = _objectFactory.GetStorage(Storages.Redis, Config); _paymentProcessor = _objectFactory.GetPaymentProcessor(Config.Coin.Name, _daemonClient, _storage, Config.Wallet); _paymentProcessor.Initialize(Config.Payments); _minerManager = _objectFactory.GetMiningManager(Config.Coin.Name, _daemonClient); _jobTracker = _objectFactory.GetJobTracker(); _shareManager = _objectFactory.GetShareManager(Config.Coin.Name, _daemonClient, _jobTracker, _storage); _vardiffManager = _objectFactory.GetVardiffManager(Config.Coin.Name, _shareManager, Config.Stratum.Vardiff); _banningManager = _objectFactory.GetBanManager(Config.Coin.Name, _shareManager, Config.Banning); _jobManager = _objectFactory.GetJobManager(Config.Coin.Name, _daemonClient, _jobTracker, _shareManager, _minerManager, _hashAlgorithm, Config.Wallet, Config.Rewards); _jobManager.Initialize(InstanceId); var latestBlocks = _objectFactory.GetLatestBlocks(_storage); var blockStats = _objectFactory.GetBlockStats(latestBlocks, _storage); Statistics = _objectFactory.GetPerPoolStats(Config, _daemonClient, _minerManager, _hashAlgorithm, blockStats, _storage); }
/// <summary> /// Initializes a new instance of the <see cref="StratumServer"/> class. /// </summary> /// <param name="pool"></param> /// <param name="minerManager">The miner manager.</param> /// <param name="jobManager"></param> public StratumServer(IPool pool, IMinerManager minerManager, IJobManager jobManager) { _pool = pool; _minerManager = minerManager; _jobManager = jobManager; }
public IMiningServer GetMiningServer(string type, IPoolConfig poolConfig, IPool pool, IMinerManager minerManager, IJobManager jobManager, IBanManager banManager) { var @params = new NamedParameterOverloads { { "poolConfig", poolConfig }, { "pool", pool }, { "minerManager", minerManager }, { "jobManager", jobManager }, { "banManager", banManager }, }; return(_applicationContext.Container.Resolve <IMiningServer>(type, @params)); }
private void InitManagers() { _storageManager = _storageManagerFactory.Get(Storages.Redis); _minerManager = _minerManagerFactory.Get(_daemonClient); _jobTracker = _jobTrackerFactory.Get(); _shareManager = _shareManagerFactory.Get(_daemonClient, _jobTracker, _storageManager); _jobManager = _jobManagerFactory.Get(_daemonClient, _jobTracker, _shareManager, _minerManager, _hashAlgorithmFactory.Get(Config.Coin.Algorithm)); _jobManager.Initialize(InstanceId); }
public IMiningServer GetMiningServer(string type, IPoolConfig poolConfig, IPool pool, IMinerManager minerManager, IJobManager jobManager, IBanManager banManager) { var @params = new NamedParameterOverloads { {"poolConfig", poolConfig}, {"pool", pool}, {"minerManager", minerManager}, {"jobManager", jobManager}, {"banManager", banManager}, }; return _applicationContext.Container.Resolve<IMiningServer>(type, @params); }
public IPerPool GetPerPoolStats(IPoolConfig poolConfig, IDaemonClient daemonClient, IMinerManager minerManager, IHashAlgorithm hashAlgorithm, IBlocksCount blockStatistics, IStorage storage) { var @params = new NamedParameterOverloads { { "poolConfig", poolConfig }, { "daemonClient", daemonClient }, { "minerManager", minerManager }, { "hashAlgorithm", hashAlgorithm }, { "blockStatistics", blockStatistics }, { "storage", storage }, }; return(_applicationContext.Container.Resolve <IPerPool>(@params)); }
public IJobManager GetJobManager(string pool, IDaemonClient daemonClient, IJobTracker jobTracker, IShareManager shareManager, IMinerManager minerManager, IHashAlgorithm hashAlgorithm, IWalletConfig walletConfig, IRewardsConfig rewardsConfig) { var @params = new NamedParameterOverloads { {"pool", pool}, {"daemonClient", daemonClient}, {"jobTracker", jobTracker}, {"shareManager", shareManager}, {"minerManager", minerManager}, {"hashAlgorithm", hashAlgorithm}, {"walletConfig", walletConfig}, {"rewardsConfig", rewardsConfig}, }; return _applicationContext.Container.Resolve<IJobManager>(@params); }
/// <summary> /// Initialize mock objects. /// </summary> public PoolTests() { _jobManagerFactory = Substitute.For<IJobManagerFactory>(); _jobTrackerFactory = Substitute.For<IJobTrackerFactory>(); _hashAlgorithmFactory = Substitute.For<IHashAlgorithmFactory>(); _shareManagerFactory = Substitute.For<IShareManagerFactory>(); _minerManagerFactory = Substitute.For<IMinerManagerFactory>(); _serverFactory = Substitute.For<IServerFactory>(); _serviceFactory = Substitute.For<IServiceFactory>(); _storageManagerFactory = Substitute.For<IStorageFactory>(); _globalConfigFactory = Substitute.For<IGlobalConfigFactory>(); _daemonClient = Substitute.For<IDaemonClient>(); _minerManager = Substitute.For<IMinerManager>(); _jobManager = Substitute.For<IJobManager>(); _jobTracker = Substitute.For<IJobTracker>(); _shareManager = Substitute.For<IShareManager>(); _miningServer = Substitute.For<IMiningServer>(); _rpcService = Substitute.For<IRpcService>(); _storage = Substitute.For<IStorage>(); }
public GetworkServer(IPoolConfig poolConfig, IPool pool, IMinerManager minerManager, IJobManager jobManager) { _pool = pool; _minerManager = minerManager; _logger = Log.ForContext<GetworkServer>().ForContext("Component", poolConfig.Coin.Name); }
public IPerPool GetPerPoolStats(IPoolConfig poolConfig, IDaemonClient daemonClient, IMinerManager minerManager, IHashAlgorithm hashAlgorithm, IBlocks blockStatistics, IStorage storage) { var @params = new NamedParameterOverloads { {"poolConfig", poolConfig}, {"daemonClient", daemonClient}, {"minerManager",minerManager}, {"hashAlgorithm", hashAlgorithm}, {"blockStatistics", blockStatistics}, {"storage", storage}, }; return _applicationContext.Container.Resolve<IPerPool>(@params); }