builder

package
v0.0.0-...-5cf2c25 Latest Latest
Warning

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

Go to latest
Published: Jul 9, 2018 License: ISC Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultP = 20

DefaultP is the default collision probability (2^-20)

Variables

This section is empty.

Functions

func BuildBasicFilter

func BuildBasicFilter(block *wire.MsgBlock) (*gcs.Filter, error)

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.

func BuildExtFilter

func BuildExtFilter(block *wire.MsgBlock) (*gcs.Filter, error)

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.

func DeriveKey

func DeriveKey(keyHash *chainhash.Hash) [gcs.KeySize]byte

DeriveKey is a utility function that derives a key from a chainhash.Hash by truncating the bytes of the hash to the appopriate key size.

func GetFilterHash

func GetFilterHash(filter *gcs.Filter) (chainhash.Hash, error)

GetFilterHash returns the double-SHA256 of the filter.

func MakeHeaderForFilter

func MakeHeaderForFilter(filter *gcs.Filter, prevHeader chainhash.Hash) (chainhash.Hash, error)

MakeHeaderForFilter makes a filter chain header for a filter, given the filter and the previous filter chain header.

func OutPointToFilterEntry

func OutPointToFilterEntry(outpoint wire.OutPoint) []byte

OutPointToFilterEntry is a utility function that derives a filter entry from a wire.OutPoint in a standardized way for use with both building and querying filters.

func RandomKey

func RandomKey() ([gcs.KeySize]byte, error)

RandomKey is a utility function that returns a cryptographically random [gcs.KeySize]byte usable as a key for a GCS filter.

Types

type GCSBuilder

type GCSBuilder struct {
	// contains filtered or unexported fields
}

GCSBuilder is a utility class that makes building GCS filters convenient.

func WithKey

func WithKey(key [gcs.KeySize]byte) *GCSBuilder

WithKey creates a GCSBuilder with specified key. Probability is set to 20 (2^-20 collision probability). Estimated filter size is set to zero, which means more reallocations are done when building the filter.

func WithKeyHash

func WithKeyHash(keyHash *chainhash.Hash) *GCSBuilder

WithKeyHash creates a GCSBuilder with key derived from the specified chainhash.Hash. Probability is set to 20 (2^-20 collision probability). Estimated filter size is set to zero, which means more reallocations are done when building the filter.

func WithKeyHashP

func WithKeyHashP(keyHash *chainhash.Hash, p uint8) *GCSBuilder

WithKeyHashP creates a GCSBuilder with key derived from the specified chainhash.Hash and the passed probability. Estimated filter size is set to zero, which means more reallocations are done when building the filter.

func WithKeyHashPN

func WithKeyHashPN(keyHash *chainhash.Hash, p uint8, n uint32) *GCSBuilder

WithKeyHashPN creates a GCSBuilder with key derived from the specified chainhash.Hash and the passed probability and estimated filter size.

func WithKeyP

func WithKeyP(key [gcs.KeySize]byte, p uint8) *GCSBuilder

WithKeyP creates a GCSBuilder with specified key and the passed probability. Estimated filter size is set to zero, which means more reallocations are done when building the filter.

func WithKeyPN

func WithKeyPN(key [gcs.KeySize]byte, p uint8, n uint32) *GCSBuilder

WithKeyPN creates a GCSBuilder with specified key and the passed probability and estimated filter size.

func WithRandomKey

func WithRandomKey() *GCSBuilder

WithRandomKey creates a GCSBuilder with a cryptographically random key. Probability is set to 20 (2^-20 collision probability). Estimated filter size is set to zero, which means more reallocations are done when building the filter.

func WithRandomKeyP

func WithRandomKeyP(p uint8) *GCSBuilder

WithRandomKeyP creates a GCSBuilder with a cryptographically random key and the passed probability. Estimated filter size is set to zero, which means more reallocations are done when building the filter.

func WithRandomKeyPN

func WithRandomKeyPN(p uint8, n uint32) *GCSBuilder

WithRandomKeyPN creates a GCSBuilder with a cryptographically random key and the passed probability and estimated filter size.

func (*GCSBuilder) AddEntries

func (b *GCSBuilder) AddEntries(data [][]byte) *GCSBuilder

AddEntries adds all the []byte entries in a [][]byte to the list of entries to be included in the GCS filter when it's built.

func (*GCSBuilder) AddEntry

func (b *GCSBuilder) AddEntry(data []byte) *GCSBuilder

AddEntry adds a []byte to the list of entries to be included in the GCS filter when it's built.

func (*GCSBuilder) AddHash

func (b *GCSBuilder) AddHash(hash *chainhash.Hash) *GCSBuilder

AddHash adds a chainhash.Hash to the list of entries to be included in the GCS filter when it's built.

func (*GCSBuilder) AddOutPoint

func (b *GCSBuilder) AddOutPoint(outpoint wire.OutPoint) *GCSBuilder

AddOutPoint adds a wire.OutPoint to the list of entries to be included in the GCS filter when it's built.

func (*GCSBuilder) AddScript

func (b *GCSBuilder) AddScript(script []byte) *GCSBuilder

AddScript adds all the data pushed in the script serialized as the passed []byte to the list of entries to be included in the GCS filter when it's built.

func (*GCSBuilder) AddWitness

func (b *GCSBuilder) AddWitness(witness wire.TxWitness) *GCSBuilder

AddWitness adds each item of the passed filter stack to the filter, and then adds each item as a script.

func (*GCSBuilder) Build

func (b *GCSBuilder) Build() (*gcs.Filter, error)

Build returns a function which builds a GCS filter with the given parameters and data.

func (*GCSBuilder) Key

func (b *GCSBuilder) Key() ([gcs.KeySize]byte, error)

Key retrieves the key with which the builder will build a filter. This is useful if the builder is created with a random initial key.

func (*GCSBuilder) Preallocate

func (b *GCSBuilder) Preallocate(n uint32) *GCSBuilder

Preallocate sets the estimated filter size after calling Builder() to reduce the probability of memory reallocations. If the builder has already had data added to it, Preallocate has no effect.

func (*GCSBuilder) SetKey

func (b *GCSBuilder) SetKey(key [gcs.KeySize]byte) *GCSBuilder

SetKey sets the key with which the builder will build a filter to the passed [gcs.KeySize]byte.

func (*GCSBuilder) SetKeyFromHash

func (b *GCSBuilder) SetKeyFromHash(keyHash *chainhash.Hash) *GCSBuilder

SetKeyFromHash sets the key with which the builder will build a filter to a key derived from the passed chainhash.Hash using DeriveKey().

func (*GCSBuilder) SetP

func (b *GCSBuilder) SetP(p uint8) *GCSBuilder

SetP sets the filter's probability after calling Builder().

Jump to

Keyboard shortcuts

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