Documentation
¶
Index ¶
- Constants
- Variables
- func AliaserAliasClashTest(require *require.Assertions, _ AliaserReader, w AliaserWriter)
- func AliaserAliasesEmptyTest(require *require.Assertions, r AliaserReader, _ AliaserWriter)
- func AliaserAliasesTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
- func AliaserLookupErrorTest(require *require.Assertions, r AliaserReader, _ AliaserWriter)
- func AliaserLookupTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
- func AliaserPrimaryAliasTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
- func AliaserRemoveAliasTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
- func EqualSubset(start, stop int, id1, id2 ID) bool
- func FirstDifferenceSubset(start, stop int, id1, id2 ID) (int, bool)
- func GetRelevantAliases(aliaser Aliaser, ids []ID) (map[ID][]string, error)
- func ShortIDsToStrings(ids []ShortID) []string
- type Aliaser
- type AliaserReader
- type AliaserWriter
- type Bag
- func (b *Bag) Add(ids ...ID)
- func (b *Bag) AddCount(id ID, count int)
- func (b *Bag) Count(id ID) int
- func (b *Bag) Equals(oIDs Bag) bool
- func (b *Bag) Filter(start, end int, id ID) Bag
- func (b *Bag) Len() int
- func (b *Bag) List() []ID
- func (b *Bag) Mode() (ID, int)
- func (b *Bag) PrefixedString(prefix string) string
- func (b *Bag) SetThreshold(threshold int)
- func (b *Bag) Split(index uint) [2]Bag
- func (b *Bag) String() string
- func (b *Bag) Threshold() set.Set[ID]
- type ID
- func (id ID) Bit(i uint) int
- func (id ID) Hex() string
- func (id ID) Less(other ID) bool
- func (id ID) MarshalJSON() ([]byte, error)
- func (id ID) MarshalText() ([]byte, error)
- func (id ID) Prefix(prefixes ...uint64) ID
- func (id ID) String() string
- func (id *ID) UnmarshalJSON(b []byte) error
- func (id *ID) UnmarshalText(text []byte) error
- type NodeID
- type NodeIDBag
- func (b *NodeIDBag) Add(ids ...NodeID)
- func (b *NodeIDBag) AddCount(id NodeID, count int)
- func (b *NodeIDBag) Count(id NodeID) int
- func (b *NodeIDBag) Equals(oIDs NodeIDBag) bool
- func (b *NodeIDBag) Len() int
- func (b *NodeIDBag) List() []NodeID
- func (b *NodeIDBag) PrefixedString(prefix string) string
- func (b *NodeIDBag) Remove(id NodeID)
- func (b *NodeIDBag) String() string
- type RequestID
- type ShortID
- func (id ShortID) Bytes() []byte
- func (id ShortID) Hex() string
- func (id ShortID) Less(other ShortID) bool
- func (id ShortID) MarshalJSON() ([]byte, error)
- func (id ShortID) MarshalText() ([]byte, error)
- func (id ShortID) PrefixedString(prefix string) string
- func (id ShortID) String() string
- func (id *ShortID) UnmarshalJSON(b []byte) error
- func (id *ShortID) UnmarshalText(text []byte) error
- type UniqueBag
- func (b *UniqueBag) Add(setID uint, idSet ...ID)
- func (b *UniqueBag) Bag(alpha int) Bag
- func (b *UniqueBag) Clear()
- func (b *UniqueBag) Difference(diff *UniqueBag)
- func (b *UniqueBag) DifferenceSet(id ID, set set.Bits64)
- func (b *UniqueBag) GetSet(id ID) set.Bits64
- func (b *UniqueBag) List() []ID
- func (b *UniqueBag) PrefixedString(prefix string) string
- func (b *UniqueBag) RemoveSet(id ID)
- func (b *UniqueBag) String() string
- func (b *UniqueBag) UnionSet(id ID, set set.Bits64)
Constants ¶
const BitsPerByte = 8
BitsPerByte is the number of bits per byte
const NodeIDPrefix = "NodeID-"
const NumBits = 256
NumBits is the number of bits this patricia tree manages
Variables ¶
var AliasTests = []func(require *require.Assertions, r AliaserReader, w AliaserWriter){
AliaserLookupErrorTest,
AliaserLookupTest,
AliaserAliasesEmptyTest,
AliaserAliasesTest,
AliaserPrimaryAliasTest,
AliaserAliasClashTest,
AliaserRemoveAliasTest,
}
var (
// Empty is a useful all zero value
Empty = ID{}
)
var (
EmptyNodeID = NodeID{}
)
var (
ShortEmpty = ShortID{}
)
ShortEmpty is a useful all zero value
Functions ¶
func AliaserAliasClashTest ¶ added in v1.6.2
func AliaserAliasClashTest(require *require.Assertions, _ AliaserReader, w AliaserWriter)
func AliaserAliasesEmptyTest ¶ added in v1.6.2
func AliaserAliasesEmptyTest(require *require.Assertions, r AliaserReader, _ AliaserWriter)
func AliaserAliasesTest ¶ added in v1.6.2
func AliaserAliasesTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
func AliaserLookupErrorTest ¶ added in v1.6.2
func AliaserLookupErrorTest(require *require.Assertions, r AliaserReader, _ AliaserWriter)
func AliaserLookupTest ¶ added in v1.6.2
func AliaserLookupTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
func AliaserPrimaryAliasTest ¶ added in v1.6.2
func AliaserPrimaryAliasTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
func AliaserRemoveAliasTest ¶ added in v1.6.2
func AliaserRemoveAliasTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
func EqualSubset ¶
func EqualSubset(start, stop int, id1, id2 ID) bool
EqualSubset takes in two indices and two ids and returns if the ids are equal from bit start to bit end (non-inclusive). Bit indices are defined as: [7 6 5 4 3 2 1 0] [15 14 13 12 11 10 9 8] ... [255 254 253 252 251 250 249 248] Where index 7 is the MSB of byte 0.
func FirstDifferenceSubset ¶
func FirstDifferenceSubset(start, stop int, id1, id2 ID) (int, bool)
FirstDifferenceSubset takes in two indices and two ids and returns the index of the first difference between the ids inside bit start to bit end (non-inclusive). Bit indices are defined above
func GetRelevantAliases ¶ added in v1.7.6
func GetRelevantAliases(aliaser Aliaser, ids []ID) (map[ID][]string, error)
GetRelevantAliases returns the aliases with the redundant identity alias removed (each id is aliased to at least itself).
func ShortIDsToStrings ¶ added in v1.7.11
func ShortIDsToStrings(ids []ShortID) []string
ShortIDsToStrings converts an array of shortIDs to an array of their string representations
Types ¶
type Aliaser ¶
type Aliaser interface {
AliaserReader
AliaserWriter
PrimaryAliasOrDefault(id ID) string
}
Aliaser allows one to give an ID aliases and lookup the aliases given to an ID.
func NewAliaser ¶ added in v1.6.2
func NewAliaser() Aliaser
type AliaserReader ¶ added in v1.6.2
type AliaserReader interface {
Lookup(alias string) (ID, error)
PrimaryAlias(id ID) (string, error)
Aliases(id ID) ([]string, error)
}
AliaserReader allows one to lookup the aliases given to an ID.
type AliaserWriter ¶ added in v1.6.2
type AliaserWriter interface {
Alias(id ID, alias string) error
RemoveAliases(id ID)
}
Aliaser allows one to give an ID aliases. An ID can have arbitrarily many aliases; two IDs may not have the same alias.
type Bag ¶
type Bag struct {
// contains filtered or unexported fields
}
Bag is a multiset of IDs.
A bag has the ability to split and filter on its bits for ease of use for binary voting.
func (*Bag) Add ¶
func (b *Bag) Add(ids ...ID)
Add increases the number of times each id has been seen by one.
func (*Bag) AddCount ¶
func (b *Bag) AddCount(id ID, count int)
AddCount increases the number of times the id has been seen by count.
count must be >= 0
func (*Bag) Count ¶
func (b *Bag) Count(id ID) int
Count returns the number of times the id has been added.
func (*Bag) Equals ¶
func (b *Bag) Equals(oIDs Bag) bool
Equals returns true if the bags contain the same elements
func (*Bag) Filter ¶
func (b *Bag) Filter(start, end int, id ID) Bag
Filter returns the bag of ids with the same counts as this bag, except all the ids in the returned bag must have the same bits in the range [start, end) as id.
func (*Bag) Mode ¶
func (b *Bag) Mode() (ID, int)
Mode returns the id that has been seen the most and the number of times it has been seen. Ties are broken by the first id to be seen the reported number of times.
func (*Bag) PrefixedString ¶ added in v1.7.3
func (b *Bag) PrefixedString(prefix string) string
func (*Bag) SetThreshold ¶
func (b *Bag) SetThreshold(threshold int)
SetThreshold sets the number of times an ID must be added to be contained in the threshold set.
type ID ¶
type ID [32]byte
ID wraps a 32 byte hash used as an identifier
func FromString ¶
func FromString(idStr string) (ID, error)
FromString is the inverse of ID.String()
func GenerateTestID ¶ added in v0.8.0
func GenerateTestID() ID
GenerateTestID returns a new ID that should only be used for testing
func (ID) Bit ¶
func (id ID) Bit(i uint) int
Bit returns the bit value at the ith index of the byte array. Returns 0 or 1
func (ID) MarshalJSON ¶
func (id ID) MarshalJSON() ([]byte, error)
func (ID) MarshalText ¶ added in v1.5.0
func (id ID) MarshalText() ([]byte, error)
func (ID) Prefix ¶
func (id ID) Prefix(prefixes ...uint64) ID
Prefix this id to create a more selective id. This can be used to store multiple values under the same key. For example: prefix1(id) -> confidence prefix2(id) -> vertex This will return a new id and not modify the original id.
func (*ID) UnmarshalJSON ¶
func (id *ID) UnmarshalJSON(b []byte) error
func (*ID) UnmarshalText ¶ added in v1.4.10
func (id *ID) UnmarshalText(text []byte) error
type NodeID ¶ added in v1.7.11
type NodeID ShortID
func GenerateTestNodeID ¶ added in v1.7.11
func GenerateTestNodeID() NodeID
GenerateTestNodeID returns a new ID that should only be used for testing
func NodeIDFromCert ¶ added in v1.7.11
func NodeIDFromCert(cert *x509.Certificate) NodeID
func NodeIDFromString ¶ added in v1.7.11
func NodeIDFromString(nodeIDStr string) (NodeID, error)
NodeIDFromString is the inverse of NodeID.String()
func ToNodeID ¶ added in v1.7.11
func ToNodeID(bytes []byte) (NodeID, error)
ToNodeID attempt to convert a byte slice into a node id
func (NodeID) MarshalJSON ¶ added in v1.7.11
func (id NodeID) MarshalJSON() ([]byte, error)
func (NodeID) MarshalText ¶ added in v1.7.11
func (id NodeID) MarshalText() ([]byte, error)
func (*NodeID) UnmarshalJSON ¶ added in v1.7.11
func (id *NodeID) UnmarshalJSON(b []byte) error
func (*NodeID) UnmarshalText ¶ added in v1.7.11
func (id *NodeID) UnmarshalText(text []byte) error
type NodeIDBag ¶ added in v1.7.11
type NodeIDBag struct {
// contains filtered or unexported fields
}
NodeIDBag is a multiset of NodeIDs.
func (*NodeIDBag) Add ¶ added in v1.7.11
func (b *NodeIDBag) Add(ids ...NodeID)
Add increases the number of times each id has been seen by one.
func (*NodeIDBag) AddCount ¶ added in v1.7.11
func (b *NodeIDBag) AddCount(id NodeID, count int)
AddCount increases the nubmer of times the id has been seen by count.
count must be >= 0
func (*NodeIDBag) Count ¶ added in v1.7.11
func (b *NodeIDBag) Count(id NodeID) int
Count returns the number of times the id has been added.
func (*NodeIDBag) Equals ¶ added in v1.7.11
func (b *NodeIDBag) Equals(oIDs NodeIDBag) bool
Equals returns true if the bags contain the same elements
func (*NodeIDBag) Len ¶ added in v1.7.11
func (b *NodeIDBag) Len() int
Len returns the number of times an id has been added.
func (*NodeIDBag) List ¶ added in v1.7.11
func (b *NodeIDBag) List() []NodeID
List returns a list of all IDs that have been added, without duplicates. e.g. a bag with {ID1, ID1, ID2} returns ids.ShortID[]{ID1, ID2}
func (*NodeIDBag) PrefixedString ¶ added in v1.7.11
func (b *NodeIDBag) PrefixedString(prefix string) string
type RequestID ¶ added in v1.9.1
type RequestID struct {
// The node this request came from
NodeID NodeID
// The chain this request came from
SourceChainID ID
// The chain the expected response should come from
DestinationChainID ID
// The unique identifier for this request
RequestID uint32
// The message opcode
Op byte
}
RequestID is a unique identifier for an in-flight request pending a response.
type ShortID ¶
type ShortID [20]byte
ShortID wraps a 20 byte hash as an identifier
func GenerateTestShortID ¶ added in v0.8.0
func GenerateTestShortID() ShortID
GenerateTestShortID returns a new ID that should only be used for testing
func ShortFromPrefixedString ¶ added in v0.8.0
func ShortFromPrefixedString(idStr, prefix string) (ShortID, error)
ShortFromPrefixedString returns a ShortID assuming the cb58 format is prefixed
func ShortFromString ¶
func ShortFromString(idStr string) (ShortID, error)
ShortFromString is the inverse of ShortID.String()
func ToShortID ¶
func ToShortID(bytes []byte) (ShortID, error)
ToShortID attempt to convert a byte slice into an id
func (ShortID) Bytes ¶
func (id ShortID) Bytes() []byte
Bytes returns the 20 byte hash as a slice. It is assumed this slice is not modified.
func (ShortID) MarshalJSON ¶
func (id ShortID) MarshalJSON() ([]byte, error)
func (ShortID) MarshalText ¶ added in v1.7.11
func (id ShortID) MarshalText() ([]byte, error)
func (ShortID) PrefixedString ¶ added in v0.8.0
func (id ShortID) PrefixedString(prefix string) string
PrefixedString returns the String representation with a prefix added
func (*ShortID) UnmarshalJSON ¶
func (id *ShortID) UnmarshalJSON(b []byte) error
func (*ShortID) UnmarshalText ¶ added in v1.7.11
func (id *ShortID) UnmarshalText(text []byte) error
type UniqueBag ¶
type UniqueBag map[ID]set.Bits64
func (*UniqueBag) Difference ¶
func (b *UniqueBag) Difference(diff *UniqueBag)
func (*UniqueBag) DifferenceSet ¶
func (b *UniqueBag) DifferenceSet(id ID, set set.Bits64)
func (*UniqueBag) PrefixedString ¶ added in v1.7.3
func (b *UniqueBag) PrefixedString(prefix string) string