blockcf

package
v1.4.2-0...-af18252 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 9, 2019 License: ISC Imports: 6 Imported by: 5

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

View Source
const P = 20

P is the collision probability used for block committed filters (2^-20)

Variables

This section is empty.

Functions

func Extended

func Extended(block *wire.MsgBlock) (*gcs.Filter, 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.Filter, 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

func (e *Entries) AddRegularPkScript(script []byte)

AddRegularPkScript adds the regular tx output script to an entries slice.

func (*Entries) AddSigScript

func (e *Entries) AddSigScript(script []byte)

AddSigScript adds any data pushes of a signature script to an entries slice.

func (*Entries) AddStakePkScript

func (e *Entries) AddStakePkScript(script []byte)

AddStakePkScript adds the output script without the stake opcode tag to an entries slice.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL