Documentation ¶
Overview ¶
Package blockcf provides functions for building committed filters for blocks using Golomb-coded sets in a way that is useful for light clients such as SPV wallets.
Committed filters are a reversal of how bloom filters are typically used by a light client: a consensus-validating full node commits to filters for every block with a predetermined collision probability and light clients match against the filters locally rather than uploading personal data to other nodes. If a filter matches, the light client should fetch the entire block and further inspect it for relevant transactions.
Index ¶
Constants ¶
const (
// P is the collision probability used for block committed filters (2^-20)
P = 20
)
Variables ¶
This section is empty.
Functions ¶
func Extended ¶
func Extended(block *wire.MsgBlock) (*gcs.FilterV1, error)
Extended builds an extended GCS filter from a block. An extended filter supplements a regular basic filter by including all transaction hashes of regular and stake transactions, and adding the witness data (a.k.a. the signature script) found within every non-coinbase regular transaction.
func Key ¶
func Key(hash *chainhash.Hash) [gcs.KeySize]byte
Key creates a block committed filter key by truncating a block hash to the key size.
func Regular ¶
func Regular(block *wire.MsgBlock) (*gcs.FilterV1, error)
Regular builds a regular GCS filter from a block. A regular GCS filter will contain all the previous regular outpoints spent within a block, as well as the data pushes within all the outputs created within a block which can be spent by regular transactions.
Types ¶
type Entries ¶
type Entries [][]byte
Entries describes all of the filter entries used to create a GCS filter and provides methods for appending data structures found in blocks.
func (*Entries) AddHash ¶
func (e *Entries) AddHash(hash *chainhash.Hash)
AddHash adds a hash to an entries slice.
func (*Entries) AddOutPoint ¶
func (e *Entries) AddOutPoint(outpoint *wire.OutPoint)
AddOutPoint adds a serialized outpoint to an entries slice.
func (*Entries) AddRegularPkScript ¶
AddRegularPkScript adds the regular tx output script to an entries slice.
func (*Entries) AddSigScript ¶
AddSigScript adds any data pushes of a signature script to an entries slice.
func (*Entries) AddStakePkScript ¶
AddStakePkScript adds the output script without the stake opcode tag to an entries slice.