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 ID
- func (id ID) Bit(i uint) int
- func (id ID) Compare(other ID) int
- func (id ID) Hex() string
- 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
- func (id ID) XOR(other ID) ID
- type NodeID
- func (id NodeID) Bytes() []byte
- func (id NodeID) Compare(other NodeID) int
- func (id NodeID) MarshalJSON() ([]byte, error)
- func (id NodeID) MarshalText() ([]byte, error)
- func (id NodeID) String() string
- func (id *NodeID) UnmarshalJSON(b []byte) error
- func (id *NodeID) UnmarshalText(text []byte) error
- type RequestID
- type ShortID
- func (id ShortID) Bytes() []byte
- func (id ShortID) Compare(other ShortID) int
- func (id ShortID) Hex() string
- 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
Constants ¶
const ( NodeIDPrefix = "NodeID-" NodeIDLen = ShortIDLen )
const BitsPerByte = 8
BitsPerByte is the number of bits per byte
const (
IDLen = 32
)
const NumBits = 256
NumBits is the number of bits this patricia tree manages
const ShortIDLen = 20
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 (
ErrNoIDWithAlias = errors.New("there is no ID with alias")
)
var (
ShortEmpty = ShortID{}
)
ShortEmpty is a useful all zero value
Functions ¶
func AliaserAliasClashTest ¶
func AliaserAliasClashTest(require *require.Assertions, _ AliaserReader, w AliaserWriter)
func AliaserAliasesEmptyTest ¶
func AliaserAliasesEmptyTest(require *require.Assertions, r AliaserReader, _ AliaserWriter)
func AliaserAliasesTest ¶
func AliaserAliasesTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
func AliaserLookupErrorTest ¶
func AliaserLookupErrorTest(require *require.Assertions, r AliaserReader, _ AliaserWriter)
func AliaserLookupTest ¶
func AliaserLookupTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
func AliaserPrimaryAliasTest ¶
func AliaserPrimaryAliasTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
func AliaserRemoveAliasTest ¶
func AliaserRemoveAliasTest(require *require.Assertions, r AliaserReader, w AliaserWriter)
func EqualSubset ¶
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 ¶
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 ¶
GetRelevantAliases returns the aliases with the redundant identity alias removed (each id is aliased to at least itself).
func ShortIDsToStrings ¶
ShortIDsToStrings converts an array of shortIDs to an array of their string representations
Types ¶
type Aliaser ¶
type Aliaser interface { AliaserReader AliaserWriter // PrimaryAliasOrDefault returns the first alias of [id], or ID string as a // default if no alias exists PrimaryAliasOrDefault(id ID) string }
Aliaser allows one to give an ID aliases and lookup the aliases given to an ID.
func NewAliaser ¶
func NewAliaser() Aliaser
type AliaserReader ¶
type AliaserReader interface { // Lookup returns the ID associated with alias Lookup(alias string) (ID, error) // PrimaryAlias returns the first alias of [id] PrimaryAlias(id ID) (string, error) // Aliases returns the aliases of an ID Aliases(id ID) ([]string, error) }
AliaserReader allows one to lookup the aliases given to an ID.
type AliaserWriter ¶
type AliaserWriter interface { // Alias gives [id] the alias [alias] Alias(id ID, alias string) error // RemoveAliases of the provided ID RemoveAliases(id ID) }
AliaserWriter allows one to give an ID aliases. An ID can have arbitrarily many aliases; two IDs may not have the same alias.
type ID ¶
ID wraps a 32 byte hash used as an identifier
func FromString ¶
FromString is the inverse of ID.String()
func FromStringOrPanic ¶
FromStringOrPanic is the same as FromString, but will panic on error
func GenerateTestID ¶
func GenerateTestID() ID
GenerateTestID returns a new ID that should only be used for testing
func (ID) MarshalJSON ¶
func (ID) MarshalText ¶
func (ID) Prefix ¶
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) UnmarshalText ¶
type NodeID ¶
type NodeID ShortID
func BuildTestNodeID ¶
BuildTestNodeID is an utility to build NodeID from bytes in UTs It must not be used in production code. In production code we should use ToNodeID, which performs proper length checking.
func GenerateTestNodeID ¶
func GenerateTestNodeID() NodeID
GenerateTestNodeID returns a new ID that should only be used for testing
func NodeIDFromCert ¶
func NodeIDFromCert(cert *staking.Certificate) NodeID
func NodeIDFromString ¶
NodeIDFromString is the inverse of NodeID.String()
func (NodeID) MarshalJSON ¶
func (NodeID) MarshalText ¶
func (*NodeID) UnmarshalJSON ¶
func (*NodeID) UnmarshalText ¶
type RequestID ¶
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 [ShortIDLen]byte
ShortID wraps a 20 byte hash as an identifier
func GenerateTestShortID ¶
func GenerateTestShortID() ShortID
GenerateTestShortID returns a new ID that should only be used for testing
func ShortFromPrefixedString ¶
ShortFromPrefixedString returns a ShortID assuming the cb58 format is prefixed
func ShortFromString ¶
ShortFromString is the inverse of ShortID.String()
func (ShortID) Bytes ¶
Bytes returns the 20 byte hash as a slice. It is assumed this slice is not modified.
func (ShortID) MarshalJSON ¶
func (ShortID) MarshalText ¶
func (ShortID) PrefixedString ¶
PrefixedString returns the String representation with a prefix added