コード例 #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ShareManager" /> class.
 /// </summary>
 /// <param name="pool"></param>
 /// <param name="daemonClient"></param>
 /// <param name="jobTracker"></param>
 /// <param name="storage"></param>
 public ShareManager(string pool, IDaemonClient daemonClient, IJobTracker jobTracker, IStorage storage)
 {
     _daemonClient = daemonClient;
     _jobTracker = jobTracker;
     _storage = storage;
     _logger = Log.ForContext<ShareManager>().ForContext("Component", pool);
 }
コード例 #2
0
        /**
         *  The process of starting a job has 2 phases
         *  In the first phase the tracker gets all metadada and code to be used needed for job execution
         *  In the second phase the job is submitted
         *
         */

        public bool newJob(string trackerUrl, string inputFilePath, string outputDir, int numOfSplits, string mapClass, string mapDll)
        {
            IJobTracker tracker = (IJobTracker)Activator.GetObject(typeof(IJobTracker), trackerUrl);

            try
            {
                if (!outputDir.EndsWith("\\"))
                {
                    outputDir += "\\";
                }

                this.openFile(inputFilePath);
                int id = tracker.sendMeta(Client.addr, inputFilePath, this.fileLinesCount(inputFilePath), mapClass, File.ReadAllBytes(mapDll));
                this.outputs[inputFilePath] = outputDir;

                tracker.submitJob(id, numOfSplits);
                this.closeFile(inputFilePath);
                Console.WriteLine("<Job ended>");
                return(true);
            }
            catch (SocketException)
            {
                return(false);
            }
        }
 public DsgRollBackPublishedFundingVersionUndoTask(IPublishedFundingUndoCosmosRepository cosmos,
                                                   IPublishedFundingUndoBlobStoreRepository blobStore,
                                                   IProducerConsumerFactory producerConsumerFactory,
                                                   ILogger logger,
                                                   IJobTracker jobTracker) : base(cosmos, blobStore, producerConsumerFactory, logger, jobTracker)
 {
 }
コード例 #4
0
        /// <summary>
        /// Defines the method to be called when the command is invoked.
        /// </summary>
        /// <param name="parameter">Data used by the command. If the command
        /// does not require data to be passed, this object can be set to
        /// null.</param>
        public override void Execute(object parameter)
        {
            IJobTracker  jobs   = Container.Resolve <IJobTracker>();
            IQueueDialog dialog = Container.Resolve <IQueueDialog>();

            dialog.ShowDialog(jobs);
        }
コード例 #5
0
 public SoftDeletePublishedProviderVersionsUndoTask(IPublishedFundingUndoCosmosRepository cosmos,
                                                    IPublishedFundingUndoBlobStoreRepository blobStore,
                                                    IProducerConsumerFactory producerConsumerFactory,
                                                    ILogger logger,
                                                    IJobTracker jobTracker)
     : base(cosmos, blobStore, producerConsumerFactory, logger, jobTracker)
 {
 }
 public PublishedFundingUndoContextInitialisationTask(IPublishedFundingUndoCosmosRepository cosmos,
                                                      IPublishedFundingUndoBlobStoreRepository blobStore,
                                                      IProducerConsumerFactory producerConsumerFactory,
                                                      ILogger logger,
                                                      IJobTracker jobTracker)
     : base(cosmos, blobStore, producerConsumerFactory, logger, jobTracker)
 {
 }
コード例 #7
0
ファイル: ShareManager.cs プロジェクト: zacons/CoiniumServ
 /// <summary>
 /// Initializes a new instance of the <see cref="ShareManager" /> class.
 /// </summary>
 /// <param name="poolConfig"></param>
 /// <param name="daemonClient"></param>
 /// <param name="jobTracker"></param>
 /// <param name="storageLayer"></param>
 /// <param name="blockProcessor"></param>
 public ShareManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJobTracker jobTracker, IStorageLayer storageLayer, IBlockProcessor blockProcessor)
 {
     _poolConfig     = poolConfig;
     _daemonClient   = daemonClient;
     _jobTracker     = jobTracker;
     _storageLayer   = storageLayer;
     _blockProcessor = blockProcessor;
     _logger         = Log.ForContext <ShareManager>().ForContext("Component", poolConfig.Coin.Name);
 }
コード例 #8
0
ファイル: QueueDialog.cs プロジェクト: g4idrijs/DIPS
        public void ShowDialog(IJobTracker jobs)
        {
            QueueWindow    w  = new QueueWindow();
            QueueViewModel vm = new QueueViewModel(jobs);

            w.DataContext   = vm;
            w.ShowInTaskbar = true;
            w.ShowDialog();
        }
コード例 #9
0
ファイル: JobManager.cs プロジェクト: nuggetbram/CoiniumServ
 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();
 }
