hashtree

package
v1.26.4 Latest Latest
Warning

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

Go to latest
Published: Sep 6, 2024 License: BSD-3-Clause Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const DigestLength int = 16
View Source
const SegmentLength = 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 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)

type MultiSegmentHashTree

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

func DeserializeMultiSegmentHashTree

func DeserializeMultiSegmentHashTree(r io.Reader) (*MultiSegmentHashTree, error)

func NewMultiSegmentHashTree

func NewMultiSegmentHashTree(segments []Segment, maxHeight int) (*MultiSegmentHashTree, error)

func (*MultiSegmentHashTree) AggregateLeafWith

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

func (*MultiSegmentHashTree) Clone

func (*MultiSegmentHashTree) Diff

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

func (*MultiSegmentHashTree) DiffUsing

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

func (*MultiSegmentHashTree) Height

func (ht *MultiSegmentHashTree) Height() int

func (*MultiSegmentHashTree) Level

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

func (*MultiSegmentHashTree) NewRangeReader

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

func (*MultiSegmentHashTree) Reset

func (ht *MultiSegmentHashTree) Reset()

func (*MultiSegmentHashTree) Root

func (ht *MultiSegmentHashTree) Root() Digest

func (*MultiSegmentHashTree) Segments

func (ht *MultiSegmentHashTree) Segments() []Segment

func (*MultiSegmentHashTree) Serialize

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

func (*MultiSegmentHashTree) Sync

func (ht *MultiSegmentHashTree) Sync()

type MultiSegmentHashTreeDiffReader

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

func (*MultiSegmentHashTreeDiffReader) Next

type Segment

type Segment [2]uint64

func NewSegment

func NewSegment(start, size uint64) Segment

func (*Segment) MarshalBinary

func (s *Segment) MarshalBinary() ([]byte, error)

func (Segment) Size

func (s Segment) Size() uint64

func (Segment) Start

func (s Segment) Start() uint64

func (*Segment) UnmarshalBinary

func (s *Segment) UnmarshalBinary(bs []byte) error

type SegmentedHashTree

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

func DeserializeSegmentedHashTree

func DeserializeSegmentedHashTree(r io.Reader) (*SegmentedHashTree, error)

func NewSegmentedHashTree

func NewSegmentedHashTree(segmentSize uint64, segments []uint64, maxHeight int) (*SegmentedHashTree, error)

func (*SegmentedHashTree) AggregateLeafWith

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

func (*SegmentedHashTree) Clone

func (*SegmentedHashTree) Diff

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

func (*SegmentedHashTree) DiffUsing

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

func (*SegmentedHashTree) Height

func (ht *SegmentedHashTree) Height() int

func (*SegmentedHashTree) Level

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

func (*SegmentedHashTree) NewRangeReader

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

func (*SegmentedHashTree) Reset

func (ht *SegmentedHashTree) Reset()

func (*SegmentedHashTree) Root

func (ht *SegmentedHashTree) Root() Digest

func (*SegmentedHashTree) SegmentSize

func (ht *SegmentedHashTree) SegmentSize() uint64

func (*SegmentedHashTree) Segments

func (ht *SegmentedHashTree) Segments() []uint64

func (*SegmentedHashTree) Serialize

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

func (*SegmentedHashTree) Sync

func (ht *SegmentedHashTree) Sync()

type SegmentedHashTreeDiffReader

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

func (*SegmentedHashTreeDiffReader) Next

Jump to

Keyboard shortcuts

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