BIP158: include the direct pkScript rather than its data pushes

In this commit, we modify regular filter construction slightly.  Rather
than including each pushed data in the script, we instead just include
the script directly, which will eventually be hashed. The rationale for
doing this is two-fold:

  * Most scripts today and in the foreseeable future will just be a
    commitment.

  * Including only the script itself and not the hash of the script
    reduces the worst case filter size. Otherwise, an attacker could
    include a bunch of 2 byte push datas and blow up the filter size for
    all nodes.
This commit is contained in:
Olaoluwa Osuntokun 2018-03-31 17:48:18 -07:00
parent 032a5f6136
commit 4077defdbc
No known key found for this signature in database
GPG Key ID: 964EA263DD637C21

View File

@ -268,7 +268,7 @@ The basic filter is designed to contain everything that a light client needs to
sync a regular Bitcoin wallet. A basic filter MUST contain exactly the following
items for each transaction in a block:
* The outpoint of each input, except for the coinbase transaction
* Each data push in the scriptPubKey of each output, ''only if'' the scriptPubKey is parseable
* The scriptPubKey of each output
* The <code>txid</code> of the transaction itself
The extended filter contains extra data that is meant to enable applications