Пример #1
0
        public void IndexWalletBalances(ChainBase chain)
        {
            Configuration.GetWalletBalanceTable().CreateIfNotExists();
            Configuration.GetWalletRulesTable().CreateIfNotExists();
            var walletRules = Configuration.CreateIndexerClient().GetAllWalletRules();

            IndexBalances(chain, "wallets", (txid, tx, blockid, header, height) =>
            {
                return(OrderedBalanceChange.ExtractWalletBalances(txid, tx, blockid, header, height, walletRules));
            });
        }
Пример #2
0
        public Task IndexWalletOrderedBalanceAsync(int height, Block block, WalletRuleEntryCollection walletRules)
        {
            var table   = Configuration.GetBalanceTable();
            var blockId = block == null ? null : block.GetHash();

            var entities =
                block
                .Transactions
                .SelectMany(t => OrderedBalanceChange.ExtractWalletBalances(null, t, blockId, block.Header, height, walletRules))
                .Select(t => t.ToEntity(ConsensusFactory))
                .AsEnumerable();

            return(IndexAsync(entities, table));
        }
Пример #3
0
        public void IndexWalletOrderedBalance(int height, Block block, WalletRuleEntryCollection walletRules)
        {
            var table   = Configuration.GetBalanceTable();
            var blockId = block.GetHash();

            foreach (var transaction in block.Transactions)
            {
                var txId    = transaction.GetHash();
                var changes = OrderedBalanceChange.ExtractWalletBalances(txId, transaction, blockId, block.Header, height, walletRules).Select(c => c.ToEntity());
                foreach (var group in changes.GroupBy(c => c.PartitionKey))
                {
                    Index(group, table);
                }
            }
        }