From e4e76446acd22da12a978419a3ae8abc57b1e35a Mon Sep 17 00:00:00 2001 From: Neil Hernandez Date: Thu, 13 Sep 2018 13:42:40 -0400 Subject: [PATCH 1/8] Create payload models for compact filter client --- .../CompactFilterCheckPointPayload.cs | 44 +++++++ .../Payloads/CompactFilterHeadersPayload.cs | 62 +++++++++ .../Protocol/Payloads/CompactFilterPayload.cs | 70 ++++++++++ .../Payloads/GetCompactFiltersPayload.cs | 123 ++++++++++++++++++ NBitcoin/Protocol/Payloads/VersionPayload.cs | 5 + 5 files changed, 304 insertions(+) create mode 100644 NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs create mode 100644 NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs create mode 100644 NBitcoin/Protocol/Payloads/CompactFilterPayload.cs create mode 100644 NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs diff --git a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs new file mode 100644 index 0000000000..a2c356885b --- /dev/null +++ b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NBitcoin.Protocol.Payloads +{ + + [Payload("cfcheckpt")] + public class CompactFilterCheckPointPayload : Payload + { + private byte _filterType; + private byte[] _stopHash; + private byte[] _filterHeaders; + + public CompactFilterCheckPointPayload(FilterType filterType, byte[] stopHash, byte[] filterHeaders) + { + if (filterType != FilterType.Basic) + throw new ArgumentException(nameof(filterType)); + if (stopHash == null) + throw new ArgumentException(nameof(stopHash)); + if (filterHeaders == null) + throw new ArgumentException(nameof(filterHeaders)); + + FilterType = filterType; + _stopHash = stopHash; + _filterHeaders = filterHeaders; + } + + public FilterType FilterType + { + get => (FilterType)_filterType; + internal set => _filterType = (byte)value; + } + + + + public void ReadWrite(BitcoinStream stream) + { + stream.ReadWrite(ref _filterType); + stream.ReadWrite(ref _stopHash); + stream.ReadWrite(ref _filterHeaders); + } + } +} diff --git a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs new file mode 100644 index 0000000000..62f0e40924 --- /dev/null +++ b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs @@ -0,0 +1,62 @@ +#if !NOSOCKET +using NBitcoin.Crypto; +using NBitcoin.Protocol.Behaviors; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace NBitcoin.Protocol.Payloads +{ + [Payload("cfheaders")] + public class CompactFilterHeadersPayload: Payload + { + private byte _filterType; + private byte[] _stopHash; + private byte[] _previousFilterHeader; + private byte[] _filterHashes; + + public CompactFilterHeadersPayload(FilterType filterType, byte[] stopHash, byte[] previousFilterHeader, byte[] filterHashes) + { + if (filterType != FilterType.Basic) + throw new ArgumentException(nameof(filterType)); + if (stopHash == null) + throw new ArgumentException(nameof(stopHash)); + if (previousFilterHeader == null) + throw new ArgumentException(nameof(previousFilterHeader)); + if (filterHashes == null) + throw new ArgumentException(nameof(filterHashes)); + + + FilterType = filterType; + _stopHash = stopHash; + _previousFilterHeader = previousFilterHeader; + _filterHashes = filterHashes; + } + + public FilterType FilterType + { + get => (FilterType)_filterType; + internal set => _filterType = (byte)value; + } + + public void ReadWrite(BitcoinStream stream) + { + stream.ReadWrite(ref _filterType); + stream.ReadWrite(ref _stopHash); + stream.ReadWrite(ref _previousFilterHeader); + stream.ReadWrite(ref _filterHashes); + } + + + public byte[] StopHash => _stopHash; + public byte[] PreviousFilterHeader => _previousFilterHeader; + public byte[] FilterHashes => _filterHashes; + } +} +#endif diff --git a/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs new file mode 100644 index 0000000000..0e2f5494df --- /dev/null +++ b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs @@ -0,0 +1,70 @@ +#if !NOSOCKET +using NBitcoin.Crypto; +using NBitcoin.Protocol.Behaviors; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +namespace NBitcoin.Protocol +{ + + /// + /// Represents the p2p message payload used for sharing a block's compact filter. + /// + [Payload("cfilter")] + public class CompactFilterPayload : Payload + { + private byte _filterType; + private byte[] _filterBytes; + private uint256 _blockHash; + + /// + /// Gets the Filter type for which headers are requested + /// + public FilterType FilterType + { + get => (FilterType)_filterType; + internal set => _filterType = (byte)value; + } + /// + /// Gets the serialized compact filter for this block + /// + public byte[] FilterBytes => _filterBytes; + + + /// + /// Gets block hash of the Bitcoin block for which the filter is being returned + /// + public uint256 BlockHash => _blockHash; + public CompactFilterPayload(FilterType filterType, uint256 blockhash, byte[] filterBytes) + { + if (filterType != FilterType.Basic /*&& filterType != FilterType.Extended*/) //Extended filters removed + throw new ArgumentException($"'{filterType}' is not a valid value. Try with Basic or Extended.", nameof(filterType)); + if (blockhash == null) + throw new ArgumentNullException(nameof(blockhash)); + if (filterBytes == null) + throw new ArgumentNullException(nameof(filterBytes)); + + + FilterType = filterType; + _blockHash = blockhash; + _filterBytes = filterBytes; + } + + #region IBitcoinSerializable Members + public void ReadWrite(BitcoinStream stream) + { + stream.ReadWrite(ref _filterType); + stream.ReadWrite(ref _blockHash); + stream.ReadWriteAsVarString(ref _filterBytes); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs b/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs new file mode 100644 index 0000000000..72451e05ec --- /dev/null +++ b/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs @@ -0,0 +1,123 @@ +#if !NOSOCKET +using NBitcoin.Crypto; +using NBitcoin.Protocol.Behaviors; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +namespace NBitcoin.Protocol +{ + public enum FilterType : byte + { + Basic = (0x00), + //Extended = (0x01) Decison to remove extended filter due to increased filter size when doing recursive parsing. + //https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-May/016037.html + } + + /// + /// Represents the p2p message payload used for requesting a range of compact filter/headers. + /// + public abstract class CompactFiltersQueryPayload : Payload + { + private byte _filterType; + private uint _startHeight; + private uint256 _stopHash; + /// + /// Gets the Filter type for which headers are requested + /// + public FilterType FilterType + { + get => (FilterType)_filterType; + internal set => _filterType = (byte)value; + } + /// + /// Gets the height of the first block in the requested range + /// + public uint StartHeight => _startHeight; + /// + /// Gets the hash of the last block in the requested range + /// + public uint256 StopHash => _stopHash; + protected CompactFiltersQueryPayload(FilterType filterType, uint startHeight, uint256 stopHash) + { + if (filterType != FilterType.Basic /*&& filterType != FilterType.Extended*/) //Extended Filter removed + throw new ArgumentException($"'{filterType}' is not a valid value. Try with Basic.", nameof(filterType)); + if (stopHash == null) + throw new ArgumentNullException(nameof(stopHash)); + + FilterType = filterType; + _startHeight = startHeight; + _stopHash = stopHash; + } + + #region IBitcoinSerializable Members + public void ReadWrite(BitcoinStream stream) + { + stream.ReadWrite(ref _filterType); + stream.ReadWrite(ref _startHeight); + stream.ReadWrite(ref _stopHash); + } + + #endregion + } + /// + /// Represents the p2p message payload used for requesting a range of compact filter. + /// + [Payload("getcfilters")] + public class GetCompactFiltersPayload : CompactFiltersQueryPayload + { + public GetCompactFiltersPayload(FilterType filterType, uint startHeight, uint256 stopHash) + : base(filterType, startHeight, stopHash) + { + } + } + /// + /// Represents the p2p message payload used for requesting a range of compact filter headers. + /// + [Payload("getcfheaders")] + public class GetCompactFilterHeadersPayload : CompactFiltersQueryPayload + { + public GetCompactFilterHeadersPayload(FilterType filterType, uint startHeight, uint256 stopHash) + : base(filterType, startHeight, stopHash) + { + } + } + + [Payload("getcfcheckpt")] + public class GetCompactFilterCheckPointPayload : Payload + { + private byte _filterType; + private uint256 _stopHash; + + public GetCompactFilterCheckPointPayload(FilterType filterType, uint256 stopHash) + { + + } + + + public FilterType FilterType + { + get => (FilterType)_filterType; + internal set => _filterType = (byte)value; + } + /// + /// Gets the height of the first block in the requested range + /// + + + + /// + /// Gets the hash of the last block in the requested range + /// + public uint256 StopHash => _stopHash; + } + + + +} +#endif \ No newline at end of file diff --git a/NBitcoin/Protocol/Payloads/VersionPayload.cs b/NBitcoin/Protocol/Payloads/VersionPayload.cs index e17067f69f..4cbec0d7bb 100644 --- a/NBitcoin/Protocol/Payloads/VersionPayload.cs +++ b/NBitcoin/Protocol/Payloads/VersionPayload.cs @@ -43,6 +43,11 @@ public enum NodeServices : ulong /// NODE_WITNESS = (1 << 3), + /// Indicates that a node can be asked for compact filters. + /// If enabled, the node MUST respond to all BIP 157 messages for filter types 0x00 and 0x01 + /// + NODE_COMPACT_FILTERS = (1 << 6), + /// NODE_NETWORK_LIMITED means the same as NODE_NETWORK with the limitation of only /// serving the last 288 (2 day) blocks /// See BIP159 for details on how this is implemented. From e18a3c836bc3b0d47636d554a9dc7a57b27446b7 Mon Sep 17 00:00:00 2001 From: Neil Hernandez Date: Wed, 3 Oct 2018 22:44:45 -0400 Subject: [PATCH 2/8] CF message protocol --- .../CompactFilterCheckPointPayload.cs | 60 +++++++++++++++---- .../Payloads/CompactFilterHeadersPayload.cs | 59 ++++++++++++++---- .../Protocol/Payloads/CompactFilterPayload.cs | 34 +++++++++-- .../Payloads/GetCompactFiltersPayload.cs | 36 ++++++++--- 4 files changed, 153 insertions(+), 36 deletions(-) diff --git a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs index a2c356885b..33c59dd639 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs @@ -1,18 +1,24 @@ -using System; +using System; using System.Collections.Generic; +using System.Linq; using System.Text; -namespace NBitcoin.Protocol.Payloads +namespace NBitcoin.Protocol { [Payload("cfcheckpt")] - public class CompactFilterCheckPointPayload : Payload + public class CompactFilterCheckPointPayload : Payload, IBitcoinSerializable { - private byte _filterType; - private byte[] _stopHash; - private byte[] _filterHeaders; + private byte _filterType = 0; + private uint256 _stopHash = new uint256(); + private uint256[] _filterHeaders = { }; + private VarInt _FilterHeadersLength = new VarInt(0); + public CompactFilterCheckPointPayload() + { + + } - public CompactFilterCheckPointPayload(FilterType filterType, byte[] stopHash, byte[] filterHeaders) + public CompactFilterCheckPointPayload(FilterType filterType, uint256 stopHash, uint filtersHeaderLength, byte[] filterHeaders) { if (filterType != FilterType.Basic) throw new ArgumentException(nameof(filterType)); @@ -23,7 +29,25 @@ public CompactFilterCheckPointPayload(FilterType filterType, byte[] stopHash, by FilterType = filterType; _stopHash = stopHash; - _filterHeaders = filterHeaders; + _filterHeaders = GetHashes(filterHeaders); + } + + private uint256[] GetHashes(byte[] filterHeaders) + { + int bytesToTake = 32; + int bytesTaken = 0; + List temp = new List(); + + List blockHeaders = new List(); + + for (; bytesTaken < filterHeaders.Length; bytesTaken += bytesToTake) + { + var subArray = filterHeaders.SafeSubarray(bytesTaken, bytesToTake); + + temp.Add(new uint256(subArray)); + } + + return temp.ToArray(); } public FilterType FilterType @@ -31,14 +55,28 @@ public FilterType FilterType get => (FilterType)_filterType; internal set => _filterType = (byte)value; } - - + public uint256 StopHash { get => _stopHash; set => _stopHash = value; } + public uint256[] FilterHeaders { get => _filterHeaders; set => _filterHeaders = value; } + public VarInt FilterHeadersLength { get => _FilterHeadersLength; set => _FilterHeadersLength = value; } public void ReadWrite(BitcoinStream stream) { + var length = stream.Inner.Length; + stream.ReadWrite(ref _filterType); stream.ReadWrite(ref _stopHash); - stream.ReadWrite(ref _filterHeaders); + stream.ReadWrite(ref _FilterHeadersLength); + var _tempfilterHeaders = new byte[_FilterHeadersLength.ToLong() * 32]; + + stream.ReadWrite(ref _tempfilterHeaders); + + _filterHeaders = GetHashes(_tempfilterHeaders); + } + + + public override string ToString() + { + return $"cfcheckpt - filter type: {this._filterType}| Stop Hash {this.StopHash}| # of checkpoints: {this._FilterHeadersLength.ToLong()}"; } } } diff --git a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs index 62f0e40924..fe5e9cdddd 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs @@ -1,4 +1,4 @@ -#if !NOSOCKET +#if !NOSOCKET using NBitcoin.Crypto; using NBitcoin.Protocol.Behaviors; using System; @@ -11,17 +11,18 @@ using System.Threading; using System.Threading.Tasks; -namespace NBitcoin.Protocol.Payloads +namespace NBitcoin.Protocol { [Payload("cfheaders")] - public class CompactFilterHeadersPayload: Payload + public class CompactFilterHeadersPayload: Payload, IBitcoinSerializable { - private byte _filterType; - private byte[] _stopHash; - private byte[] _previousFilterHeader; - private byte[] _filterHashes; + private byte _filterType = 0; + private uint256 _stopHash = new uint256(); + private uint256 _previousFilterHeader = new uint256(); + private VarInt _filterHashesLength = new VarInt(0); + private uint256[] _filterHashes = { }; - public CompactFilterHeadersPayload(FilterType filterType, byte[] stopHash, byte[] previousFilterHeader, byte[] filterHashes) + public CompactFilterHeadersPayload(FilterType filterType, uint256 stopHash, uint256 previousFilterHeader, byte[] filterHashes) { if (filterType != FilterType.Basic) throw new ArgumentException(nameof(filterType)); @@ -36,9 +37,11 @@ public CompactFilterHeadersPayload(FilterType filterType, byte[] stopHash, byte[ FilterType = filterType; _stopHash = stopHash; _previousFilterHeader = previousFilterHeader; - _filterHashes = filterHashes; + _filterHashes = GetHashes(filterHashes); } + public CompactFilterHeadersPayload() { } + public FilterType FilterType { get => (FilterType)_filterType; @@ -50,13 +53,43 @@ public void ReadWrite(BitcoinStream stream) stream.ReadWrite(ref _filterType); stream.ReadWrite(ref _stopHash); stream.ReadWrite(ref _previousFilterHeader); - stream.ReadWrite(ref _filterHashes); + stream.ReadWrite(ref _filterHashesLength); + var _tempfilterHeaders = new byte[_filterHashesLength.ToLong() * 32]; + + stream.ReadWrite(ref _tempfilterHeaders); + + _filterHashes = GetHashes(_tempfilterHeaders); } + private uint256[] GetHashes(byte[] filterHeaders) + { + int bytesToTake = 32; + int bytesTaken = 0; + List temp = new List(); + + List blockHeaders = new List(); + + for (; bytesTaken < filterHeaders.Length; bytesTaken += bytesToTake) + { + var subArray = filterHeaders.SafeSubarray(bytesTaken, bytesToTake); - public byte[] StopHash => _stopHash; - public byte[] PreviousFilterHeader => _previousFilterHeader; - public byte[] FilterHashes => _filterHashes; + temp.Add(new uint256(subArray)); + } + + return temp.ToArray(); + } + + + public uint256 StopHash => _stopHash; + public uint256 PreviousFilterHeader => _previousFilterHeader; + public uint256[] FilterHashes => _filterHashes; + + + + public override string ToString() + { + return $"Cheaders type: {this.FilterType}| # of headers: {this._filterHashesLength.ToLong()}| Stop Hash: {this.StopHash}| Previous Filter Header Hash: {this.PreviousFilterHeader}"; + } } } #endif diff --git a/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs index 0e2f5494df..85c0150baa 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs @@ -1,4 +1,4 @@ -#if !NOSOCKET +#if !NOSOCKET using NBitcoin.Crypto; using NBitcoin.Protocol.Behaviors; using System; @@ -19,9 +19,10 @@ namespace NBitcoin.Protocol [Payload("cfilter")] public class CompactFilterPayload : Payload { - private byte _filterType; + private byte _filterType = 0; private byte[] _filterBytes; - private uint256 _blockHash; + private VarInt _numFilterBytes = new VarInt(0); + private uint256 _blockHash = new uint256(); /// /// Gets the Filter type for which headers are requested @@ -56,15 +57,38 @@ public CompactFilterPayload(FilterType filterType, uint256 blockhash, byte[] fil _filterBytes = filterBytes; } + public CompactFilterPayload() + { + } + #region IBitcoinSerializable Members + public void ReadWrite(BitcoinStream stream) { stream.ReadWrite(ref _filterType); stream.ReadWrite(ref _blockHash); - stream.ReadWriteAsVarString(ref _filterBytes); + stream.ReadWrite(ref _filterBytes); } #endregion + + public override void ReadWriteCore(BitcoinStream stream) + { + stream.ReadWrite(ref _filterType); + + stream.ReadWrite(ref _blockHash); + + stream.ReadWrite(ref _numFilterBytes); + + _filterBytes = new byte[_numFilterBytes.ToLong()]; + + stream.ReadWrite(ref _filterBytes); + } + + public override string ToString() + { + return $"Cfilter type: {this.FilterType}| Block hash: {this.BlockHash}| cfilter bytes omitted."; + } } } -#endif \ No newline at end of file +#endif diff --git a/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs b/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs index 72451e05ec..0cef743d77 100644 --- a/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs +++ b/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs @@ -1,4 +1,4 @@ -#if !NOSOCKET +#if !NOSOCKET using NBitcoin.Crypto; using NBitcoin.Protocol.Behaviors; using System; @@ -10,6 +10,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; + namespace NBitcoin.Protocol { public enum FilterType : byte @@ -24,9 +25,9 @@ public enum FilterType : byte /// public abstract class CompactFiltersQueryPayload : Payload { - private byte _filterType; - private uint _startHeight; - private uint256 _stopHash; + private byte _filterType = 0; + private uint _startHeight = 0; + private uint256 _stopHash = new uint256(); /// /// Gets the Filter type for which headers are requested /// @@ -55,14 +56,15 @@ protected CompactFiltersQueryPayload(FilterType filterType, uint startHeight, ui _stopHash = stopHash; } + protected CompactFiltersQueryPayload() { } + #region IBitcoinSerializable Members - public void ReadWrite(BitcoinStream stream) + public override void ReadWriteCore(BitcoinStream stream) { stream.ReadWrite(ref _filterType); stream.ReadWrite(ref _startHeight); stream.ReadWrite(ref _stopHash); } - #endregion } /// @@ -71,10 +73,14 @@ public void ReadWrite(BitcoinStream stream) [Payload("getcfilters")] public class GetCompactFiltersPayload : CompactFiltersQueryPayload { + public GetCompactFiltersPayload(FilterType filterType, uint startHeight, uint256 stopHash) : base(filterType, startHeight, stopHash) { } + + public GetCompactFiltersPayload() { } + } /// /// Represents the p2p message payload used for requesting a range of compact filter headers. @@ -86,6 +92,8 @@ public GetCompactFilterHeadersPayload(FilterType filterType, uint startHeight, u : base(filterType, startHeight, stopHash) { } + + public GetCompactFilterHeadersPayload() { } } [Payload("getcfcheckpt")] @@ -96,7 +104,21 @@ public class GetCompactFilterCheckPointPayload : Payload public GetCompactFilterCheckPointPayload(FilterType filterType, uint256 stopHash) { + if (filterType != FilterType.Basic /*&& filterType != FilterType.Extended*/) //Extended Filter removed + throw new ArgumentException($"'{filterType}' is not a valid value. Try with Basic.", nameof(filterType)); + if (stopHash == null) + throw new ArgumentNullException(nameof(stopHash)); + + FilterType = filterType; + _stopHash = stopHash; + } + + public GetCompactFilterCheckPointPayload() { } + public override void ReadWriteCore(BitcoinStream stream) + { + stream.ReadWrite(ref _filterType); + stream.ReadWrite(ref _stopHash); } @@ -120,4 +142,4 @@ public FilterType FilterType } -#endif \ No newline at end of file +#endif From 9c3344b993499fde85c2b3276c7defc0cd298ee1 Mon Sep 17 00:00:00 2001 From: Neil Hernandez Date: Wed, 3 Oct 2018 23:12:41 -0400 Subject: [PATCH 3/8] Added comments of removed filter and improved argument exception message --- NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs | 2 +- NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs | 4 ++-- NBitcoin/Protocol/Payloads/CompactFilterPayload.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs index 33c59dd639..3e0527fda2 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs @@ -20,7 +20,7 @@ public CompactFilterCheckPointPayload() public CompactFilterCheckPointPayload(FilterType filterType, uint256 stopHash, uint filtersHeaderLength, byte[] filterHeaders) { - if (filterType != FilterType.Basic) + if (filterType != FilterType.Basic /*&& filterType != FilterType.Extended*/) //Extended filters removed throw new ArgumentException(nameof(filterType)); if (stopHash == null) throw new ArgumentException(nameof(stopHash)); diff --git a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs index fe5e9cdddd..5817275b56 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs @@ -24,8 +24,8 @@ public class CompactFilterHeadersPayload: Payload, IBitcoinSerializable public CompactFilterHeadersPayload(FilterType filterType, uint256 stopHash, uint256 previousFilterHeader, byte[] filterHashes) { - if (filterType != FilterType.Basic) - throw new ArgumentException(nameof(filterType)); + if (filterType != FilterType.Basic /*&& filterType != FilterType.Extended*/) //Extended filters removed + throw new ArgumentException($"'{filterType}' is not a valid value. Try with Basic.", nameof(filterType)); if (stopHash == null) throw new ArgumentException(nameof(stopHash)); if (previousFilterHeader == null) diff --git a/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs index 85c0150baa..45ecda38ca 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs @@ -45,7 +45,7 @@ public FilterType FilterType public CompactFilterPayload(FilterType filterType, uint256 blockhash, byte[] filterBytes) { if (filterType != FilterType.Basic /*&& filterType != FilterType.Extended*/) //Extended filters removed - throw new ArgumentException($"'{filterType}' is not a valid value. Try with Basic or Extended.", nameof(filterType)); + throw new ArgumentException($"'{filterType}' is not a valid value. Try with Basic.", nameof(filterType)); if (blockhash == null) throw new ArgumentNullException(nameof(blockhash)); if (filterBytes == null) From 47f7a65f0b07171d4114e58da299298025dc918b Mon Sep 17 00:00:00 2001 From: Neil Hernandez Date: Sat, 6 Oct 2018 08:08:12 -0400 Subject: [PATCH 4/8] Serializing fix --- .../CompactFilterCheckPointPayload.cs | 34 +++++++++++++++++-- .../Payloads/CompactFilterHeadersPayload.cs | 34 +++++++++++++++++-- 2 files changed, 62 insertions(+), 6 deletions(-) diff --git a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs index 3e0527fda2..070977464a 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs @@ -66,11 +66,39 @@ public void ReadWrite(BitcoinStream stream) stream.ReadWrite(ref _filterType); stream.ReadWrite(ref _stopHash); stream.ReadWrite(ref _FilterHeadersLength); - var _tempfilterHeaders = new byte[_FilterHeadersLength.ToLong() * 32]; - stream.ReadWrite(ref _tempfilterHeaders); + //when serializing(Writing) we have to fill the tempfilterHeaders + if (stream.Serializing) + { + //turn the uint256[] into a byte array to write back into the bitcoin stream + List _tempfilterHeaders = new List(); + byte[] _tempFilterHeaderBytes = new byte[_FilterHeadersLength.ToLong() * 32]; //Init byte array to hold list after conversion + + foreach (var hash in _filterHeaders) + { + foreach (var bytee in hash.ToBytes()) + { + _tempfilterHeaders.Add(bytee); + + } + } + //Write bytes + _tempFilterHeaderBytes = _tempfilterHeaders.ToArray(); + stream.ReadWrite(ref _tempFilterHeaderBytes); + } - _filterHeaders = GetHashes(_tempfilterHeaders); + + if (!stream.Serializing) + { + //instantiate a byte[] to hold the incoming hashes + var _tempfilterHeaders = new byte[_FilterHeadersLength.ToLong() * 32]; + + //Write filters to temp variable + stream.ReadWrite(ref _tempfilterHeaders); + + //Convert the byte[] into "readable" uint256 hashes + _filterHeaders = GetHashes(_tempfilterHeaders); + } } diff --git a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs index 5817275b56..683f3ba8ce 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs @@ -54,11 +54,39 @@ public void ReadWrite(BitcoinStream stream) stream.ReadWrite(ref _stopHash); stream.ReadWrite(ref _previousFilterHeader); stream.ReadWrite(ref _filterHashesLength); - var _tempfilterHeaders = new byte[_filterHashesLength.ToLong() * 32]; + //var _tempfilterHeaders = new byte[_filterHashesLength.ToLong() * 32]; - stream.ReadWrite(ref _tempfilterHeaders); + if (stream.Serializing) + { + //turn the uint256[] into a byte array to write back into the bitcoin stream + List _tempfilterHeaders = new List(); + byte[] _tempFilterHeaderBytes = new byte[_filterHashesLength.ToLong() * 32]; //Init byte array to hold list after conversion + + foreach (var hash in _filterHashes) + { + foreach (var bytee in hash.ToBytes()) + { + _tempfilterHeaders.Add(bytee); + + } + } + //Write bytes + _tempFilterHeaderBytes = _tempfilterHeaders.ToArray(); + stream.ReadWrite(ref _tempFilterHeaderBytes); + } - _filterHashes = GetHashes(_tempfilterHeaders); + + if (!stream.Serializing) + { + //instantiate a byte[] to hold the incoming hashes + var _tempfilterHeaders = new byte[_filterHashesLength.ToLong() * 32]; + + //Write filters to temp variable + stream.ReadWrite(ref _tempfilterHeaders); + + //Convert the byte[] into "readable" uint256 hashes + _filterHashes = GetHashes(_tempfilterHeaders); + } } private uint256[] GetHashes(byte[] filterHeaders) From fa1272189233f188f2e683b401c87be88da9896c Mon Sep 17 00:00:00 2001 From: Neil Hernandez Date: Thu, 11 Oct 2018 13:29:39 -0400 Subject: [PATCH 5/8] Warning's fix and naming convention changed --- .../CompactFilterCheckPointPayload.cs | 30 ++++++------ .../Payloads/CompactFilterHeadersPayload.cs | 46 +++++++++---------- .../Protocol/Payloads/CompactFilterPayload.cs | 38 +++++++-------- .../Payloads/GetCompactFiltersPayload.cs | 40 ++++++++-------- 4 files changed, 77 insertions(+), 77 deletions(-) diff --git a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs index 070977464a..fc0b70a906 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs @@ -9,9 +9,9 @@ namespace NBitcoin.Protocol [Payload("cfcheckpt")] public class CompactFilterCheckPointPayload : Payload, IBitcoinSerializable { - private byte _filterType = 0; - private uint256 _stopHash = new uint256(); - private uint256[] _filterHeaders = { }; + private byte _FilterType = 0; + private uint256 _StopHash = new uint256(); + private uint256[] _FilterHeaders = { }; private VarInt _FilterHeadersLength = new VarInt(0); public CompactFilterCheckPointPayload() { @@ -28,8 +28,8 @@ public CompactFilterCheckPointPayload(FilterType filterType, uint256 stopHash, u throw new ArgumentException(nameof(filterHeaders)); FilterType = filterType; - _stopHash = stopHash; - _filterHeaders = GetHashes(filterHeaders); + _StopHash = stopHash; + _FilterHeaders = GetHashes(filterHeaders); } private uint256[] GetHashes(byte[] filterHeaders) @@ -52,19 +52,19 @@ private uint256[] GetHashes(byte[] filterHeaders) public FilterType FilterType { - get => (FilterType)_filterType; - internal set => _filterType = (byte)value; + get => (FilterType)_FilterType; + internal set => _FilterType = (byte)value; } - public uint256 StopHash { get => _stopHash; set => _stopHash = value; } - public uint256[] FilterHeaders { get => _filterHeaders; set => _filterHeaders = value; } + public uint256 StopHash { get => _StopHash; set => _StopHash = value; } + public uint256[] FilterHeaders { get => _FilterHeaders; set => _FilterHeaders = value; } public VarInt FilterHeadersLength { get => _FilterHeadersLength; set => _FilterHeadersLength = value; } - public void ReadWrite(BitcoinStream stream) + public new void ReadWrite(BitcoinStream stream) { var length = stream.Inner.Length; - stream.ReadWrite(ref _filterType); - stream.ReadWrite(ref _stopHash); + stream.ReadWrite(ref _FilterType); + stream.ReadWrite(ref _StopHash); stream.ReadWrite(ref _FilterHeadersLength); //when serializing(Writing) we have to fill the tempfilterHeaders @@ -74,7 +74,7 @@ public void ReadWrite(BitcoinStream stream) List _tempfilterHeaders = new List(); byte[] _tempFilterHeaderBytes = new byte[_FilterHeadersLength.ToLong() * 32]; //Init byte array to hold list after conversion - foreach (var hash in _filterHeaders) + foreach (var hash in _FilterHeaders) { foreach (var bytee in hash.ToBytes()) { @@ -97,14 +97,14 @@ public void ReadWrite(BitcoinStream stream) stream.ReadWrite(ref _tempfilterHeaders); //Convert the byte[] into "readable" uint256 hashes - _filterHeaders = GetHashes(_tempfilterHeaders); + _FilterHeaders = GetHashes(_tempfilterHeaders); } } public override string ToString() { - return $"cfcheckpt - filter type: {this._filterType}| Stop Hash {this.StopHash}| # of checkpoints: {this._FilterHeadersLength.ToLong()}"; + return $"cfcheckpt - filter type: {this._FilterType}| Stop Hash {this.StopHash}| # of checkpoints: {this._FilterHeadersLength.ToLong()}"; } } } diff --git a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs index 683f3ba8ce..0335b207a5 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs @@ -16,11 +16,11 @@ namespace NBitcoin.Protocol [Payload("cfheaders")] public class CompactFilterHeadersPayload: Payload, IBitcoinSerializable { - private byte _filterType = 0; - private uint256 _stopHash = new uint256(); - private uint256 _previousFilterHeader = new uint256(); - private VarInt _filterHashesLength = new VarInt(0); - private uint256[] _filterHashes = { }; + private byte _FilterType = 0; + private uint256 _StopHash = new uint256(); + private uint256 _PreviousFilterHeader = new uint256(); + private VarInt _FilterHashesLength = new VarInt(0); + private uint256[] _FilterHashes = { }; public CompactFilterHeadersPayload(FilterType filterType, uint256 stopHash, uint256 previousFilterHeader, byte[] filterHashes) { @@ -35,34 +35,34 @@ public CompactFilterHeadersPayload(FilterType filterType, uint256 stopHash, uint FilterType = filterType; - _stopHash = stopHash; - _previousFilterHeader = previousFilterHeader; - _filterHashes = GetHashes(filterHashes); + _StopHash = stopHash; + _PreviousFilterHeader = previousFilterHeader; + _FilterHashes = GetHashes(filterHashes); } public CompactFilterHeadersPayload() { } public FilterType FilterType { - get => (FilterType)_filterType; - internal set => _filterType = (byte)value; + get => (FilterType)_FilterType; + internal set => _FilterType = (byte)value; } - public void ReadWrite(BitcoinStream stream) + public new void ReadWrite(BitcoinStream stream) { - stream.ReadWrite(ref _filterType); - stream.ReadWrite(ref _stopHash); - stream.ReadWrite(ref _previousFilterHeader); - stream.ReadWrite(ref _filterHashesLength); + stream.ReadWrite(ref _FilterType); + stream.ReadWrite(ref _StopHash); + stream.ReadWrite(ref _PreviousFilterHeader); + stream.ReadWrite(ref _FilterHashesLength); //var _tempfilterHeaders = new byte[_filterHashesLength.ToLong() * 32]; if (stream.Serializing) { //turn the uint256[] into a byte array to write back into the bitcoin stream List _tempfilterHeaders = new List(); - byte[] _tempFilterHeaderBytes = new byte[_filterHashesLength.ToLong() * 32]; //Init byte array to hold list after conversion + byte[] _tempFilterHeaderBytes = new byte[_FilterHashesLength.ToLong() * 32]; //Init byte array to hold list after conversion - foreach (var hash in _filterHashes) + foreach (var hash in _FilterHashes) { foreach (var bytee in hash.ToBytes()) { @@ -79,13 +79,13 @@ public void ReadWrite(BitcoinStream stream) if (!stream.Serializing) { //instantiate a byte[] to hold the incoming hashes - var _tempfilterHeaders = new byte[_filterHashesLength.ToLong() * 32]; + var _tempfilterHeaders = new byte[_FilterHashesLength.ToLong() * 32]; //Write filters to temp variable stream.ReadWrite(ref _tempfilterHeaders); //Convert the byte[] into "readable" uint256 hashes - _filterHashes = GetHashes(_tempfilterHeaders); + _FilterHashes = GetHashes(_tempfilterHeaders); } } @@ -108,15 +108,15 @@ private uint256[] GetHashes(byte[] filterHeaders) } - public uint256 StopHash => _stopHash; - public uint256 PreviousFilterHeader => _previousFilterHeader; - public uint256[] FilterHashes => _filterHashes; + public uint256 StopHash => _StopHash; + public uint256 PreviousFilterHeader => _PreviousFilterHeader; + public uint256[] FilterHashes => _FilterHashes; public override string ToString() { - return $"Cheaders type: {this.FilterType}| # of headers: {this._filterHashesLength.ToLong()}| Stop Hash: {this.StopHash}| Previous Filter Header Hash: {this.PreviousFilterHeader}"; + return $"Cheaders type: {this.FilterType}| # of headers: {this._FilterHashesLength.ToLong()}| Stop Hash: {this.StopHash}| Previous Filter Header Hash: {this.PreviousFilterHeader}"; } } } diff --git a/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs index 45ecda38ca..d5dcfed35b 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs @@ -19,29 +19,29 @@ namespace NBitcoin.Protocol [Payload("cfilter")] public class CompactFilterPayload : Payload { - private byte _filterType = 0; - private byte[] _filterBytes; - private VarInt _numFilterBytes = new VarInt(0); - private uint256 _blockHash = new uint256(); + private byte _FilterType = 0; + private byte[] _FilterBytes; + private VarInt _NumFilterBytes = new VarInt(0); + private uint256 _BlockHash = new uint256(); /// /// Gets the Filter type for which headers are requested /// public FilterType FilterType { - get => (FilterType)_filterType; - internal set => _filterType = (byte)value; + get => (FilterType)_FilterType; + internal set => _FilterType = (byte)value; } /// /// Gets the serialized compact filter for this block /// - public byte[] FilterBytes => _filterBytes; + public byte[] FilterBytes => _FilterBytes; /// /// Gets block hash of the Bitcoin block for which the filter is being returned /// - public uint256 BlockHash => _blockHash; + public uint256 BlockHash => _BlockHash; public CompactFilterPayload(FilterType filterType, uint256 blockhash, byte[] filterBytes) { if (filterType != FilterType.Basic /*&& filterType != FilterType.Extended*/) //Extended filters removed @@ -53,8 +53,8 @@ public CompactFilterPayload(FilterType filterType, uint256 blockhash, byte[] fil FilterType = filterType; - _blockHash = blockhash; - _filterBytes = filterBytes; + _BlockHash = blockhash; + _FilterBytes = filterBytes; } public CompactFilterPayload() @@ -63,26 +63,26 @@ public CompactFilterPayload() #region IBitcoinSerializable Members - public void ReadWrite(BitcoinStream stream) + public new void ReadWrite(BitcoinStream stream) { - stream.ReadWrite(ref _filterType); - stream.ReadWrite(ref _blockHash); - stream.ReadWrite(ref _filterBytes); + stream.ReadWrite(ref _FilterType); + stream.ReadWrite(ref _BlockHash); + stream.ReadWrite(ref _FilterBytes); } #endregion public override void ReadWriteCore(BitcoinStream stream) { - stream.ReadWrite(ref _filterType); + stream.ReadWrite(ref _FilterType); - stream.ReadWrite(ref _blockHash); + stream.ReadWrite(ref _BlockHash); - stream.ReadWrite(ref _numFilterBytes); + stream.ReadWrite(ref _NumFilterBytes); - _filterBytes = new byte[_numFilterBytes.ToLong()]; + _FilterBytes = new byte[_NumFilterBytes.ToLong()]; - stream.ReadWrite(ref _filterBytes); + stream.ReadWrite(ref _FilterBytes); } public override string ToString() diff --git a/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs b/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs index 0cef743d77..544753dae8 100644 --- a/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs +++ b/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs @@ -25,25 +25,25 @@ public enum FilterType : byte /// public abstract class CompactFiltersQueryPayload : Payload { - private byte _filterType = 0; - private uint _startHeight = 0; - private uint256 _stopHash = new uint256(); + private byte _FilterType = 0; + private uint _StartHeight = 0; + private uint256 _StopHash = new uint256(); /// /// Gets the Filter type for which headers are requested /// public FilterType FilterType { - get => (FilterType)_filterType; - internal set => _filterType = (byte)value; + get => (FilterType)_FilterType; + internal set => _FilterType = (byte)value; } /// /// Gets the height of the first block in the requested range /// - public uint StartHeight => _startHeight; + public uint StartHeight => _StartHeight; /// /// Gets the hash of the last block in the requested range /// - public uint256 StopHash => _stopHash; + public uint256 StopHash => _StopHash; protected CompactFiltersQueryPayload(FilterType filterType, uint startHeight, uint256 stopHash) { if (filterType != FilterType.Basic /*&& filterType != FilterType.Extended*/) //Extended Filter removed @@ -52,8 +52,8 @@ protected CompactFiltersQueryPayload(FilterType filterType, uint startHeight, ui throw new ArgumentNullException(nameof(stopHash)); FilterType = filterType; - _startHeight = startHeight; - _stopHash = stopHash; + _StartHeight = startHeight; + _StopHash = stopHash; } protected CompactFiltersQueryPayload() { } @@ -61,9 +61,9 @@ protected CompactFiltersQueryPayload() { } #region IBitcoinSerializable Members public override void ReadWriteCore(BitcoinStream stream) { - stream.ReadWrite(ref _filterType); - stream.ReadWrite(ref _startHeight); - stream.ReadWrite(ref _stopHash); + stream.ReadWrite(ref _FilterType); + stream.ReadWrite(ref _StartHeight); + stream.ReadWrite(ref _StopHash); } #endregion } @@ -99,8 +99,8 @@ public GetCompactFilterHeadersPayload() { } [Payload("getcfcheckpt")] public class GetCompactFilterCheckPointPayload : Payload { - private byte _filterType; - private uint256 _stopHash; + private byte _FilterType; + private uint256 _StopHash; public GetCompactFilterCheckPointPayload(FilterType filterType, uint256 stopHash) { @@ -110,22 +110,22 @@ public GetCompactFilterCheckPointPayload(FilterType filterType, uint256 stopHash throw new ArgumentNullException(nameof(stopHash)); FilterType = filterType; - _stopHash = stopHash; + _StopHash = stopHash; } public GetCompactFilterCheckPointPayload() { } public override void ReadWriteCore(BitcoinStream stream) { - stream.ReadWrite(ref _filterType); - stream.ReadWrite(ref _stopHash); + stream.ReadWrite(ref _FilterType); + stream.ReadWrite(ref _StopHash); } public FilterType FilterType { - get => (FilterType)_filterType; - internal set => _filterType = (byte)value; + get => (FilterType)_FilterType; + internal set => _FilterType = (byte)value; } /// /// Gets the height of the first block in the requested range @@ -136,7 +136,7 @@ public FilterType FilterType /// /// Gets the hash of the last block in the requested range /// - public uint256 StopHash => _stopHash; + public uint256 StopHash => _StopHash; } From 7239cb915775d72332b1ffe3e8b12108979280e5 Mon Sep 17 00:00:00 2001 From: Neil Hernandez Date: Thu, 29 Nov 2018 16:35:09 -0500 Subject: [PATCH 6/8] net461 fix --- NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs index fc0b70a906..f3b381d23e 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs @@ -1,3 +1,4 @@ +#if !NOSOCKET using System; using System.Collections.Generic; using System.Linq; @@ -108,3 +109,4 @@ public override string ToString() } } } +#endif From dd3e59d9549da5acda59fdfd226a8d8234967cbe Mon Sep 17 00:00:00 2001 From: Neil Hernandez Date: Thu, 29 Nov 2018 17:08:46 -0500 Subject: [PATCH 7/8] removing '!NOSOCKET' --- NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs | 2 -- NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs | 2 -- NBitcoin/Protocol/Payloads/CompactFilterPayload.cs | 2 -- NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs | 2 -- 4 files changed, 8 deletions(-) diff --git a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs index f3b381d23e..fc0b70a906 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs @@ -1,4 +1,3 @@ -#if !NOSOCKET using System; using System.Collections.Generic; using System.Linq; @@ -109,4 +108,3 @@ public override string ToString() } } } -#endif diff --git a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs index 0335b207a5..b1558897f7 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs @@ -1,4 +1,3 @@ -#if !NOSOCKET using NBitcoin.Crypto; using NBitcoin.Protocol.Behaviors; using System; @@ -120,4 +119,3 @@ public override string ToString() } } } -#endif diff --git a/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs index d5dcfed35b..e5a7d3732b 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs @@ -1,4 +1,3 @@ -#if !NOSOCKET using NBitcoin.Crypto; using NBitcoin.Protocol.Behaviors; using System; @@ -91,4 +90,3 @@ public override string ToString() } } } -#endif diff --git a/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs b/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs index 544753dae8..402f9e58b1 100644 --- a/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs +++ b/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs @@ -1,4 +1,3 @@ -#if !NOSOCKET using NBitcoin.Crypto; using NBitcoin.Protocol.Behaviors; using System; @@ -142,4 +141,3 @@ public FilterType FilterType } -#endif From fab7b1815d40fcb38f26c1e09c5ba7abcdb5444e Mon Sep 17 00:00:00 2001 From: Neil Hernandez Date: Thu, 29 Nov 2018 17:15:54 -0500 Subject: [PATCH 8/8] removed unused using statements --- .../Payloads/CompactFilterCheckPointPayload.cs | 2 -- .../Protocol/Payloads/CompactFilterHeadersPayload.cs | 9 --------- NBitcoin/Protocol/Payloads/CompactFilterPayload.cs | 11 +---------- .../Protocol/Payloads/GetCompactFiltersPayload.cs | 10 ---------- 4 files changed, 1 insertion(+), 31 deletions(-) diff --git a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs index fc0b70a906..c514ca780a 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterCheckPointPayload.cs @@ -1,7 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; namespace NBitcoin.Protocol { diff --git a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs index b1558897f7..3ded831719 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterHeadersPayload.cs @@ -1,14 +1,5 @@ -using NBitcoin.Crypto; -using NBitcoin.Protocol.Behaviors; using System; using System.Collections.Generic; -using System.ComponentModel; -using System.IO; -using System.Linq; -using System.Net; -using System.Text; -using System.Threading; -using System.Threading.Tasks; namespace NBitcoin.Protocol { diff --git a/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs index e5a7d3732b..5698279a96 100644 --- a/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs +++ b/NBitcoin/Protocol/Payloads/CompactFilterPayload.cs @@ -1,14 +1,5 @@ -using NBitcoin.Crypto; -using NBitcoin.Protocol.Behaviors; using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.IO; -using System.Linq; -using System.Net; -using System.Text; -using System.Threading; -using System.Threading.Tasks; + namespace NBitcoin.Protocol { diff --git a/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs b/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs index 402f9e58b1..3933b8c7e7 100644 --- a/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs +++ b/NBitcoin/Protocol/Payloads/GetCompactFiltersPayload.cs @@ -1,14 +1,4 @@ -using NBitcoin.Crypto; -using NBitcoin.Protocol.Behaviors; using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.IO; -using System.Linq; -using System.Net; -using System.Text; -using System.Threading; -using System.Threading.Tasks; namespace NBitcoin.Protocol {