diff --git a/gcs_light_client.mediawiki b/gcs_light_client.mediawiki new file mode 100644 index 0000000000..eab1ccef52 --- /dev/null +++ b/gcs_light_client.mediawiki @@ -0,0 +1,1056 @@ +
+BIP: ???
+Layer: Peer Services
+Title: Compact Client Side Filtering for Light Clients
+Author: Olaoluwa Osuntokun 
+        Alex Akselrod 
+Comments: ???
+Comments-URI: ???
+Type: Standards Track
+Created: 05-24-2017
+License: CC0-1.0
+
+ +== Abstract == + +This BIP describes a new light client node type for Bitcoin as well as the +modifications to current full-nodes required to support this new type of light +client. The light client mode described in this BIP is meant to supersede BIP +37 as it provides a greater degree of privacy, utility, and also reduces the +resources required for full-nodes to service this new light client mode +compared to BIP +37https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki. +The light client mode described in this BIP can be seen as a "reversal" of BIP +37https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-May/012636.html: +rather than the light clients sending filters to full-nodes, full-nodes send +filters to light clients. Unlike BIP 37, we don't utilize bloom filters. +Instead, we utilize a compact filter (more efficient than bloom filters) which +leverages Golomb-Rice coding for compression. Additionally, blocks are +downloaded as a whole (from any source), rather than directly from peers as +fragments with merkle-branches proving their authenticity. + +== Motivation == + +Light clients in Bitcoin provide applications with a less resource intensive +mechanism of validating the work of the most difficult chain and identifying +entries in the blockchain's log which are relevant to said application. In order +to accomplish the first, light clients download and verify the connectivity and +work of ''only'' the block headers of the chain. Block headers are a constant +80-bytes, resulting in minimal bandwidth even for very long chains. In order to +efficiently accomplish the second task (ascertaining relevant chain data) light +clients require a mechanism to learn of relevant data in blocks. + +BIP 37 is currently the most widely used light client execution mode within +Bitcoin. In BIP 37, rather than fetching and fully validating all blocks in the +chain, the light client instead verifies all headers and sends bloom filters +containing relevant data to full-nodes. These full-nodes then service the light +client by querying data within a block against the loaded bloom filter, if a +transaction matches the filter, a merkle-branch for the matching transaction is +sent and distinctly the transaction itself is sent. + +However, BIP 37 has several downsides. Bloom filtering as widely implemented +provides virtually ''zero'' privacy to wallets or other applications using this +mechanism +https://eprint.iacr.org/2014/763.pdfhttps://jonasnick.github.io/blog/2015/02/12/privacy-in-bitcoinj/. +Additionally, applications are forced to carefully manage their false positive +rates in order to not completely give away their set of interested items. +Additionally, full-nodes can nearly undetectably lie by omission, causing a +denial of service which can lead to undesirable failure modes in applications +whose safety critically relies on responding to certain on-chain events. When +faithfully servicing BIP 37 light clients, full-nodes may incur significant I/O +and CPU resource usage due to maliciously crafted bloom filters, creating a +denial-of-service vector. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be +interpreted as described in RFC 2119. + +== Design Rationale == + +In order to address the drawbacks of BIP 37 raised above, in this document we +propose an alternative chain filtering mechanism for light clients. Our +proposal sports a greater degree of privacy than BIP 37 as filtering is now +done on the client side. Clients download a deterministically generated filter +for a block and query it locally. If relevant items are found in the filter +then the ''entire'' block will be fetched. The decoupling of filter querying from +active communication with full-nodes enables light clients to fetch blocks from +''any'' source. Extremely privacy conscious light clients may opt to anonymously +fetch blocks using cryptographic techniques such a Private Information +Retrieval https://en.wikipedia.org/wiki/Private_information_retrieval. + +In order to reduce the size of the filter, we use a data structure capable of +probabilistic set membership. We elide the selection of the bloom filter data +structure in favor of utilising Golomb-Rice coding which allows us to generate +filters more compact than bloom filters which approach the theoretical minimum +size for probabilistic data structure. + +Light clients operating using the method described in this document are able to +verify the authenticity of filters received, thereby eliminating the ability +for full-nodes to lie by omission. Such client side filtering also improves the +utility of light clients for generic applications beyond simple wallets and +usage of basic public key templates. + +Finally, full-nodes only need to construct filters ''once'' as they're +deterministically generated for each block. Once the index is built, no further +active processing is required to serve light clients. Servicing light clients +simply entails reading pre-computed filters and headers from disk and sending +them over the network. + + +== Preliminaries == + +Before we specify the details of our proposal, we'll first go over a few +preliminaries which will aid in the understanding our proposal. + +By []byte we refer to a slice (or vector) of bytes. This value is +typically expressed in C-like languages as an array of uint_8's. + +By Var-Int we refer to the variable length integer encoding used +widely within the Bitcoin p2p protocol as an efficient way to encode the number +of items in a repeated series of items. The p2p message extensions in this +proposal will utilize this variable-length integer encoding in an identical +manner to the existing Bitcoin p2p messages. + +By siphash(k, n) we refer to an invocation of the SipHash +pseudo-random function with k as the 128-bit key, and n +as the input to the PRF. We instantiate with the recommended parameters of +c = 2 and d = 4. + +We define the concept of an abstract bit stream instantiated by the function: +new_bit_stream The bit_stream has two functions that +operate on it, unary_encode(stream, n) and +write_bits_big_endian(stream, n, k) where unary_encode(steam, +n) emits n (an integer) to the stream in unary, and +write_bits_big_endian(stream, n, k) emits the lower k +bits of n to the stream using a big-endian binary encoding. For our unary +encoding, we encode a series of 1's followed by a terminating 0. + +Whenever we reference sorting, we refer to an ascending sorted order. The items +in a sorted set should increase from smallest index to largest index. + +We use a form of pseudo-code throughout the specification. In some areas we use +pattern-matching to specify the details of an algorithm: + +* match(ITEM) denotes a clause which pattern matches on ITEM (similar to a switch statement in imperative languages). +* Some denotes a non-empty ITEM, equivalent to a non-nil pointer or value +* None denotes an empty ITEM, equivalent to a nil pointer or value + +== Specification == + +=== Compact Chain Filters === + +In this BIP, we propose that light clients be provided with compact filters +which succinctly encode the contents of blocks. Instead of bloom filters, we +instead employ a data structure which is a compressed version of the hashed +values of the contents of blocks. Throughout the document, we refer to this +data structure as a Golomb Coded Set (GCS). At a high level the set contains a +list of sorted fixed size values. These values are then compressed using a type +of run length encoding. In order to query the set, it must be decompressed. + +We will now define simple functions for encoding and decoding integers using +Golomb-Rice https://en.wikipedia.org/wiki/Golomb_coding#Rice_coding +coding. These functions will be used in the next section as a primitive in the +construction of our compact filters. + +
+golomb_encode(stream, n, k):
+    let q = n >> k
+    unary_encode(stream, q)
+    write_bits_big_endian(stream, n, k)
+
+ +
+golomb_decode(stream, k) -> int:
+    let c = stream.read_bit()
+
+    let n = 0
+    while c == 0:
+        n++
+        c = stream.read_bit()
+
+    let r = b.read_bits_big_endian(k)
+
+    where read_bits_big_endian(k) decodes a fixed-length big-endian integer of
+        k-bits 
+
+    c*m + r
+
+ +With the two functions above, we're able to efficiently compress a single +integer using Golomb-Rice coding. In the next section, we'll put everything +together and use the primitives described above to construct our compact sets. + +=== Golomb-Rice Coded Sets === + +Rather than insert items directly into our set, we instead first run the items +through a PRF. This creates a set of uniformly distributed values. If we then +sort each of these values, the ''delta'' between each of the values closely +resembles a ''Geometric Distribution''. We'll again leverage this fact to use +Golomb-Rice coding to compresses our set by only encoding the ''delta'' between +two successive elements in the set. + +Golomb-Rice coded sets take two parameters: +* N the number of items to be inserted into the set +* P a value which is computed as 1/fp where fp is the desired false positive rate. + +Given these two parameters, we can now construct our set. + +==== Set Construction ==== + +Set construction takes three parameters: N, P and +L +* where L is a list of the ''raw'' items we wish to insert into the set +* the type of L is assumed to be of []byte + +NOTE: P ''must'' be a power of two as we target the specialized case of +Golomb coding: Golomb-Rice coding. + +Using N and P we compute F = N * P. +F constricts the range of the hashed values accordingly in order +to achieve our desired false positive rate. + +In addition, to help optimize the algorithm, we use a fast range +algorithmhttps://lemire.me/blog/2016/06/27/a-fast-alternative-to-the-modulo-reduction/, +multiplying the hashed value by F and taking only the top 64 bits. This fairly +distributes the values over F without expensive division operations. In our +domain, the operation will use 64-bit integers. As a result, one may need to +manually compute the upper 64-bits of a 64-bits integers multiplication. This +can be done with fewer cycles on CPUs that have 128-bit registers. We use +64-bits, as this is the outputs size of siphash(2, 4). + +The following routine computes the ''uncompressed'' set given the parameters +above: +
+hashed_set_construct(N, P, raw_items, k): -> []uint64:
+    let F = N * P
+
+    let set_items = []
+    for item in raw_items:
+        let set_value = (siphash(k, item) * F) >> 64
+        set_items.append(set_value)
+
+    // Sorts in ascending order.
+    set_items.sort()
+
+    set_items
+
+ +Using the routine above, we can transform our set of (possibly heterogeneous +items) in to a list of uniformly distributed values. As a final step, these +values are then sorted. When sorting then items MUST be ordered in ascending +order. + +==== Set Compression ==== + +Once the set of hashed items has been constructed (and sorted in ascending +order) we then use Golomb-Rice coding to ''compress'' the set by encoding the +''delta'' value between each successive element within the set. As these values +are uniformly distributed, the deltas between these values will be +Geometrically Distributed, meaning that Golomb-Rice coding will be optimal for +this use-case http://urchin.earth.li/~twic/Golombs_Original_Paper/. + +The following routine describes the compression process: +
+gcs_compress(sorted_set, fp) -> []byte:
+    let stream = new_bit_stream()
+
+    // P is equivalent to m, the size of a golomb code-word.
+    let P = 1 << fp
+
+    let last_value = 0
+    for value in sorted_set:
+        // Compute the difference between this value and the last value modulo
+        // P.
+        let remainder = (value - last_value) & (P - 1)
+
+        // Compute the difference between this value and the last one, divided
+        // by P. This is our quotient.
+        let quotient = (value - last_value - remainder) >> fp
+
+        // Write out the quotient value in unary into the bit stream.
+        unary_encode(stream, quotient)
+
+        // Finally, write the remainder into the bit stream using fp bits.
+        write_bits_big_endian(stream, remainder, fp)
+
+        // Track this value so we can use it compute the diff between this
+        // value and the last.
+        last_value = value
+
+    stream.bytes()
+
+ +The routine above computes a ''compressed'' set using Golomb-Rice coding to +encode the ''delta'' between elements within the set. Unlike a bloom-filter, +this data-structure cannot be queried in its current form. Instead, one MUST +first perform the reverse computation to ''decompress'' the items in the set, +revealing the true values which can be queried against. + +==== Set Querying/Decompression ==== + +Given a compressed Golomb-Rice coded set, one MUST first ''decompress'' the set +itself in order to query items which have been included within the set. +Decompression of a set follows the reverse procedure of encoding. To decode an +element, we'll decode the encoded quotient and remainder of encoded delta. +With the full delta re-constructed, we then ''add'' this value to the prior +value in order to reconstruct the full value. Following this procedure we can +incrementally decompress the set lazily without decompressing the entire +filter. + +===== Querying for a Single Item ===== + +The following routing describes how one queries a compressed set for a ''single'' +item: +
+gcs_match(key: [16]byte, compressed_set: []byte, target: []byte, fp, N: int) -> bool:
+    // First we'll map the item into the domain of our encoding.
+    let item = (siphash(key, target) * (N * (1 << fp))) >> 64
+
+    stream = new_bit_stream(compressed_set)
+
+    // We initialize the initial accumulator to a value of zero.
+    let last_value = 0
+
+    // As the values in the set are sorted once the decoded values exceeds the
+    // value we wish to query for, we can terminate our search early.
+    for last_value < item:
+        // Read the delta between this value and the next value which has been
+        // encoded using Golomb-Rice codes.
+        let decoded_value = golomb_decode(stream, fp)
+
+        // With the delta computed, we can now reconstruct the original value.
+        let set_item = last_value + decoded_value
+
+        // If the values match up, then the target item _may_ be in the set, so
+        // we return true.
+        if set_item == item:
+            true
+
+        last_value = set_item
+
+    // If we reach this point, then the item isn't in the set.
+    false
+
+ +===== Querying Against a Set of Items ===== + +For most applications, the common case will be attempting to match a ''list'' of +items to the filter. In this case, we can perform a "zip" search against two +sorted lists: the step-by-step decompressed values of the set, and the list of +items we'd like to query. + +The following routine will evaluate to ''true'' if ''any'' of the items in a +target set are ''maybe'' within the original set of items (pre encoding): +
+gcs_match_any(key: [16]byte, compressed_set: []byte, targets [][]byte, 
+              fp, N: int) -> bool:
+
+    stream = new_bit_stream(compressed_set)
+
+    // Once again, we'll map our set of target values into the domain our
+    // encoding, sorting as a last step so we can zip through the values.
+    let items = []
+    for t in target:
+        let item = (siphash(key, t) * (N * (1 << fp))) >> 64
+        items.append(item)
+    items.sort()
+
+    // Set up a set of accumulator values that we'll use to zip down the two
+    // filters.
+    let last_set_val, last_target_val = 0, 0 
+    last_target_val = items[0]
+    let = 1
+
+    // We'll keep running until one of the values matches each other. If this
+    // happens, then we have a match!
+    while last_set_val != last_target_val:
+        // Perform a pattern match to decide which filter we'll need to
+        // advance.
+        match:
+            case last_set_val > last_target_val:
+                // If we still have items let, advance the pointer by one.
+                if i < len(items):
+                    last_target_val = items[i]
+                    i++
+
+                // Otherwise, we've ran our items in our target set, which
+                // means nothing matched.
+                false
+
+            case last_target_val > last_set_val:
+                // In this case, we'll advance the filter we're querying
+                // against. This entails decompressing the next element in the
+                // set.
+                let decoded_value = golomb_decode(stream, fp)
+
+                // Accumulate the decoded delta value to the current value in
+                // order to retrieve the current set item.
+                last_set_val += decoded_value
+
+    // If we reach this point, the two items in the set matched!
+    true
+
+ + +=== Peer to Peer Network Extensions === + +With the procedures to construct, compress, and query the sets explained, we'll +now turn to the modifications to Bitcoin's p2p protocol required to support +this new operating mode. + + +==== Peer to Peer Service Bit ==== + +To start, we reserve a currently unutilized service bit. This is required as +light clients SHOULD ''preferentially'' peer to full-nodes that support the +features outlined in this BIP. + +The 6th service bit will now be dedicated to signaling support for the +features described within this BIP: +* SFNodeCF = 1 << 6 + +==== Filter Types ==== + +As this framework for client-side chain filtering is meant to be generic, in +this document we define two ''filter types''. A filter type denotes both the +construction/querying for a filter as well as the contents of the filter. + +At the time of writing of this BIP, two filter types are defined: +* Normal (0x00) +* Extended (0x01) + +A Normal filter is intended to contain all the items that a light client +needs to sync a basic Bitcoin wallet. In order to facilitate this use-case, for +each transaction, normal filters contain: +* The outpoints of each input within a transaction. +* The data-pushes contained within the public key script of each output within the transaction. +* The txid of the transaction itself. + +An Extended filter contains extra data that is meant to facilitate the +adoption of more advanced smart contracting applications by this BIP. For each +transaction found in a block, an Extended filter contains: +* Each item within the witness stack of an input (if the input has a witness). +* Each data push of the signature script of an input. + +Notably, this construction does not currently interpret P2SH scripts or witness +scripts to extract data pushes from them; however, future filter types may be +designed to do so. + +==== Filter Construction ==== + +In order to ensure that filters are deterministically generated, we will use +the ''first'' 16-bytes of the block hash of a Bitcoin +block as the key to our siphash function. Full-nodes that support +this BIP SHOULD treat the set of filters as an additional index of the +blockchain. Once a new block arrives, both filter types SHOULD be constructed, +and stored on disk. Full nodes MAY opt to dynamically construct the filters at +runtime, trading off space for additional computation. Full-nodes that update +to support this BIP once already synced, SHOULD upon start-up, re-index the +chain, constructing filters for each block from genesis to current chain tip. + +When indexing input and output scripts, we only index the push datas in the +script. The function extract_push_datas returns a vector of byte +slices that contain any pushed data found within the script. Pushed datas are +the byte slices following: OP_PUSHDATA1, +OP_PUSHDATA2, OP_PUSHDATA4, and the opcodes numbered +1 to 75. The set of returned values includes +OP_O, but excludes OP_1 - OP_16. +OP_O MUST be emitted as an empty byte slice. For the complete set +of opcodes defined in Script, we refer the reader to +https://en.bitcoin.it/wiki/Script. + +Given a Bitcoin block, a full-node MUST construct a Normal compact +filter as follows: + +
+construct_normal_gcs_filter(block, fp) -> []byte:
+    let siphash_key = block.hash()[:16]
+
+    let P = 1 << fp
+
+    let raw_items = []
+    for tx in block.transactions:
+        let txid = tx.hash()
+        raw_items.append(txid)
+
+        for output in tx.outputs:
+            let output_bytes = extract_push_datas(output.script)
+            for output_byte in output_bytes:
+                raw_items.append(output_byte)
+
+        if tx.is_coinbase():
+            continue
+
+        for input in tx.inputs:
+            // Inputs serialized as they are on the wire in transactions.
+            // Input index serialized in little-endian.
+            let input_bytes = input.hash || input.index
+            raw_items.append(input_bytes)
+
+    let N = len(raw_items)
+    let F = N * P
+
+    let hashed_items = []
+    for raw_item in raw_items:
+        let hashed_item = (siphash_key(siphash_key, raw_item) * F) >> 64
+        hashed_items.append(hashed_item)
+
+    hashed_items.sort()
+
+    gcs_compress(hashed_items, fp)
+
+ +Given a Bitcoin block, a full-node MUST construct an Extended +compact filter as follows: +
+construct_extended_gcs_filter(block, fp) -> []byte:
+
+    let siphash_key = block.hash()[:16]
+
+    let P = 1 << fp
+
+    let raw_items = []
+    for tx in block.transactions:
+        if tx.is_coinbase():
+           continue
+
+        for input in tx.inputs:
+            for wit_elem in input.witness:
+                raw_items.append(wit_elem)
+
+            let sig_script_pushes = extract_push_datas(input.sig_script)
+            for push in sig_script_pushes:
+                raw_items.append(push)
+
+    let N = len(raw_items)
+    let F = N * P
+
+    let hashed_items = []
+    for raw_item in raw_items:
+        let hashed_item = (siphash_key(siphash_key, raw_item) * F) >> 64
+        hashed_items.append(hashed_item)
+
+    // Sorted in ascending order.
+    hashed_items.sort()
+
+    gcs_compress(hashed_items, fp)
+
+ +==== Filter Capability Querying ==== + +As it's feasible that in the future, this document is extended to encompass +additional filter encoding algorithms or filter contents, we define a new p2p +message that allows light clients to ascertain which filters a node supports. + +The getcftypes message is an ''empty message'' whose command string is: +getcftypes + +A full-node that receives a getcftypes message MUST respond with a +cftypes message which is defined as follows: + +{| class="wikitable" +! Field Size +! Description +! Data Type +! Comments +|- +| Var-Int +| NumFilters +| uint64 +| The number of supported filters. +|- +| NumFilters +| SupportedFilters +| [NumFilterBytes]byte +| A byte slice with each byte denoting a supported filter type +|} + + +==== Compact Filter Header Chain ==== + +As the filters described in this BIP ''are not'' consensus critical, meaning +each filter is ``not`` validated by full-nodes and committed into blocks by +miners, we require an alternative (albeit less-binding) method to allow light +clients to ''identify'' and ''reject'' invalid filters. The purely p2p solution +to this problem is to obtain a deterministic hash-chain of ''each'' filter. +This hash chain or "filter header chain" is similar to the regular Bitcoin +headers in that it allows a light client to verify the ''authenticity'' of a +received +filter. + +The filter header chain for a particular filter type is described by the +following recurrence: +
+filter_header(n: uint) -> [32]byte = 
+   // The zero hash is 32 bytes of 0's.
+   let zero_hash [32]byte = {0*32}
+
+   if n == 0:
+       double-sha-256(genesis_block.prevblock || filter(0))
+
+   match filter(n): 
+      // If the filter isn't empty, then we hash the filter itself into the
+      // header chain.
+      case Some:
+          double-sha-256(filter_header(n-1) || double-sha-256(filter(n)))
+
+      // Otherwise, if the filter is empty (created from a block with a single
+      // coinbase transaction whose output script contains no push datas), then
+      // we'll hash the zero_hash.
+      case None:
+          double-sha-256(filter_header(n-1) || double-sha-256(zero_hash))
+
+   where filter(n) is the filter for block height n
+
+ +The filter header for the genesis block uses the hash stored in the prevblock +field of the genesis block header itself, as there's no prior filter header +(by definition). + +Due to the nature of filter construction, it's possible to construct a block +such that an "empty" filter will be produced. This is the case of a coinbase +transaction that has no data pushes in its output script. In this case, the +"hash" of said filter is simply "32 zeroes". + + +We now introduce two new messages to support the fetching and verification of +the filter header chain by light clients. + +The getcfheaders message is defined as follows: + +{| class="wikitable" +! Field Size +! Description +! Data Type +! Comments +|- +| Var-Int +| NumBlockLocators +| uint64 +| Number of block locators. +|- +| NumBlockLocators * 32 +| BlockLocatorHashes +| [NumBlockLocators][32]byte +| Block locator hashes, with the same semantics as in getheaders. +|- +| 32 +| HashStop +| [32]byte +| Hash to stop at. +|- +| 1 +| FilterType +| byte +| Type of filter header being requested. +|} + +The BlockLocators within the message are to be interpreted +identically to the BlockLocators within Bitcoin's +getheaders and getblocks messages https://en.bitcoin.it/wiki/Protocol_documentation. + +The cfheaders> message MUST be sent in response to a +getcfheaders message for a particular block hash. The +cfheaders message is defined as follows: + +{| class="wikitable" +! Field Size +! Descriptions +! Data Type +! Comments +|- +| 32 +| StopHash +| []byte +| Block hash for the last filter header returned, for locating the filter headers in the blockchain. +|- +| 1 +| FilterType +| byte +| Byte identifying the type of filter headers being returned. +|- +| Var-Int +| NumHeaders +| uint64 +| Hash to stop at. +|- +| NumHeaders * 32 +| HeaderHashes +| [NumHeaders][32]byte +| Slice of filter headers. +|} + +=== Compact Filters === + +The last set of messages we introduce are for ''fetching'' the compact filters +themselves. Light clients can SHOULD use these two messages to request a +compact filter for a particular block hash. + +The getcfilter message is defined as follows: + +{| class="wikitable" +! Field Size +! Description +! Data Type +! Comments +|- +| 32 +| BlockHash +| [32]byte +| Block hash of the Bitcoin block for which the client wishes to fetch a filter. +|- +| 1 +| FilterType +| byte +| Byte identifying the type of filter requested. +|} + +The cfilter message MUST be sent in response to a +getcfilter message for a particular block hash.The +cfilter message is defined as follows: +{| class="wikitable" +! Field Size +! Description +! Data Type +! Comments +|- +| 32 +| BlockHash +| [32]byte +| Block hash of the Bitcoin block for which the filter is being returned. +|- +| 1 +| FilterType +| byte +| Byte identifying the type of filter being returned. +|- +| Var-Int +| NumFilterBytes +| uint64 +| A variable length integer encoding the number of bytes of the filter in the following field. +|- +| NumFilterBytes +| FilterBytes +| [NumFilterBytes]byte +| The raw compressed compact filter for this block. +|} + +The BlockHash field is included in both messages as this allows +easily matching requests against responses, as the responses aren't +self-identifying like block headers are (via own hash). + +The parameters N (the number of elements in the filter) and +P (1 << false_positive_rate) are required by the light +client in order to properly incrementally decode, query, and validate +(reconstruct from Bitcoin block) a compact filter. The parameter N +cannot be known ahead of time, therefore we define the serialization of a +compact filter of type 0x00 and 0x01 as: +
+N || raw_filter_bytes
+
+where N is serialized as a 32-bit big-endian integer. + +However, there exists a special case of a null filter. This this +case an empty byte slice is transmitted rather than consuming +4-bytes to encode the size of zero. + +However, as the parameter P ''MUST'' be globally agreed upon (for +a particular filter type), we define this value ''statically'' for filter +types: 0x00 and 0x01. For the two aforementioned +filter types, the false positive rate MUST be: 20, meaning the +parameter P is: 2^20, meaning fp=20. +This value was chosen as during simulations it was the value that minimized the +bandwidth utilized by the expected number of blocks downloaded due to false +positives, and the bandwidth used to download the filters themselves. The code +along with a demo used for the parameter tuning can be found [here https://github.com/Roasbeef/bips/blob/83b83c78e189be898573e0bfe936dd0c9b99ecb9/gcs_light_client/gentestvectors.go] + + +=== Protocol Version Bump === + +As this BIP defines new peer-to-peer behavior, we bump the protocol version by +one in order to distinguish the newly defined behavior. Full-nodes implementing +this BIP should advertise a protocol version of: 70016. + +== New Wallet Capabilities Enabled == + +The new light client mode enables wallet to maintain a very compact client-side +index of (possibly) the entire chain. Such an index provides a great degree of +utility for wallets, as they're now able to perform tasks such as private key +imports and full HD-seed imports without the need of a trusted third-party +server. Additionally, the compact client-side chain index also opens up the +door to smart contract applications which require agent action in response to +on-chain events. Examples of such applications include Lightning. + +== Backwards Compatability == + +This light client protocl is NOT backwards compatible with BIP 37. Full nodes +MAY implement both protocols to serve both types of light clients. + + +== Implementation Notes == + +This filter header chain SHOULD be utilized by light clients to gain a greater +degree of security against bamboozling full-nodes during their initial chain +sync. In addition to fetching all the bitcoin headers, light clients +implementing this BIP SHOULD also fetch all the ''filter headers'' from +''each'' of their connected peers. With these headers, light clients SHOULD +efficiently detect nodes that advertise a conflicting filter chain history. To +do this, light clients MUST ensure that all nodes return the ``same` filter +header hash for a particular block header hash. + +Light clients MAY use the filter header chain to verify purported filter +authenticity when fetching the next set of headers from chain tip. Light +clients MAY use the following algorithm to more efficiently verify the +authenticity of filters (the naive version would fetch the entire filter from +each peer, this version saves bandwidth): + +
+verify_from_tip(tip_block_hash: [32]byte):
+    let filter_types = {supported_filter_types...}
+    let connected_peers = {list_of_connected_full_nodes...}
+
+    for filter_type in filter_types:
+
+        let filter_headers = set()
+        for peer in connected_peers:
+            let filter_header = peer.fetch_filter_header(tip_block_hash)
+            filter_headers.insert(filter_header)
+
+        if len(filter_headers) != 1:
+            // Peers have conflicting filters. The light client should fetch
+            // each unique filter from the set of peers AND fetch the block. The
+            // light client can then verify which filter header is correct, and
+            // BAN the offending peers.
+
+        // Otherwise, syncing continues as normal: fetch filter to see if it
+        // matches any relevant items.
+
+ +Light clients MAY persistently commit all filter headers to disk, as when +lazily fetching filters (due to a historical re-scan or chain analysis), +they're able to verify the authenticity of any fetched filters. + +Full-nodes MAY persistently compute and persist the filter header chain +on-disk, just as the regular filters. + +Zero-length filters are sent without an N value, allowing us to save +4-bytes. Clients are able to verify that a filter will be +null before requesting it (as it will just be the prior filter +header hashed with zero bytes). Clients can take this fact into account in +order to save a round trip for null headers. + +Light clients implementing this proposal SHOULD utilize the +sendheaders message. This allow quicker syncing from tip, as rather +than sending an inv to announce a new blocks, nodes will instead +directly send the headers message. With this, nodes can save a +round-trip and immediately request +cfheaders from each of their connected peers before ultimately +fetching the filter itself. + +Light client syncing MAY be run in reverse, meaning fetching the regular +Bitcoin and filter headers from the ''end'' of the chain and working backwards. +This allows a client to nearly ''instantly'' be useable if an application doesn't +require immediate access to historical filter data. + +If fetching blocks directly over the p2p network (rather than via a distinct +channel), light clients SHOULD fetch blocks from multiple peers in order to +mitigate transaction intersection analysis. + +Full nodes serving the light clients described in this BIP can be implemented +in a completely ''stateless'' manner. Implementations can also make a +space/time tradeoff by only holding filters on disk to some particular block +horizon. If a filter beyond this horizon is requested, then it can be +reconstructed in real time. This allows nodes to save on disk-space, as it's +likely the older filters would only be fetched for historical rescans. It is +also likely that the past few hundred filters will be fetched mostly frequently +by smaller devices (phones, laptops, etc) periodically coming back online after a +period of inactivity. + +It is possible to implementations of this BIP to serve ''other'' +implementations to a degree. All headers (regular bitcoin, regular, extended) +can be served, and also any on-disk filters can also be served to other light +clients. + +Key import and rescan: with lazy filters fetching, having a start +block is VERY important to avoid fetching all cfilters starting +with block 1 (assume you generate your own filters/headers for the genesis +block). + +== Acknowledgments == + +We would like to thank bfd (from the bitcoin-dev mailing list) for bringing the +basis of this BIP to our attention, Greg Maxwell for pointing us in the +direction of Golomb-Rice coding and fast range optimization, Joseph Poon for +suggesting the filter header chain scheme, and Pedro Martelletto for writing the +initial indexing code for btcd. + +We would also like to thank Dave Collins, JJ Jeffrey, Eric Lombrozo for useful +discussions. + +== Reference Implementation == + +Light client: [https://github.com/lightninglabs/neutrino] + +Full-node indexing: https://github.com/Roasbeef/btcd/tree/segwit-cbf + +Golomb-Rice Coded sets: https://github.com/Roasbeef/btcutil/tree/gcs/gcs + +== Appendix A == + +== Mathematical Background == + +In the following sections, borrowing from techniques typically used in image +and video processing, we describe our chosen encoding for the hash fingerprints +of the items in our set of relevant items. In order to compress the items of +the set in a lossy manner (creating data-structure capable of probabilistic set +membership), we utilize Golomb-Rice codes to encode the ''delta'' between +successive hash items within our set. This results in a very compact +probabilistic set-membership structure. + +With a goal of building relevant initiation in the minds of the readers of this +document, we first start from the bottom of the abstraction ladder, describing +the fundamental components our set encoding relies on. + + +=== Run-Length Encoding === + +Run-Length Encoding (or RLE) is typically used in the video/image processing +space to losslessly compresses images, or video frames. RLE works by ''omitting'' +the encoding of ''repeated'' values in a data stream. This achieves lossless +compression as repeated items simply aren't transmitted. Instead, a value which +represents the ''number of times'' a value repeats is transmitted. + +Typically RLE takes the form of encoding repeated values in a ''binary'' stream. +A simple RLE scheme works as follows: +* Encode the run length (number of occurrences) of 0's using k bits. +** k acts as fixed length encoding for the length of a run. +** This value acts as the maximum encodable run-length. +* Transmission of runs of 1's is omitted. +* Two 1's in a row are denoted by a zero-length run of zero. + +As an example, consider the following sequence of bits: +
+{0}^14 1 {0}^9 11 {0}^20 1 {0}^30 11 {0}^11
+
+ +The RLE of the bit stream above would be: + +
+1110 1001 0000 1111 0101 1111 1111 0000 0000 1011
+
+ +RLE allows one to efficiently encode a data stream in a lossless manner. Due to +the encoding of runs, RLE works best when encoding a set with a high degree of +redundancy. A careful reader will notice that by using a fix-length encoding +for the size of runs, efficiency is lost. Therefore, rather than using a +fix-length encoding for the size of a run, we can instead use a ''variable'' +length encoding for the size of a run. This allows us to compress runs of a +large size. To do so, we'll now turn to Golomb-Rice Coding. + +=== Golomb-Rice Coding === + +RLE works well when encoding a data stream that has a high degree of redundancy. +However, in our case due to the hashing of items within the compact filter, +we'll be dealing with items that are ''uniformly distributed''. We can use this +fact to leverage a more efficient encoding scheme based on the distribution of +the length of a run. The [https://en.wikipedia.org/wiki/Geometric_distribution +Geometric Distribution] represents the probabilities of a number of failures +before the first success in a series of Bernoulli trials (yes/no experiments). +If our values are i.i.d (independent, identically distributed) distributed of +the run-length r can be represented as [6]: +
+P(r = n) = p^n * (1-p)
+
+Intuitively, this calculates the probability of N zeroes (a run) followed by a +single 1 (end of a run). Golomb coding takes advantage of this relationship to +efficiently encode integers using a two-tuple. Given a group size of m one +can encode an integer as: +
+n = (q*m) + r
+  where q is (n / m)
+   and  r is n % m
+
+ +[https://en.wikipedia.org/wiki/Golomb_coding Golomb Coding] encodes the two +values (q and r for a given integer n as +a two-tuple. The first value q is encoded using ''unary'', and the +second value r is encoded using a fixed-length series of bits. If +m = 2^k for some k then this encoding is a +specialized sub-set of Golomb encoding known as Golomb-Rice encoding. In this +case, r (the remainder) is the k +least-significant-bits of n + +In this case "runs", can be seen as the number of multiples of m +that divide into n If an encoded integer is close to the value of +m then few bits (in unary) will be used to encode each value. + +To aid in understanding we provide the following examples of using Golomb-Rice +encoding to code integers given m=5 +
+n  = (q, r) = c
+0  = (0, 0) = 0 00
+1  = (0, 1) = 0 01
+2  = (0, 2) = 0 10
+3  = (0, 3) = 0 110
+4  = (0, 4) = 0 111
+5  = (1, 0) = 10 00
+6  = (1, 1) = 10 01
+7  = (1, 2) = 10 10
+8  = (1, 3) = 10 110
+9  = (1, 4) = 10 111
+10 = (2, 0) = 110 00
+
+ +The P value can also be interpreted as the parameter to our +Geometric Distribution. Intuitively, to achieve a false positive rate of 1/32 +(1/2^5), in a series of queries of items which ''aren't'' in the set, we expect +to receive a "NO" (false) 32 times, before getting a "YES" (true, our false +positive). Once again, P MUST be a power of two. + + +== Appendix B == + +=== Alternatives === + +A number of alternative set encodings were considered before Golomb-Rice coded +sets were settled upon. In this appendix section, we'll list a few of the +alternatives along with our rationale for not pursuing them. + +==== Cryptographic Accumulators ==== + +Cryptographic accumulators +https://en.wikipedia.org/wiki/Accumulator_(cryptography)are a +cryptographic data structure that enables (amongst other operations) a one way +membership test. One advantage of accumulators are that they are ''constant'' +size, independent on the number of elements inserted into the accumulator. +However, current constructions of cryptographic accumulators require an initial +trusted set up. Additionally, accumulators based on the Strong-RSA Assumption +require mapping set items to prime representatives in the associated group +which can be preemptively expensive. + +==== Matrix Based Probabilistic Set Datastructures ==== + +There exist data structures based on matrix solving which are even more space +efficient compared to bloom filters +https://arxiv.org/pdf/0804.1845.pdf. We instead opted for our +GCS-based filters as they have a much lower implementation complexity and are +easier to understand. + +== Appendix C == + +=== Test Vectors === + +A set of test vectors using real blocks from Bitcoin's testnet3 can be found +[https://github.com/Roasbeef/bips/tree/master/gcs_light_client here]. The +vectors come in the form of CSV files, which for a given testnet height and +block hash contain the: basic filter header, extended filter header, basic +filter, and extended filter. + + +== References == + + + +== Copyright == + +This document is licensed under the Creative Commons CC0 1.0 Universal lisence. diff --git a/gcs_light_client/gcstestvectors/testnet-01.csv b/gcs_light_client/gcstestvectors/testnet-01.csv new file mode 100644 index 0000000000..0315c9dbfa --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-01.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000280,,0903b6fce9fb6ca49a0bced6e82bc1e8626df614fe6021747a52b8db76f64b4c,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,0903b6fce9fb6ca49a0bced6e82bc1e8626df614fe6021747a52b8db76f64b4c,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,0000000240,,41969f4fd1616110a2ea97cb135968a52c430beac0195038c2b0eecd262065aa,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,41969f4fd1616110a2ea97cb135968a52c430beac0195038c2b0eecd262065aa,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000240,,5fdead4446455bcfe96fed95d08e2decc023839f4322256535649485184240e0,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,5fdead4446455bcfe96fed95d08e2decc023839f4322256535649485184240e0,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,0000000220,,d619da6aa426aa72275f7327461a5d96e04d96e2c9c9bf095cf882d073302424,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,e884de6ddbcb024d36cf717a2f3d4b74961021707948c4f8896df1bad0c71838,9687617e8ac7ac0f25809f7d4bba7c427a673020e93d3bd03f151b25255a41f5,0000001691445b14e238fb80,0000000ff3d6885a0000,81200ab1d76fe61a87b05cd3845d9e515bcfd5e199820b0d051f122dfdc4a093,6a3639fc15dd84dad9aca54943a1a835e0cf1d39d28fdbdd6146a7f945fcbfee +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,73c8bbe030baab4054ee2fa3dd1d40ead25465954996548222f41c9c10fdf76c,1e926295bffe82a778645e3eb348b398b1791188c16dbcad4cceec9457f0de58,0000000140,,e9d6ea69248cc9108cf57dbdca75be8f72eb46203167bd5530fb613433db7024,7b54320563f6a60415c54baba7e924d21d9cd82f8b65ed55467ac6084af9974d diff --git a/gcs_light_client/gcstestvectors/testnet-02.csv b/gcs_light_client/gcstestvectors/testnet-02.csv new file mode 100644 index 0000000000..c63fd76606 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-02.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000280,,0903b6fce9fb6ca49a0bced6e82bc1e8626df614fe6021747a52b8db76f64b4c,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,0903b6fce9fb6ca49a0bced6e82bc1e8626df614fe6021747a52b8db76f64b4c,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,0000000244,,04696a3e2b692717add6a845af4e722c4ec348e8b0998ba413d3bc1ed2d379b5,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,04696a3e2b692717add6a845af4e722c4ec348e8b0998ba413d3bc1ed2d379b5,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244,,b316db9fd611e572c00837e6f99076899d6e1e57ecc4ccd7a8b266ff225f5f57,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,b316db9fd611e572c00837e6f99076899d6e1e57ecc4ccd7a8b266ff225f5f57,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,0000000230,,9ff1a1d657337a190120af9e7e5df66bee765e0900ad24513fed9ef80cf78093,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,c3635b7b229bfe6610ebd802a202a6682393bb18f2d48fc6e9db7728e80118b4,826ac8df81e5aa114987c60579aae97b74e59f75e08cf9229d60b9d8519659b7,000000168928305d41438455af59,0000000ff1e950444d8000,96a06174ee9048d0a3612da885c79443b69fde1515ad9cfbe62dc35d2a2f7b91,7e51392a33b432294c762e23c59cb1aab03eaf62aaa18a5ebd6e85419d7792a2 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,423bd9547bd3606568e9013a80bd79482e4f43f13d5c2eb228940fb6e4045b67,984d1251c4f5eeeda8ec75fdee0ec3633e74ce97ca9987972aed7c0745907228,0000000140,,742b6f46e5d4ad7f6dfcf0eac29f4a90e25f09576565ac069cdf3f43945e8e7d,dfcf54ecc8f975299378e7f55ad03ee69a842aed1e79b2770a4c6662922f2d06 diff --git a/gcs_light_client/gcstestvectors/testnet-03.csv b/gcs_light_client/gcstestvectors/testnet-03.csv new file mode 100644 index 0000000000..ce3aa320aa --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-03.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,000000028000,,3e27bc6a192d9c1a20eb8dadfa07c1721de2d624966142fcdc84d144d93ee078,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,3e27bc6a192d9c1a20eb8dadfa07c1721de2d624966142fcdc84d144d93ee078,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,0000000251,,887ba00f6357a3e5657f30326d2588c43ee8f6ffeee9a8e16f9780f5ec32969d,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,887ba00f6357a3e5657f30326d2588c43ee8f6ffeee9a8e16f9780f5ec32969d,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000243,,13ceb5969e8da870ba543f40b1311ea4aa4386d941c7755d146bd9e115cec3dc,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,13ceb5969e8da870ba543f40b1311ea4aa4386d941c7755d146bd9e115cec3dc,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022800,,a675c3580791afbe5ebe080b41393d05a90a27029db1e8e2165cf1fa4f82f2f5,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,4b7488141accce0e1d6d664e99cfae9c563aff32eeaf8a18eca2015c210ae7b0,0ca96c47841c708a74ed05103a0dd977df05a608e2d57a67ae6d77e2fd13a9cf,00000016848cc54496ae661c148ecbe990,0000000ff0f4598a08cac00000,febe955b35882501b32197242202f4d90af06d59ab0b18fd54921b68570e3a61,a209ff98f4d8917a468dbac3f2311adc2a87b474266d731a8cea8253fb7c6954 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,82d930db535fc801d913cd134bd105bcbc2dd86e8ee18d60d6f8b4272a08fa49,49cb2e864db0659a4d12df6672b5f37a3540bfaeb824fbb9810ebd78d3d6526e,0000000150,,1ce7098b0a911d1c95ca489f689cc5c84caefc08063ab227a4653b05eff6d5fa,478fdba6260e9301dfd6f9f032976fbb843512204c1c3c497b18b3697df2e31c diff --git a/gcs_light_client/gcstestvectors/testnet-04.csv b/gcs_light_client/gcstestvectors/testnet-04.csv new file mode 100644 index 0000000000..62c9589210 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-04.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,000000028400,,975060bc21bdcff5ce8f7096e209063c27000def29131d8fe5adf8c2d1ebdf3c,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,975060bc21bdcff5ce8f7096e209063c27000def29131d8fe5adf8c2d1ebdf3c,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,0000000250c0,,145708dbb8c81abf6ca973d9b2e055ec86345c0f9fee81e904c46e08de097423,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,145708dbb8c81abf6ca973d9b2e055ec86345c0f9fee81e904c46e08de097423,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000241c0,,c68aeacd13cacbac223831439cfccdbfb1de0c132463e18f5f710056221f9fd8,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,c68aeacd13cacbac223831439cfccdbfb1de0c132463e18f5f710056221f9fd8,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022c00,,ea17067366ad29aeb67d834f3b14d77d24e661ab06a9e896c0d20b9319d56aa2,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,bb427f6f10fa3ca32adb8fad552316271386ae49f118f31f7c6dfda61c3eec6c,2a6012a2ddff82f1ac2c29644b2b870b721ff46f29cd37a50946dd034bb3848c,000000168252984b11135b4e606f514d627d1900,0000000ff0fa13388e214960000000,74aadb62fd861d96d566bc2df183de586fc045201ed93fed6059e75e4e58129c,d9e8925a5e06ae2e4928eab543d938524f8888f2faafd4c5f807bb869794c464 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,0cef7b76d2af2a8cd11bd48314ba218b774ca24aa482f8ba13e5a09b40bfde3e,4a8454b4c2258f77075464b0484ff6f30fba3a95ec84979840a4427364c63d96,0000000150,,8c1618f6536a38e29fc7720238abb2e9a7ea12cf2e84a55478fd1e46ef665133,7bbf85e3281201164baa1a7d4caa5b55d4dd342f06654ddc7ad6e1b0b28d302a diff --git a/gcs_light_client/gcstestvectors/testnet-05.csv b/gcs_light_client/gcstestvectors/testnet-05.csv new file mode 100644 index 0000000000..eed72d9fe4 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-05.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,000000028400,,975060bc21bdcff5ce8f7096e209063c27000def29131d8fe5adf8c2d1ebdf3c,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,975060bc21bdcff5ce8f7096e209063c27000def29131d8fe5adf8c2d1ebdf3c,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025060,,064f291f61e984cebc2a6c9b172ea427b97b87f09e2d31ba41b2ffa6f02371a0,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,064f291f61e984cebc2a6c9b172ea427b97b87f09e2d31ba41b2ffa6f02371a0,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244d0,,822996930969f36a37ea48932f4b1285e02cb4dfb01f6f661a7c7c23197bb86e,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,822996930969f36a37ea48932f4b1285e02cb4dfb01f6f661a7c7c23197bb86e,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022e00,,cb629abb17b2c764ef7903b2fd0f4b315ba737fde8ac0cc55753625fbeaf8954,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,023965c6d3ea301b3a54d07ca50a7b6179e652f9824b143b7c77d188c91567e1,9c0d95fccb5192eabd7c503b9ed590aa39487008cbbbfb82f181376875d4cd5a,00000016812ca2c5583252acd1c601baa146594bcfc8,0000000ff0bd04a7867082c7b000000000,94ee3f76b50462e79dd8f702f24776618ac868981bbab23ab1acd86d937049e9,349aa3f49d3a40af6d6f54e2c2003dccb1cf4736c93329197ebd1473a203c0ad +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,4eb27203626200de3d7c459950d240a15075daa19524728dd2472ed7ca15bca7,4e95d2bdc479415bfb6b34aaebd4cea34db33551353a8b90153b2f5233743e80,0000000154,,6e26654aca786e34dceb39e88cc1b8cc6202b4c6d8782a168c6d5b2336cc7d31,fb71894329c5a3558677067531c9383f024b50e3184b2f0bb1b590f797ed086a diff --git a/gcs_light_client/gcstestvectors/testnet-06.csv b/gcs_light_client/gcstestvectors/testnet-06.csv new file mode 100644 index 0000000000..76cf5d6cb2 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-06.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,000000028402,,ae933ee6c296358669490aab986042b0c78108e73e4837ddefaa45fd450eea98,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,ae933ee6c296358669490aab986042b0c78108e73e4837ddefaa45fd450eea98,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025030,,0d374c60e30eb80243bd7c542ef3a0192a24986456448a440ce224dd2d6a93aa,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,0d374c60e30eb80243bd7c542ef3a0192a24986456448a440ce224dd2d6a93aa,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,000000024468,,f36978d87f1cb3b9e663ab2040eeecfc3f0330e6c229be344620162f254e7509,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,f36978d87f1cb3b9e663ab2040eeecfc3f0330e6c229be344620162f254e7509,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022d02,,c63412549b75f5eb81b982af23b0fab0818ff94e3ade5e10e56c89a2016620f2,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,04a53827a2a2c5fb2efdac41c3edf046f79d83b5e62ff34802c97e3bcc66cc93,a0f8df945b8fc0132442fbf29c40545662fbd9cdc654b5c168cacf214cf2f860,000000168195285852d0a492d634385c06ed395316297cf63c,0000000ff09e8524f053820547588000000000,ea586b1de389e208db1fa49a71db774aa30d8d6d48a66a56571043311d885e7e,fe2e8cdf1fc38e6c2b2d4fd0ca837d39867c1adea6c847fbb243f07ca6d4e8bf +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,04ea7c512b9a650b7d9db185d82ba9df5df8995462dc93f5a77dc9f5da32e900,ee285e0bf782e6f91119373a9987e7ed4d44e04731056018596df7dcb7a224b1,0000000156,,a117a27848b370ca68c9f32e91546e09c2d6acb54442783586c8ee62228c4a9c,f9a85cde342ba14599bba3b6387bce8fb25af74e066a958a4dbafdc354f649db diff --git a/gcs_light_client/gcstestvectors/testnet-07.csv b/gcs_light_client/gcstestvectors/testnet-07.csv new file mode 100644 index 0000000000..02095ad962 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-07.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,00000002840180,,7025330576f74793a1be89c857f868faf9c8144c20d26e290014a0057d1409f9,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,7025330576f74793a1be89c857f868faf9c8144c20d26e290014a0057d1409f9,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025019,,60ef6e0181e0176da69769f00c0acb521d70c9ca38167ecd135a75579e3f5820,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,60ef6e0181e0176da69769f00c0acb521d70c9ca38167ecd135a75579e3f5820,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,000000024434,,c7582e1cbe0a4f89c68f16bdccb321fe345eafa2adb8aee6892daa3877243196,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,c7582e1cbe0a4f89c68f16bdccb321fe345eafa2adb8aee6892daa3877243196,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022c8100,,a4e393e965a2156496f5ab5e95a56bf4550e2ce906d1ca7322bb7f953ac4e980,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,2e1f67e8e8c0f94d4aadddad9d818e95847cc81d3ea9e1f56918befcb910655c,6a3c63c1d76979c8fd1b9094ecb731453669c0fe3501bac60db995c1041256be,0000001681ca89cb45168249526b0d26e5c01bb279498d852fcef1f0,0000000ff08f43479e849c878ac72c200000000000,3ba796736113c2c97a89893419ff7dc9c1ed055e76cadfccd0a066932d977a09,d79a8c6531db9712535fe1a4b01292c58ee80cd4e84f7fa268bea948d41421e9 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,7fdb5862f8d238fd2756044aa84b4b58fd121c0d0217e48c8bac2ed7d3781d69,ca34ad4f962345e17729e0f60693609f0d3327b3e5db22ec79505142c612245d,0000000157,,d448d653694d9b1bc013ec92fce403aedfb9d2ba83338ea7bbe36974e498aa85,21469f5d53eb0f70ddec347a4176f218ee8ac1e10ef82157a955dee57f69d66f diff --git a/gcs_light_client/gcstestvectors/testnet-08.csv b/gcs_light_client/gcstestvectors/testnet-08.csv new file mode 100644 index 0000000000..15352cafe8 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-08.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,000000028400e0,,54197cfc85cf0a5cd2161d4f68c09d672d35d58cc35095859c3674bc5cf21a87,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,54197cfc85cf0a5cd2161d4f68c09d672d35d58cc35095859c3674bc5cf21a87,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,00000002508c40,,b9976fa89632ef03860f44d6302d465fb94137942ddf772c821a172a1f2c5edc,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,b9976fa89632ef03860f44d6302d465fb94137942ddf772c821a172a1f2c5edc,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,00000002449a00,,9d7c41a135bfe3e4f9bef896cae478da16192b9136b3079be6082bb3de031991,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,9d7c41a135bfe3e4f9bef896cae478da16192b9136b3079be6082bb3de031991,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022cc080,,c15296f0413e64839b437a98e598610385fde93f316d82e7e2ca28ad79e96c27,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,9b47db78b9d56155d980139301c7df892a705bcee8245971f149debe51faa044,e18d07d265d496685dd9e58b8d02f4fb6f006f491b21885c26a96ce92e96b084,0000001681a552696c4eb40912d2358348dc5c006ed4f148c361a5bceb8f80,0000000ff08fa191b3d048e41f14c71610000000000000,8c68f57f87cc6a16c1a4832773a65d9034a75083caa791c220b95a5bd27944d3,01972a55f7a2e0808244c33bfe5b96e372bd5efaa066e8afe3d6e151bd046d5a +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,f95eef20f832816a985e18e2269d9215af7102ba78ab752f489e43a441981fb3,c3f9c5b2620759a331e46c6512a625c88b6e81b4529e44894b01a18db97c6852,000000015700,,bd981c08ddd7f61a7c2f623cd242132ceacc54d91966655261a814d1e3587ca2,6ed33050e43b4641e346999db1128001b5e6e4750b9c3e81921f4d5c78f258ec diff --git a/gcs_light_client/gcstestvectors/testnet-09.csv b/gcs_light_client/gcstestvectors/testnet-09.csv new file mode 100644 index 0000000000..343cb7b5cc --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-09.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,00000002840070,,7f7e7d4d9df8885121db659c031d1bdec03646491c3add08b0f7826ad8a2484a,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,7f7e7d4d9df8885121db659c031d1bdec03646491c3add08b0f7826ad8a2484a,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,00000002508620,,f26746cd7040385325391c8b053d83a073467af62b0e2e3f8ea631bbba8da51f,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,f26746cd7040385325391c8b053d83a073467af62b0e2e3f8ea631bbba8da51f,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244cd00,,1f6f172300096d74c346c657106cd13894a226e6a5e90474b7c29aca5c8ceac2,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,1f6f172300096d74c346c657106cd13894a226e6a5e90474b7c29aca5c8ceac2,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce040,,0a9e670e4410d532dbd0fdd5a394acb8e46c2beab4efe78789eb60939a1988dc,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,f97fea66f95567e84939ba4ca763b66c629b5cea993fd237f759657bb84f2d9b,a38f261b9045f9b5b10ca5ee4c237ecec953e74cf0281cdd6f558315cf896e4c,000000168192a89b2d84d5a02425922ac0d29b65c001bb69e146615874b3ce9c7c,0000000ff08bd0c46a7a0487207e29470b0600000000000000,310369efd0d683dc03090ffe65722e88c9c7afa1a4c2724797ade6a2395e9e63,25136f27b9a769910dfe6246ece32a9410406aca5e8bd694e56ad818714727b4 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,25a7190515e1dfdcd84bcd1ea3f28781bf8768e4022de228e5344f23a3be0cc0,c8358572aba0f1e7e9a8c4d32aa78375f95c0f9d4b3b9afcfa4beb3fec4e385d,000000015740,,418bbb691108816606c04151e5218f405d06c3028292728e40920c995769443d,ef05bd75d95b9ef1646bb1c91a8fa2dfd50cc8c77e86cc0e15742c1ea6e4e9f6 diff --git a/gcs_light_client/gcstestvectors/testnet-10.csv b/gcs_light_client/gcstestvectors/testnet-10.csv new file mode 100644 index 0000000000..b3257695d6 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-10.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,00000002841036,,3871e38104e98e9f931b1215708f5e9296973bd88ea31857fc4d360cf4bd8df9,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,3871e38104e98e9f931b1215708f5e9296973bd88ea31857fc4d360cf4bd8df9,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,00000002508314,,2fe340fc9a535dbefc78ba5c639d04f32b47aeb337b9de84fa6286485c591bdb,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,2fe340fc9a535dbefc78ba5c639d04f32b47aeb337b9de84fa6286485c591bdb,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244e680,,0d0737031512c54e1f3e1cae478159bcc8a3306336d77a9c0e4521acf62f1351,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,0d0737031512c54e1f3e1cae478159bcc8a3306336d77a9c0e4521acf62f1351,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022cf020,,245e4f28742c26ff0591b0c312e6d520d5a37bd9c1e332df20952312d04334af,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,251a28699f86aaba1d8fbc4bb3e9641bd5ac22303533cdd49f1339f16122b522,d8a37969686b9bc909938fced920b915177d428ad10e9ac52ea66e53083af0e2,0000001681895526a5b44d2cf0924b12256034a36c5c0006ed53c14630b61a967ce8e3e4,0000000ff089e8651a4f38483921f851c7058300000000000000,583ddf42bf5fef2235b56dd2c8311031d44eea0a9af21b76182b57324d276726,c3cee90477ef835d4727a466c2c28ea198efca35efe7a9194a8bdaeadc2a5539 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,5ecfe042671964dcc0d3d69a1e2fe1c09007d374f21d2ec04599a4eb3808b30a,23d0d0e373def9f0dc2698c35326f097bd7951c67f381f6b8ab6172a24d686ec,000000015740,,bde877687873b1b96a03b94446f23df1ce28aedb2e5b9f486e16aa8f29060339,ce011ca6f14a2ec30b2c98b2dbe001341199a58657748ffbb245b5bd8b304a17 diff --git a/gcs_light_client/gcstestvectors/testnet-11.csv b/gcs_light_client/gcstestvectors/testnet-11.csv new file mode 100644 index 0000000000..7b09e34f1a --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-11.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284101b00,,bf9c39d482f8f698ad50cb63ad84a7521a1eefbb932b1d594ba7e3bd4c99bf0d,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,bf9c39d482f8f698ad50cb63ad84a7521a1eefbb932b1d594ba7e3bd4c99bf0d,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,00000002509189,,ee44557d8057ac9c59ba9b5c32f1e235a181b5d8355aa050b925a614b8ceacc5,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,ee44557d8057ac9c59ba9b5c32f1e235a181b5d8355aa050b925a614b8ceacc5,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244e341,,a21ed2b1b2535237c348ee91dfd515ccc0b8d40c053aae37a9cbe51e912078ac,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,a21ed2b1b2535237c348ee91dfd515ccc0b8d40c053aae37a9cbe51e912078ac,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce81000,,26e97256fe4433c6ff872e765bb216c1a72b9a4f9f3b798c1d2ca980d03957ab,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,4198ca71e23fd681223b9d8172c63cf045c36b7f0cf9682c92e7327051f173c0,009e3c63ba93a9dcb09061f67f53a00647cc9ab7959cb2bc3fa51830ecf7168b,000000168184aac9a8b644d167824c95d222b02d286d85be001bb5a7814618558652cfce871f30,0000000ff088f4334689e70481c907d8a3c6fec18000000000000000,6ae2af4bcc39ad2595beef96ffe00b098933e8d8d9a52920f706cbf9bc4ea0d5,658d84cf249b2b08d056a04fb2a67bb6aaf41c1f0e114dff7d67e45497cf0984 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,5b8957cffab7e4d930885e124f672b81b6aa674abe757df4d60dc5dac189fd03,3f78984514e45b737bc7815c49c470de1db919bf0a8d7833599cbefb5349d0fe,000000015750,,a536012e78b9f674036d3c5803afde4c06bcdd3ee80fa115005f5fa257ac7c88,9f4c9bb615e2192449e3c9569879f37a9e9d1f63fe8ff62324c1052081ba9e12 diff --git a/gcs_light_client/gcstestvectors/testnet-12.csv b/gcs_light_client/gcstestvectors/testnet-12.csv new file mode 100644 index 0000000000..6964f20c43 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-12.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284100da0,,d1e605eebd27fc0b5069bb67c513050e67146ef4a2370fced6db4ed99454981e,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,d1e605eebd27fc0b5069bb67c513050e67146ef4a2370fced6db4ed99454981e,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025090c4c0,,40c64934fed70c4eeaee60552e100097492fa462e18977cb2301a9f9b5a23189,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,40c64934fed70c4eeaee60552e100097492fa462e18977cb2301a9f9b5a23189,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244e9a080,,7b62997c09b75ba6353aa5c3087229361d663945358def1695b581be0c7cb4fa,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,7b62997c09b75ba6353aa5c3087229361d663945358def1695b581be0c7cb4fa,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce40800,,e9c682e7f4b8fc142ccfcd7b4a8ccf6a4467c730f73db6c3adf94d2e33815864,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,ee2abfc388d0a707f31469f5c8294984d396d86be995cd6c8226a2267d359197,46eb164f165a55b9ebfba1e09cf6b50d87a7e109ca8597b26417f4c54dba5075,00000016818655526a16cc4d0b3c09312b9221580b4a4dae5be0006ed74f01460c296192597ce878f980,0000000ff0887a19d1a13cd8484e461f6147c6fb60c80000000000000000,4b2d4b943d86278099330346dbff9f4c5ff5f900527b9b171b1d4ba787e0c8dd,38db73314e85f969c188c9e7c3729aed71bd508b9b3bcb4b96e50437e92203bc +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,04099da99bce53fe321853c02736714a1c7958c118bd3e577fea27b8a35cd62b,6f005a643aa5e910aa0848479c408d3631187b0ced377a4bd0537b647a437e51,000000015758,,f454cf1be32e38fc703e0d74e72cc8a6e119fdd4e583e58bb52b79c5d6828a9a,99c171c8dafc91244771f73ba54a15a6805c2803e07f312e0c3e18ef995074f5 diff --git a/gcs_light_client/gcstestvectors/testnet-13.csv b/gcs_light_client/gcstestvectors/testnet-13.csv new file mode 100644 index 0000000000..1e5aa30ccf --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-13.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,00000002841206d0,,5814a77d79a0b0ca739a944609cfc23262e4e84b7e18b2c62108b4ac090d5cd3,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,5814a77d79a0b0ca739a944609cfc23262e4e84b7e18b2c62108b4ac090d5cd3,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,0000000250906260,,c4356d0cb110a988eb05bdf2d45792fc2179933964ef86bcdaa0dbb03ad7bfe1,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,c4356d0cb110a988eb05bdf2d45792fc2179933964ef86bcdaa0dbb03ad7bfe1,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ecd040,,d003e220ae423aa3807245687d10dbcd91cc6118e2bdbb68f9f178c08edb4c90,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,d003e220ae423aa3807245687d10dbcd91cc6118e2bdbb68f9f178c08edb4c90,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce603f8,,4dfcd25ba105cff9b9e2530ea354b5dbfaae18c9c570840042094ee5cf1de217,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,87b9e61b6684d8c0f9a2a5d088ce80054929e0ee573c64039a2158917d364c13,5df880608af89509d43958a21948dc4e8a5dd6b996b67f4bee7b834665691147,0000001681852aac9a72d9c4d059e024c2571220ac04d291b5a5be8001bb5a9e0146261458644b2bce86c7cc,0000000ff0887d0cd468279b848272387d828f46f9b064000000000000000000,1803b2e949d7fa409e56c8bdce578dd18cbc70475cf739971e23144905e5c983,38ead9c2503bdfad98d965c5a5cf3a9e4393073f2561c9983b7e0b934c2d1410 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,da9e9a040cb0a92ce848561d8784d4492700b9c81e16c044add48c523f477b00,f001b754b360c77f232dd97e3e899c92016a42847196eb24099c460914ac5e15,000000015758,,6437a695969bf6d095ff6e871093ddd54d1110870ef56cfc23f37c66ce3dcf24,898f612673846b9655166056f6270e634de0a7ecfa9f82a41921e507c4ede4a2 diff --git a/gcs_light_client/gcstestvectors/testnet-14.csv b/gcs_light_client/gcstestvectors/testnet-14.csv new file mode 100644 index 0000000000..13641afaed --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-14.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284130368,,61be45b576dd455adc748863440ae0783b6a5011e97c17ee5638cc8cf3dfe4a7,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,61be45b576dd455adc748863440ae0783b6a5011e97c17ee5638cc8cf3dfe4a7,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,0000000250903130,,bcad76434f7b16e5c6ad75555448d0e925271e49b77259417cf92b1b42ed9957,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,bcad76434f7b16e5c6ad75555448d0e925271e49b77259417cf92b1b42ed9957,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee681c,,cf3dc2418dda23b9da3bda48ed584e30eebcd324e498dd5c438e9363ce378b02,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,cf3dc2418dda23b9da3bda48ed584e30eebcd324e498dd5c438e9363ce378b02,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce501fe,,d335bfbc79516c3f413d778261d159474692072286deb99786eb6f0777dc4baf,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,2e0b0b9037b79fa6019d7ad98a6b93fc6fcc8e5ee500f43e824b4b4a2b2d3657,292c86a125d217ae440395a3557a595093523a36b31acfa34d3a40b3ea140747,0000001681849557269c5b384d02cf0092e4ae52205601b4a436b45be80006ed693c0946230a1618e9653ce8663e60,0000000ff0885e866d19fcf370482391c1f6051e46f9d83180000000000000000000,f612308f2195aa4bd892a8aec4ceaf49da17a2a43fde63aebcc3b8ac748887fa,4570943b3fd4d23197956dd67e58d41d208412da2b6af7721fec422252bfa668 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,37da2d7e6a9651e2fa775a4bb83cfc0b437586cf7fb5cda27895fc9f453b205d,6d1a2a20fc29c1d26e9e9ded2f30efcd3974d9e42441f72d01efd9d3e40c80b5,000000015758,,3bd257ab08fbba6588cb2d3e6b2fc3a523e87cc1ce26e9ceecf8a2515ab80e9b,77deb0bf5135ffff96fa18ab15890e48dcb2d50b9cf44e211055a3386ec6aadc diff --git a/gcs_light_client/gcstestvectors/testnet-15.csv b/gcs_light_client/gcstestvectors/testnet-15.csv new file mode 100644 index 0000000000..4149712986 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-15.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,00000002841301b480,,ed540bcef5864a6f6892db70ddbde6b083184d9ec5e157845bc09d6638c6b8ce,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,ed540bcef5864a6f6892db70ddbde6b083184d9ec5e157845bc09d6638c6b8ce,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,0000000250911898,,096e810aa376925e4931851bca2d16fb40fc3db4b68e22a798ac5cd4745162b5,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,096e810aa376925e4931851bca2d16fb40fc3db4b68e22a798ac5cd4745162b5,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee340e,,811fcb651f44dbdab1630a5c55e79ebcae1fc62f1d110ce77a5d098d13f31253,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,811fcb651f44dbdab1630a5c55e79ebcae1fc62f1d110ce77a5d098d13f31253,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce480ff80,,e8ca88f13414e5f7905c3fb46f6b0db039b3756f7e680906786109d05c326925,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,9a76b8491ca32bd6c661afa8a1e53d7e58972ab3ae9f57d3520105313ee09fb0,c5035ba5eba00731f57d72dcdfe694a282a02966fc3e3dcea3d9a6b313bdfa1f,0000001681844aabc9a6cb6704d01678424b895c52206b00cd2906d665be80001bb5a278114629850586392ca3ce85f1f300,0000000ff0885f4336467d9e6e84819c8e87d78a3c46f9ec18c000000000000000000000,e59ad6d7475730a8fc5dde5ee70c4fc85bce0097892c131b4fd7f6fb01503b64,74c07983a9f575a51e6632bc67bda516b22317723482c3d50c89cab2f1cc1015 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,034d0ace4003d91f423d9881c2dfc7ef6f71e16ba6b5310a3c9be03488217faa,dfa986580ede34621d86120c144b81771136e72d6100941c9448dcf3e9dffed8,000000015758,,9dcd64791a66f04797e7dd9ba7c6bcb8a862676848a1917f300873912d8a1e04,cfb8fbcf1d95520d38624038708dbe71ee73a1f2be969a16b56c81c5b30d8192 diff --git a/gcs_light_client/gcstestvectors/testnet-16.csv b/gcs_light_client/gcstestvectors/testnet-16.csv new file mode 100644 index 0000000000..9986f9ec5d --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-16.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,00000002841340da40,,e649fd01c34cb8b33fb84ae5e0fa09d287f988ac06c9a983ba83dc23e115848e,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,e649fd01c34cb8b33fb84ae5e0fa09d287f988ac06c9a983ba83dc23e115848e,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,0000000250910c4c40,,47e65d122ade3f675cc1114b43abacb0e65b79ff51371bc1460c5350be9a8aff,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,47e65d122ade3f675cc1114b43abacb0e65b79ff51371bc1460c5350be9a8aff,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee1a0700,,a5e65018c0f3fc39acc0fb52c051ee3c31e1d6b11d5952b49b6f86f340ccf915,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,a5e65018c0f3fc39acc0fb52c051ee3c31e1d6b11d5952b49b6f86f340ccf915,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4c07fa0,,3fd1cc9a204dfa1947f8c843abf240e77860ebc836283f6cc1553a6ac163a148,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,44de3258df6cd07ec5fa4b57786733986782ad4db674bec1067435fac8d85093,ebbc5b97b3087539c93c29bcc536ea19e9d2b00ae2b6e83a5fe4a5ab814e8165,0000001681842555e269b16ce04d00b3c3092e12b8522055806b4a3cdacc5be900006ed684f0214624c281618e25947ce85b8f9800,0000000ff0885fa19b119f53cdc8481ce4721f5e1478c6f9b60c680000000000000000000000,fcb9f4937366a2ac34974cdf72da6fa772126068747440cf1d0203db6f129400,4301929fd1526b11f3b417b8a7b66c5301c4ca62a773f1745d8173abcc47a5f3 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,3f3d7f52d766f2c090fd655f965515ee576fd8c98e143cc33d0389b23bcfcd2d,7d2156ab63cac6c6492f61a0ac541e737e6315a1467060069af02fbc874a028c,00000001575880,,5da60747eddd212f4de1ffde1460f9ff8e123c3a81647e2282b3dc6fbaea72c3,73cf47e850655c875bee21974aec87af1980de7969666d91e67d414ec5e2af7c diff --git a/gcs_light_client/gcstestvectors/testnet-17.csv b/gcs_light_client/gcstestvectors/testnet-17.csv new file mode 100644 index 0000000000..56758acac9 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-17.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,000000028413406d20,,10cc3f256f7bcb4f405dca9e59a4374f0f86ceff5925404b42cd77fd4a7e9686,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,10cc3f256f7bcb4f405dca9e59a4374f0f86ceff5925404b42cd77fd4a7e9686,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025091062630,,e90d73ecfeb8bd1d2bda96a6b0ef38dc0ee3bd076455eb677d088b761de1a2b0,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,e90d73ecfeb8bd1d2bda96a6b0ef38dc0ee3bd076455eb677d088b761de1a2b0,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee4d0380,,638f247f33863ec9834a2207f0eb39db09cc98d58196d42e6297058b6d534358,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,638f247f33863ec9834a2207f0eb39db09cc98d58196d42e6297058b6d534358,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4a03fd0,,212c3f272d25ed302a606e884a03e160980564a526da87c04690443223edfaa8,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,f043acc7a6b3c373b6fb6aecefdc65781c2ee9d5ef9a18b2095ad76be97516ac,468472844e0b24d025167d53353dab4390471cedc153f423b7955eca71e52522,00000016818412aaf49a6b2d9c04d0059e1824b82570d2204ac034d28f1b5985be900001bb5a09e03946246140d86374b28fce85ac7cbf,0000000ff0885fd0cd8467d279b90481c723907d7828f0c6f9bb0634000000000000000000000000,4106613fd9e43052b73f21c2f9c25416c1c6aaad101ff3a3027271ae86966f25,f55237481302bffee0b1a5ef5aa6e377c7bd4482a79f51586e6a45654d9165b7 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,1f60a69135b389662e99bf8fe2fcfbde55446cf9c22c92d901a3ded82d8656ba,1cbd9c6922b39324046d2bc7cb512d5e7a9fbed06f501cb37a895973dffdc3bb,00000001575880,,7a2a83ab75559874830420f355856b89d358800889e8d03c2f3ff698e51c0e22,9e38a37d4193e65e7e6951df239611b24c416a3d85dbac46d235ecb6d403a31d diff --git a/gcs_light_client/gcstestvectors/testnet-18.csv b/gcs_light_client/gcstestvectors/testnet-18.csv new file mode 100644 index 0000000000..35c08b9d8a --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-18.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,000000028413403690,,3d0acb674b306b41646c74c8feff1f804dc45a6d8b1e8595b5e868bdfeba30a7,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,3d0acb674b306b41646c74c8feff1f804dc45a6d8b1e8595b5e868bdfeba30a7,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025091031318,,6a7da6d37c8965418be8593cf7f92b7985c5d7e315628cd83b884ba742645286,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,6a7da6d37c8965418be8593cf7f92b7985c5d7e315628cd83b884ba742645286,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee6681bc,,a1a2e2ea66a8424abd4f73ec4959a2ff585db67562618eb59a89ca08d6ce83db,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,a1a2e2ea66a8424abd4f73ec4959a2ff585db67562618eb59a89ca08d6ce83db,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b01fe8,,f994e41f580e68c282f1d4717adab5ba44d6eaec5f782ec3749bf7c2cbfff062,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,3088a436dc79f0143b28046e1bf010134e08db48a2fd082813478109cac0e511,424b61a574af30698de40037e900043c0d2ab483e806e3869a27136e23aee4da,00000016818409557b269aa5b3844d002cf0c092e04ae1922045601a34a3b36b325be8c00006ed6813c071462430a05618de9651bce85a63e5f8,0000000ff0885de866c519f44f3720481c391c81f5e051e0c6f9bd8319800000000000000000000000,0281d24767ddeed0efbff0fc6df9648cef779fede6c686422cbaf55c4b0fe4aa,9fd2cc2eab1c70c9f7a76e6bead753d45ec8fee0abffed025cf00b5bec79ca8e +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,b8f895974d1a684a99e6e9305cf13d9f159c04bf09ec49df5f904637fadf1621,0e3d276ea927cf0d8436527c3d53a4304c152f2abcc9f6f0e0c668268f098518,000000015758a0,,533fc1c7e94164a0ab36d4ed0742563d253950131e247c5c9e53399e6beaf0eb,a142f3a814713430507207b84461e8ea9bdfb340718ef9aef2361eb907455f0b diff --git a/gcs_light_client/gcstestvectors/testnet-19.csv b/gcs_light_client/gcstestvectors/testnet-19.csv new file mode 100644 index 0000000000..c5e81f284f --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-19.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,000000028413481b4800,,e42499f352bc1d60907312d16ff1247d5ed03b5f7f1e7a7c7491b912d6a3017a,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,e42499f352bc1d60907312d16ff1247d5ed03b5f7f1e7a7c7491b912d6a3017a,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,00000002509111898c,,1323aaf2d8591280d587b4f66bbd11f737159f852858f6717d463d7aa691e8ca,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,1323aaf2d8591280d587b4f66bbd11f737159f852858f6717d463d7aa691e8ca,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7340dd,,56a8dce245f6e916830ef970ef8ea28a6d618605759548a55d947f3ce4f38f58,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,56a8dce245f6e916830ef970ef8ea28a6d618605759548a55d947f3ce4f38f58,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b80ff400,,c3bb19c7df0768e5c5e1b0044309d651266a0bd752c40d44f5658b8efbc087eb,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,abf00cd9428eeaf51fd79c70f04e597828eebf4af8c4701528d418283e4e0ee9,9f10f74eea23ce8e912f7159a63fad9feb471792e890ef79c1f1af2617f3e1ac,0000001681840caabd49a6acb67044d0016786024b8095c3122046b00ced28ee6d6625be8e00001bb5a02780e14623985025863792ca33ce85a31f2fc0,0000000ff0885cf43363467cf9e6e48481b9c8e487d778a3c146f9bec18ca0000000000000000000000000,3569fe258afa1806992761a7fc0701b7f8696fc4bf4a1e48af73c1795551efd8,f3d221310314eb0eef9565b4c0e386b33c33c468f849476c4833d31a3764eb72 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,2e2051f16b62eefe25b85b7a717ccab983a1224e961d12bfb4ae4bc59c156031,e9a4c89342c2bb4ee82de6cb6e0093d11f78e6366419a7625595f4f9abf18b8d,000000015758b0,,82c3de6c70c1d2ebc1cc92688973f03ccdfefba104630bbdb8222adfb30165b1,80e83c5e4b6a18fca6cf9e2e4549987554815fc0f2b74ccd0a36424bb315a486 diff --git a/gcs_light_client/gcstestvectors/testnet-20.csv b/gcs_light_client/gcstestvectors/testnet-20.csv new file mode 100644 index 0000000000..0c43b7bb25 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-20.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134c0da400,,646e9776a9c271aba9f92c24836a58fb23dfd3a89c03e8e953008c662a1e28ea,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,646e9776a9c271aba9f92c24836a58fb23dfd3a89c03e8e953008c662a1e28ea,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,00000002509110c4c600,,2fb1ea905f3860f415d1315ffd80beebac319479bb3969782b79b51065f6229a,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,2fb1ea905f3860f415d1315ffd80beebac319479bb3969782b79b51065f6229a,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee79a06e40,,3f362605dbed46479c8aa136cc2bab23644931180c80b5fe9041f2a80381d156,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,3f362605dbed46479c8aa136cc2bab23644931180c80b5fe9041f2a80381d156,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b407fa00,,db38d5899f532858f0feb0705c959fe362084371168cf85735873b1d82220742,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,064abf504f7fb7e0e13f4d1a158b66e8da889b3dc44bc7fb0b47cadcfc0a0ee3,14a46caae43a6d10af7056d7e34d376662588fe38e6b74b684c6f249bdb0f475,0000001681840e555ea269aa96ce084d000b3c30092e092b8612204558066b4a3b8dacc45be8e000006ed6814f01c146234c2813618dda59467ce85a18f97e00,0000000ff0885c7a19b1d19f3d3cdc90481b4e47241f5de14782c6f9bd60c64800000000000000000000000000,7f751ea42f20e3630ebd19ba29372850d97e7d7aa48ad8bc4326713c4e967c5c,bb15d5647567607d87d4b54ed01a673fedd95d7e4f44194c231bbb5494b1a0b4 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,ba5f1f7c78465a4f33626d2c70d85766626037e4016e7422b337c4a88a482ca5,f25126406779dc834d9abab728a24ad90687f38fb6dc0f6e2554a2c24a3ea410,000000015758b0,,e5dc5e74f8a8c8dc2288e066330441b9b6624d40468e01678d37f527a5fc7e1c,2c54d9499c124bf493fd410a5051099f135cc547b0c4a2f63c78a417c7f9dc1f diff --git a/gcs_light_client/gcstestvectors/testnet-21.csv b/gcs_light_client/gcstestvectors/testnet-21.csv new file mode 100644 index 0000000000..86bbad4f74 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-21.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e06d1f8,,5035121c2b8d2ad78c769393d01c67caeb4b95af5ad26afb07ce738d0b22d2dd,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,5035121c2b8d2ad78c769393d01c67caeb4b95af5ad26afb07ce738d0b22d2dd,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,00000002509110626310,,f09544da82d1aa21d406319b208f65f30e9496d6dd9d82fc8452d148e8928308,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,f09544da82d1aa21d406319b208f65f30e9496d6dd9d82fc8452d148e8928308,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7cd03720,,3f774021d0d88dc7b936995001a9285fc2058544b4cecde4227f41478b812fb2,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,3f774021d0d88dc7b936995001a9285fc2058544b4cecde4227f41478b812fb2,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b603fcf8,,39f3648c9aa56e8249fe95201eab056c1794088a4757c3df1439de55255caadf,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,83197fb3b05fff166b36ba9fdcca7d133e9ff8f5d040fe1ff03f86804f30102b,78ee39bf548ec9249f0c5359bd4d2e9502e7baadf3ffc49bcd5803da67d01d4b,0000001681840d2aaf549a6aa2d9c104cfff59e18424b812570c122045ac0334d28ed9b598a5be8d800001bb5a049e038946232614095863774b28cbce859fc7cbf1,0000000ff0885c7d0cd8e467cee79b920481b47239207d77a28f0546f9bbb063260000000000000000000000000000,b4e069ca300e4c620ace66cdd9cbaf992239a2031f624039887d39cca01e602f,c7537ddb31ec3390d885ef8fba0f5a4a3eecf717f1d77cfb7ad35da2ebc6f829 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,5cdbdbc13fe5af1d453f3db149a7b74c5bbdb7811e9da5ed9c64c7aba449cbde,6f42c64b23746f91d7b9615c48017569a4e1b379cafeadb5f163ff76ced2f361,000000015758b0,,b3c5d575db65d06b6b462a4b7faadbf0e9317d4a39fc84fd9737e088f42e8530,60a605948920fae319b60389208ae9fb49f8d19764bb258fcc438771c89da370 diff --git a/gcs_light_client/gcstestvectors/testnet-22.csv b/gcs_light_client/gcstestvectors/testnet-22.csv new file mode 100644 index 0000000000..6bd142ab5a --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-22.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e0368fe,,0c44d14cf1e80e0b0e0ac93c8d8541890121c5854521e3bb87ceddf932b37aba,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,0c44d14cf1e80e0b0e0ac93c8d8541890121c5854521e3bb87ceddf932b37aba,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,00000002509112313188,,6adf2258c94586e3add1deeeaca503d54ee3c5debdc8f49b60e80d83ea87c027,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,6adf2258c94586e3add1deeeaca503d54ee3c5debdc8f49b60e80d83ea87c027,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7e681b90,,8482e7fdffd0af8806e22f20d4712fc14a2f4c823ba479f299742702f166d866,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,8482e7fdffd0af8806e22f20d4712fc14a2f4c823ba479f299742702f166d866,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b701fe7a,,149dfa8038b6d36c1ff6a81fb532175110bf8774505290825ca86de6767ff074,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,93b4f3afa8fab71b9de118bb1aa4aee344b06b6b7ab1da9f5ab49633a551dce4,96018ce1419eeeb5282792b0a3aa5edf5702da0cc52fb3f4fac14ed0880e5962,0000001681840c9557aa269aa85b38204cfffacf0c1092e044ae18522044d6019a34a3b736b3145be8d4000006ed68153c07114623130a04b618ddc965193ce859ee3e5f88,0000000ff0885c5e866c7519f3b4f37238481b5391c8e1f5de851e0ac6f9bb583192800000000000000000000000000000,fc580f22830f314064d9f4790b47abf48f2ca5d23dc354d60aae1877c15e9975,32481556983c5a486d136cb65a8f58daf6a778ce54e660bd1e2ba4ba201bb5d5 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,fc06b3e215133b4434c1e60514a7b009645c9525b5b0fc4b8386474cc24d9126,5d7ae760f563a3388347c920d25d619adcc306e031e19f4e881886fb6a4a0924,000000015758b2,,c91ea860294929c782d84eb7af5372ddec4771d4ae0e39f13972a17b58f899b2,52c1ef2e71dfe5ab4620e64b02b5f61e2061dc043428739eb7b85c0872603a5a diff --git a/gcs_light_client/gcstestvectors/testnet-23.csv b/gcs_light_client/gcstestvectors/testnet-23.csv new file mode 100644 index 0000000000..b769343680 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-23.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e01b47f00,,436f42d4defd6cd335e28c8f3e75d3e746d05c9269c605d8863cbb5d67f93fe9,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,436f42d4defd6cd335e28c8f3e75d3e746d05c9269c605d8863cbb5d67f93fe9,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025091131898c3,,ca8bc82ba97c2b0dfaa27fcea0c8de33866b36a44e61e8df390c3d101a7995f3,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,ca8bc82ba97c2b0dfaa27fcea0c8de33866b36a44e61e8df390c3d101a7995f3,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7e340dc8,,d82c3ef38973b1729b53ba9b6e672d20b245ce9e51e49700362eb4f284c559c2,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,d82c3ef38973b1729b53ba9b6e672d20b245ce9e51e49700362eb4f284c559c2,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b680ff3d00,,f35d43ca72a1cfc871fe0842e982777b2128bb9d6e184331d9e8403b51c34370,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,0cbcaed0cb9b5c628c1205791514b565aa0c162921f3fa5348bd950bc7646d10,504aeea678a6d42eb8832ffd4e2efcc07554fcb8b947a53c51bf002be4254ff9,0000001681840ccaabd509a6a9cb670444cfff967860824b81095c30522044ab00cd0d28ede6d66285be8d2000001bb5a052780e294623118502558637712ca31fce859ef1f2fc40,0000000ff0885c4f43363a467cec9e6e478481b49c8e4707d77a8a3c1546f9baec18c940000000000000000000000000000000,69cc2ebd8fa75695808ce80fb328fe73f1deedbe128574447c3184b813f4e153,126c2ae07bddf48d04644d08653e54d19a12a12980a516b25d62910d3b709c8c +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,9df998515208680b4f24f7008326623b2e857b66b13065531dee9e99239d2853,dd9f2a870d4c21cac01e95f82179939ef767e818ba3b8766e90ba9d6131eebbe,000000015758b2,,d86a7af9eb37088a0f44b419958acb5a291715befb186ac159e5cb8fe7c1dadc,d7a1c73aa76b3fcace11f51deaa0649584c4f53dae0443a5d494a1cfba90bc73 diff --git a/gcs_light_client/gcstestvectors/testnet-24.csv b/gcs_light_client/gcstestvectors/testnet-24.csv new file mode 100644 index 0000000000..8c982184fe --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-24.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e00da3f80,,a590f5bedcebe9e093ed7e1959e29bc0008fd576af671fab550b66fc77d8b41b,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,a590f5bedcebe9e093ed7e1959e29bc0008fd576af671fab550b66fc77d8b41b,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025091130c4c6180,,d59652cf77e0d3d285a1a4be6ef6fcb37d9f277e54d96e89d15404aa0d238e25,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,d59652cf77e0d3d285a1a4be6ef6fcb37d9f277e54d96e89d15404aa0d238e25,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7e9a06e3c0,,0ec7b2d01bb33e6f541b55fd3b81ae7387a2732fcc9fe7c0566b038984f99f5a,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,0ec7b2d01bb33e6f541b55fd3b81ae7387a2732fcc9fe7c0566b038984f99f5a,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b6c07f9e60,,a7660cb1fcca413a9c364432c4de9d3185c223b5f12221fb5d631569f022dfb2,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,7eafb579db245f82e74966f8cf5a94de6f1b27a8359902b8816b351d8f735ea9,51b818aa4fbb155401259d85758802a08ea811e49e884370a93331463f1c0ef4,0000001681840ca555ea8269aa796ce0884cfff8b3c303092e0412b8609220449580668b4a3b78dacc4e5be8d30000006ed68144f01c49462310c28129618ddc259463bce859ef8f97e200,0000000ff0885c47a19b1d119f3b13cdc8f8481b48e472361f5deb14782a46f9bab60c64a800000000000000000000000000000000,e563f9d7719edb8ef71891fd5bca75597543a8e9196e9efe9c94107760122b92,c10536c7fb7188aead122fc2664d3c3261f9216f15a9e2d609093cc8278fdf4f +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,ad4626972ac1d95f314e0c8ab9af570df547a62f1ab22a14ba7289f9fdbca152,6acfa5c528ab7ac7fe92f2af7a65ef5e3725a2caaefc69483dae12105d6586de,000000015758b200,,113227446ea55f669fb02e9f5c3a18a8e9bbb74f685f137334c68648347c97c7,c6bd59adb65fd6b07b156b1ca88a08f949e0c0840f8292078351fad7f1772c68 diff --git a/gcs_light_client/gcstestvectors/testnet-25.csv b/gcs_light_client/gcstestvectors/testnet-25.csv new file mode 100644 index 0000000000..89209e08e7 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-25.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e006d1fc8,,f0b663866a71ba2ae1e144f09c68f8eeaf8b43108e6f060d2220d76be6c3382d,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,f0b663866a71ba2ae1e144f09c68f8eeaf8b43108e6f060d2220d76be6c3382d,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,00000002509113062630c0,,5ac2028485d5b5273ad9265cbb44c77e2c66deafd85f38192d72651354ecf65c,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,5ac2028485d5b5273ad9265cbb44c77e2c66deafd85f38192d72651354ecf65c,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7ecd0371d0,,5e447c9f548f8ed95c6e4b0fd2ef964ddb8eca0f4c08a13c5e27bd799fac52e8,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,5e447c9f548f8ed95c6e4b0fd2ef964ddb8eca0f4c08a13c5e27bd799fac52e8,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b6a03fcf30,,749387d260598fb7d44fb2eea1ab9edebf1144a13fe67c6ab048c359b1a03395,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,6bd722e8e00a158b96a94a5dddbcd2ebdbe249dc135575cb59ed2807e27f1e3e,a1d7956963e6af3b85fcddabbaee3f4aaf41e992e9ba0cecc53c5319883a8dcd,0000001681840cb2aaf53c9a6a9e2d9c1144cfff859e181824b8102570c11220447ac03346d28ede1b5989a5be8d38000001bb5a0509e0389146230e614094d8637704b28c73ce859eec7cbf0f,0000000ff0885c43d0cd8e8467cec279b91f8481b4672391b87d77aa28f05446f9baab0632560000000000000000000000000000000000,c590373b21da675abe2bd3193fbb3347e31a247365f3db9552c9a24ff383b428,f6bbc98e0a165bc1dcbb3fcc1fad5183047488927934a71f9d83769578645fd8 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,1708b1dd57b74857c78f622931d2668f3a37fe6397a4691e826d4843f9c1203d,a9edd2fa24cecefb034a55ad7712438d80fb107ab963d93d101c2ed28450025c,000000015758b200,,1c79992be12f72ef53b32a0c414fdf9a05693bbd60402aa84b02ff64256f4600,82dcb4e4ee349c9fe68390a6a633faf9843f27bec5ce05b7cc2df6e8acb9442c diff --git a/gcs_light_client/gcstestvectors/testnet-26.csv b/gcs_light_client/gcstestvectors/testnet-26.csv new file mode 100644 index 0000000000..afd1916a47 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-26.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e00368fe4,,a1fa9ab5d0f6b164cd44684dab1545dcada2d4a0e23747c3efcafbfaa59ee8cd,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,a1fa9ab5d0f6b164cd44684dab1545dcada2d4a0e23747c3efcafbfaa59ee8cd,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,0000000250911323131860,,2dde1d8c4b3552b640ff533661138f28822e1c66da5ebdb9130637efb66fa43f,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,2dde1d8c4b3552b640ff533661138f28822e1c66da5ebdb9130637efb66fa43f,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7ec681b8ec,,1c1f163ee19854b081066cac0a513b37101f08606dcd98415b0b34699390f2f1,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,1c1f163ee19854b081066cac0a513b37101f08606dcd98415b0b34699390f2f1,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b6901fe79a,,16f05b54849c2343b532507441d59c5c38b7db8e95d41fe3236cb26703f75bb5,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,92786fb5282ed0d3740e2237cc184dce35381110962f57449d9ad8fd436ac724,96e56182eb55e10e110f88a29d7c818de878253664188032b42fe1e7f247e1ac,0000001681840ca9557a9e269aa785b3822c4cfff7acf0c0d092e03e4ae182522044756019a334a3b7836b31345be8d380000006ed681413c0712146230d30a04a5618ddc296518dfce859eee3e5f874,0000000ff0885c43e866c73d19f3b0cf3723e8481b46391c8dc1f5dea851e0a8c6f9baa583192a8000000000000000000000000000000000,de18e6aa201ea6c1596c352a3fe5f4928f9fe39bd403c93775035cdf54afa8bc,ccfc41adb2cd5e21accee36ae56c5de0f61bbc0e6f6444c31fbb34069e0e1e41 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,ad3afd90401384ac11c7e80d6d700fac17a7adf3e630a3cc6eaed6d960081521,a1a9e6c57f9238e013f426c66fdf1e43d5deba52e23940ab78a58dd6e555f4f3,000000015758b200,,b0aa01764a5d756828a78d1bde0178e71aa1611e8807405e18e468b9f969a873,3225c99cfe713e4589e880a5ff9ca1d79e88101bec12de59f53bd4c65cf54085 diff --git a/gcs_light_client/gcstestvectors/testnet-27.csv b/gcs_light_client/gcstestvectors/testnet-27.csv new file mode 100644 index 0000000000..ce3ca3ac3c --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-27.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e081b47f180,,99d2701ff1ed500a251e76393b37c8a23b9e6d7af18c3403ab1bcda68bb5c70b,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,99d2701ff1ed500a251e76393b37c8a23b9e6d7af18c3403ab1bcda68bb5c70b,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,0000000250911331898c30,,5f892debdca89e70f05e74f4136a3d136460187f1a3f87f02fd00ad0da10000e,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,5f892debdca89e70f05e74f4136a3d136460187f1a3f87f02fd00ad0da10000e,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7ec340dc76,,6ff7e0ef9c84787604121d19b599cc73e5afe1d2fdc46979c567a5df44d3d4da,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,6ff7e0ef9c84787604121d19b599cc73e5afe1d2fdc46979c567a5df44d3d4da,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b6880ff3cd80,,64fd5ea6f113ce75c6b1138954ef7ea3ed14953bc4e67fa6ee4b10c86cfeb90e,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,5c37afa8294ffaf23994f992505819233e58a0e8138752646756b4f780066985,e75e265d5a9b896cd147acbe9ad9610493c37b40158087018bf158b605ec2d75,0000001681840ca4aabd4f49a6a9e0b6704544cfff79678606824b80fc95c30452204472b00cd18d28ede26d662685be8d360000001bb5a0502780e24146230d9850251d863770d2ca31bbce859ee71f2fc3a0,0000000ff0885c42f433639e467cec39e6e47c8481b461c8e46e07d77aa8a3c150c6f9baa2c18c95600000000000000000000000000000000000,0e8b346176706a8f7c7d0f1aa7cd45350e89289f982b20da8978eae744f051da,70ca83ba3e1946a02145d0b4aa2ec7448da7eb959e7b8b89ae9e56460f4b4965 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,b5da80200ddf0eb25edb0ede4809ef26a11f610817db78a5263f73d36fcc35ea,f404d4ae12997be6e855cebae46e3d78361666b56a9960713beca863a3c16fac,000000015758b200,,fdda9d209d128f15d05bc0dae8b3b5f797dbc36026948cffb4474bd103b355db,610c7fec2b8be2012e0cef82126f9da25f71f85c00acbeabc0bf277fbfa0f739 diff --git a/gcs_light_client/gcstestvectors/testnet-28.csv b/gcs_light_client/gcstestvectors/testnet-28.csv new file mode 100644 index 0000000000..87a003bae8 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-28.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e080da3f8c0,,ca5c2742fcb87ec5891f8400be1c4a5289c0ae0881fbc8f8f3e5393e09557cca,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,ca5c2742fcb87ec5891f8400be1c4a5289c0ae0881fbc8f8f3e5393e09557cca,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,0000000250911338c4c61800,,1570f896f78c82846527ea1805f7b71ed849f1cae3045c1c4ec5f06b5ade9c91,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,1570f896f78c82846527ea1805f7b71ed849f1cae3045c1c4ec5f06b5ade9c91,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7ec9a06e3ac0,,d64f7657b0494fbd13bf47a473b37550396289a5ca543306b789e40596f0a3d8,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,d64f7657b0494fbd13bf47a473b37550396289a5ca543306b789e40596f0a3d8,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b68407f9e6e0,,3c48ea2dbbbc0cd0109af75fcb4a10a53c3785c75c1b5260cd1afc5ffe2d2673,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,9e79f9f5fee7604a204b0f1e25c98a42362b72a820dc45b13104313e210b251a,ef3918f7e08c26438f73b25cf04c58b471ef4004f3021455d3b954b020412f18,0000001681840ca2555ea7a269aa7896ce08a44cfff78b3c3034092e03f12b8608d220446f580668cb4a3b784dacc4d05be8d3700000006ed6813f4f01c48946230d8c28128b618ddc325946373ce859ee58f97e1d40,0000000ff0885c42fa19b1ced19f3b0f3cdc8f88481b464e47236e1f5deab14782a0c6f9baa360c64aa8000000000000000000000000000000000000,21c786b5bcb01e480c504272ba873aa6913a510db566e5001b0106dcb8d20ab2,e4d02f2c67b97bc26e134825dda9c88934410c1e1df08135330974806b698dd8 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,e732bbd6e045ce5f3dce6c305cd1238d837effa979deecea974929dc59162d5d,0d327a001a2c7e905e7a0f54d6635eba7c80286a9b1c51b6d8e4d5c945a6a439,000000015758b208,,50001e07c25b982d84616dd1f663a31abc15b31b4410f58e6b27843162fcee27,63474603f65f8aad3c55d9050da3068c00872c8ed0c9605d646b54e5f8b76c6f diff --git a/gcs_light_client/gcstestvectors/testnet-29.csv b/gcs_light_client/gcstestvectors/testnet-29.csv new file mode 100644 index 0000000000..4af2dd113c --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-29.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e0a06d1fc60,,b20d6aedc8cf4429d7e4f2b9a444f11f0ffcdeef0d2a7b5aca33289eb58f15f7,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,b20d6aedc8cf4429d7e4f2b9a444f11f0ffcdeef0d2a7b5aca33289eb58f15f7,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025091133862630c10,,e2e43910d2ade3899170a2ead6b3c2c3abf73c60829992b64495a295cb7944d7,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,e2e43910d2ade3899170a2ead6b3c2c3abf73c60829992b64495a295cb7944d7,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7ec8d0371d70,,be5d2675b91a36fed5a7574179a111e2b066ee74e6b45bd6bdb7732b458830e2,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,be5d2675b91a36fed5a7574179a111e2b066ee74e6b45bd6bdb7732b458830e2,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b68203fcf370,,e18730d281864de550199da7666eece5c3106e562004df5866b04fdbd009dba9,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,d34941c3ddc72de97040426cee055b43a852bb0f9943a7b61fb295d8bbd529cf,e63891792c6b76bf54c789a6eea794546fd6e2db364d9e592ad6b6fbb37977da,0000001681840ca32aaf53d09a6a9e12d9c11484cfff7959e181a024b80fb2570c11d220446eac033462d28ede19b59899e5be8d3700000001bb5a04fc9e03891146230da61409455863770b4b28c6e7ce859ee4c7cbf0ea,0000000ff0885c42fd0cd8e75467cec3e79b91f10481b46272391b707d77aac28f054146f9baa3b063255400000000000000000000000000000000000000,be9cd250d192fc6f9f44be32bfdc811e31922c2e282616a39b0208149172b19e,f6571010b25a5ccd75cd372df6486b762783617b5fd4d058f3ca9c7608216e90 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,9c3554f90c5425bc4f2d4a3c8b95fc645d09149ceec87358086368b7d833f59a,a5cc84765098b72fb90cf6c88446308694f8dd622703293caf6bb714e45c0837,000000015758b208,,5c9f7a58977f6f93996910339a732f828fcd60bacebd6ae310142496db0ad3bd,4377e361ef7bc303ab190d0adfcb3489e78050f840c7c61dd64fdb4a3ef5985b diff --git a/gcs_light_client/gcstestvectors/testnet-30.csv b/gcs_light_client/gcstestvectors/testnet-30.csv new file mode 100644 index 0000000000..4e171994c9 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-30.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e0a0368fe32,,55815daff0f888a24d17818238e6928bcb0d73c2dd995fde5de32f7aebf61ff5,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,55815daff0f888a24d17818238e6928bcb0d73c2dd995fde5de32f7aebf61ff5,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025091133a31318604,,c87eecdd5196b88bf1f8f555c0262fc53daa94cdff9b8a686cdef62efa3a9668,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,c87eecdd5196b88bf1f8f555c0262fc53daa94cdff9b8a686cdef62efa3a9668,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7eca681b8eb4,,3072800f3de45279eedd82581c680ded20b19c1cbee9fbc22c9d0b5e15b68fb8,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,3072800f3de45279eedd82581c680ded20b19c1cbee9fbc22c9d0b5e15b68fb8,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b68301fe79b8,,8b47b2082cb16b85b4e04793da0e12602faa0c3ae149a31e371450376afd879b,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,84237cc683a39221ba8c75ced4d87821152df6414af5008600e285eaab5bc8fd,e37ca1aea1c383cfa076122ffaa78211be5c11bdccd0e64547d52ae1093e161f,0000001681840ca29557a9e8269aa7845b3822944cfff792cf0c0d0092e03ea4ae1823d220446dd6019a31b4a3b78636b3133a5be8d37400000006ed6813f13c07122146230da30a04a27618ddc2c96518dcbce859ee463e5f8754,0000000ff0885c42de866c73a919f3b0f4f3723e28481b461391c8db81f5deab051e0a8246f9baa3d83192aa0000000000000000000000000000000000000000,0bb22c48a53863e957a450ed48886d9971201b459e0d890312ee94677b5bc215,5d7aafd8f12b26fa5d434e2fc4f1640c02197492f0da60de42f3aac16a72ec35 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,dc8557a40ae5ec58f60a5de480d03c4ebc6931c831cc2263b03af4c049442866,edc7dd0b51a383e61acdbf2bd0788ccc73ea5193101b8b73b1e539e9d297eee3,000000015758b20a,,f7f17c91301a4f4d97531984d161d30d6ecaa5b3ad34addb51e7a5eb1130d429,56374d6e599929f72316f5d75644c1675e9f8df6b0adf9b90ad0efe7b1f68a55 diff --git a/gcs_light_client/gcstestvectors/testnet-31.csv b/gcs_light_client/gcstestvectors/testnet-31.csv new file mode 100644 index 0000000000..4ca5f78311 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-31.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e0a81b47f1900,,c38b40dcb39aeb034228bdf97c8aae5b2a87d363d644d5162a0afae5dd2b31d1,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,c38b40dcb39aeb034228bdf97c8aae5b2a87d363d644d5162a0afae5dd2b31d1,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025091133b1898c302,,535100bb49ca43941aa815890ea8b465d808cd5d715332ce1dea619a23c9b5d0,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,535100bb49ca43941aa815890ea8b465d808cd5d715332ce1dea619a23c9b5d0,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7ecb340dc759,,fd591031d6d38c961d9feb5f9bbcf3cec50487d78d965073df3b4e5eb51f4d2c,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,fd591031d6d38c961d9feb5f9bbcf3cec50487d78d965073df3b4e5eb51f4d2c,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b68280ff3cdc80,,af16a9cc6f897b2e4e33c424c8f31d161e6900e254504292e4d0ac1a46566ddb,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,782c986d1d85f569fe9a0bdc1dc672b2b24d8c41908e4346dc384b1a7f311b1c,e764192422034fb2524eb289dd3314a12dfb27e466d984c126bf2a859259d9bb,0000001681840ca24aabd4f449a6a9e0cb670452c4cfff78d6786068024b80fa895c3047d220446dab00cd18ad28ede186d6626765be8d37400000001bb5a04fba780e244146230da185025135863770b12ca31b93ce859ee431f2fc3ab0,0000000ff0885c42cf433639d4467cec3d9e6e47c50481b4611c8e46dc07d77aac0a3c150446f9baa36c18c955000000000000000000000000000000000000000000,1a66c33273a1b49e8552c6e6927615e1f1cb611bf3902c2be6df4310d17c02e4,769c6b6d73b3f14198a46356d8f05bfef64bc5a7130b58f2f25ceb8d0606e997 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,5ff633524c2be7c17ef1adde8656cc36c0054d7a8cfd277099d419b677bd8f7c,4c1a6e25eb9fc3b246f144a140ad47a71e911e2b55e3a67eaaa6c74332da07bb,000000015758b20a,,3b2deb3064738d839056827d4e35d8e2dc1b1c9444f10075adfc4706c3acf620,dcbfc74a3a1ce4840c8fbd410116f43b9b24eeb85f63353616748332d96769a6 diff --git a/gcs_light_client/gcstestvectors/testnet-32.csv b/gcs_light_client/gcstestvectors/testnet-32.csv new file mode 100644 index 0000000000..b6f6dbe7f7 --- /dev/null +++ b/gcs_light_client/gcstestvectors/testnet-32.csv @@ -0,0 +1,7 @@ +Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header +0,000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000284134e0ac0da3f8c60,,4e7736924873187242630be931e983a66da1f621f349b753a0f970b5c068556e,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2 +1,00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206,0100000043497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000bac8b0fa927c0ac8234287e33c5f74d38d354820e24756ad709d7038fc5f31f020e7494dffff001d03e4b6720101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000,4e7736924873187242630be931e983a66da1f621f349b753a0f970b5c068556e,f98c4e9736d8eb8bb46299798906695c755369a3df99a93ffdded1713f1cf6e2,000000025091133b0c4c618140,,8bd7c7000953019a9a0bb96c5c3334cd87c42b4112d029fef17aa2fecc029e5e,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba +2,000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820,0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000,8bd7c7000953019a9a0bb96c5c3334cd87c42b4112d029fef17aa2fecc029e5e,fbae16d7c2d5b188182cc98096814029dd3fd7b6d2b3eec89b6aa143c5dca7ba,0000000244ee7ecb1a06e3acc0,,333bbc0563e2fe395d4a5bbce1447a37da779d21f4e4913bd23e8542cf4df3c8,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c +3,000000008b896e272758da5297bcd98fdc6d97c9b765ecec401e286dc1fdbe10,0100000020782a005255b657696ea057d5b98f34defcf75196f64f6eeac8026c0000000041ba5afc532aae03151b8aa87b65e1594f97504a768e010c98c0add79216247186e7494dffff001d058dc2b60101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000,333bbc0563e2fe395d4a5bbce1447a37da779d21f4e4913bd23e8542cf4df3c8,24d9ae5143129aebd224f98ea7de7d3b87c0dee9724cd90f71c904279f16a82c,000000022ce4b682407f9e6e40,,95d0be56fb8fb1e046aa50426ccee853ff4b49e02b109cacccd3dddd4a96a4b0,68e70baad72498a47adc9b6314c4a4215760663686813fccb6b7c9f4ad05d632 +926485,000000000000015d6077a411a8f5cc95caf775ccf11c54e27df75ce58d187313,0000002060bbab0edbf3ef8a49608ee326f8fd75c473b7e3982095e2d100000000000000c30134f8c9b6d2470488d7a67a888f6fa12f8692e0c3411fbfb92f0f68f67eedae03ca57ef13021acc22dc410501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2f0315230e0004ae03ca57043e3d1e1d0c8796bf579aef0c0000000000122f4e696e6a61506f6f6c2f5345475749542fffffffff038427a112000000001976a914876fbb82ec05caa6af7a3b5e5a983aae6c6cc6d688ac0000000000000000266a24aa21a9ed5c748e121c0fe146d973a4ac26fa4a68b0549d46ee22d25f50a5e46fe1b377ee00000000000000002952534b424c4f434b3acd16772ad61a3c5f00287480b720f6035d5e54c9efc71be94bb5e3727f10909000000000010000000145310e878941a1b2bc2d33797ee4d89d95eaaf2e13488063a2aa9a74490f510a0100000023220020b6744de4f6ec63cc92f7c220cdefeeb1b1bed2b66c8e5706d80ec247d37e65a1ffffffff01002d3101000000001976a9143ebc40e411ed3c76f86711507ab952300890397288ac00000000010000000120925534261de4dcebb1ed5ab1b62bfe7a3ef968fb111dc2c910adfebc6e3bdf010000006b483045022100f50198f5ae66211a4f485190abe4dc7accdabe3bc214ebc9ea7069b97097d46e0220316a70a03014887086e335fc1b48358d46cd6bdc9af3b57c109c94af76fc915101210316cff587a01a2736d5e12e53551b18d73780b83c3bfb4fcf209c869b11b6415effffffff0220a10700000000001976a91450333046115eaa0ac9e0216565f945070e44573988ac2e7cd01a000000001976a914c01a7ca16b47be50cbdbc60724f701d52d75156688ac00000000010000000203a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322010000006a47304402204efc3d70e4ca3049c2a425025edf22d5ca355f9ec899dbfbbeeb2268533a0f2b02204780d3739653035af4814ea52e1396d021953f948c29754edd0ee537364603dc012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff03a25f58630d7a1ea52550365fd2156683f56daf6ca73a4b4bbd097e66516322000000006a47304402202d96defdc5b4af71d6ba28c9a6042c2d5ee7bc6de565d4db84ef517445626e03022022da80320e9e489c8f41b74833dfb6a54a4eb5087cdb46eb663eef0b25caa526012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a914b7e6f7ff8658b2d1fb107e3d7be7af4742e6b1b3876f88fc00000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac0000000001000000043ffd60d3818431c495b89be84afac205d5d1ed663009291c560758bbd0a66df5010000006b483045022100f344607de9df42049688dcae8ff1db34c0c7cd25ec05516e30d2bc8f12ac9b2f022060b648f6a21745ea6d9782e17bcc4277b5808326488a1f40d41e125879723d3a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffffa5379401cce30f84731ef1ba65ce27edf2cc7ce57704507ebe8714aa16a96b92010000006a473044022020c37a63bf4d7f564c2192528709b6a38ab8271bd96898c6c2e335e5208661580220435c6f1ad4d9305d2c0a818b2feb5e45d443f2f162c0f61953a14d097fd07064012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff70e731e193235ff12c3184510895731a099112ffca4b00246c60003c40f843ce000000006a473044022053760f74c29a879e30a17b5f03a5bb057a5751a39f86fa6ecdedc36a1b7db04c022041d41c9b95f00d2d10a0373322a9025dba66c942196bc9d8adeb0e12d3024728012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff66b7a71b3e50379c8e85fc18fe3f1a408fc985f257036c34702ba205cef09f6f000000006a4730440220499bf9e2db3db6e930228d0661395f65431acae466634d098612fd80b08459ee022040e069fc9e3c60009f521cef54c38aadbd1251aee37940e6018aadb10f194d6a012103f7a897e4dbecab2264b21917f90664ea8256189ea725d28740cf7ba5d85b5763ffffffff0200e1f5050000000017a9148fc37ad460fdfbd2b44fe446f6e3071a4f64faa6878f447f0b000000001976a914913bcc2be49cb534c20474c4dee1e9c4c317e7eb88ac00000000,cc9b347b453c115a5e4701ae10d687f0c32146bb3d031788aa447a5bffea47fc,2b7f1068dfbe0ec0537da0470fa6e6f192cb002e1738828d2d2cbcad52f04550,0000001681840ca26555ea7a1269aa78316ce08a5c4cfff78ab3c30340092e03ea92b8608f5220446d9580668c534a3b7860dacc4cee5be8d374000000006ed6813ed4f01c488146230da0c281289b618ddc2ba59463723ce859ee418f97e1d5c0,0000000ff0885c42cfa19b1ce9d19f3b0f73cdc8f8a0481b4610e47236de1f5deab114782a0846f9baa3360c64aa88000000000000000000000000000000000000000000,c9a00855643285a9de8f252b9f7b857a0658ebc3164efebc9aa7117f53123145,f6eecf56dccea1e29d7b7cf78585334ea075b59d1da83fb3d71edbe117a75312 +987876,0000000000000c00901f2049055e2a437c819d79a3d54fd63e6af796cd7b8a79,000000202694f74969fdb542090e95a56bc8aa2d646e27033850e32f1c5f000000000000f7e53676b3f12d5beb524ed617f2d25f5a93b5f4f52c1ba2678260d72712f8dd0a6dfe5740257e1a4b1768960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1603e4120ff9c30a1c216900002f424d4920546573742fffffff0001205fa012000000001e76a914c486de584a735ec2f22da7cd9681614681f92173d83d0aa68688ac00000000,92246dec5bffd401e44c0d85a65ee9f6f3599b9e2736ef4bb197e6e596975c0b,a53cbcd0296d7eed2cdab6146b3d77129aa05af8f30bb573790af2b981a9d1ed,000000015758b20a00,,57595110cb5e812b5a43ee5df5b20f42dafd312402fa2e338e188bd9fcd76def,a0dc70634834cb2fd505df9988c5712e03c1999884046346fb85a1fb6e2f35ae diff --git a/gcs_light_client/gentestvectors.go b/gcs_light_client/gentestvectors.go new file mode 100644 index 0000000000..12b9358585 --- /dev/null +++ b/gcs_light_client/gentestvectors.go @@ -0,0 +1,334 @@ +// This program connects to your local btcd and generates test vectors for +// 5 blocks and collision space sizes of 1-32 bits. Change the RPC cert path +// and credentials to run on your system. The program assumes you're running +// a btcd with cfilter support, which mainline btcd doesn't have; in order to +// circumvent this assumption, comment out the if block that checks for +// filter size of DefaultP. + +package main + +import ( + "bytes" + "encoding/hex" + "fmt" + "io/ioutil" + "os" + "path" + + "github.com/roasbeef/btcd/chaincfg" + "github.com/roasbeef/btcd/chaincfg/chainhash" + "github.com/roasbeef/btcd/rpcclient" + "github.com/roasbeef/btcd/wire" + "github.com/roasbeef/btcutil/gcs" + "github.com/roasbeef/btcutil/gcs/builder" +) + +func main() { + err := os.Mkdir("gcstestvectors", os.ModeDir|0755) + if err != nil { // Don't overwrite existing output if any + fmt.Println("Couldn't create directory: ", err) + return + } + files := make([]*os.File, 33) + prevBasicHeaders := make([]chainhash.Hash, 33) + prevExtHeaders := make([]chainhash.Hash, 33) + for i := 1; i <= 32; i++ { // Min 1 bit of collision space, max 32 + var blockBuf bytes.Buffer + fName := fmt.Sprintf("gcstestvectors/testnet-%02d.csv", i) + file, err := os.Create(fName) + if err != nil { + fmt.Println("Error creating CSV file: ", err.Error()) + return + } + _, err = file.WriteString("Block Height,Block Hash,Block,Previous Basic Header,Previous Ext Header,Basic Filter,Ext Filter,Basic Header,Ext Header\n") + if err != nil { + fmt.Println("Error writing to CSV file: ", err.Error()) + return + } + files[i] = file + basicFilter, err := buildBasicFilter( + chaincfg.TestNet3Params.GenesisBlock, uint8(i)) + if err != nil && err != gcs.ErrNoData { + fmt.Println("Error generating basic filter: ", err.Error()) + return + } + prevBasicHeaders[i] = builder.MakeHeaderForFilter(basicFilter, + chaincfg.TestNet3Params.GenesisBlock.Header.PrevBlock) + if basicFilter == nil { + basicFilter = &gcs.Filter{} + } + extFilter, err := buildExtFilter( + chaincfg.TestNet3Params.GenesisBlock, uint8(i)) + if err != nil && err != gcs.ErrNoData { + fmt.Println("Error generating ext filter: ", err.Error()) + return + } + prevExtHeaders[i] = builder.MakeHeaderForFilter(extFilter, + chaincfg.TestNet3Params.GenesisBlock.Header.PrevBlock) + if extFilter == nil { + extFilter = &gcs.Filter{} + } + err = chaincfg.TestNet3Params.GenesisBlock.Serialize(&blockBuf) + if err != nil { + fmt.Println("Error serializing block to buffer: ", err.Error()) + return + } + var bfBytes []byte + var efBytes []byte + if basicFilter.N() > 0 { + bfBytes = basicFilter.NBytes() + } + if extFilter.N() > 0 { // Exclude special case for block 987876 + efBytes = extFilter.NBytes() + } + err = writeCSVRow( + file, + 0, // Height + *chaincfg.TestNet3Params.GenesisHash, + blockBuf.Bytes(), + chaincfg.TestNet3Params.GenesisBlock.Header.PrevBlock, + chaincfg.TestNet3Params.GenesisBlock.Header.PrevBlock, + bfBytes, + efBytes, + prevBasicHeaders[i], + prevExtHeaders[i], + ) + if err != nil { + fmt.Println("Error writing to CSV file: ", err.Error()) + return + } + } + cert, err := ioutil.ReadFile( + path.Join(os.Getenv("HOME"), "/.btcd/rpc.cert")) + if err != nil { + fmt.Println("Couldn't read RPC cert: ", err.Error()) + return + } + conf := rpcclient.ConnConfig{ + Host: "127.0.0.1:18334", + Endpoint: "ws", + User: "kek", + Pass: "kek", + Certificates: cert, + } + client, err := rpcclient.New(&conf, nil) + if err != nil { + fmt.Println("Couldn't create a new client: ", err.Error()) + return + } + for height := 1; height < 988000; height++ { + fmt.Printf("Height: %d\n", height) + blockHash, err := client.GetBlockHash(int64(height)) + if err != nil { + fmt.Println("Couldn't get block hash: ", err.Error()) + return + } + block, err := client.GetBlock(blockHash) + if err != nil { + fmt.Println("Couldn't get block hash: ", err.Error()) + return + } + var blockBuf bytes.Buffer + err = block.Serialize(&blockBuf) + if err != nil { + fmt.Println("Error serializing block to buffer: ", err.Error()) + return + } + blockBytes := blockBuf.Bytes() + for i := 1; i <= 32; i++ { + basicFilter, err := buildBasicFilter(block, uint8(i)) + if err != nil && err != gcs.ErrNoData { + fmt.Println("Error generating basic filter: ", err.Error()) + return + } + basicHeader := builder.MakeHeaderForFilter(basicFilter, + prevBasicHeaders[i]) + if basicFilter == nil { + basicFilter = &gcs.Filter{} + } + extFilter, err := buildExtFilter(block, uint8(i)) + if err != nil && err != gcs.ErrNoData { + fmt.Println("Error generating ext filter: ", err.Error()) + return + } + extHeader := builder.MakeHeaderForFilter(extFilter, + prevExtHeaders[i]) + if extFilter == nil { + extFilter = &gcs.Filter{} + } + if i == builder.DefaultP { // This is the default filter size so we can check against the server's info + filter, err := client.GetCFilter(blockHash, wire.GCSFilterRegular) + if err != nil { + fmt.Println("Error getting basic filter: ", err.Error()) + return + } + if !bytes.Equal(filter.Data, basicFilter.NBytes()) && + (len(filter.Data) != 0 || len(basicFilter.NBytes()) != 4) { + // Don't error on empty filters + fmt.Println("Basic filter doesn't match!") + return + } + filter, err = client.GetCFilter(blockHash, wire.GCSFilterExtended) + if err != nil { + fmt.Println("Error getting extended filter: ", err.Error()) + return + } + if !bytes.Equal(filter.Data, extFilter.NBytes()) && + (len(filter.Data) != 0 || len(extFilter.NBytes()) != 4) { + fmt.Println("Extended filter doesn't match!") + return + } + header, err := client.GetCFilterHeader(blockHash, wire.GCSFilterRegular) + if err != nil { + fmt.Println("Error getting basic header: ", err.Error()) + return + } + if !bytes.Equal(header.HeaderHashes[0][:], basicHeader[:]) { + fmt.Println("Basic header doesn't match!") + return + } + header, err = client.GetCFilterHeader(blockHash, wire.GCSFilterExtended) + if err != nil { + fmt.Println("Error getting extended header: ", err.Error()) + return + } + if !bytes.Equal(header.HeaderHashes[0][:], extHeader[:]) { + fmt.Println("Extended header doesn't match!") + return + } + fmt.Println("Verified against server") + } + switch height { + case 1, 2, 3, 926485, 987876: // Blocks for test cases + var bfBytes []byte + var efBytes []byte + if basicFilter.N() > 0 { + bfBytes = basicFilter.NBytes() + } + if extFilter.N() > 0 { // Exclude special case for block 987876 + efBytes = extFilter.NBytes() + } + writeCSVRow( + files[i], + height, + *blockHash, + blockBytes, + prevBasicHeaders[i], + prevExtHeaders[i], + bfBytes, + efBytes, + basicHeader, + extHeader) + } + prevBasicHeaders[i] = basicHeader + prevExtHeaders[i] = extHeader + } + } +} + +// writeCSVRow writes a test vector to a CSV file. +func writeCSVRow(file *os.File, height int, blockHash chainhash.Hash, + blockBytes []byte, prevBasicHeader, prevExtHeader chainhash.Hash, + basicFilter, extFilter []byte, basicHeader, extHeader chainhash.Hash) error { + row := fmt.Sprintf("%d,%s,%s,%s,%s,%s,%s,%s,%s\n", + height, + blockHash.String(), + hex.EncodeToString(blockBytes), + prevBasicHeader.String(), + prevExtHeader.String(), + hex.EncodeToString(basicFilter), + hex.EncodeToString(extFilter), + basicHeader.String(), + extHeader.String(), + ) + _, err := file.WriteString(row) + if err != nil { + return err + } + return nil +} + +// buildBasicFilter builds a basic GCS filter from a block. A basic GCS filter +// will contain all the previous outpoints spent within a block, as well as the +// data pushes within all the outputs created within a block. p is specified as +// an argument in order to create test vectors with various values for p. +func buildBasicFilter(block *wire.MsgBlock, p uint8) (*gcs.Filter, error) { + blockHash := block.BlockHash() + b := builder.WithKeyHashP(&blockHash, p) + + // If the filter had an issue with the specified key, then we force it + // to bubble up here by calling the Key() function. + _, err := b.Key() + if err != nil { + return nil, err + } + + // In order to build a basic filter, we'll range over the entire block, + // adding the outpoint data as well as the data pushes within the + // pkScript. + for i, tx := range block.Transactions { + // First we'll compute the bash of the transaction and add that + // directly to the filter. + txHash := tx.TxHash() + b.AddHash(&txHash) + + // Skip the inputs for the coinbase transaction + if i != 0 { + // Each each txin, we'll add a serialized version of + // the txid:index to the filters data slices. + for _, txIn := range tx.TxIn { + b.AddOutPoint(txIn.PreviousOutPoint) + } + } + + // For each output in a transaction, we'll add each of the + // individual data pushes within the script. + for _, txOut := range tx.TxOut { + b.AddScript(txOut.PkScript) + } + } + + return b.Build() +} + +// buildExtFilter builds an extended GCS filter from a block. An extended +// filter supplements a regular basic filter by include all the _witness_ data +// found within a block. This includes all the data pushes within any signature +// scripts as well as each element of an input's witness stack. Additionally, +// the _hashes_ of each transaction are also inserted into the filter. p is +// specified as an argument in order to create test vectors with various values +// for p. +func buildExtFilter(block *wire.MsgBlock, p uint8) (*gcs.Filter, error) { + blockHash := block.BlockHash() + b := builder.WithKeyHashP(&blockHash, p) + + // If the filter had an issue with the specified key, then we force it + // to bubble up here by calling the Key() function. + _, err := b.Key() + if err != nil { + return nil, err + } + + // In order to build an extended filter, we add the hash of each + // transaction as well as each piece of witness data included in both + // the sigScript and the witness stack of an input. + for i, tx := range block.Transactions { + // Skip the inputs for the coinbase transaction + if i != 0 { + // Next, for each input, we'll add the sigScript (if + // it's present), and also the witness stack (if it's + // present) + for _, txIn := range tx.TxIn { + if txIn.SignatureScript != nil { + b.AddScript(txIn.SignatureScript) + } + + if len(txIn.Witness) != 0 { + b.AddWitness(txIn.Witness) + } + } + } + } + + return b.Build() +}