Пример #1
0
        public void TestGetMiningZcoinCoinFromBsodPerday10Rounds()
        {
            long    myHashRate         = 120000000L;
            BsodAPI api                = new BsodAPI();
            double  receiveCoinsPerDay = 0;

            CryptoCurrency currencies = api.LoadCurrency();

            CryptoCurrency.XZC coin = currencies.Xzc;
            if (coin != null)
            {
                int  blockAllDay  = coin.h24_blocks;
                long poolHashRate = coin.hashrate ?? 0;
                if (coin.h24_blocks_shared != -1)
                {
                    blockAllDay = coin.h24_blocks_shared;
                }
                if (coin.hashrate_shared != null && coin.hashrate_shared != 0)
                {
                    poolHashRate = coin.hashrate_shared ?? 0;
                }
                if (poolHashRate == 0)
                {
                    Debug.WriteLine(string.Format("Can not calculate num of coin per day because nobody mining {0} coin.", coin.symbol));
                }
                if (coin.hashRateDiscountPercent > 0)  // กรณีเหรียญที่แรงแกว่งมากๆ ให้ discount จำนวนที่ขุดได้ลง
                {
                    poolHashRate = poolHashRate + (poolHashRate * coin.hashRateDiscountPercent / 100);
                }
                double rewardPerBlock = PoolReward.GetPoolOverrideReward(PoolName.Bsod, coin.symbol);
                if (rewardPerBlock == -1)
                {
                    rewardPerBlock = double.Parse(coin.reward);
                }

                if (myHashRate > poolHashRate) // test กรณี แรงเรามากกว่าแรง pool
                {
                    receiveCoinsPerDay = (rewardPerBlock * blockAllDay) * (1 - (poolHashRate / myHashRate));
                }
                else
                {
                    // receiveCoinsPerDay = (rewardPerBlock / poolHashRate) * MyHashRate * blockAllDay;
                    receiveCoinsPerDay = (myHashRate / (double)poolHashRate) * (blockAllDay * rewardPerBlock);
                }
            }

            Assert.AreEqual(true, receiveCoinsPerDay > -1);
        }
Пример #2
0
        public double GetNumOfCoinMiningPerDay(string coinSymbol, PoolName poolName)
        {
            if (MyHashRate == -1)
            {
                throw new Exception("Invaid MyHashRate property. Please specify MyHashRate property before calling GetNumOfCoinMiningPerDay method.");
            }
            CurrencyBase coin = null;

            if (poolName == PoolName.Bsod)
            {
                coin = _bsodCurrencies[coinSymbol];
            }
            else if (poolName == PoolName.Gos)
            {
                coin = _gosCurrencies[coinSymbol];
            }
            else if (poolName == PoolName.IceMining)
            {
                coin = _iceCurrencies[coinSymbol];
            }
            else if (poolName == PoolName.Zerg || poolName == PoolName.PhiPhi)
            {
                throw new ArgumentException("Invalid argument zerg pool not implement.", "poolName");
            }

            if (coin != null)
            {
                long poolHashRate = coin.hashrate ?? 0;
                if (coin.hashrate_shared != null && coin.hashrate_shared != 0)
                {
                    poolHashRate = coin.hashrate_shared ?? 0;
                }
                if (poolHashRate == 0)
                {
                    Debug.WriteLine(string.Format("Can not calculate num of coin per day because nobody mining {0} coin.", coinSymbol));
                    return(0);
                }
                if (coin.hashRateDiscountPercent > 0)  // กรณีเหรียญที่แรงแกว่งมากๆ ให้ discount จำนวนที่ขุดได้ลง
                {
                    poolHashRate = poolHashRate + (poolHashRate * coin.hashRateDiscountPercent / 100);
                }
                double rewardPerBlock = PoolReward.GetPoolOverrideReward(poolName, coinSymbol);
                if (rewardPerBlock == -1)
                {
                    rewardPerBlock = double.Parse(coin.reward);
                }
                int blockAllDay = coin.h24_blocks;
                if (coin.h24_blocks_shared != -1)
                {
                    blockAllDay = coin.h24_blocks_shared;
                }
                double receiveCoinsPerDay = 0;
                if (MyHashRate > poolHashRate) // test กรณี แรงเรามากกว่าแรง pool
                {
                    receiveCoinsPerDay = (rewardPerBlock * blockAllDay) * (1 - (poolHashRate / MyHashRate));
                }
                else
                {
                    // receiveCoinsPerDay = (rewardPerBlock / poolHashRate) * MyHashRate * blockAllDay;
                    receiveCoinsPerDay = (MyHashRate / (double)poolHashRate) * (blockAllDay * rewardPerBlock);
                }
                return(receiveCoinsPerDay);
            }
            else
            {
                Debug.WriteLine(string.Format("Can not load {0} information from {1} pool.", coinSymbol, poolName));
                return(0);
            }
        }