Documentation
¶
Index ¶
- Constants
- Variables
- func InnerNodesCount(height int) int
- func LeavesCount(height int) int
- func NodesCount(height int) int
- type AggregatedHashTree
- type AggregatedHashTreeRangeReader
- type Bitset
- func (bset *Bitset) AllSet() bool
- func (bset *Bitset) Clone() *Bitset
- func (bset *Bitset) IsSet(i int) bool
- func (bset *Bitset) Marshal() ([]byte, error)
- func (bset *Bitset) Reset() *Bitset
- func (bset *Bitset) Set(i int) *Bitset
- func (bset *Bitset) SetAll() *Bitset
- func (bset *Bitset) SetCount() int
- func (bset *Bitset) Size() int
- func (bset *Bitset) Unmarshal(b []byte) error
- func (bset *Bitset) Unset(i int) *Bitset
- type CompactHashTree
- func (ht *CompactHashTree) AggregateLeafWith(i uint64, val []byte) error
- func (ht *CompactHashTree) Capacity() uint64
- func (ht *CompactHashTree) Clone() AggregatedHashTree
- func (ht *CompactHashTree) Diff(ht2 AggregatedHashTree) (*Bitset, error)
- func (ht *CompactHashTree) Height() int
- func (ht *CompactHashTree) Level(level int, discriminant *Bitset, digests []Digest) (n int, err error)
- func (ht *CompactHashTree) NewRangeReader(discriminant *Bitset) (AggregatedHashTreeRangeReader, error)
- func (ht *CompactHashTree) Reset()
- func (ht *CompactHashTree) Root() Digest
- func (ht *CompactHashTree) Serialize(w io.Writer) (n int64, err error)
- func (ht *CompactHashTree) Sync()
- type CompactHashTreeDiffReader
- type Digest
- type HashTree
- func (ht *HashTree) AggregateLeafWith(i uint64, val []byte) error
- func (ht *HashTree) Clone() AggregatedHashTree
- func (ht *HashTree) Diff(ht2 AggregatedHashTree) (*Bitset, error)
- func (ht *HashTree) Height() int
- func (ht *HashTree) Level(level int, discriminant *Bitset, digests []Digest) (n int, err error)
- func (ht *HashTree) NewRangeReader(discriminant *Bitset) (AggregatedHashTreeRangeReader, error)
- func (ht *HashTree) Reset()
- func (ht *HashTree) Root() Digest
- func (ht *HashTree) Serialize(w io.Writer) (n int64, err error)
- func (ht *HashTree) Sync()
- type HashTreeDiffReader
Constants ¶
const DigestLength int = 16
Variables ¶
var ( ErrIllegalArguments = errors.New("illegal arguments") ErrIllegalState = errors.New("illegal state") )
var ErrNoMoreRanges = errors.New("no more ranges")
Functions ¶
func InnerNodesCount ¶ added in v1.28.5
func LeavesCount ¶
func NodesCount ¶
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)
NewRangeReader(discriminant *Bitset) (AggregatedHashTreeRangeReader, error)
Serialize(w io.Writer) (n int64, err error)
}
type Bitset ¶
type Bitset struct {
// contains filtered or unexported fields
}
func LevelDiff ¶
func LevelDiff(l, height int, discriminant *Bitset, digests1, digests2 []Digest) (nextDiscriminant *Bitset, levelDiffCount int, err error)
LevelDiff compares level-l digests1 and digests2, clearing matched bits in discriminant. For l < height it returns a level-(l+1) discriminant with the children of mismatched nodes set; at l == height it returns nil.
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) (*Bitset, error)
func (*CompactHashTree) Height ¶
func (ht *CompactHashTree) Height() int
func (*CompactHashTree) NewRangeReader ¶
func (ht *CompactHashTree) NewRangeReader(discriminant *Bitset) (AggregatedHashTreeRangeReader, error)
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
}
type Digest ¶
type Digest [2]uint64
func (*Digest) MarshalBinary ¶
func (*Digest) MarshalJSON ¶
func (*Digest) UnmarshalBinary ¶
func (*Digest) UnmarshalJSON ¶
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 NewHashTree ¶
func (*HashTree) AggregateLeafWith ¶
func (*HashTree) Clone ¶
func (ht *HashTree) Clone() AggregatedHashTree
func (*HashTree) Diff ¶
func (ht *HashTree) Diff(ht2 AggregatedHashTree) (*Bitset, error)
Diff returns a leaf-level discriminant; bit i is set when leaf i differs.
func (*HashTree) Level ¶
Level returns digests for nodes selected by discriminant, which is level-local: Size() must equal nodesAtLevel(level), bit i selects node i.
func (*HashTree) NewRangeReader ¶
func (ht *HashTree) NewRangeReader(discriminant *Bitset) (AggregatedHashTreeRangeReader, error)
NewRangeReader expects a leaf-level discriminant (Size() == LeavesCount(ht.Height())); bit i indicates leaf i differs.
type HashTreeDiffReader ¶
type HashTreeDiffReader struct {
// contains filtered or unexported fields
}