コード例 #1
0
ファイル: WalletEntry.cs プロジェクト: cole2295/BitSharp
 public WalletEntry(IImmutableList<MonitoredWalletAddress> addresses, EnumWalletEntryType type, ChainPosition chainPosition, UInt64 value)
 {
     Addresses = addresses;
     Type = type;
     ChainPosition = chainPosition;
     Value = value;
 }
コード例 #2
0
ファイル: ChainStateMonitor.cs プロジェクト: sph001/BitSharp
 public void BeforeRemoveTransaction(ChainPosition chainPosition, Transaction tx)
 {
     //this.Add(() =>
     //{
     foreach (var visitor in this.visitors)
     {
         visitor.BeforeRemoveTransaction(chainPosition, tx);
     }
     //});
 }
コード例 #3
0
ファイル: ChainStateMonitor.cs プロジェクト: sph001/BitSharp
 public void AfterAddTransaction(ChainPosition chainPosition, Transaction tx)
 {
     //this.Add(() =>
     //{
     foreach (var visitor in this.visitors)
     {
         visitor.AfterAddTransaction(chainPosition, tx);
     }
     //});
 }
コード例 #4
0
ファイル: ChainStateMonitor.cs プロジェクト: xia7410/BitSharp
 public void UnCoinbaseInput(ChainPosition chainPosition, TxInput txInput)
 {
     this.Add(() =>
     {
         foreach (var visitor in this.visitors)
         {
             visitor.UnCoinbaseInput(chainPosition, txInput);
         }
     });
 }
コード例 #5
0
ファイル: ChainStateMonitor.cs プロジェクト: sph001/BitSharp
 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);
     }
     //});
 }
コード例 #6
0
ファイル: ChainStateMonitor.cs プロジェクト: sph001/BitSharp
 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);
     }
     //});
 }
コード例 #7
0
ファイル: ChainStateMonitor.cs プロジェクト: sph001/BitSharp
 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);
     }
     //});
 }
コード例 #8
0
ファイル: ChainStateMonitor.cs プロジェクト: sph001/BitSharp
 public void CoinbaseInput(ChainPosition chainPosition, TxInput txInput)
 {
     //this.Add(() =>
     //{
     foreach (var visitor in this.visitors)
     {
         visitor.CoinbaseInput(chainPosition, txInput);
     }
     //});
 }
コード例 #9
0
ファイル: ChainStateMonitor.cs プロジェクト: xia7410/BitSharp
 public void AfterRemoveTransaction(ChainPosition chainPosition, Transaction tx)
 {
     this.Add(() =>
     {
         foreach (var visitor in this.visitors)
         {
             visitor.AfterRemoveTransaction(chainPosition, tx);
         }
     });
 }
コード例 #10
0
ファイル: ChainStateMonitor.cs プロジェクト: xia7410/BitSharp
 public void BeforeAddTransaction(ChainPosition chainPosition, Transaction tx)
 {
     this.Add(() =>
     {
         foreach (var visitor in this.visitors)
         {
             visitor.BeforeAddTransaction(chainPosition, tx);
         }
     });
 }
コード例 #11
0
 public virtual void AfterRemoveTransaction(ChainPosition chainPosition, Transaction tx)
 {
 }
コード例 #12
0
ファイル: WalletMonitor.cs プロジェクト: cole2295/BitSharp
        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);
            }
        }
コード例 #13
0
 public virtual void UnspendTxOutput(ChainPosition chainPosition, TxInput txInput, TxOutputKey txOutputKey, TxOutput txOutput, UInt256 outputScriptHash)
 {
 }
コード例 #14
0
 public virtual void UnmintTxOutput(ChainPosition chainPosition, TxOutputKey txOutputKey, TxOutput txOutput, UInt256 outputScriptHash, bool isCoinbase)
 {
 }
コード例 #15
0
 public virtual void UnCoinbaseInput(ChainPosition chainPosition, TxInput txInput)
 {
 }
コード例 #16
0
 public virtual void BeforeRemoveTransaction(ChainPosition chainPosition, Transaction tx)
 {
 }
コード例 #17
0
 public virtual void SpendTxOutput(ChainPosition chainPosition, ChainedHeader chainedHeader, Transaction tx, TxInput txInput, TxOutputKey txOutputKey, TxOutput txOutput, UInt256 outputScriptHash)
 {
 }