builder

package
v0.0.14 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2021 License: Unlicense Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DefaultP is the default collision probability (2^-19)
	DefaultP = 19
	// DefaultM is the default value used for the hash range.
	DefaultM uint64 = 784931
)

Variables

View Source
var F, E, W, I, D, T log.LevelPrinter = log.GetLogPrinterSet(subsystem)

Functions

func BuildBasicFilter

func BuildBasicFilter(block *wire.Block, prevOutScripts [][]byte) (*gcs.Filter, error)

BuildBasicFilter builds a basic GCS filter from a block. A basic GCS filter will contain all the previous output scripts spent by inputs within a block, as well as the data pushes within all the outputs created within a block.

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 RandomKey

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

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

Types

type GCS

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

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

func WithKey

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

WithKey creates a GCS with specified key. Probability is set to 19 (2^-19 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) *GCS

WithKeyHash creates a GCS 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 WithKeyHashPM

func WithKeyHashPM(keyHash *chainhash.Hash, p uint8, m uint64) *GCS

WithKeyHashPM creates a GCS 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 WithKeyHashPNM

func WithKeyHashPNM(
	keyHash *chainhash.Hash, p uint8, n uint32,
	m uint64,
) *GCS

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

func WithKeyPM

func WithKeyPM(key [gcs.KeySize]byte, p uint8, m uint64) *GCS

WithKeyPM creates a GCS 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 WithKeyPNM

func WithKeyPNM(key [gcs.KeySize]byte, p uint8, n uint32, m uint64) *GCS

WithKeyPNM creates a GCS with specified key and the passed probability, modulus and estimated filter size.

func WithRandomKey

func WithRandomKey() *GCS

WithRandomKey creates a GCS 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 WithRandomKeyPM

func WithRandomKeyPM(p uint8, m uint64) *GCS

WithRandomKeyPM creates a GCS 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 WithRandomKeyPNM

func WithRandomKeyPNM(p uint8, n uint32, m uint64) *GCS

WithRandomKeyPNM creates a GCS with a cryptographically random key and the passed probability and estimated filter size.

func (*GCS) AddEntries

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

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 (*GCS) AddEntry

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

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

func (*GCS) AddHash

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

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

func (*GCS) AddWitness

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

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

func (*GCS) Build

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

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

func (*GCS) Key

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

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

func (*GCS) Preallocate

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

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 (*GCS) SetKey

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

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

func (*GCS) SetKeyFromHash

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

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

func (*GCS) SetM

func (b *GCS) SetM(m uint64) *GCS

SetM sets the filter's modulous value after calling Builder().

func (*GCS) SetP

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

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