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); }
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); } }