Documentation
¶
Index ¶
- Constants
- Variables
- type BitSet
- type BitSetCell
- type BitSetMapper
- type CapabilityPoolingAndActivation
- type ChangeNetworkClaim
- type ClaimType
- type ConsensusPacket
- type HeaderSkipDeserializer
- type MissingNode
- type MissingNodeSupplementaryVote
- type NodeAnnounceClaim
- type NodeBroadcast
- type NodeJoinClaim
- type NodeJoinSupplementaryVote
- type NodeLeaveClaim
- type NodeListSupplementaryVote
- type NodePulseProof
- type NodeViolationBlame
- type PacketHeader
- type PacketRoutable
- type PacketType
- type Phase1Packet
- func (p1p *Phase1Packet) AddClaim(claim ReferendumClaim) bool
- func (p1p *Phase1Packet) Deserialize(data io.Reader) error
- func (p1p *Phase1Packet) DeserializeWithoutHeader(data io.Reader, header *PacketHeader) error
- func (p1p *Phase1Packet) GetClaims() []ReferendumClaim
- func (p1p *Phase1Packet) GetPacketHeader() (*RoutingHeader, error)
- func (p1p *Phase1Packet) GetPulse() core.Pulse
- func (p1p *Phase1Packet) GetPulseNumber() core.PulseNumber
- func (p1p *Phase1Packet) GetPulseProof() *NodePulseProof
- func (p1p *Phase1Packet) RawBytes() ([]byte, error)
- func (p1p *Phase1Packet) Serialize() ([]byte, error)
- func (p1p *Phase1Packet) SetPacketHeader(header *RoutingHeader) error
- func (p1p *Phase1Packet) SetPulseProof(proofStateHash, proofSignature []byte) error
- type Phase2Packet
- func (p2p *Phase2Packet) AddVote(vote ReferendumVote)
- func (p2p *Phase2Packet) ContainsRequests() bool
- func (p2p *Phase2Packet) Deserialize(data io.Reader) error
- func (p2p *Phase2Packet) DeserializeWithoutHeader(data io.Reader, header *PacketHeader) error
- func (p2p *Phase2Packet) GetBitSet() BitSet
- func (p2p *Phase2Packet) GetGlobuleHashSignature() []byte
- func (p2p *Phase2Packet) GetPacketHeader() (*RoutingHeader, error)
- func (p2p *Phase2Packet) GetPulseNumber() core.PulseNumber
- func (p2p *Phase2Packet) GetVotes() []ReferendumVote
- func (p2p *Phase2Packet) RawFirstPart() ([]byte, error)
- func (p2p *Phase2Packet) RawSecondPart() ([]byte, error)
- func (p2p *Phase2Packet) Serialize() ([]byte, error)
- func (p2p *Phase2Packet) SetBitSet(bitset BitSet)
- func (p2p *Phase2Packet) SetGlobuleHashSignature(globuleHashSignature []byte) error
- func (p2p *Phase2Packet) SetPacketHeader(header *RoutingHeader) error
- type Phase3Packet
- func (p3p *Phase3Packet) Deserialize(data io.Reader) error
- func (p3p *Phase3Packet) DeserializeWithoutHeader(data io.Reader, header *PacketHeader) error
- func (p3p *Phase3Packet) GetBitset() BitSet
- func (p3p *Phase3Packet) GetPacketHeader() (*RoutingHeader, error)
- func (p3p *Phase3Packet) RawBytes() ([]byte, error)
- func (p3p *Phase3Packet) Serialize() ([]byte, error)
- func (p3p *Phase3Packet) SetPacketHeader(header *RoutingHeader) error
- type PulseData
- type PulseDataExt
- type ReferendumClaim
- type ReferendumVote
- type RoutingHeader
- type Serializer
- type StateFraudNodeSupplementaryVote
- type TriState
- type TriStateBitSet
- type VoteType
Constants ¶
const ( TypeNodeJoinClaim = ClaimType(iota + 1) TypeNodeAnnounceClaim TypeCapabilityPollingAndActivation TypeNodeViolationBlame TypeNodeBroadcast TypeNodeLeaveClaim TypeChangeNetworkClaim )
const ( Phase1 = PacketType(iota + 1) Phase2 Phase3 )
const ( TypeNodeJoinSupplementaryVote = VoteType(iota + 1) TypeStateFraudNodeSupplementaryVote TypeNodeListSupplementaryVote TypeMissingNodeSupplementaryVote TypeMissingNode )
const HashLength = 64
const HeaderSize = 2
const NodeListHashLength = 32
const PublicKeyLength = 64
const ReferenceLength = 64
const SignatureLength = 66
Variables ¶
var ( // ErrBitSetOutOfRange is returned when index passed to IndexToRef function is out of range (ERROR) ErrBitSetOutOfRange = errors.New("index out of range") // ErrBitSetNodeIsMissing is returned in IndexToRef when we have no information about the node on specified index (SPECIAL CASE) ErrBitSetNodeIsMissing = errors.New("no information about node on specified index") // ErrBitSetIncorrectNode is returned when an incorrect node is passed to RefToIndex (ERROR) ErrBitSetIncorrectNode = errors.New("incorrect node ID") )
Possible errors in BitSetMapper
Functions ¶
This section is empty.
Types ¶
type BitSet ¶
type BitSet interface {
Serialize() ([]byte, error)
// GetCells get buckets of bitset
GetCells(mapper BitSetMapper) ([]BitSetCell, error)
// ApplyChanges returns copy of the current bitset with changes applied
ApplyChanges(changes []BitSetCell, mapper BitSetMapper) error
}
BitSet is interface
type BitSetCell ¶
BitSetCell is structure that contains the state of the node
type BitSetMapper ¶
type BitSetMapper interface {
// IndexToRef get ID of the node that is stored on the specified internal index
IndexToRef(index int) (core.RecordRef, error)
// RefToIndex get bitset internal index where the specified node state is stored
RefToIndex(nodeID core.RecordRef) (int, error)
// Length returns required length of the bitset
Length() int
}
BitSetMapper contains the mapping from bitset index to node ID (and vice versa)
type CapabilityPoolingAndActivation ¶
type CapabilityPoolingAndActivation struct {
PollingFlags uint16
CapabilityType uint16
CapabilityRef [ReferenceLength]byte
}
CapabilityPoolingAndActivation is a type 3.
func (*CapabilityPoolingAndActivation) Deserialize ¶
func (cpa *CapabilityPoolingAndActivation) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*CapabilityPoolingAndActivation) Serialize ¶
func (cpa *CapabilityPoolingAndActivation) Serialize() ([]byte, error)
Serialize implements interface method
func (*CapabilityPoolingAndActivation) Type ¶
func (cpa *CapabilityPoolingAndActivation) Type() ClaimType
type ChangeNetworkClaim ¶
type ChangeNetworkClaim struct {
}
ChangeNetworkClaim uses to change network state.
func (*ChangeNetworkClaim) Type ¶
func (cnc *ChangeNetworkClaim) Type() ClaimType
type ConsensusPacket ¶
type ConsensusPacket interface {
HeaderSkipDeserializer
Serializer
PacketRoutable
}
func ExtractPacket ¶
func ExtractPacket(reader io.Reader) (ConsensusPacket, error)
type HeaderSkipDeserializer ¶
type HeaderSkipDeserializer interface {
DeserializeWithoutHeader(data io.Reader, header *PacketHeader) error
}
type MissingNode ¶
type MissingNode struct {
NodeIndex uint16
}
func (*MissingNode) Deserialize ¶
func (mn *MissingNode) Deserialize(data io.Reader) error
func (*MissingNode) Serialize ¶
func (mn *MissingNode) Serialize() ([]byte, error)
func (*MissingNode) Type ¶
func (mn *MissingNode) Type() VoteType
type MissingNodeSupplementaryVote ¶
type MissingNodeSupplementaryVote struct {
NodePulseProof NodePulseProof
}
func (*MissingNodeSupplementaryVote) Deserialize ¶
func (v *MissingNodeSupplementaryVote) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*MissingNodeSupplementaryVote) Serialize ¶
func (v *MissingNodeSupplementaryVote) Serialize() ([]byte, error)
Serialize implements interface method
func (*MissingNodeSupplementaryVote) Type ¶
func (v *MissingNodeSupplementaryVote) Type() VoteType
type NodeAnnounceClaim ¶
type NodeAnnounceClaim struct {
NodeJoinClaim
NodeIndex uint16
NodeCount uint16
}
NodeJoinClaim is a type 5, len == 272.
func (*NodeAnnounceClaim) Deserialize ¶ added in v0.7.5
func (nac *NodeAnnounceClaim) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*NodeAnnounceClaim) Serialize ¶ added in v0.7.5
func (nac *NodeAnnounceClaim) Serialize() ([]byte, error)
Serialize implements interface method
func (*NodeAnnounceClaim) Type ¶
func (nac *NodeAnnounceClaim) Type() ClaimType
type NodeBroadcast ¶
type NodeBroadcast struct {
EmergencyLevel uint8
}
NodeBroadcast is a broadcast of info. Must be brief and only one entry per node. Type 4.
func (*NodeBroadcast) Deserialize ¶
func (nb *NodeBroadcast) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*NodeBroadcast) Serialize ¶
func (nb *NodeBroadcast) Serialize() ([]byte, error)
Serialize implements interface method
func (*NodeBroadcast) Type ¶
func (nb *NodeBroadcast) Type() ClaimType
type NodeJoinClaim ¶
type NodeJoinClaim struct {
ShortNodeID core.ShortNodeID
RelayNodeID core.ShortNodeID
ProtocolVersionAndFlags uint32
JoinsAfter uint32
NodeRoleRecID uint32
NodeRef core.RecordRef
NodePK [PublicKeyLength]byte
Signature [SignatureLength]byte
}
NodeJoinClaim is a type 1, len == 272.
func (*NodeJoinClaim) Deserialize ¶
func (njc *NodeJoinClaim) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*NodeJoinClaim) Serialize ¶
func (njc *NodeJoinClaim) Serialize() ([]byte, error)
Serialize implements interface method
func (*NodeJoinClaim) SerializeWithoutSign ¶ added in v0.7.5
func (njc *NodeJoinClaim) SerializeWithoutSign() ([]byte, error)
func (*NodeJoinClaim) Type ¶
func (njc *NodeJoinClaim) Type() ClaimType
type NodeJoinSupplementaryVote ¶
type NodeJoinSupplementaryVote struct {
}
func (*NodeJoinSupplementaryVote) Deserialize ¶
func (v *NodeJoinSupplementaryVote) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*NodeJoinSupplementaryVote) Serialize ¶
func (v *NodeJoinSupplementaryVote) Serialize() ([]byte, error)
Serialize implements interface method
func (*NodeJoinSupplementaryVote) Type ¶
func (v *NodeJoinSupplementaryVote) Type() VoteType
type NodeLeaveClaim ¶
type NodeLeaveClaim struct {
}
NodeLeaveClaim can be the only be issued by the node itself and must be the only claim record. Should be executed with the next pulse. Type 1, len == 0.
func (*NodeLeaveClaim) Deserialize ¶
func (nlc *NodeLeaveClaim) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*NodeLeaveClaim) Serialize ¶
func (nlc *NodeLeaveClaim) Serialize() ([]byte, error)
Serialize implements interface method
func (*NodeLeaveClaim) Type ¶
func (nlc *NodeLeaveClaim) Type() ClaimType
type NodeListSupplementaryVote ¶
func (*NodeListSupplementaryVote) Deserialize ¶
func (v *NodeListSupplementaryVote) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*NodeListSupplementaryVote) Serialize ¶
func (v *NodeListSupplementaryVote) Serialize() ([]byte, error)
Serialize implements interface method
func (*NodeListSupplementaryVote) Type ¶
func (v *NodeListSupplementaryVote) Type() VoteType
type NodePulseProof ¶
type NodePulseProof struct {
NodeStateHash [HashLength]byte
NodeSignature [SignatureLength]byte
}
func (*NodePulseProof) Deserialize ¶
func (npp *NodePulseProof) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*NodePulseProof) Serialize ¶
func (npp *NodePulseProof) Serialize() ([]byte, error)
Serialize implements interface method
func (*NodePulseProof) Signature ¶
func (npp *NodePulseProof) Signature() []byte
func (*NodePulseProof) StateHash ¶
func (npp *NodePulseProof) StateHash() []byte
type NodeViolationBlame ¶
NodeViolationBlame is a type 2.
func (*NodeViolationBlame) Deserialize ¶
func (nvb *NodeViolationBlame) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*NodeViolationBlame) Serialize ¶
func (nvb *NodeViolationBlame) Serialize() ([]byte, error)
Serialize implements interface method
func (*NodeViolationBlame) Type ¶
func (nvb *NodeViolationBlame) Type() ClaimType
type PacketHeader ¶
type PacketHeader struct {
PacketT PacketType
HasRouting bool
Pulse uint32
//-----------------
OriginNodeID core.ShortNodeID
TargetNodeID core.ShortNodeID
// contains filtered or unexported fields
}
func (*PacketHeader) Deserialize ¶
func (ph *PacketHeader) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*PacketHeader) Serialize ¶
func (ph *PacketHeader) Serialize() ([]byte, error)
Serialize implements interface method
type PacketRoutable ¶
type PacketRoutable interface {
// SetPacketHeader set routing information for transport level.
SetPacketHeader(header *RoutingHeader) error
// GetPacketHeader get routing information from transport level.
GetPacketHeader() (*RoutingHeader, error)
}
type PacketType ¶
type PacketType uint8
type Phase1Packet ¶
type Phase1Packet struct {
// --------------------
// signature contains signature of Header + Section 1 + Section 2
Signature [SignatureLength]byte
// contains filtered or unexported fields
}
func NewPhase1Packet ¶
func NewPhase1Packet() *Phase1Packet
func (*Phase1Packet) AddClaim ¶
func (p1p *Phase1Packet) AddClaim(claim ReferendumClaim) bool
AddClaim adds claim if phase1Packet has space for it and returns true, otherwise returns false
func (*Phase1Packet) Deserialize ¶
func (p1p *Phase1Packet) Deserialize(data io.Reader) error
func (*Phase1Packet) DeserializeWithoutHeader ¶
func (p1p *Phase1Packet) DeserializeWithoutHeader(data io.Reader, header *PacketHeader) error
func (*Phase1Packet) GetClaims ¶
func (p1p *Phase1Packet) GetClaims() []ReferendumClaim
func (*Phase1Packet) GetPacketHeader ¶
func (p1p *Phase1Packet) GetPacketHeader() (*RoutingHeader, error)
func (*Phase1Packet) GetPulse ¶
func (p1p *Phase1Packet) GetPulse() core.Pulse
func (*Phase1Packet) GetPulseNumber ¶
func (p1p *Phase1Packet) GetPulseNumber() core.PulseNumber
func (*Phase1Packet) GetPulseProof ¶
func (p1p *Phase1Packet) GetPulseProof() *NodePulseProof
func (*Phase1Packet) RawBytes ¶
func (p1p *Phase1Packet) RawBytes() ([]byte, error)
func (*Phase1Packet) Serialize ¶
func (p1p *Phase1Packet) Serialize() ([]byte, error)
func (*Phase1Packet) SetPacketHeader ¶
func (p1p *Phase1Packet) SetPacketHeader(header *RoutingHeader) error
func (*Phase1Packet) SetPulseProof ¶
func (p1p *Phase1Packet) SetPulseProof(proofStateHash, proofSignature []byte) error
SetPulseProof sets PulseProof and check struct fields len, returns error if invalid len
type Phase2Packet ¶
type Phase2Packet struct {
SignatureHeaderSection1 [SignatureLength]byte
SignatureHeaderSection2 [SignatureLength]byte
// contains filtered or unexported fields
}
func (*Phase2Packet) AddVote ¶ added in v0.7.5
func (p2p *Phase2Packet) AddVote(vote ReferendumVote)
func (*Phase2Packet) ContainsRequests ¶ added in v0.7.5
func (p2p *Phase2Packet) ContainsRequests() bool
func (*Phase2Packet) Deserialize ¶
func (p2p *Phase2Packet) Deserialize(data io.Reader) error
func (*Phase2Packet) DeserializeWithoutHeader ¶
func (p2p *Phase2Packet) DeserializeWithoutHeader(data io.Reader, header *PacketHeader) error
func (*Phase2Packet) GetBitSet ¶
func (p2p *Phase2Packet) GetBitSet() BitSet
func (*Phase2Packet) GetGlobuleHashSignature ¶
func (p2p *Phase2Packet) GetGlobuleHashSignature() []byte
func (*Phase2Packet) GetPacketHeader ¶
func (p2p *Phase2Packet) GetPacketHeader() (*RoutingHeader, error)
func (*Phase2Packet) GetPulseNumber ¶
func (p2p *Phase2Packet) GetPulseNumber() core.PulseNumber
func (*Phase2Packet) GetVotes ¶ added in v0.7.5
func (p2p *Phase2Packet) GetVotes() []ReferendumVote
func (*Phase2Packet) RawFirstPart ¶
func (p2p *Phase2Packet) RawFirstPart() ([]byte, error)
func (*Phase2Packet) RawSecondPart ¶
func (p2p *Phase2Packet) RawSecondPart() ([]byte, error)
func (*Phase2Packet) Serialize ¶
func (p2p *Phase2Packet) Serialize() ([]byte, error)
func (*Phase2Packet) SetBitSet ¶ added in v0.7.5
func (p2p *Phase2Packet) SetBitSet(bitset BitSet)
func (*Phase2Packet) SetGlobuleHashSignature ¶
func (p2p *Phase2Packet) SetGlobuleHashSignature(globuleHashSignature []byte) error
func (*Phase2Packet) SetPacketHeader ¶
func (p2p *Phase2Packet) SetPacketHeader(header *RoutingHeader) error
type Phase3Packet ¶
type Phase3Packet struct {
SignatureHeaderSection1 [SignatureLength]byte
// contains filtered or unexported fields
}
func NewPhase3Packet ¶
func NewPhase3Packet(globuleHash [SignatureLength]byte, bitSet BitSet) Phase3Packet
func (*Phase3Packet) Deserialize ¶
func (p3p *Phase3Packet) Deserialize(data io.Reader) error
func (*Phase3Packet) DeserializeWithoutHeader ¶
func (p3p *Phase3Packet) DeserializeWithoutHeader(data io.Reader, header *PacketHeader) error
func (*Phase3Packet) GetBitset ¶
func (p3p *Phase3Packet) GetBitset() BitSet
func (*Phase3Packet) GetPacketHeader ¶
func (p3p *Phase3Packet) GetPacketHeader() (*RoutingHeader, error)
GetPacketHeader get routing information from transport level.
func (*Phase3Packet) RawBytes ¶
func (p3p *Phase3Packet) RawBytes() ([]byte, error)
func (*Phase3Packet) Serialize ¶
func (p3p *Phase3Packet) Serialize() ([]byte, error)
func (*Phase3Packet) SetPacketHeader ¶
func (p3p *Phase3Packet) SetPacketHeader(header *RoutingHeader) error
SetPacketHeader set routing information for transport level.
type PulseData ¶
type PulseData struct {
PulseNumber uint32
Data PulseDataExt
}
PulseData is a pulse data.
func (*PulseData) Deserialize ¶
Deserialize implements interface method
type PulseDataExt ¶
type PulseDataExt struct {
NextPulseDelta uint16
PrevPulseDelta uint16
OriginID [16]byte
EpochPulseNo uint32
PulseTimestamp uint32
Entropy core.Entropy
}
PulseDataExt is a pulse data extension.
func (*PulseDataExt) Deserialize ¶
func (pde *PulseDataExt) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*PulseDataExt) Serialize ¶
func (pde *PulseDataExt) Serialize() ([]byte, error)
Serialize implements interface method
type ReferendumClaim ¶
type ReferendumClaim interface {
Serializer
Type() ClaimType
}
type ReferendumVote ¶
type ReferendumVote interface {
Serializer
Type() VoteType
}
type RoutingHeader ¶
type RoutingHeader struct {
OriginID core.ShortNodeID
TargetID core.ShortNodeID
PacketType types.PacketType
}
type Serializer ¶
type StateFraudNodeSupplementaryVote ¶
type StateFraudNodeSupplementaryVote struct {
Node1PulseProof NodePulseProof
Node2PulseProof NodePulseProof
PulseData PulseData // optional
}
func (*StateFraudNodeSupplementaryVote) Deserialize ¶
func (v *StateFraudNodeSupplementaryVote) Deserialize(data io.Reader) error
Deserialize implements interface method
func (*StateFraudNodeSupplementaryVote) Serialize ¶
func (v *StateFraudNodeSupplementaryVote) Serialize() ([]byte, error)
Serialize implements interface method
func (*StateFraudNodeSupplementaryVote) Type ¶
func (v *StateFraudNodeSupplementaryVote) Type() VoteType
type TriStateBitSet ¶
type TriStateBitSet struct {
CompressedSet bool
// contains filtered or unexported fields
}
TriStateBitSet bitset implementation.
func NewTriStateBitSet ¶
func NewTriStateBitSet(size int) (*TriStateBitSet, error)
NewTriStateBitSet creates and returns a tristatebitset.
func (*TriStateBitSet) ApplyChanges ¶
func (dbs *TriStateBitSet) ApplyChanges(changes []BitSetCell, mapper BitSetMapper) error
func (*TriStateBitSet) GetCells ¶
func (dbs *TriStateBitSet) GetCells(mapper BitSetMapper) ([]BitSetCell, error)
func (*TriStateBitSet) Serialize ¶
func (dbs *TriStateBitSet) Serialize() ([]byte, error)