コード例 #10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ShareManager" /> class.
        /// </summary>
        /// <param name="poolConfig"></param>
        /// <param name="daemonClient"></param>
        /// <param name="jobTracker"></param>
        /// <param name="storageLayer"></param>
        public ShareManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJobTracker jobTracker, IStorageLayer storageLayer)
        {
            _poolConfig   = poolConfig;
            _daemonClient = daemonClient;
            _jobTracker   = jobTracker;
            _storageLayer = storageLayer;
            _logger       = Log.ForContext <ShareManager>().ForContext("Component", poolConfig.Coin.Name);

            FindPoolAccount();
        }
コード例 #11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ShareManager" /> class.
        /// </summary>
        /// <param name="poolConfig"></param>
        /// <param name="daemonClient"></param>
        /// <param name="jobTracker"></param>
        /// <param name="storageLayer"></param>
        public ShareManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJobTracker jobTracker, IStorageLayer storageLayer)
        {
            _poolConfig = poolConfig;
            _daemonClient = daemonClient;
            _jobTracker = jobTracker;
            _storageLayer = storageLayer;
            _logger = Log.ForContext<ShareManager>().ForContext("Component", poolConfig.Coin.Name);

            FindPoolAccount();
        }
コード例 #12
0
ファイル: JobTracker.cs プロジェクト: PeBraz/MapNoReduce
 /*
  * Creates a job using a JobMeta struct, needed if this worker will act as an auxiliary job tracker
  */
 public Job(string masterUrl, JobMeta meta, int filelines, int trackerId, int trackerCount)
 {
     this.id                   = meta.jobId;
     this.fileLines            = filelines;
     this.meta                 = meta;
     this.trackerCount         = trackerCount;
     this.trackerId            = trackerId;
     this.runningTrackersCount = 1;  //if secondary I am the only one
     this.master               = (IJobTracker)Activator.GetObject(typeof(IJobTracker), masterUrl);
 }
コード例 #13
0
 public PublishedProviderUndoTask(IPublishedFundingUndoCosmosRepository cosmos,
                                  IPublishedFundingUndoBlobStoreRepository blobStore,
                                  IProducerConsumerFactory producerConsumerFactory,
                                  ILogger logger,
                                  IJobTracker jobTracker,
                                  bool isHardDelete)
     : base(cosmos, blobStore, producerConsumerFactory, logger, jobTracker)
 {
     IsHardDelete = isHardDelete;
 }
コード例 #14
0
ファイル: JobTracker.cs プロジェクト: PeBraz/MapNoReduce
        /*
         * This constructor is used by the main job tracker
         */
        public Job(string client, string filename, int fileLines, string map, byte[] code)
        {
            this.id        = new Random().Next();
            this.fileLines = fileLines;
            this.meta      = new JobMeta(this.id, client, filename, map, code);

            this.trackerCount         = JOB_TRACKER_FACTOR;
            this.trackerId            = 1;
            this.runningTrackersCount = JOB_TRACKER_FACTOR;
            this.master = null;
        }
コード例 #15
0
        /// <summary>
        /// Gets the specified daemon client.
        /// </summary>
        /// <param name="jobTracker">The job manager.</param>
        /// <param name="daemonClient"></param>
        /// <param name="storage"></param>
        /// <returns></returns>
        public IShareManager Get(IDaemonClient daemonClient, IJobTracker jobTracker, IStorage storage)
        {
            var @params = new NamedParameterOverloads
            {
                {"daemonClient", daemonClient},
                {"jobTracker", jobTracker},
                {"storage", storage}
            };

            return _applicationContext.Container.Resolve<IShareManager>(@params);
        }
コード例 #16
0
        /// <summary>
        /// Entry point to the threaded execute functionality
        /// </summary>
        private void _execute()
        {
            IProcessingService  service = Container.Resolve <IProcessingService>();
            ObjectJobDefinition d       = new ObjectJobDefinition(_source.Pipeline, _filesToInputs());
            JobRequest          r       = new JobRequest(d);

            r.Identifier = _source.Identifier;
            IJobTicket  t       = service.JobManager.EnqueueJob(r);
            IJobTracker tracker = Container.Resolve <IJobTracker>();

            tracker.Add(t, _source.Handler);
        }
