hashtree

package
v1.28.7 Latest Latest
Warning

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

Go to latest
Published: Feb 22, 2025 License: BSD-3-Clause Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const DigestLength int = 16

Variables

View Source
var (
	ErrIllegalArguments = errors.New("illegal arguments")
	ErrIllegalState     = errors.New("illegal state")
)
View Source
var ErrNoMoreRanges = errors.New("no more ranges")

Functions

func InnerNodesCount added in v1.28.5

func InnerNodesCount(height int) int

func LeavesCount

func LeavesCount(height int) int

func LevelDiff

func LevelDiff(l int, discriminant *Bitset, digests1, digests2 []Digest) (levelDiffCount int)

func NodesCount

func NodesCount(height int) int

Types

type AggregatedHashTree

type AggregatedHashTree interface {
	Height() int
	AggregateLeafWith(i uint64, val []byte) error
	Sync()
	Root() Digest
	Level(level int, discriminant *Bitset, digests []Digest) (n int, err error)
	Reset()
	Clone() AggregatedHashTree

	Diff(ht AggregatedHashTree) (discriminant *Bitset, err error)
	DiffUsing(ht AggregatedHashTree, discriminant *Bitset, digests1, digests2 []Digest) error

	NewRangeReader(discriminant *Bitset) AggregatedHashTreeRangeReader

	Serialize(w io.Writer) (n int64, err error)
}

type AggregatedHashTreeRangeReader

type AggregatedHashTreeRangeReader interface {
	Next() (uint64, uint64, error)
}

type Bitset

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

func NewBitset

func NewBitset(size int) *Bitset

func (*Bitset) AllSet

func (bset *Bitset) AllSet() bool

func (*Bitset) Clone

func (bset *Bitset) Clone() *Bitset

func (*Bitset) IsSet

func (bset *Bitset) IsSet(i int) bool

func (*Bitset) Marshal

func (bset *Bitset) Marshal() ([]byte, error)

func (*Bitset) Reset

func (bset *Bitset) Reset() *Bitset

func (*Bitset) Set

func (bset *Bitset) Set(i int) *Bitset

func (*Bitset) SetAll

func (bset *Bitset) SetAll() *Bitset

func (*Bitset) SetCount

func (bset *Bitset) SetCount() int

func (*Bitset) Size

func (bset *Bitset) Size() int

func (*Bitset) Unmarshal

func (bset *Bitset) Unmarshal(b []byte) error

func (*Bitset) Unset

func (bset *Bitset) Unset(i int) *Bitset

type CompactHashTree

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

func DeserializeCompactHashTree

func DeserializeCompactHashTree(r io.Reader) (*CompactHashTree, error)

func NewCompactHashTree

func NewCompactHashTree(capacity uint64, maxHeight int) (*CompactHashTree, error)

func (*CompactHashTree) AggregateLeafWith

func (ht *CompactHashTree) AggregateLeafWith(i uint64, val []byte) error

AggregateLeafWith aggregates a new value into a shared leaf Each compacted leaf is shared by a number of consecutive leaves

func (*CompactHashTree) Capacity

func (ht *CompactHashTree) Capacity() uint64

func (*CompactHashTree) Clone

func (ht *CompactHashTree) Clone() AggregatedHashTree

func (*CompactHashTree) Diff

func (ht *CompactHashTree) Diff(ht2 AggregatedHashTree) (discriminant *Bitset, err error)

func (*CompactHashTree) DiffUsing

func (ht *CompactHashTree) DiffUsing(ht2 AggregatedHashTree, discriminant *Bitset, digests1, digests2 []Digest) error

func (*CompactHashTree) Height

func (ht *CompactHashTree) Height() int

func (*CompactHashTree) Level

func (ht *CompactHashTree) Level(level int, discriminant *Bitset, digests []Digest) (n int, err error)

func (*CompactHashTree) NewRangeReader

func (ht *CompactHashTree) NewRangeReader(discriminant *Bitset) AggregatedHashTreeRangeReader

func (*CompactHashTree) Reset

func (ht *CompactHashTree) Reset()

func (*CompactHashTree) Root

func (ht *CompactHashTree) Root() Digest

func (*CompactHashTree) Serialize

func (ht *CompactHashTree) Serialize(w io.Writer) (n int64, err error)

func (*CompactHashTree) Sync

func (ht *CompactHashTree) Sync()

type CompactHashTreeDiffReader

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

func (*CompactHashTreeDiffReader) Next

type Digest

type Digest [2]uint64

func (*Digest) MarshalBinary

func (d *Digest) MarshalBinary() ([]byte, error)

func (*Digest) MarshalJSON

func (d *Digest) MarshalJSON() ([]byte, error)

func (*Digest) UnmarshalBinary

func (d *Digest) UnmarshalBinary(bs []byte) error

func (*Digest) UnmarshalJSON

func (d *Digest) UnmarshalJSON(b []byte) error

type HashTree

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

HashTree is a fixed-size hash tree with leaf aggregation and partial root recalculation.

func DeserializeHashTree

func DeserializeHashTree(r io.Reader) (*HashTree, error)

func NewHashTree

func NewHashTree(height int) (*HashTree, error)

func (*HashTree) AggregateLeafWith

func (ht *HashTree) AggregateLeafWith(i uint64, val []byte) error

func (*HashTree) Clone

func (ht *HashTree) Clone() AggregatedHashTree

func (*HashTree) Diff

func (ht *HashTree) Diff(ht2 AggregatedHashTree) (discriminant *Bitset, err error)

func (*HashTree) DiffUsing

func (ht *HashTree) DiffUsing(ht2 AggregatedHashTree, discriminant *Bitset, digests1, digests2 []Digest) error

func (*HashTree) Height

func (ht *HashTree) Height() int

func (*HashTree) Level

func (ht *HashTree) Level(level int, discriminant *Bitset, digests []Digest) (n int, err error)

func (*HashTree) NewRangeReader

func (ht *HashTree) NewRangeReader(discriminant *Bitset) AggregatedHashTreeRangeReader

func (*HashTree) Reset

func (ht *HashTree) Reset()

func (*HashTree) Root

func (ht *HashTree) Root() Digest

func (*HashTree) Serialize

func (ht *HashTree) Serialize(w io.Writer) (n int64, err error)

func (*HashTree) Sync

func (ht *HashTree) Sync()

type HashTreeDiffReader

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

func (*HashTreeDiffReader) Next

func (r *HashTreeDiffReader) Next() (uint64, uint64, error)

Jump to

Keyboard shortcuts

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