public StakePool(StakePoolApiResponse apiResponse) { Base = apiResponse; if (apiResponse.Metadata == null) { Name = apiResponse.Id; } else { Name = apiResponse.Metadata.Name; Ticker = apiResponse.Metadata.Ticker; } LifeTimeBlocks = apiResponse.Metrics.ProducedBlocks.Quantity; Saturation = apiResponse.Metrics.Saturation; ActiveStakeAda = Convert.ToInt64(BlochChainInfo.GetSaturationAda() * apiResponse.Metrics.Saturation); ActiveBlockChance = BlochChainInfo.GetBlockChance(ActiveStakeAda); SprdStakeADA = Convert.ToInt64(ActiveStakeAda * 0.23); // Its just a dummy implementaiton with 23 % toDo! var missingAda = BlochChainInfo.GetMinimumAdaForOneBlock() - (ActiveStakeAda + SprdStakeADA); if (missingAda < 0) { missingAda = 0; } MissingAdaForBlock = Convert.ToInt64(missingAda); SprdStakeBlockChance = BlochChainInfo.GetBlockChance(ActiveStakeAda + SprdStakeADA); PoolRegistered = DateTime.MinValue; // ToDo }
public StakePool(StakePoolApiResponse apiResponse, IEnumerable <SprdPoolInfo> sprdPoolInfos) { Base = apiResponse; if (apiResponse.Metadata == null) { Name = apiResponse.Id; } else { Name = apiResponse.Metadata.Name; Ticker = apiResponse.Metadata.Ticker; } LifeTimeBlocks = apiResponse.Metrics.ProducedBlocks.Quantity; Saturation = apiResponse.Metrics.Saturation; ActiveStakeAda = Convert.ToInt64(BlochChainInfo.GetSaturationAda() * apiResponse.Metrics.Saturation); ActiveBlockChance = BlochChainInfo.GetBlockChance(ActiveStakeAda); var sprdPoolInfosForThisPool = sprdPoolInfos.Where(p => p.pool_id == apiResponse.Id).ToList(); if (sprdPoolInfosForThisPool.Any()) { SprdStakeADA = Convert.ToInt64(sprdPoolInfosForThisPool.Sum(p => p.commited_ada)); } else { SprdStakeADA = 0; } var missingAda = BlochChainInfo.GetMinimumAdaForOneBlock() - (ActiveStakeAda + SprdStakeADA); if (missingAda < 0) { missingAda = 0; } MissingAdaForBlock = Convert.ToInt64(missingAda); SprdStakeBlockChance = BlochChainInfo.GetBlockChance(ActiveStakeAda + SprdStakeADA); PoolRegistered = DateTime.MinValue; // ToDo }