コード例 #17
0
        public void mainThread()
        {
            List <KeyValuePair <String, String> > taskOutputs = new List <KeyValuePair <String, String> >();
            IClient client = null;


            while (true)
            {
                while (true)
                {
                    Task?task = this.getTask();
                    if (task == null)
                    {
                        break;
                    }
                    this.statusWorking(task.Value);


                    JobMeta meta = metas[task.Value.jobId];
                    client = ((IClient)Activator.GetObject(typeof(IClient), meta.clientAddr));

                    String[] splits = client.getSplit(meta.filename, task.Value.lower, task.Value.higher);
                    if (splits == null)
                    {
                        break;
                    }

                    Map map = myMaps[meta.map];
                    foreach (String s in splits)
                    {
                        taskOutputs.AddRange(map.map(s));
                    }

                    workerMre.WaitOne();

                    Console.WriteLine("Did: " + task.Value.id + "; Tracker: " + task.Value.trackerUrl);
                    client.storeSplit(meta.filename, taskOutputs, task.Value.id);
                    taskOutputs.Clear();


                    //This supposes that no tasks were stolen from the worker
                    //If a task is stolen then the counter must go down
                    if (--taskCounter[task.Value.jobId][task.Value.trackerUrl] <= 0)
                    {
                        IJobTracker tracker = (IJobTracker)Activator.GetObject(typeof(WorkRemote), task.Value.trackerUrl);
                        new Thread(() => tracker.finishWorker(task.Value.jobId)).Start();
                    }
                }
                this.statusIdle();
                Thread.Sleep(100);  //sleep while no jobs in queue
            }
        }
コード例 #18
0
        public void unfreezec(int id)
        {
            IJobTracker t = (IJobTracker)getWorker(id);

            if (t != null)
            {
                new Thread(() => t.unfreezeTracker()).Start();
            }
            else
            {
                Console.WriteLine("Tracker not found");
            }
        }
コード例 #19
0
        /// <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);
        }
コード例 #20
0
        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);
        }
コード例 #21
0
        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);
        }
コード例 #22
0
ファイル: JobManager.cs プロジェクト: nuggetbram/coinium-whrl
        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);
        }
コード例 #23
0
        protected PublishedFundingUndoTaskFactoryBase(IPublishedFundingUndoCosmosRepository cosmos,
                                                      IPublishedFundingUndoBlobStoreRepository blobStore,
                                                      IProducerConsumerFactory producerConsumerFactory,
                                                      ILogger logger, IJobTracker jobTracker)
        {
            Guard.ArgumentNotNull(cosmos, nameof(cosmos));
            Guard.ArgumentNotNull(blobStore, nameof(blobStore));
            Guard.ArgumentNotNull(producerConsumerFactory, nameof(producerConsumerFactory));
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(jobTracker, nameof(jobTracker));

            Cosmos    = cosmos;
            BlobStore = blobStore;
            ProducerConsumerFactory = producerConsumerFactory;
            Logger     = logger;
            JobTracker = jobTracker;
        }
コード例 #24
0
        private static PublishedProviderStatusUpdateService CreatePublishedProviderStatusUpdateService(
            IPublishedProviderVersioningService publishedProviderVersioningService = null,
            ILogger logger         = null,
            IJobTracker jobTracker = null,
            IPublishedFundingRepository publishedFundingRepository         = null,
            IPublishedFundingBulkRepository publishedFundingBulkRepository = null)
        {
            IConfiguration configuration = Mock.Of <IConfiguration>();

            return(new PublishedProviderStatusUpdateService(
                       publishedProviderVersioningService ?? CreateVersioningService().Object,
                       publishedFundingRepository ?? CreatePublishedFundingRepository().Object,
                       jobTracker ?? CreateJobTracker().Object,
                       logger ?? CreateLogger().Object,
                       new PublishedProviderStatusUpdateSettings(),
                       publishedFundingBulkRepository ?? CreatePublishedFundingBulkRepository().Object));
        }
コード例 #25
0
        /// <summary>
        /// Initializes a new instance of the <see cref="QueueViewModel"/>
        /// class.
        /// </summary>
        /// <param name="tracker">The <see cref="IJobTracker"/> to
        /// present within the queue.</param>
        /// <exception cref="ArgumentNullException">tracker is
        /// null.</exception>
        public QueueViewModel(IJobTracker tracker)
        {
            if (tracker == null)
            {
                throw new ArgumentNullException("tracker");
            }

            CancelCommand                        = new CancelJobCommand();
            _tracker                             = tracker;
            _tracker.PropertyChanged            += _trackerPropertyChanged;
            _tracker.Pending.CollectionChanged  += _pendingChanged;
            _tracker.Finished.CollectionChanged += _finishedChanged;
            Entries            = new ObservableCollection <JobViewModel>();
            IsPresentingQueued = false;
            CurrentJob         = _tracker.Current;

            if (PostProcessAction == null)
            {
                PostProcessAction         = new ComboBoxItem();
                PostProcessAction.Content = "Nothing";
            }
        }
        public PublishedProviderStatusUpdateService(
            IPublishedProviderVersioningService publishedProviderVersioningService,
            IPublishedFundingRepository publishedFundingRepository,
            IJobTracker jobTracker,
            ILogger logger,
            IPublishedProviderStatusUpdateSettings settings,
            IPublishedFundingBulkRepository publishedFundingBulkRepository)
        {
            Guard.ArgumentNotNull(publishedProviderVersioningService, nameof(publishedProviderVersioningService));
            Guard.ArgumentNotNull(publishedFundingRepository, nameof(publishedFundingRepository));
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(jobTracker, nameof(jobTracker));
            Guard.ArgumentNotNull(settings, nameof(settings));
            Guard.ArgumentNotNull(publishedFundingBulkRepository, nameof(publishedFundingBulkRepository));

            _publishedProviderVersioningService = publishedProviderVersioningService;
            _publishedFundingRepository         = publishedFundingRepository;
            _logger     = logger;
            _settings   = settings;
            _jobTracker = jobTracker;
            _publishedFundingBulkRepository = publishedFundingBulkRepository;
        }
