Documentation ¶
Index ¶
- Constants
- Variables
- func ErrMalformedHeader(err error) error
- func ErrMalformedPacketBody(err error) error
- func ErrMalformedPacketSignature(err error) error
- func ErrMalformedPulseNumber(err error) error
- func ErrPayloadLengthMismatch(expected, actual int64) error
- type ClaimHeader
- type ClaimList
- type ClaimType
- type CloudIntro
- type CloudIntroductionReader
- type CompactGlobulaNodeState
- type ContextDeserializerFrom
- type ContextSerializerTo
- type DeserializeContext
- type DeserializerFrom
- type EmbeddedPulsarData
- type EmbeddedPulseReader
- type EmptyClaim
- type ExtendedIntroReader
- func (r *ExtendedIntroReader) GetCloudIntroduction() transport.CloudIntroductionReader
- func (r *ExtendedIntroReader) GetFullIntroduction() transport.FullIntroductionReader
- func (r *ExtendedIntroReader) GetJoinerSecret() cryptkit.DigestHolder
- func (p *ExtendedIntroReader) GetPulseNumber() pulse.Number
- func (r *ExtendedIntroReader) HasCloudIntro() bool
- func (r *ExtendedIntroReader) HasFullIntro() bool
- func (r *ExtendedIntroReader) HasJoinerSecret() bool
- type FieldContext
- type Flag
- type FullIntroductionReader
- func (r *FullIntroductionReader) GetBriefIntroSignedDigest() cryptkit.SignedDigestHolder
- func (r *FullIntroductionReader) GetDefaultEndpoint() endpoints.Outbound
- func (r *FullIntroductionReader) GetExtraEndpoints() []endpoints.Outbound
- func (r *FullIntroductionReader) GetIssuedAtPulse() pulse.Number
- func (r *FullIntroductionReader) GetIssuedAtTime() time.Time
- func (r *FullIntroductionReader) GetIssuerID() node.ShortNodeID
- func (r *FullIntroductionReader) GetIssuerSignature() cryptkit.SignatureHolder
- func (r *FullIntroductionReader) GetNodePublicKey() cryptkit.SigningKeyHolder
- func (r *FullIntroductionReader) GetPowerLevels() member.PowerSet
- func (r *FullIntroductionReader) GetPrimaryRole() member.PrimaryRole
- func (p *FullIntroductionReader) GetPulseNumber() pulse.Number
- func (r *FullIntroductionReader) GetReference() reference.Global
- func (r *FullIntroductionReader) GetSpecialRoles() member.SpecialRole
- func (r *FullIntroductionReader) GetStartPower() member.Power
- func (r *FullIntroductionReader) GetStaticNodeID() node.ShortNodeID
- type GenericClaim
- type GlobulaConsensusPacketBody
- type GlobulaStateVector
- type Header
- func (h *Header) ClearFlag(f Flag)
- func (h *Header) DeserializeFrom(_ DeserializeContext, reader io.Reader) error
- func (h *Header) GetFlagRangeInt(from, to uint8) uint8
- func (h *Header) GetPacketType() phases.PacketType
- func (h *Header) GetProtocolType() ProtocolType
- func (h *Header) GetSourceID() node.ShortNodeID
- func (h *Header) HasFlag(f Flag) bool
- func (h *Header) IsBodyEncrypted() bool
- func (h *Header) IsRelayRestricted() bool
- func (h *Header) SerializeTo(_ SerializeContext, writer io.Writer) error
- func (h *Header) SetFlag(f Flag)
- type JoinAnnouncement
- type JoinerAnnouncementReader
- func (r *JoinerAnnouncementReader) GetBriefIntroduction() transport.BriefIntroductionReader
- func (r *JoinerAnnouncementReader) GetFullIntroduction() transport.FullIntroductionReader
- func (r *JoinerAnnouncementReader) GetJoinerIntroducedByID() node.ShortNodeID
- func (p *JoinerAnnouncementReader) GetPulseNumber() pulse.Number
- func (r *JoinerAnnouncementReader) HasFullIntro() bool
- type LeaveAnnouncement
- type MemberPacketReader
- func (r *MemberPacketReader) AsPhase0Packet() transport.Phase0PacketReader
- func (r *MemberPacketReader) AsPhase1Packet() transport.Phase1PacketReader
- func (r *MemberPacketReader) AsPhase2Packet() transport.Phase2PacketReader
- func (r *MemberPacketReader) AsPhase3Packet() transport.Phase3PacketReader
- func (p *MemberPacketReader) GetPulseNumber() pulse.Number
- type MembershipAnnouncement
- type MembershipAnnouncementReader
- func (r *MembershipAnnouncementReader) GetAnnouncementSignature() proofs.MemberAnnouncementSignature
- func (r *MembershipAnnouncementReader) GetJoinerAnnouncement() transport.JoinerAnnouncementReader
- func (r *MembershipAnnouncementReader) GetJoinerID() node.ShortNodeID
- func (r *MembershipAnnouncementReader) GetLeaveReason() uint32
- func (r *MembershipAnnouncementReader) GetNodeID() node.ShortNodeID
- func (r *MembershipAnnouncementReader) GetNodeRank() member.Rank
- func (r *MembershipAnnouncementReader) GetNodeStateHashEvidence() proofs.NodeStateHashEvidence
- func (p *MembershipAnnouncementReader) GetPulseNumber() pulse.Number
- func (r *MembershipAnnouncementReader) GetRequestedPower() member.Power
- func (r *MembershipAnnouncementReader) IsLeaving() bool
- type NeighbourAnnouncement
- type NeighbourAnnouncementReader
- func (r *NeighbourAnnouncementReader) GetAnnouncementSignature() proofs.MemberAnnouncementSignature
- func (r *NeighbourAnnouncementReader) GetJoinerAnnouncement() transport.JoinerAnnouncementReader
- func (r *NeighbourAnnouncementReader) GetJoinerID() node.ShortNodeID
- func (r *NeighbourAnnouncementReader) GetLeaveReason() uint32
- func (r *NeighbourAnnouncementReader) GetNodeID() node.ShortNodeID
- func (r *NeighbourAnnouncementReader) GetNodeRank() member.Rank
- func (r *NeighbourAnnouncementReader) GetNodeStateHashEvidence() proofs.NodeStateHashEvidence
- func (p *NeighbourAnnouncementReader) GetPulseNumber() pulse.Number
- func (r *NeighbourAnnouncementReader) GetRequestedPower() member.Power
- func (r *NeighbourAnnouncementReader) IsLeaving() bool
- type Neighbourhood
- type NodeAnnouncement
- type NodeAppearanceBitset
- func (nab *NodeAppearanceBitset) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
- func (nab *NodeAppearanceBitset) GetBitset() member.StateBitset
- func (nab *NodeAppearanceBitset) SerializeTo(ctx SerializeContext, writer io.Writer) error
- func (nab *NodeAppearanceBitset) SetBitset(bitset member.StateBitset)
- type NodeBriefIntro
- func (bi *NodeBriefIntro) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
- func (bi *NodeBriefIntro) GetAddrMode() endpoints.NodeEndpointType
- func (bi *NodeBriefIntro) GetPrimaryRole() member.PrimaryRole
- func (bi *NodeBriefIntro) SerializeTo(ctx SerializeContext, writer io.Writer) error
- func (bi *NodeBriefIntro) SetAddrMode(addrMode endpoints.NodeEndpointType)
- func (bi *NodeBriefIntro) SetPrimaryRole(primaryRole member.PrimaryRole)
- type NodeExtendedIntro
- type NodeFullIntro
- type NodeVectors
- type Packet
- type PacketBody
- type PacketBuilder
- func (pb *PacketBuilder) GetNeighbourhoodSize() transport.NeighbourhoodSizes
- func (pb *PacketBuilder) PreparePhase0Packet(sender *transport.NodeAnnouncementProfile, ...) transport.PreparedPacketSender
- func (pb *PacketBuilder) PreparePhase1Packet(sender *transport.NodeAnnouncementProfile, ...) transport.PreparedPacketSender
- func (pb *PacketBuilder) PreparePhase2Packet(sender *transport.NodeAnnouncementProfile, welcome *proofs.NodeWelcomePackage, ...) transport.PreparedPacketSender
- func (pb *PacketBuilder) PreparePhase3Packet(sender *transport.NodeAnnouncementProfile, vectors statevector.Vector, ...) transport.PreparedPacketSender
- type PacketContext
- type PacketHeaderAccessor
- type PacketHeaderModifier
- type PacketParser
- func (p *PacketParser) GetMemberPacket() transport.MemberPacketReader
- func (p *PacketParser) GetPacketSignature() cryptkit.SignedDigest
- func (p *PacketParser) GetPacketType() phases.PacketType
- func (p *PacketParser) GetPulseNumber() pulse.Number
- func (p *PacketParser) GetPulsePacket() transport.PulsePacketReader
- func (p *PacketParser) GetReceiverID() node.ShortNodeID
- func (p *PacketParser) GetSourceID() node.ShortNodeID
- func (p *PacketParser) GetTargetID() node.ShortNodeID
- func (p *PacketParser) IsRelayForbidden() bool
- func (p *PacketParser) ParsePacketBody() (transport.PacketParser, error)
- func (p PacketParser) String() string
- type PacketParserFactory
- type Phase0PacketReader
- type Phase1PacketReader
- type Phase2PacketReader
- func (r *Phase2PacketReader) GetAnnouncementReader() transport.MembershipAnnouncementReader
- func (r *Phase2PacketReader) GetBriefIntroduction() transport.BriefIntroductionReader
- func (r *Phase2PacketReader) GetNeighbourhood() []transport.MembershipAnnouncementReader
- func (p *Phase2PacketReader) GetPulseNumber() pulse.Number
- type Phase3PacketReader
- func (r *Phase3PacketReader) GetBitset() member.StateBitset
- func (r *Phase3PacketReader) GetDoubtedExpectedRank() member.Rank
- func (r *Phase3PacketReader) GetDoubtedGlobulaAnnouncementHash() proofs.GlobulaAnnouncementHash
- func (r *Phase3PacketReader) GetDoubtedGlobulaStateSignature() proofs.GlobulaStateSignature
- func (p *Phase3PacketReader) GetPulseNumber() pulse.Number
- func (r *Phase3PacketReader) GetTrustedExpectedRank() member.Rank
- func (r *Phase3PacketReader) GetTrustedGlobulaAnnouncementHash() proofs.GlobulaAnnouncementHash
- func (r *Phase3PacketReader) GetTrustedGlobulaStateSignature() proofs.GlobulaStateSignature
- type PreparedPacketSender
- type ProtocolType
- type PulsarPacketBody
- type SerializeContext
- type SerializerTo
Constants ¶
View Source
const ( NoContext = FieldContext(iota) ContextMembershipAnnouncement ContextNeighbourAnnouncement )
View Source
const ( FlagHasPulsePacket = Flag(0) FlagSelfIntro1 = Flag(1) FlagSelfIntro2 = Flag(2) FlagHasJoinerExt = Flag(3) )
View Source
const ( ProtocolTypePulsar = ProtocolType(0) ProtocolTypeGlobulaConsensus = ProtocolType(1) )
Variables ¶
View Source
var ( ErrNilBody = errors.New("body is nil") ErrInvalidProtocol = errors.New("invalid protocol") )
Functions ¶
func ErrMalformedHeader ¶
func ErrMalformedPacketBody ¶
func ErrMalformedPulseNumber ¶
Types ¶
type ClaimHeader ¶
type ClaimHeader struct {
TypeAndLength uint16 `insolar-transport:"header;[0-9]=length;[10-15]=header:ClaimType;group=Claims"` // [00-09] ByteLength [10-15] ClaimClass
}
func (*ClaimHeader) ClaimType ¶
func (ch *ClaimHeader) ClaimType() ClaimType
func (*ClaimHeader) DeserializeFrom ¶
func (ch *ClaimHeader) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*ClaimHeader) Length ¶
func (ch *ClaimHeader) Length() int
Length returns claim length without header
func (*ClaimHeader) SerializeTo ¶
func (ch *ClaimHeader) SerializeTo(ctx SerializeContext, writer io.Writer) error
type ClaimList ¶
type ClaimList struct { // ByteSize>=2 Claims []GenericClaim EndOfClaims EmptyClaim // ByteSize=2 - indicates end of claims }
func NewClaimList ¶
func NewClaimList() ClaimList
func (*ClaimList) DeserializeFrom ¶
func (cl *ClaimList) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*ClaimList) Push ¶
func (cl *ClaimList) Push(claim GenericClaim)
func (*ClaimList) SerializeTo ¶
func (cl *ClaimList) SerializeTo(ctx SerializeContext, writer io.Writer) error
type CloudIntro ¶
type CloudIntro struct { CloudIdentity longbits.Bits512 // ByteSize=64 LastCloudStateHash longbits.Bits512 }
func (*CloudIntro) DeserializeFrom ¶
func (ci *CloudIntro) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*CloudIntro) SerializeTo ¶
func (ci *CloudIntro) SerializeTo(ctx SerializeContext, writer io.Writer) error
type CloudIntroductionReader ¶
type CloudIntroductionReader struct {
MemberPacketReader
}
func (*CloudIntroductionReader) GetCloudIdentity ¶
func (r *CloudIntroductionReader) GetCloudIdentity() cryptkit.DigestHolder
func (*CloudIntroductionReader) GetJoinerSecret ¶
func (r *CloudIntroductionReader) GetJoinerSecret() cryptkit.DigestHolder
func (*CloudIntroductionReader) GetLastCloudStateHash ¶
func (r *CloudIntroductionReader) GetLastCloudStateHash() cryptkit.DigestHolder
func (*CloudIntroductionReader) GetPulseNumber ¶
type CompactGlobulaNodeState ¶
type CompactGlobulaNodeState struct { NodeStateHash longbits.Bits512 // ByteSize=64 NodeStateHashSignature longbits.Bits512 // ByteSize=64, :=Sign(NodePK, Merkle512(NodeStateHash, (LastCloudStateHash.FoldTo224() << 32 | Rank))) }
func (*CompactGlobulaNodeState) DeserializeFrom ¶
func (gns *CompactGlobulaNodeState) DeserializeFrom(_ DeserializeContext, reader io.Reader) error
func (*CompactGlobulaNodeState) SerializeTo ¶
func (gns *CompactGlobulaNodeState) SerializeTo(_ SerializeContext, writer io.Writer) error
type ContextDeserializerFrom ¶
type ContextDeserializerFrom interface {
DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
}
type ContextSerializerTo ¶
type ContextSerializerTo interface {
SerializeTo(ctx SerializeContext, writer io.Writer) error
}
type DeserializeContext ¶
type DeserializeContext interface { PacketContext }
type DeserializerFrom ¶
type EmbeddedPulsarData ¶
type EmbeddedPulsarData struct { Size uint16 Data []byte PulsarPacketBody `insolar-transport:"ignore=send"` // ByteSize>=108 }
TODO: HACK!
func (*EmbeddedPulsarData) DeserializeFrom ¶
func (pd *EmbeddedPulsarData) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*EmbeddedPulsarData) SerializeTo ¶
func (pd *EmbeddedPulsarData) SerializeTo(ctx SerializeContext, writer io.Writer) error
type EmbeddedPulseReader ¶
type EmbeddedPulseReader struct {
MemberPacketReader
}
func (*EmbeddedPulseReader) GetEmbeddedPulsePacket ¶
func (r *EmbeddedPulseReader) GetEmbeddedPulsePacket() transport.PulsePacketReader
func (*EmbeddedPulseReader) GetPulseNumber ¶
func (*EmbeddedPulseReader) HasPulseData ¶
func (r *EmbeddedPulseReader) HasPulseData() bool
type EmptyClaim ¶
type EmptyClaim struct { // ByteSize=2 ClaimHeader `insolar-transport:"delimiter;ClaimType=0;length=header"` }
type ExtendedIntroReader ¶
type ExtendedIntroReader struct {
MemberPacketReader
}
func (*ExtendedIntroReader) GetCloudIntroduction ¶
func (r *ExtendedIntroReader) GetCloudIntroduction() transport.CloudIntroductionReader
func (*ExtendedIntroReader) GetFullIntroduction ¶
func (r *ExtendedIntroReader) GetFullIntroduction() transport.FullIntroductionReader
func (*ExtendedIntroReader) GetJoinerSecret ¶
func (r *ExtendedIntroReader) GetJoinerSecret() cryptkit.DigestHolder
func (*ExtendedIntroReader) GetPulseNumber ¶
func (*ExtendedIntroReader) HasCloudIntro ¶
func (r *ExtendedIntroReader) HasCloudIntro() bool
func (*ExtendedIntroReader) HasFullIntro ¶
func (r *ExtendedIntroReader) HasFullIntro() bool
func (*ExtendedIntroReader) HasJoinerSecret ¶
func (r *ExtendedIntroReader) HasJoinerSecret() bool
type FieldContext ¶
type FieldContext uint
type FullIntroductionReader ¶
type FullIntroductionReader struct { MemberPacketReader // contains filtered or unexported fields }
func (*FullIntroductionReader) GetBriefIntroSignedDigest ¶
func (r *FullIntroductionReader) GetBriefIntroSignedDigest() cryptkit.SignedDigestHolder
func (*FullIntroductionReader) GetDefaultEndpoint ¶
func (r *FullIntroductionReader) GetDefaultEndpoint() endpoints.Outbound
func (*FullIntroductionReader) GetExtraEndpoints ¶
func (r *FullIntroductionReader) GetExtraEndpoints() []endpoints.Outbound
func (*FullIntroductionReader) GetIssuedAtPulse ¶
func (r *FullIntroductionReader) GetIssuedAtPulse() pulse.Number
func (*FullIntroductionReader) GetIssuedAtTime ¶
func (r *FullIntroductionReader) GetIssuedAtTime() time.Time
func (*FullIntroductionReader) GetIssuerID ¶
func (r *FullIntroductionReader) GetIssuerID() node.ShortNodeID
func (*FullIntroductionReader) GetIssuerSignature ¶
func (r *FullIntroductionReader) GetIssuerSignature() cryptkit.SignatureHolder
func (*FullIntroductionReader) GetNodePublicKey ¶
func (r *FullIntroductionReader) GetNodePublicKey() cryptkit.SigningKeyHolder
func (*FullIntroductionReader) GetPowerLevels ¶
func (r *FullIntroductionReader) GetPowerLevels() member.PowerSet
func (*FullIntroductionReader) GetPrimaryRole ¶
func (r *FullIntroductionReader) GetPrimaryRole() member.PrimaryRole
func (*FullIntroductionReader) GetPulseNumber ¶
func (*FullIntroductionReader) GetReference ¶
func (r *FullIntroductionReader) GetReference() reference.Global
func (*FullIntroductionReader) GetSpecialRoles ¶
func (r *FullIntroductionReader) GetSpecialRoles() member.SpecialRole
func (*FullIntroductionReader) GetStartPower ¶
func (r *FullIntroductionReader) GetStartPower() member.Power
func (*FullIntroductionReader) GetStaticNodeID ¶
func (r *FullIntroductionReader) GetStaticNodeID() node.ShortNodeID
type GenericClaim ¶
type GenericClaim struct { // ByteSize>=2 ClaimHeader Payload []byte }
func NewGenericClaim ¶
func NewGenericClaim(payload []byte) GenericClaim
func (*GenericClaim) SerializeTo ¶
func (c *GenericClaim) SerializeTo(ctx SerializeContext, writer io.Writer) error
type GlobulaConsensusPacketBody ¶
type GlobulaConsensusPacketBody struct { // Phases 0-2 // - Phase0 is not sent to joiners and suspects, and PulsarPacket field must not be sent by joiners CurrentRank member.Rank `insolar-transport:"Packet=0"` // ByteSize=4 PulsarPacket EmbeddedPulsarData `insolar-transport:"Packet=0,1;optional=PacketFlags[0]"` // ByteSize>=124 Announcement MembershipAnnouncement `insolar-transport:"Packet=1,2"` // ByteSize= (JOINER) 5, (MEMBER) 201, 205 (MEMBER+JOINER) 196, 198, 208 // This field can be included by sender who has introduced a joiner to facilitate joining process, and contains full intro data of the joiner // This field is not mandatory and can be omitted, e.g. when network is stable or some space is required for claims JoinerExt NodeExtendedIntro `insolar-transport:"Packet=1;optional=PacketFlags[3]"` /* FullSelfIntro MUST be included when any of the following are true 1. sender or receiver is a joiner 2. sender or receiver is suspect and the other node was joined after this node became suspect */ BriefSelfIntro NodeBriefIntro `insolar-transport:"Packet= 2;optional=PacketFlags[1:2]=1"` // ByteSize= 135, 137, 147 FullSelfIntro NodeFullIntro `insolar-transport:"Packet=1,2;optional=PacketFlags[1:2]=2,3"` // ByteSize>= 221, 223, 233 CloudIntro CloudIntro `insolar-transport:"Packet=1,2;optional=PacketFlags[1:2]=2,3"` // ByteSize= 128 JoinerSecret longbits.Bits512 `insolar-transport:"Packet=1,2;optional=PacketFlags[1:2]=3"` // ByteSize= 64 Neighbourhood Neighbourhood `insolar-transport:"Packet=2"` // ByteSize= 1 + N * (205 .. 220) Vectors NodeVectors `insolar-transport:"Packet=3"` // ByteSize=133..599 Claims ClaimList `insolar-transport:"Packet=1,3"` // ByteSize= 1 + ... }
func (*GlobulaConsensusPacketBody) DeserializeFrom ¶
func (b *GlobulaConsensusPacketBody) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*GlobulaConsensusPacketBody) SerializeTo ¶
func (b *GlobulaConsensusPacketBody) SerializeTo(ctx SerializeContext, writer io.Writer) error
func (*GlobulaConsensusPacketBody) String ¶
func (b *GlobulaConsensusPacketBody) String(ctx PacketContext) string
type GlobulaStateVector ¶
type GlobulaStateVector struct { // ByteSize=132 ExpectedRank member.Rank // ByteSize=4 VectorHash longbits.Bits512 // ByteSize=64 SignedGlobulaStateHash longbits.Bits512 // ByteSize=64 }
func (*GlobulaStateVector) DeserializeFrom ¶
func (gsv *GlobulaStateVector) DeserializeFrom(_ DeserializeContext, reader io.Reader) error
func (*GlobulaStateVector) SerializeTo ¶
func (gsv *GlobulaStateVector) SerializeTo(_ SerializeContext, writer io.Writer) error
func (GlobulaStateVector) String ¶
func (gsv GlobulaStateVector) String() string
type Header ¶
type Header struct { /* Functions of TargetID, SourceID and RelayId depends on ProtocolType */ ReceiverID uint32 // NB! MUST for Signature calculation must be considered as 0, actual value can be different ProtocolAndPacketType uint8 `insolar-transport:"[0:3]=header:Packet;[4:7]=header:Protocol"` // [00-03]PacketType [04-07]ProtocolType PacketFlags uint8 `insolar-transport:"[0]=IsRelayRestricted;[1]=IsBodyEncrypted;[2:]=flags:PacketFlags"` HeaderAndPayloadLength uint16 // [00-13] ByteLength of Payload, [14-15] reserved = 0 SourceID uint32 // may differ from actual sender when relay is in use, MUST NOT =0 TargetID uint32 // indicates final destination, if =0 then there is no relay allowed by sender and receiver MUST decline a packet if actual sender != source }
ByteSize=16
func (*Header) DeserializeFrom ¶
func (h *Header) DeserializeFrom(_ DeserializeContext, reader io.Reader) error
func (*Header) GetFlagRangeInt ¶
func (*Header) GetPacketType ¶
func (h *Header) GetPacketType() phases.PacketType
func (*Header) GetProtocolType ¶
func (h *Header) GetProtocolType() ProtocolType
func (*Header) GetSourceID ¶
func (h *Header) GetSourceID() node.ShortNodeID
func (*Header) IsBodyEncrypted ¶
func (*Header) IsRelayRestricted ¶
func (*Header) SerializeTo ¶
func (h *Header) SerializeTo(_ SerializeContext, writer io.Writer) error
type JoinAnnouncement ¶
type JoinAnnouncement struct { // ByteSize= 135, 137, 147 NodeBriefIntro }
type JoinerAnnouncementReader ¶
type JoinerAnnouncementReader struct { MemberPacketReader // contains filtered or unexported fields }
func (*JoinerAnnouncementReader) GetBriefIntroduction ¶
func (r *JoinerAnnouncementReader) GetBriefIntroduction() transport.BriefIntroductionReader
func (*JoinerAnnouncementReader) GetFullIntroduction ¶
func (r *JoinerAnnouncementReader) GetFullIntroduction() transport.FullIntroductionReader
func (*JoinerAnnouncementReader) GetJoinerIntroducedByID ¶
func (r *JoinerAnnouncementReader) GetJoinerIntroducedByID() node.ShortNodeID
func (*JoinerAnnouncementReader) GetPulseNumber ¶
func (*JoinerAnnouncementReader) HasFullIntro ¶
func (r *JoinerAnnouncementReader) HasFullIntro() bool
type LeaveAnnouncement ¶
type LeaveAnnouncement struct { // ByteSize = 4 LeaveReason uint32 }
func (*LeaveAnnouncement) DeserializeFrom ¶
func (la *LeaveAnnouncement) DeserializeFrom(_ DeserializeContext, reader io.Reader) error
func (*LeaveAnnouncement) SerializeTo ¶
func (la *LeaveAnnouncement) SerializeTo(_ SerializeContext, writer io.Writer) error
type MemberPacketReader ¶
type MemberPacketReader struct { PacketParser // contains filtered or unexported fields }
func (*MemberPacketReader) AsPhase0Packet ¶
func (r *MemberPacketReader) AsPhase0Packet() transport.Phase0PacketReader
func (*MemberPacketReader) AsPhase1Packet ¶
func (r *MemberPacketReader) AsPhase1Packet() transport.Phase1PacketReader
func (*MemberPacketReader) AsPhase2Packet ¶
func (r *MemberPacketReader) AsPhase2Packet() transport.Phase2PacketReader
func (*MemberPacketReader) AsPhase3Packet ¶
func (r *MemberPacketReader) AsPhase3Packet() transport.Phase3PacketReader
func (*MemberPacketReader) GetPulseNumber ¶
type MembershipAnnouncement ¶
type MembershipAnnouncement struct { /* This field MUST be excluded from the packet, but considered for signature calculation. Value of this field equals SourceID */ ShortID node.ShortNodeID `insolar-transport:"ignore=send"` // ByteSize = 0 CurrentRank member.Rank // ByteSize=4 RequestedPower member.Power // ByteSize=1 /* For non-joiner ONLY */ Member NodeAnnouncement `insolar-transport:"optional=CurrentRank!=0"` // ByteSize = 132, 136, 267, 269, 279 AnnounceSignature longbits.Bits512 `insolar-transport:"optional=CurrentRank!=0"` // ByteSize = 64 }
func (*MembershipAnnouncement) DeserializeFrom ¶
func (ma *MembershipAnnouncement) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*MembershipAnnouncement) SerializeTo ¶
func (ma *MembershipAnnouncement) SerializeTo(ctx SerializeContext, writer io.Writer) error
func (MembershipAnnouncement) String ¶
func (ma MembershipAnnouncement) String() string
type MembershipAnnouncementReader ¶
type MembershipAnnouncementReader struct {
MemberPacketReader
}
func (*MembershipAnnouncementReader) GetAnnouncementSignature ¶
func (r *MembershipAnnouncementReader) GetAnnouncementSignature() proofs.MemberAnnouncementSignature
func (*MembershipAnnouncementReader) GetJoinerAnnouncement ¶
func (r *MembershipAnnouncementReader) GetJoinerAnnouncement() transport.JoinerAnnouncementReader
func (*MembershipAnnouncementReader) GetJoinerID ¶
func (r *MembershipAnnouncementReader) GetJoinerID() node.ShortNodeID
func (*MembershipAnnouncementReader) GetLeaveReason ¶
func (r *MembershipAnnouncementReader) GetLeaveReason() uint32
func (*MembershipAnnouncementReader) GetNodeID ¶
func (r *MembershipAnnouncementReader) GetNodeID() node.ShortNodeID
func (*MembershipAnnouncementReader) GetNodeRank ¶
func (r *MembershipAnnouncementReader) GetNodeRank() member.Rank
func (*MembershipAnnouncementReader) GetNodeStateHashEvidence ¶
func (r *MembershipAnnouncementReader) GetNodeStateHashEvidence() proofs.NodeStateHashEvidence
func (*MembershipAnnouncementReader) GetPulseNumber ¶
func (*MembershipAnnouncementReader) GetRequestedPower ¶
func (r *MembershipAnnouncementReader) GetRequestedPower() member.Power
func (*MembershipAnnouncementReader) IsLeaving ¶
func (r *MembershipAnnouncementReader) IsLeaving() bool
type NeighbourAnnouncement ¶
type NeighbourAnnouncement struct { // ByteSize(JOINER) = 73 + (135, 137, 147) = 208, 210, 220 // ByteSize(MEMBER) = 73 + (132, 136) = 205, 209 NeighbourNodeID node.ShortNodeID // ByteSize=4 // !=0 CurrentRank member.Rank // ByteSize=4 RequestedPower member.Power // ByteSize=1 /* As joiner has no state before joining, its announcement and relevant signature are considered equal to NodeBriefIntro and related signature, and CurrentRank of joiner will always be ZERO, as joiner has no index/nodeCount/power. Fields "Joiner" and "JoinerIntroducedBy" MUST BE OMITTED when this joiner is introduced by the sending node */ // TODO merge "Joiner" and "JoinerIntroducedBy" fields into NeighbourJoinerAnnouncement Joiner JoinAnnouncement `insolar-transport:"optional=CurrentRank==0"` // ByteSize = 135, 137, 147 JoinerIntroducedBy node.ShortNodeID `insolar-transport:"optional=CurrentRank==0"` /* For non-joiner */ Member NodeAnnouncement `insolar-transport:"optional=CurrentRank!=0"` // ByteSize = 132, 136 /* AnnounceSignature is copied from the original Phase1 */ AnnounceSignature longbits.Bits512 // ByteSize = 64 }
func (*NeighbourAnnouncement) DeserializeFrom ¶
func (na *NeighbourAnnouncement) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*NeighbourAnnouncement) SerializeTo ¶
func (na *NeighbourAnnouncement) SerializeTo(ctx SerializeContext, writer io.Writer) error
func (NeighbourAnnouncement) String ¶
func (na NeighbourAnnouncement) String() string
type NeighbourAnnouncementReader ¶
type NeighbourAnnouncementReader struct { MemberPacketReader // contains filtered or unexported fields }
func (*NeighbourAnnouncementReader) GetAnnouncementSignature ¶
func (r *NeighbourAnnouncementReader) GetAnnouncementSignature() proofs.MemberAnnouncementSignature
func (*NeighbourAnnouncementReader) GetJoinerAnnouncement ¶
func (r *NeighbourAnnouncementReader) GetJoinerAnnouncement() transport.JoinerAnnouncementReader
func (*NeighbourAnnouncementReader) GetJoinerID ¶
func (r *NeighbourAnnouncementReader) GetJoinerID() node.ShortNodeID
func (*NeighbourAnnouncementReader) GetLeaveReason ¶
func (r *NeighbourAnnouncementReader) GetLeaveReason() uint32
func (*NeighbourAnnouncementReader) GetNodeID ¶
func (r *NeighbourAnnouncementReader) GetNodeID() node.ShortNodeID
func (*NeighbourAnnouncementReader) GetNodeRank ¶
func (r *NeighbourAnnouncementReader) GetNodeRank() member.Rank
func (*NeighbourAnnouncementReader) GetNodeStateHashEvidence ¶
func (r *NeighbourAnnouncementReader) GetNodeStateHashEvidence() proofs.NodeStateHashEvidence
func (*NeighbourAnnouncementReader) GetPulseNumber ¶
func (*NeighbourAnnouncementReader) GetRequestedPower ¶
func (r *NeighbourAnnouncementReader) GetRequestedPower() member.Power
func (*NeighbourAnnouncementReader) IsLeaving ¶
func (r *NeighbourAnnouncementReader) IsLeaving() bool
type Neighbourhood ¶
type Neighbourhood struct { // ByteSize= 1 + N * (205 .. 220) NeighbourCount uint8 FraudFlags []uint8 Neighbours []NeighbourAnnouncement }
func (*Neighbourhood) DeserializeFrom ¶
func (n *Neighbourhood) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*Neighbourhood) SerializeTo ¶
func (n *Neighbourhood) SerializeTo(ctx SerializeContext, writer io.Writer) error
func (Neighbourhood) String ¶
func (n Neighbourhood) String() string
type NodeAnnouncement ¶
type NodeAnnouncement struct { NodeState CompactGlobulaNodeState // ByteSize=128 AnnounceID node.ShortNodeID // ByteSize=4 // =0 - no announcement, =self - is leaver, else has joiner /* 1. When is in MembershipAnnouncement "Leaver" is present when AnnounceID = Header.SourceID (sender is leaving) 2. When is in NeighbourAnnouncement "Leaver" is present when AnnounceID = NeighbourNodeID (neighbour is leaving) */ Leaver LeaveAnnouncement `insolar-transport:"optional"` // ByteSize = 4 /* 1. "Joiner" is NEVER present when "Leaver" is present 2. when AnnounceID != 0 (sender/neighbour has introduced a joiner with AnnounceID) a. "Joiner" is present when is in MembershipAnnouncement b. "Joiner" is NEVER present when is in NeighbourAnnouncement */ Joiner JoinAnnouncement `insolar-transport:"optional"` // ByteSize = 135, 137, 147 }
func (*NodeAnnouncement) DeserializeFrom ¶
func (na *NodeAnnouncement) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*NodeAnnouncement) SerializeTo ¶
func (na *NodeAnnouncement) SerializeTo(ctx SerializeContext, writer io.Writer) error
func (NodeAnnouncement) String ¶
func (na NodeAnnouncement) String() string
type NodeAppearanceBitset ¶
type NodeAppearanceBitset struct { // ByteSize=1..335 FlagsAndLoLength uint8 // [00-05] LoByteLength, [06] Compressed, [07] HasHiLength (to be compatible with Protobuf VarInt) HiLength uint8 // [00-06] HiByteLength, [07] MUST = 0 (to be compatible with Protobuf VarInt) Bytes []byte }
func (*NodeAppearanceBitset) DeserializeFrom ¶
func (nab *NodeAppearanceBitset) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*NodeAppearanceBitset) GetBitset ¶
func (nab *NodeAppearanceBitset) GetBitset() member.StateBitset
func (*NodeAppearanceBitset) SerializeTo ¶
func (nab *NodeAppearanceBitset) SerializeTo(ctx SerializeContext, writer io.Writer) error
func (*NodeAppearanceBitset) SetBitset ¶
func (nab *NodeAppearanceBitset) SetBitset(bitset member.StateBitset)
type NodeBriefIntro ¶
type NodeBriefIntro struct { /* This field MUST be excluded from the packet, but considered for signature calculation. Value of this field equals SourceID or AnnounceID. */ ShortID node.ShortNodeID `insolar-transport:"ignore=send"` // ByteSize = 0 PrimaryRoleAndFlags uint8 `insolar-transport:"[0:5]=header:PrimaryRole;[6:7]=header:AddrMode"` // AddrMode =0 reserved, =1 Relay, =2 IPv4 =3 IPv6 SpecialRoles member.SpecialRole StartPower member.Power // 4 | 6 | 18 bytes // InboundRelayID common.ShortNodeID `insolar-transport:"AddrMode=2"` // BasePort uint16 `insolar-transport:"AddrMode=0,1"` // PrimaryIPv4 uint32 `insolar-transport:"AddrMode=0"` // PrimaryIPv6 [4]uint32 `insolar-transport:"AddrMode=1"` Endpoint [18]byte // 128 bytes NodePK longbits.Bits512 // works as a unique node identity JoinerData []byte `insolar-transport:"ignore=send"` // ByteSize = 0 JoinerSignature longbits.Bits512 // ByteSize=64 }
func (*NodeBriefIntro) DeserializeFrom ¶
func (bi *NodeBriefIntro) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*NodeBriefIntro) GetAddrMode ¶
func (bi *NodeBriefIntro) GetAddrMode() endpoints.NodeEndpointType
func (*NodeBriefIntro) GetPrimaryRole ¶
func (bi *NodeBriefIntro) GetPrimaryRole() member.PrimaryRole
func (*NodeBriefIntro) SerializeTo ¶
func (bi *NodeBriefIntro) SerializeTo(ctx SerializeContext, writer io.Writer) error
func (*NodeBriefIntro) SetAddrMode ¶
func (bi *NodeBriefIntro) SetAddrMode(addrMode endpoints.NodeEndpointType)
func (*NodeBriefIntro) SetPrimaryRole ¶
func (bi *NodeBriefIntro) SetPrimaryRole(primaryRole member.PrimaryRole)
type NodeExtendedIntro ¶
type NodeExtendedIntro struct { // ByteSize>=86 IssuedAtPulse pulse.Number // =0 when a node was connected during zeronet IssuedAtTime uint64 PowerLevels member.PowerSet // ByteSize=4 EndpointLen uint8 ExtraEndpoints []uint16 ProofLen uint8 NodeRefProof []longbits.Bits512 DiscoveryIssuerNodeID node.ShortNodeID IssuerSignature longbits.Bits512 }
func (*NodeExtendedIntro) DeserializeFrom ¶
func (ei *NodeExtendedIntro) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*NodeExtendedIntro) SerializeTo ¶
func (ei *NodeExtendedIntro) SerializeTo(ctx SerializeContext, writer io.Writer) error
type NodeFullIntro ¶
type NodeFullIntro struct { NodeBriefIntro // ByteSize= 135, 137, 147 NodeExtendedIntro // ByteSize>=86 }
func (*NodeFullIntro) DeserializeFrom ¶
func (fi *NodeFullIntro) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*NodeFullIntro) SerializeTo ¶
func (fi *NodeFullIntro) SerializeTo(ctx SerializeContext, writer io.Writer) error
type NodeVectors ¶
type NodeVectors struct { // ByteSize=133..599 /* GlobulaNodeBitset is a 5-state bitset, each node has a state at the same index as it was given in the current rank. Node have following states: 0 - z-value (same as missing value) Trusted node 1 - Doubted node 2 - 3 - Fraud node 4 - Missing node */ StateVectorMask NodeAppearanceBitset // ByteSize=1..335 MainStateVector GlobulaStateVector // ByteSize=132 AdditionalStateVectors []GlobulaStateVector `insolar-transport:"count=PacketFlags[1:2]"` // ByteSize=count * 132 }
func (*NodeVectors) DeserializeFrom ¶
func (nv *NodeVectors) DeserializeFrom(ctx DeserializeContext, reader io.Reader) error
func (*NodeVectors) SerializeTo ¶
func (nv *NodeVectors) SerializeTo(ctx SerializeContext, writer io.Writer) error
func (NodeVectors) String ¶
func (nv NodeVectors) String() string
type Packet ¶
type Packet struct { Header Header `insolar-transport:"Protocol=0x01;Packet=0-4"` // ByteSize=16 PulseNumber pulse.Number `insolar-transport:"[30-31]=0"` // [30-31] MUST ==0, ByteSize=4 EncryptableBody PacketBody EncryptionData []byte PacketSignature longbits.Bits512 `insolar-transport:"generate=signature"` // ByteSize=64 }
func (*Packet) DeserializeFrom ¶
func (*Packet) SerializeTo ¶
type PacketBody ¶
type PacketBody interface { ContextSerializerTo ContextDeserializerFrom String(ctx PacketContext) string }
type PacketBuilder ¶
type PacketBuilder struct {
// contains filtered or unexported fields
}
func NewPacketBuilder ¶
func NewPacketBuilder(crypto transport.CryptographyAssistant, localConfig api.LocalNodeConfiguration) *PacketBuilder
func (*PacketBuilder) GetNeighbourhoodSize ¶
func (pb *PacketBuilder) GetNeighbourhoodSize() transport.NeighbourhoodSizes
func (*PacketBuilder) PreparePhase0Packet ¶
func (pb *PacketBuilder) PreparePhase0Packet( sender *transport.NodeAnnouncementProfile, pulsarPacket proofs.OriginalPulsarPacket, options transport.PacketPrepareOptions, ) transport.PreparedPacketSender
func (*PacketBuilder) PreparePhase1Packet ¶
func (pb *PacketBuilder) PreparePhase1Packet( sender *transport.NodeAnnouncementProfile, pulsarPacket proofs.OriginalPulsarPacket, welcome *proofs.NodeWelcomePackage, options transport.PacketPrepareOptions, ) transport.PreparedPacketSender
func (*PacketBuilder) PreparePhase2Packet ¶
func (pb *PacketBuilder) PreparePhase2Packet( sender *transport.NodeAnnouncementProfile, welcome *proofs.NodeWelcomePackage, neighbourhood []transport.MembershipAnnouncementReader, options transport.PacketPrepareOptions, ) transport.PreparedPacketSender
func (*PacketBuilder) PreparePhase3Packet ¶
func (pb *PacketBuilder) PreparePhase3Packet( sender *transport.NodeAnnouncementProfile, vectors statevector.Vector, options transport.PacketPrepareOptions, ) transport.PreparedPacketSender
type PacketContext ¶
type PacketContext interface { PacketHeaderAccessor context.Context InContext(ctx FieldContext) bool SetInContext(ctx FieldContext) GetNeighbourNodeID() node.ShortNodeID SetNeighbourNodeID(nodeID node.ShortNodeID) GetAnnouncedJoinerNodeID() node.ShortNodeID SetAnnouncedJoinerNodeID(nodeID node.ShortNodeID) }
type PacketHeaderAccessor ¶
type PacketHeaderAccessor interface { GetProtocolType() ProtocolType GetPacketType() phases.PacketType GetSourceID() node.ShortNodeID HasFlag(flag Flag) bool GetFlagRangeInt(from, to uint8) uint8 IsRelayRestricted() bool IsBodyEncrypted() bool }
type PacketHeaderModifier ¶
type PacketParser ¶
type PacketParser struct {
// contains filtered or unexported fields
}
func (*PacketParser) GetMemberPacket ¶
func (p *PacketParser) GetMemberPacket() transport.MemberPacketReader
func (*PacketParser) GetPacketSignature ¶
func (p *PacketParser) GetPacketSignature() cryptkit.SignedDigest
func (*PacketParser) GetPacketType ¶
func (p *PacketParser) GetPacketType() phases.PacketType
func (*PacketParser) GetPulseNumber ¶
func (*PacketParser) GetPulsePacket ¶
func (p *PacketParser) GetPulsePacket() transport.PulsePacketReader
func (*PacketParser) GetReceiverID ¶
func (p *PacketParser) GetReceiverID() node.ShortNodeID
func (*PacketParser) GetSourceID ¶
func (p *PacketParser) GetSourceID() node.ShortNodeID
func (*PacketParser) GetTargetID ¶
func (p *PacketParser) GetTargetID() node.ShortNodeID
func (*PacketParser) IsRelayForbidden ¶
func (p *PacketParser) IsRelayForbidden() bool
func (*PacketParser) ParsePacketBody ¶
func (p *PacketParser) ParsePacketBody() (transport.PacketParser, error)
func (PacketParser) String ¶
func (p PacketParser) String() string
type PacketParserFactory ¶
type PacketParserFactory struct {
// contains filtered or unexported fields
}
func NewPacketParserFactory ¶
func NewPacketParserFactory( digester cryptkit.DataDigester, signMethod cryptkit.SigningMethod, keyProcessor cryptography.KeyProcessor, ) *PacketParserFactory
func (*PacketParserFactory) ParsePacket ¶
func (f *PacketParserFactory) ParsePacket(ctx context.Context, reader io.Reader) (transport.PacketParser, error)
type Phase0PacketReader ¶
type Phase0PacketReader struct { MemberPacketReader EmbeddedPulseReader }
func (*Phase0PacketReader) GetNodeRank ¶
func (r *Phase0PacketReader) GetNodeRank() member.Rank
func (*Phase0PacketReader) GetPulseNumber ¶
type Phase1PacketReader ¶
type Phase1PacketReader struct { MemberPacketReader ExtendedIntroReader EmbeddedPulseReader }
func (*Phase1PacketReader) GetAnnouncementReader ¶
func (r *Phase1PacketReader) GetAnnouncementReader() transport.MembershipAnnouncementReader
func (*Phase1PacketReader) GetPulseNumber ¶
type Phase2PacketReader ¶
type Phase2PacketReader struct { MemberPacketReader ExtendedIntroReader }
func (*Phase2PacketReader) GetAnnouncementReader ¶
func (r *Phase2PacketReader) GetAnnouncementReader() transport.MembershipAnnouncementReader
func (*Phase2PacketReader) GetBriefIntroduction ¶
func (r *Phase2PacketReader) GetBriefIntroduction() transport.BriefIntroductionReader
func (*Phase2PacketReader) GetNeighbourhood ¶
func (r *Phase2PacketReader) GetNeighbourhood() []transport.MembershipAnnouncementReader
func (*Phase2PacketReader) GetPulseNumber ¶
type Phase3PacketReader ¶
type Phase3PacketReader struct {
MemberPacketReader
}
func (*Phase3PacketReader) GetBitset ¶
func (r *Phase3PacketReader) GetBitset() member.StateBitset
func (*Phase3PacketReader) GetDoubtedExpectedRank ¶
func (r *Phase3PacketReader) GetDoubtedExpectedRank() member.Rank
func (*Phase3PacketReader) GetDoubtedGlobulaAnnouncementHash ¶
func (r *Phase3PacketReader) GetDoubtedGlobulaAnnouncementHash() proofs.GlobulaAnnouncementHash
func (*Phase3PacketReader) GetDoubtedGlobulaStateSignature ¶
func (r *Phase3PacketReader) GetDoubtedGlobulaStateSignature() proofs.GlobulaStateSignature
func (*Phase3PacketReader) GetPulseNumber ¶
func (*Phase3PacketReader) GetTrustedExpectedRank ¶
func (r *Phase3PacketReader) GetTrustedExpectedRank() member.Rank
func (*Phase3PacketReader) GetTrustedGlobulaAnnouncementHash ¶
func (r *Phase3PacketReader) GetTrustedGlobulaAnnouncementHash() proofs.GlobulaAnnouncementHash
func (*Phase3PacketReader) GetTrustedGlobulaStateSignature ¶
func (r *Phase3PacketReader) GetTrustedGlobulaStateSignature() proofs.GlobulaStateSignature
type PreparedPacketSender ¶
type PreparedPacketSender struct {
// contains filtered or unexported fields
}
func (*PreparedPacketSender) Copy ¶
func (p *PreparedPacketSender) Copy() *PreparedPacketSender
func (*PreparedPacketSender) SendTo ¶
func (p *PreparedPacketSender) SendTo( ctx context.Context, target transport.TargetProfile, sendOptions transport.PacketSendOptions, sender transport.PacketSender, )
func (*PreparedPacketSender) SendToMany ¶
func (p *PreparedPacketSender) SendToMany( ctx context.Context, targetCount int, sender transport.PacketSender, filter transport.ProfileFilter, )
type ProtocolType ¶
type ProtocolType uint8
func (ProtocolType) NewBody ¶
func (pt ProtocolType) NewBody() PacketBody
type PulsarPacketBody ¶
type PulsarPacketBody struct { // ByteSize>=108 PulseNumber pulse.Number `insolar-transport:"ignore=send"` PulseDataExt pulse.DataExt // ByteSize=44 PulsarConsensusProofs []byte // variable lengths >=0 }
func (*PulsarPacketBody) DeserializeFrom ¶
func (b *PulsarPacketBody) DeserializeFrom(_ DeserializeContext, reader io.Reader) error
func (*PulsarPacketBody) SerializeTo ¶
func (b *PulsarPacketBody) SerializeTo(_ SerializeContext, writer io.Writer) error
func (*PulsarPacketBody) String ¶
func (b *PulsarPacketBody) String(ctx PacketContext) string
type SerializeContext ¶
type SerializeContext interface { PacketHeaderModifier PacketContext }
type SerializerTo ¶
type SerializerTo interface {
SerializeTo(ctx context.Context, writer io.Writer, digester cryptkit.DataDigester, signer cryptkit.DigestSigner) (int64, error)
}
Source Files ¶
Click to show internal directories.
Click to hide internal directories.