Exemple #1
0
 public WalletEntry(IImmutableList<MonitoredWalletAddress> addresses, EnumWalletEntryType type, ChainPosition chainPosition, UInt64 value)
 {
     Addresses = addresses;
     Type = type;
     ChainPosition = chainPosition;
     Value = value;
 }
Exemple #2
0
 public void BeforeRemoveTransaction(ChainPosition chainPosition, Transaction tx)
 {
     //this.Add(() =>
     //{
     foreach (var visitor in this.visitors)
     {
         visitor.BeforeRemoveTransaction(chainPosition, tx);
     }
     //});
 }
Exemple #3
0
 public void AfterAddTransaction(ChainPosition chainPosition, Transaction tx)
 {
     //this.Add(() =>
     //{
     foreach (var visitor in this.visitors)
     {
         visitor.AfterAddTransaction(chainPosition, tx);
     }
     //});
 }
 public void UnCoinbaseInput(ChainPosition chainPosition, TxInput txInput)
 {
     this.Add(() =>
     {
         foreach (var visitor in this.visitors)
         {
             visitor.UnCoinbaseInput(chainPosition, txInput);
         }
     });
 }
Exemple #5
0
 public void MintTxOutput(ChainPosition chainPosition, TxOutputKey txOutputKey, TxOutput txOutput, UInt256 outputScriptHash, bool isCoinbase)
 {
     //this.Add(() =>
     //{
     foreach (var visitor in this.visitors)
     {
         visitor.MintTxOutput(chainPosition, txOutputKey, txOutput, outputScriptHash, isCoinbase);
     }
     //});
 }
Exemple #6
0
 public void SpendTxOutput(ChainPosition chainPosition, ChainedHeader chainedHeader, Transaction tx, TxInput txInput, TxOutputKey txOutputKey, TxOutput txOutput, UInt256 outputScriptHash)
 {
     //this.Add(() =>
     //{
     foreach (var visitor in this.visitors)
     {
         visitor.SpendTxOutput(chainPosition, chainedHeader, tx, txInput, txOutputKey, txOutput, outputScriptHash);
     }
     //});
 }
Exemple #7
0
 public void UnspendTxOutput(ChainPosition chainPosition, TxInput txInput, TxOutputKey txOutputKey, TxOutput txOutput, UInt256 outputScriptHash)
 {
     //this.Add(() =>
     //{
     foreach (var visitor in this.visitors)
     {
         visitor.UnspendTxOutput(chainPosition, txInput, txOutputKey, txOutput, outputScriptHash);
     }
     //});
 }
Exemple #8
0
 public void CoinbaseInput(ChainPosition chainPosition, TxInput txInput)
 {
     //this.Add(() =>
     //{
     foreach (var visitor in this.visitors)
     {
         visitor.CoinbaseInput(chainPosition, txInput);
     }
     //});
 }
 public void AfterRemoveTransaction(ChainPosition chainPosition, Transaction tx)
 {
     this.Add(() =>
     {
         foreach (var visitor in this.visitors)
         {
             visitor.AfterRemoveTransaction(chainPosition, tx);
         }
     });
 }
Exemple #10
0
 public void BeforeAddTransaction(ChainPosition chainPosition, Transaction tx)
 {
     this.Add(() =>
     {
         foreach (var visitor in this.visitors)
         {
             visitor.BeforeAddTransaction(chainPosition, tx);
         }
     });
 }
 public virtual void AfterRemoveTransaction(ChainPosition chainPosition, Transaction tx)
 {
 }
Exemple #12
0
        private void ScanForEntry(ChainPosition chainPosition, EnumWalletEntryType walletEntryType, TxOutput txOutput, UInt256 outputScriptHash)
        {
            var matchingAddresses = ImmutableList.CreateBuilder<MonitoredWalletAddress>();

            // test hash addresses
            List<MonitoredWalletAddress> addresses;
            if (this.addressesByOutputScriptHash.TryGetValue(outputScriptHash, out addresses))
            {
                matchingAddresses.AddRange(addresses);
            }

            // test matcher addresses
            foreach (var address in this.matcherAddresses)
            {
                if (address.Address.MatchesTxOutput(txOutput, outputScriptHash))
                    matchingAddresses.Add(address);
            }

            if (matchingAddresses.Count > 0)
            {
                var entry = new WalletEntry
                (
                    addresses: matchingAddresses.ToImmutable(),
                    type: walletEntryType,
                    chainPosition: chainPosition,
                    value: txOutput.Value
                );

                lock (this.entries)
                {
                    if (keepEntries)
                        this.entries.Add(entry);

                    this.entriesCount++;
                }
                this.bitBalance += entry.BitValue * walletEntryType.Direction();

                logger.Debug($"{walletEntryType + ":",-10}   {txOutput.Value / (decimal)(100.MILLION()),20:#,##0.000_000_00} BTC, Entries: {this.entriesCount:#,##0}");

                this.OnEntryAdded?.Invoke(entry);
            }
        }
 public virtual void UnspendTxOutput(ChainPosition chainPosition, TxInput txInput, TxOutputKey txOutputKey, TxOutput txOutput, UInt256 outputScriptHash)
 {
 }
 public virtual void UnmintTxOutput(ChainPosition chainPosition, TxOutputKey txOutputKey, TxOutput txOutput, UInt256 outputScriptHash, bool isCoinbase)
 {
 }
 public virtual void UnCoinbaseInput(ChainPosition chainPosition, TxInput txInput)
 {
 }
 public virtual void BeforeRemoveTransaction(ChainPosition chainPosition, Transaction tx)
 {
 }
 public virtual void SpendTxOutput(ChainPosition chainPosition, ChainedHeader chainedHeader, Transaction tx, TxInput txInput, TxOutputKey txOutputKey, TxOutput txOutput, UInt256 outputScriptHash)
 {
 }