コード例 #27
0
        /**
         * Returns a specific amount of random workers from the network
         *
         */
        private IList <IJobTracker> getRandomNodes(int numOfWorkers)
        {
            IList <IJobTracker> randWorkers = new List <IJobTracker>();
            IList <IJobTracker> workers     = this.getNodes().Cast <IJobTracker>().ToList();
            IJobTracker         worker      = null;

            while (numOfWorkers > 0)
            {
                if (workers.Count == randWorkers.Count)
                {
                    break;                                      //if the number of workers specified is bigger than the number of workers available, exit the loop
                }
                worker = workers[(int)new Random().Next(workers.Count)];
                if (randWorkers.Contains(worker))
                {
                    continue;
                }

                randWorkers.Add(worker);
                numOfWorkers--;
            }

            return(randWorkers);
        }
コード例 #28
0
ファイル: ObjectFactory.cs プロジェクト: banura/brasilcoin
        public IShareManager GetShareManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJobTracker jobTracker, IStorageLayer storageLayer)
        {
            var @params = new NamedParameterOverloads
            {
                { "poolConfig", poolConfig },
                { "daemonClient", daemonClient },
                { "jobTracker", jobTracker },
                { "storageLayer", storageLayer }
            };

            return(_applicationContext.Container.Resolve <IShareManager>(@params));
        }
コード例 #29
0
ファイル: ObjectFactory.cs プロジェクト: banura/brasilcoin
        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));
        }
