public async Task<Model> Handle(Query request, CancellationToken cancellationToken)
            {
                CinderAddress address = await _addressRepository.GetAddressByHash(request.Hash, cancellationToken).AnyContext();

                if (address == null)
                {
                    return null;
                }

                CinderAddressMeta meta = await _addressMetaRepository.GetByAddressOrDefault(address.Hash, cancellationToken)
                    .AnyContext();

                return new Model
                {
                    Hash = address.Hash,
                    Name = meta?.Name,
                    Website = meta?.Website,
                    Balance = address.Balance,
                    BlocksMined = address.BlocksMined,
                    TransactionCount = address.TransactionCount,
                    Timestamp = address.Timestamp,
                    Tags = meta?.Tags ?? new List<string>(),
                    BalanceHistory = address.BalanceHistory ?? new Dictionary<string, decimal>()
                };
            }
Exemple #2
0
            public async Task <IPage <Model> > Handle(Query request, CancellationToken cancellationToken)
            {
                CirculatingSupply supply = await _statsCache.GetAsync <CirculatingSupply>(CirculatingSupply.DefaultCacheKey, null)
                                           .AnyContext();

                IPage <CinderAddress> page = await _addressRepository.GetRichest(request.Page, request.Size,
                                                                                 _settings.Performance.RichListMinimumBalance, _settings.Performance.QueryCountLimiter, cancellationToken)
                                             .AnyContext();

                IEnumerable <CinderAddressMeta> metas = await _addressMetaRepository
                                                        .GetByAddresses(page.Items.Select(address => address.Hash).Distinct(), cancellationToken)
                                                        .AnyContext();

                decimal             circulatingSupply = supply?.Supply ?? 0;
                int                 rank   = 1 * (page.Page - 1) * page.Size + 1;
                IEnumerable <Model> models = page.Items.Select(address =>
                {
                    CinderAddressMeta meta = metas.FirstOrDefault(x => x.Id == address.Id);

                    return(new Model
                    {
                        Rank = rank++,
                        Name = meta?.Name,
                        Hash = address.Hash,
                        Balance = address.Balance,
                        Percent = address.Balance > 0 && circulatingSupply > 0
                            ? address.Balance / circulatingSupply * 100
                            : default,
Exemple #3
0
            public async Task <Model> Handle(Query request, CancellationToken cancellationToken)
            {
                CinderBlock block = await _blockRepository.GetBlockByNumber(request.Number, cancellationToken).AnyContext();

                if (block == null)
                {
                    return(null);
                }

                CinderAddressMeta meta = await _addressMetaRepository.GetByAddressOrDefault(block.Miner, cancellationToken)
                                         .AnyContext();

                return(new Model
                {
                    BlockNumber = block.BlockNumber,
                    Difficulty = block.Difficulty,
                    ExtraData = block.ExtraData,
                    GasLimit = ulong.Parse(block.GasLimit),
                    GasUsed = ulong.Parse(block.GasUsed),
                    Hash = block.Hash,
                    Miner = block.Miner,
                    MinerDisplay = meta?.Name,
                    Nonce = block.Nonce,
                    ParentHash = block.ParentHash,
                    Size = ulong.Parse(block.Size),
                    Timestamp = ulong.Parse(block.Timestamp),
                    TransactionCount = (ulong)block.TransactionCount,
                    TotalDifficulty = block.TotalDifficulty,
                    Uncles = block.Uncles,
                    UncleCount = (ulong)block.UncleCount,
                    Sha3Uncles = block.Sha3Uncles,
                    Value = block.Value,
                    Fees = block.Fees
                });
            }