Ejemplo n.º 1
0
        public IRpcMethodResult AddMiningPool(string name, string publicKey, string signature)
        {
            try
            {
                var miningPoolComponent = new MiningPoolComponent();
                if (miningPoolComponent.HasMiningPool(name, publicKey))
                {
                    throw new CommonException(ErrorCode.Engine.Block.Verify.MINING_POOL_EXISTED);
                }

                var miningMsg = new MiningMsg()
                {
                    Name = name, PublicKey = publicKey, Signature = signature
                };
                var result = miningPoolComponent.AddMiningToPool(miningMsg);
                return(Ok(result));
            }
            catch (CommonException ce)
            {
                return(Error(ce.ErrorCode, ce.Message, ce));
            }
            catch (Exception ex)
            {
                return(Error(ErrorCode.UNKNOWN_ERROR, ex.Message, ex));
            }
        }
Ejemplo n.º 2
0
        public void Put(MiningMsg mp)
        {
            var key = GetKey(BlockTables.MiningPool, mp.Name);

            BlockDomain.Put(key, mp);

            MiningPools.Add(mp.Name);
            UpdateMiningPoolNames(MiningPools);
        }
Ejemplo n.º 3
0
        public MiningMsg CreateNewMiningPool(string minerName, string publicKey)
        {
            MiningPoolDac miningPoolDac    = new MiningPoolDac();
            MiningMsg     newMiningPoolMsg = new MiningMsg();

            newMiningPoolMsg.Name      = minerName;
            newMiningPoolMsg.PublicKey = publicKey;
            return(newMiningPoolMsg);
        }
Ejemplo n.º 4
0
        private MiningPool ConvertToMiningPool(MiningMsg msg)
        {
            MiningPool miningPool = new MiningPool()
            {
                Name = msg.Name, PublicKey = msg.PublicKey, Signature = msg.Signature
            };

            return(miningPool);
        }
Ejemplo n.º 5
0
        //public List<MiningMsg> UpdateMiningPoolsBackup(List<MiningMsg> miningMsgs)
        //{
        //    List<MiningMsg> newMsgs = new List<MiningMsg>();
        //    if (miningMsgs == null || miningMsgs.Count == 0)
        //        return newMsgs;

        //    var items = miningMsgs.Where(x => HasMiningPool(x.Name, x.PublicKey));

        //    if (!items.Any())
        //        return newMsgs;

        //    MiningPoolDac.Default.Put(items);
        //    newMsgs.AddRange(miningMsgs);
        //    CurrentMiningPools = this.GetAllMiningPoolsInDb();
        //    return newMsgs;
        //}

        public bool AddMiningToPool(MiningMsg msg)
        {
            if (HasMiningPool(msg.Name, msg.PublicKey))
            {
                return(false);
            }

            if (!POC.VerifyMiningPoolSignature(msg.PublicKey, msg.Signature))
            {
                return(false);
            }

            MiningPoolDac.Default.Put(msg);
            CurrentMiningPools = GetAllMiningPoolsInDb();
            return(true);
        }
Ejemplo n.º 6
0
        private void receivedGetMiningPoolsMessage(string address, int port)
        {
            var list = (new MiningPoolComponent()).GetAllMiningPools();

            var payload = new MiningPoolMsg();

            foreach (var item in list)
            {
                MiningMsg itemMsg = new MiningMsg();
                itemMsg.Name      = item.Name;
                itemMsg.PublicKey = item.PublicKey;
                itemMsg.Signature = item.Signature;
                payload.MinerInfos.Add(itemMsg);
            }

            var command = P2PCommand.CreateCommand(this.Identity.ToString(), CommandNames.MiningPool.MiningPools, payload);

            this.p2pComponent.SendCommand(address, port, command);
        }
Ejemplo n.º 7
0
 public IRpcMethodResult AddMiningPool(string name, string publicKey, string signature)
 {
     try
     {
         var miningMsg = new MiningMsg()
         {
             Name = name, PublicKey = publicKey, Signature = signature
         };
         var miningPoolComponent = new MiningPoolComponent();
         var result = miningPoolComponent.AddMiningToPool(miningMsg);
         return(Ok(result));
     }
     catch (CommonException ce)
     {
         return(Error(ce.ErrorCode, ce.Message, ce));
     }
     catch (Exception ex)
     {
         return(Error(ErrorCode.UNKNOWN_ERROR, ex.Message, ex));
     }
 }
Ejemplo n.º 8
0
        public bool AddMiningToPool(MiningMsg msg)
        {
            if (!POC.VerifyMiningPoolSignature(msg.PublicKey, msg.Signature))
            {
                return(false);
            }

            var result = false;
            var item   = currentMiningPools.FirstOrDefault(x => x.PublicKey == msg.PublicKey && x.Signature == msg.Signature);

            if (item == null)
            {
                MiningPoolDac miningPoolDac = new MiningPoolDac();
                MiningPool    miningPool    = ConvertToMiningPool(msg);
                result = miningPoolDac.SaveToDB(miningPool) > 0;
            }
            else if (item.Name != msg.Name)
            {
                MiningPoolDac miningPoolDac = new MiningPoolDac();
                MiningPool    miningPool    = new MiningPool()
                {
                    Name = msg.Name, PublicKey = msg.PublicKey, Signature = msg.Signature
                };
                miningPoolDac.UpdateMiningPool(miningPool);
                result = true;
            }
            if (result && OnNewMiningPoolHandle != null)
            {
                NewMiningPoolMsg newMsg = new NewMiningPoolMsg();
                newMsg.MinerInfo = new MiningMsg()
                {
                    Name = msg.Name, PublicKey = msg.PublicKey, Signature = msg.Signature
                };
                OnNewMiningPoolHandle(newMsg);
            }

            return(false);
        }