コード例 #30
0
        public ShareTests()
        {
            /*
             *  -- create-generation start --
             *  rpcData: {"version":2,"previousblockhash":"1c4eb88e47564cb796b5c6648c74bec51d7215ac12fc4168b14827aac74a8062","transactions":[{"data":"010000000332a82e92f522deee69b09e27858ba9b87585f2a4913ef71018df40909032fdc3000000006a473044022019ca05cb880a04f0d842268b7e75ac6d2695fc544df033e3daeb29239251a8970220031f6336767f2ea617347484e1290ec0bdcc71056ea2d3084e75384905250ec50121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffff086747cbd339b21b950774186091653a7b8f5751b00a906ff6f5561b3a6fcee6010000006b4830450221009ae1ba9a216d313cc592fc2c1ef08f1e0e555a32b6c1b305f685ac882d38356b0220243106bbb5bb76dde142e574cba8f30c1e2f7059e8e9161770396fbd2b50420f0121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffffe2f15804b1e41c36c925c6f64f219b2bdb3c9fbff4c97a4f0e8c7f31d7e6f2af000000006b48304502200be8894fdd7f5c19be248a979c08bbf2395f606e038c3e02c0266474c03699ab022100ff5de87086e487410f5d7b68012655ca6d814f0caeb9ca42d9c425a90f68b3030121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffff02a0f01900000000001976a9141c50209a1dfdf53313d237b75e9aeb553ca1dfda88ac00e1f505000000001976a914cbb9a3e7a7c1651b1006f876f08b40be85b274f588ac00000000","hash":"dc3a80ec6c45aa489453b2c4abf6761eb6656d949e26d01793458c166640e5f3","depends":[],"fee":0,"sigops":2}],"coinbaseaux":{"flags":"062f503253482f"},"coinbasevalue":5000000000,"target":"00000048d4f70000000000000000000000000000000000000000000000000000","mintime":1403691059,"mutable":["time","transactions","prevblock"],"noncerange":"00000000ffffffff","sigoplimit":20000,"sizelimit":1000000,"curtime":1403691825,"bits":"1d48d4f7","height":315152}
             *
             *  -- scriptSigPart data --
             *  -> height: 315152 serialized: 0310cf04
             *  -> coinbase: 062f503253482f hex: 062f503253482f
             *  -> date: 1403691824760 final:1403691824 serialized: 0430a3aa53
             *  -- p1 data --
             *  txVersion: 1 packed: 01000000
             *  txInputsCount: 1 varIntBuffer: 01
             *  txInPrevOutHash: 0 uint256BufferFromHash: 0000000000000000000000000000000000000000000000000000000000000000
             *  txInPrevOutIndex: 4294967295 packUInt32LE: ffffffff
             *  scriptSigPart1.length: 17 extraNoncePlaceholder.length:8 scriptSigPart2.length:14 all: 39 varIntBuffer: 27
             *  scriptSigPart1: 0310cf04062f503253482f0430a3aa5308
             *  p1: 01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff270310cf04062f503253482f0430a3aa5308
             *  -- generateOutputTransactions --
             *  block-reward: 5000000000
             *  recipient-reward: 50000000 packInt64LE: 80f0fa0200000000
             *  lenght: 25 varIntBuffer: 19
             *  script: 76a9147d576fbfca48b899dc750167dd2a2a6572fff49588ac
             *  pool-reward: 4950000000 packInt64LE: 80010b2701000000
             *  lenght: 25 varIntBuffer: 19
             *  script: 76a914329035234168b8da5af106ceb20560401236849888ac
             *  txOutputBuffers.lenght : 2 varIntBuffer: 02
             *  -- p2 --
             *  scriptSigPart2: 0d2f6e6f64655374726174756d2f
             *  txInSequence: 0 packUInt32LE: 00000000
             *  outputTransactions: 0280010b27010000001976a914329035234168b8da5af106ceb20560401236849888ac80f0fa02000000001976a9147d576fbfca48b899dc750167dd2a2a6572fff49588ac
             *  txLockTime: 0 packUInt32LE: 00000000
             *  txComment:
             *  p2: 0d2f6e6f64655374726174756d2f000000000280010b27010000001976a914329035234168b8da5af106ceb20560401236849888ac80f0fa02000000001976a9147d576fbfca48b899dc750167dd2a2a6572fff49588ac00000000
             *
             *  getJobParams: ["2","c74a8062b14827aa12fc41681d7215ac8c74bec596b5c66447564cb71c4eb88e","01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff270310cf04062f503253482f0430a3aa5308","0d2f6e6f64655374726174756d2f000000000280010b27010000001976a914329035234168b8da5af106ceb20560401236849888ac80f0fa02000000001976a9147d576fbfca48b899dc750167dd2a2a6572fff49588ac00000000",["f3e54066168c459317d0269e946d65b61e76f6abc4b2539448aa456cec803adc"],"00000002","1d48d4f7","53aaa331",true]
             */

            // daemon client
            _daemonClient = Substitute.For <IDaemonClient>();
            _daemonClient.ValidateAddress(Arg.Any <string>()).Returns(new ValidateAddress {
                IsValid = true
            });

            // block template
            const string json = "{\"result\":{\"version\":2,\"previousblockhash\":\"1c4eb88e47564cb796b5c6648c74bec51d7215ac12fc4168b14827aac74a8062\",\"transactions\":[{\"data\":\"010000000332a82e92f522deee69b09e27858ba9b87585f2a4913ef71018df40909032fdc3000000006a473044022019ca05cb880a04f0d842268b7e75ac6d2695fc544df033e3daeb29239251a8970220031f6336767f2ea617347484e1290ec0bdcc71056ea2d3084e75384905250ec50121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffff086747cbd339b21b950774186091653a7b8f5751b00a906ff6f5561b3a6fcee6010000006b4830450221009ae1ba9a216d313cc592fc2c1ef08f1e0e555a32b6c1b305f685ac882d38356b0220243106bbb5bb76dde142e574cba8f30c1e2f7059e8e9161770396fbd2b50420f0121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffffe2f15804b1e41c36c925c6f64f219b2bdb3c9fbff4c97a4f0e8c7f31d7e6f2af000000006b48304502200be8894fdd7f5c19be248a979c08bbf2395f606e038c3e02c0266474c03699ab022100ff5de87086e487410f5d7b68012655ca6d814f0caeb9ca42d9c425a90f68b3030121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffff02a0f01900000000001976a9141c50209a1dfdf53313d237b75e9aeb553ca1dfda88ac00e1f505000000001976a914cbb9a3e7a7c1651b1006f876f08b40be85b274f588ac00000000\",\"hash\":\"dc3a80ec6c45aa489453b2c4abf6761eb6656d949e26d01793458c166640e5f3\",\"depends\":[],\"fee\":0,\"sigops\":2}],\"coinbaseaux\":{\"flags\":\"062f503253482f\"},\"coinbasevalue\":5000000000,\"target\":\"00000048d4f70000000000000000000000000000000000000000000000000000\",\"mintime\":1403691059,\"mutable\":[\"time\",\"transactions\",\"prevblock\"],\"noncerange\":\"00000000ffffffff\",\"sigoplimit\":20000,\"sizelimit\":1000000,\"curtime\":1403691825,\"bits\":\"1d48d4f7\",\"height\":315152},\"error\":null,\"id\":1}";
            var          blockTemplateObject = JsonConvert.DeserializeObject <DaemonResponse <BlockTemplate> >(json);

            _blockTemplate = blockTemplateObject.Result;

            // extra nonce
            _extraNonce = Substitute.For <ExtraNonce>((UInt32)0);

            // signature script
            _signatureScript = Substitute.For <SignatureScript>(
                _blockTemplate.Height,
                _blockTemplate.CoinBaseAux.Flags,
                1403691824760,
                (byte)_extraNonce.ExtraNoncePlaceholder.Length,
                "/nodeStratum/");

            // outputs
            _outputs = Substitute.For <Outputs>(_daemonClient);
            double blockReward = 5000000000; // the amount rewarded by the block.

            // sample reward recipient
            var rewardsConfig = Substitute.For <IRewardsConfig>();
            var amount        = blockReward * 0.01;

            blockReward -= amount;
            var rewards = new Dictionary <string, float> {
                { "mrwhWEDnU6dUtHZJ2oBswTpEdbBHgYiMji", (float)amount }
            };

            rewardsConfig.GetEnumerator().Returns(rewards.GetEnumerator());
            foreach (var pair in rewards)
            {
                _outputs.AddRecipient(pair.Key, pair.Value);
            }

            // sample pool wallet
            var walletConfig = Substitute.For <IWalletConfig>();

            walletConfig.Adress.Returns("mk8JqN1kNWju8o3DXEijiJyn7iqkwktAWq");
            _outputs.AddPoolWallet(walletConfig.Adress, blockReward);

            var metaConfig = Substitute.For <IMetaConfig>();

            // generation transaction
            _generationTransaction = Substitute.For <GenerationTransaction>(_extraNonce, _daemonClient, _blockTemplate, walletConfig, rewardsConfig, metaConfig, false);
            //_generationTransaction.Inputs.First().SignatureScript = _signatureScript;
            //_generationTransaction.Outputs = _outputs;
            _generationTransaction.Create();

            // hash algorithm
            _hashAlgorithm = Substitute.For <Scrypt>();

            // the job.
            _job = new Job(2, _hashAlgorithm, _blockTemplate, _generationTransaction)
            {
                CleanJobs = true
            };

            // the job tracker.
            _jobTracker = Substitute.For <IJobTracker>();
            _jobTracker.Get(2).Returns(_job);

            // the job manager.
            _jobManager = Substitute.For <IJobManager>();
            _jobManager.ExtraNonce.Next().Returns((UInt32)0x58000000);

            // coin config
            _miner = Substitute.For <IStratumMiner>();
            _miner.ExtraNonce.Returns((UInt32)0x58000000);
        }
