Exemplo n.º 1
0
        private void DeleteIndex(Block block)
        {
            if (block.Transactions == null)
            {
                return;
            }

            if (block.Header.Index == 0)    //genesis block
            {
                OwnerIndex.DeleteIndex();
            }

            foreach (var record in block.Transactions)
            {
                if (record is TransactionToken)
                {
                    TokenIndex.DeleteIndex(record as TransactionToken);
                }
                else if (record is TransactionTransfer)
                {
                    BalanceIndex.DeleteIndex(record as TransactionTransfer);
                }
                else if (record is TransactionOrderLimit)
                {
                    OrderIndex.DeleteIndex(record as TransactionOrderLimit);
                }
            }
        }
Exemplo n.º 2
0
        public void UpdateIndex(Block block)
        {
            if (block.Transactions == null)
            {
                return;
            }

            if (block.Header.Index == 0)    //genesis block
            {
                //Create owner index
                string ownerAddress = null;
                foreach (var record in block.Transactions)
                {
                    if (record is TransactionTransfer)
                    {
                        ownerAddress = ((TransactionTransfer)record).ToAddress;
                        break;
                    }
                }
                OwnerIndex.AddToIndex(ownerAddress);
            }

            foreach (var record in block.Transactions)
            {
                if (record is TransactionToken)
                {
                    TokenIndex.AddToIndex(record as TransactionToken);
                }
                else if (record is TransactionTransfer)
                {
                    BalanceIndex.AddToIndex(record as TransactionTransfer);
                }
                else if (record is TransactionOrderLimit)
                {
                    OrderIndex.AddToIndex(record as TransactionOrderLimit);
                }
                else if (record is TransactionOrderMatch)
                {
                    OrderIndex.UpdateIndexForMatchedOrder(record as TransactionOrderMatch);
                }
                else if (record is TransactionOrderCancel)
                {
                    OrderIndex.DeleteSingleTransaction((record as TransactionOrderCancel).OrderTransactionId);
                }
                else if (record is TransactionBlockFee)
                {
                    BalanceIndex.AddToFeeIndex(record as TransactionBlockFee);
                }
            }

            //Delete expired orders from index
            OrderIndex.DeleteExpiredOrders(block.Header.Index);
        }