コード例 #31
0
ファイル: Pool.cs プロジェクト: nuggetbram/coinium-whrl
        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);
        }
コード例 #32
0
ファイル: Pool.cs プロジェクト: nuggetbram/CoiniumServ
        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);
        }
コード例 #33
0
 private static void StartWorker(IJobTracker workerService, string type)
 {
     Console.WriteLine("If the server does not respond wait for a minute...");
     workerService.SubscribeWorker(type);
 }
コード例 #34
0
        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);
        }
コード例 #35
0
        public IShareManager GetShareManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJobTracker jobTracker, IStorageLayer storageLayer)
        {
            var @params = new NamedParameterOverloads
            {
                {"poolConfig", poolConfig},
                {"daemonClient", daemonClient},
                {"jobTracker", jobTracker},
                {"storageLayer", storageLayer}
            };

            return _applicationContext.Container.Resolve<IShareManager>(@params);
        }
コード例 #36
0
ファイル: PoolTests.cs プロジェクト: nuggetbram/CoiniumServ
        /// <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>();
        }
コード例 #37
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ShareManager" /> class.
 /// </summary>
 /// <param name="daemonClient"></param>
 /// <param name="jobTracker"></param>
 /// <param name="storage"></param>
 public ShareManager(IDaemonClient daemonClient, IJobTracker jobTracker, IStorage storage)
 {
     _daemonClient = daemonClient;
     _jobTracker = jobTracker;
     _storage = storage;
 }
コード例 #38
0
        public ShareTests()
        {
            /*
                -- create-generation start --
                rpcData: {"version":2,"previousblockhash":"1c4eb88e47564cb796b5c6648c74bec51d7215ac12fc4168b14827aac74a8062","transactions":[{"data":"010000000332a82e92f522deee69b09e27858ba9b87585f2a4913ef71018df40909032fdc3000000006a473044022019ca05cb880a04f0d842268b7e75ac6d2695fc544df033e3daeb29239251a8970220031f6336767f2ea617347484e1290ec0bdcc71056ea2d3084e75384905250ec50121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffff086747cbd339b21b950774186091653a7b8f5751b00a906ff6f5561b3a6fcee6010000006b4830450221009ae1ba9a216d313cc592fc2c1ef08f1e0e555a32b6c1b305f685ac882d38356b0220243106bbb5bb76dde142e574cba8f30c1e2f7059e8e9161770396fbd2b50420f0121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffffe2f15804b1e41c36c925c6f64f219b2bdb3c9fbff4c97a4f0e8c7f31d7e6f2af000000006b48304502200be8894fdd7f5c19be248a979c08bbf2395f606e038c3e02c0266474c03699ab022100ff5de87086e487410f5d7b68012655ca6d814f0caeb9ca42d9c425a90f68b3030121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffff02a0f01900000000001976a9141c50209a1dfdf53313d237b75e9aeb553ca1dfda88ac00e1f505000000001976a914cbb9a3e7a7c1651b1006f876f08b40be85b274f588ac00000000","hash":"dc3a80ec6c45aa489453b2c4abf6761eb6656d949e26d01793458c166640e5f3","depends":[],"fee":0,"sigops":2}],"coinbaseaux":{"flags":"062f503253482f"},"coinbasevalue":5000000000,"target":"00000048d4f70000000000000000000000000000000000000000000000000000","mintime":1403691059,"mutable":["time","transactions","prevblock"],"noncerange":"00000000ffffffff","sigoplimit":20000,"sizelimit":1000000,"curtime":1403691825,"bits":"1d48d4f7","height":315152}

                -- scriptSigPart data --
                -> height: 315152 serialized: 0310cf04
                -> coinbase: 062f503253482f hex: 062f503253482f
                -> date: 1403691824760 final:1403691824 serialized: 0430a3aa53
                -- p1 data --
                txVersion: 1 packed: 01000000
                txInputsCount: 1 varIntBuffer: 01
                txInPrevOutHash: 0 uint256BufferFromHash: 0000000000000000000000000000000000000000000000000000000000000000
                txInPrevOutIndex: 4294967295 packUInt32LE: ffffffff
                scriptSigPart1.length: 17 extraNoncePlaceholder.length:8 scriptSigPart2.length:14 all: 39 varIntBuffer: 27
                scriptSigPart1: 0310cf04062f503253482f0430a3aa5308
                p1: 01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff270310cf04062f503253482f0430a3aa5308
                -- generateOutputTransactions --
                block-reward: 5000000000
                recipient-reward: 50000000 packInt64LE: 80f0fa0200000000
                lenght: 25 varIntBuffer: 19
                script: 76a9147d576fbfca48b899dc750167dd2a2a6572fff49588ac
                pool-reward: 4950000000 packInt64LE: 80010b2701000000
                lenght: 25 varIntBuffer: 19
                script: 76a914329035234168b8da5af106ceb20560401236849888ac
                txOutputBuffers.lenght : 2 varIntBuffer: 02
                -- p2 --
                scriptSigPart2: 0d2f6e6f64655374726174756d2f
                txInSequence: 0 packUInt32LE: 00000000
                outputTransactions: 0280010b27010000001976a914329035234168b8da5af106ceb20560401236849888ac80f0fa02000000001976a9147d576fbfca48b899dc750167dd2a2a6572fff49588ac
                txLockTime: 0 packUInt32LE: 00000000
                txComment:
                p2: 0d2f6e6f64655374726174756d2f000000000280010b27010000001976a914329035234168b8da5af106ceb20560401236849888ac80f0fa02000000001976a9147d576fbfca48b899dc750167dd2a2a6572fff49588ac00000000

                getJobParams: ["2","c74a8062b14827aa12fc41681d7215ac8c74bec596b5c66447564cb71c4eb88e","01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff270310cf04062f503253482f0430a3aa5308","0d2f6e6f64655374726174756d2f000000000280010b27010000001976a914329035234168b8da5af106ceb20560401236849888ac80f0fa02000000001976a9147d576fbfca48b899dc750167dd2a2a6572fff49588ac00000000",["f3e54066168c459317d0269e946d65b61e76f6abc4b2539448aa456cec803adc"],"00000002","1d48d4f7","53aaa331",true]
             */

            // daemon client
            _daemonClient = Substitute.For<IDaemonClient>();
            _daemonClient.ValidateAddress(Arg.Any<string>()).Returns(new ValidateAddress { IsValid = true });

            // block template
            const string json = "{\"result\":{\"version\":1,\"previousblockhash\":\"1c4eb88e47564cb796b5c6648c74bec51d7215ac12fc4168b14827aac74a8062\",\"transactions\":[{\"data\":\"010000000332a82e92f522deee69b09e27858ba9b87585f2a4913ef71018df40909032fdc3000000006a473044022019ca05cb880a04f0d842268b7e75ac6d2695fc544df033e3daeb29239251a8970220031f6336767f2ea617347484e1290ec0bdcc71056ea2d3084e75384905250ec50121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffff086747cbd339b21b950774186091653a7b8f5751b00a906ff6f5561b3a6fcee6010000006b4830450221009ae1ba9a216d313cc592fc2c1ef08f1e0e555a32b6c1b305f685ac882d38356b0220243106bbb5bb76dde142e574cba8f30c1e2f7059e8e9161770396fbd2b50420f0121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffffe2f15804b1e41c36c925c6f64f219b2bdb3c9fbff4c97a4f0e8c7f31d7e6f2af000000006b48304502200be8894fdd7f5c19be248a979c08bbf2395f606e038c3e02c0266474c03699ab022100ff5de87086e487410f5d7b68012655ca6d814f0caeb9ca42d9c425a90f68b3030121030dd394118fb66ca288bff71d8ea762678783b005770f7f9ba4128233191e0847ffffffff02a0f01900000000001976a9141c50209a1dfdf53313d237b75e9aeb553ca1dfda88ac00e1f505000000001976a914cbb9a3e7a7c1651b1006f876f08b40be85b274f588ac00000000\",\"hash\":\"dc3a80ec6c45aa489453b2c4abf6761eb6656d949e26d01793458c166640e5f3\",\"depends\":[],\"fee\":0,\"sigops\":2}],\"coinbaseaux\":{\"flags\":\"062f503253482f\"},\"coinbasevalue\":5000000000,\"target\":\"00000048d4f70000000000000000000000000000000000000000000000000000\",\"mintime\":1403691059,\"mutable\":[\"time\",\"transactions\",\"prevblock\"],\"noncerange\":\"00000000ffffffff\",\"sigoplimit\":20000,\"sizelimit\":1000000,\"curtime\":1403691825,\"bits\":\"1d48d4f7\",\"height\":315152},\"error\":null,\"id\":1}";
            var blockTemplateObject = JsonConvert.DeserializeObject<DaemonResponse<BlockTemplate>>(json);
            _blockTemplate = blockTemplateObject.Result;

            // extra nonce
            _extraNonce = Substitute.For<ExtraNonce>((UInt32)0);

            // signature script
            _signatureScript = Substitute.For<SignatureScript>(
                _blockTemplate.Height,
                _blockTemplate.CoinBaseAux.Flags,
                1403691824760,
                (byte)_extraNonce.ExtraNoncePlaceholder.Length,
                "/nodeStratum/");

            // pool config
            var poolConfig = Substitute.For<IPoolConfig>();

            // create coin config.
            var coinConfig = Substitute.For<ICoinConfig>();
            coinConfig.Options.TxMessageSupported.Returns(false);
            coinConfig.Options.IsProofOfStakeHybrid.Returns(false);
            poolConfig.Coin.Returns(coinConfig);

            // outputs
            _outputs = Substitute.For<Outputs>(_daemonClient, coinConfig);
            double blockReward = 5000000000; // the amount rewarded by the block.

            // create rewards config.
            var rewardsConfig = Substitute.For<IRewardsConfig>();
            poolConfig.Rewards.Returns(rewardsConfig);

            var amount = blockReward * 0.01;
            blockReward -= amount;
            var rewards = new Dictionary<string, float> { { "mrwhWEDnU6dUtHZJ2oBswTpEdbBHgYiMji", (float)amount } };

            rewardsConfig.GetEnumerator().Returns(rewards.GetEnumerator());
            foreach (var pair in rewards)
            {
                _outputs.AddRecipient(pair.Key, pair.Value);
            }

            // create wallet config.
            var walletConfig = Substitute.For<IWalletConfig>();
            poolConfig.Wallet.Returns(walletConfig);

            // create sample pool central wallet output.
            walletConfig.Adress.Returns("mk8JqN1kNWju8o3DXEijiJyn7iqkwktAWq");
            _outputs.AddPoolWallet(walletConfig.Adress, blockReward);

            // generation transaction
            _generationTransaction = Substitute.For<GenerationTransaction>(_extraNonce, _daemonClient, _blockTemplate, poolConfig);
            _generationTransaction.Inputs.First().SignatureScript = _signatureScript;
            _generationTransaction.Outputs = _outputs;
            _generationTransaction.Create();

            // hash algorithm
            _hashAlgorithm = new Scrypt();

            // the job.
            _job = new Job(2,_hashAlgorithm, _blockTemplate, _generationTransaction)
            {
                CleanJobs = true
            };

            // the job tracker.
            _jobTracker = Substitute.For<IJobTracker>();
            _jobTracker.Get(2).Returns(_job);

            // the job manager.
            _jobManager = Substitute.For<IJobManager>();
            _jobManager.ExtraNonce.Next().Returns((UInt32)0x58000000);

            // coin config
            _miner = Substitute.For<IStratumMiner>();
            _miner.ExtraNonce.Returns((UInt32)0x58000000);
        }