gossip

package
v0.0.0-...-c5686b1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 12, 2020 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package gossip is a generated protocol buffer package.

It is generated from these files:

gossip/message.proto

It has these top-level messages:

Envelope
SecretEnvelope
Secret
GossipMessage
StateInfo
StateInfoSnapshot
StateInfoPullRequest
ConnEstablish
PeerIdentity
DataRequest
GossipHello
DataUpdate
DataDigest
DataMessage
Payload
AliveMessage
LeadershipMessage
PeerTime
MembershipRequest
MembershipResponse
Member
Empty
RemoteStateRequest
RemoteStateResponse

Index

Constants

This section is empty.

Variables

View Source
var GossipMessage_Tag_name = map[int32]string{
	0: "UNDEFINED",
	1: "EMPTY",
	2: "ORG_ONLY",
	3: "CHAN_ONLY",
	4: "CHAN_AND_ORG",
	5: "CHAN_OR_ORG",
}
View Source
var GossipMessage_Tag_value = map[string]int32{
	"UNDEFINED":    0,
	"EMPTY":        1,
	"ORG_ONLY":     2,
	"CHAN_ONLY":    3,
	"CHAN_AND_ORG": 4,
	"CHAN_OR_ORG":  5,
}
View Source
var PullMsgType_name = map[int32]string{
	0: "UNDEFINED",
	1: "BLOCK_MSG",
	2: "IDENTITY_MSG",
}
View Source
var PullMsgType_value = map[string]int32{
	"UNDEFINED":    0,
	"BLOCK_MSG":    1,
	"IDENTITY_MSG": 2,
}

Functions

func NewGossipMessageComparator

func NewGossipMessageComparator(dataBlockStorageSize int) common.MessageReplacingPolicy

NewGossipMessageComparator creates a MessageReplacingPolicy given a maximum number of blocks to hold

func RegisterGossipServer

func RegisterGossipServer(s *grpc.Server, srv GossipServer)

Types

type AliveMessage

type AliveMessage struct {
	Membership *Member   `protobuf:"bytes,1,opt,name=membership" json:"membership,omitempty"`
	Timestamp  *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"`
	Identity   []byte    `protobuf:"bytes,4,opt,name=identity,proto3" json:"identity,omitempty"`
}

AliveMessage is sent to inform remote peers of a peer's existence and activity

func (*AliveMessage) Descriptor

func (*AliveMessage) Descriptor() ([]byte, []int)

func (*AliveMessage) GetIdentity

func (m *AliveMessage) GetIdentity() []byte

func (*AliveMessage) GetMembership

func (m *AliveMessage) GetMembership() *Member

func (*AliveMessage) GetTimestamp

func (m *AliveMessage) GetTimestamp() *PeerTime

func (*AliveMessage) ProtoMessage

func (*AliveMessage) ProtoMessage()

func (*AliveMessage) Reset

func (m *AliveMessage) Reset()

func (*AliveMessage) String

func (m *AliveMessage) String() string

type AuthInfo

type AuthInfo struct {
	SignedData []byte
	Signature  []byte
}

AuthInfo represents the authentication data that was provided by the remote peer at the connection time

type ConnEstablish

type ConnEstablish struct {
	PkiId       []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"`
	Identity    []byte `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"`
	TlsCertHash []byte `protobuf:"bytes,3,opt,name=tls_cert_hash,json=tlsCertHash,proto3" json:"tls_cert_hash,omitempty"`
}

ConnEstablish is the message used for the gossip handshake Whenever a peer connects to another peer, it handshakes with it by sending this message that proves its identity

func (*ConnEstablish) Descriptor

func (*ConnEstablish) Descriptor() ([]byte, []int)

func (*ConnEstablish) GetIdentity

func (m *ConnEstablish) GetIdentity() []byte

func (*ConnEstablish) GetPkiId

func (m *ConnEstablish) GetPkiId() []byte

func (*ConnEstablish) GetTlsCertHash

func (m *ConnEstablish) GetTlsCertHash() []byte

func (*ConnEstablish) ProtoMessage

func (*ConnEstablish) ProtoMessage()

func (*ConnEstablish) Reset

func (m *ConnEstablish) Reset()

func (*ConnEstablish) String

func (m *ConnEstablish) String() string

type ConnectionInfo

type ConnectionInfo struct {
	ID       common.PKIidType
	Auth     *AuthInfo
	Identity api.PeerIdentityType
	Endpoint string
}

ConnectionInfo represents information about the remote peer that sent a certain ReceivedMessage

func (*ConnectionInfo) IsAuthenticated

func (c *ConnectionInfo) IsAuthenticated() bool

IsAuthenticated returns whether the connection to the remote peer was authenticated when the handshake took place

func (*ConnectionInfo) String

func (c *ConnectionInfo) String() string

String returns a string representation of this ConnectionInfo

type DataDigest

type DataDigest struct {
	Nonce   uint64      `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"`
	Digests []string    `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"`
	MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"`
}

DataDigest is the message sent from the receiver peer to the initator peer and contains the data items it has

func (*DataDigest) Descriptor

func (*DataDigest) Descriptor() ([]byte, []int)

func (*DataDigest) GetDigests

func (m *DataDigest) GetDigests() []string

func (*DataDigest) GetMsgType

func (m *DataDigest) GetMsgType() PullMsgType

func (*DataDigest) GetNonce

func (m *DataDigest) GetNonce() uint64

func (*DataDigest) ProtoMessage

func (*DataDigest) ProtoMessage()

func (*DataDigest) Reset

func (m *DataDigest) Reset()

func (*DataDigest) String

func (m *DataDigest) String() string

type DataMessage

type DataMessage struct {
	Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"`
}

DataMessage is the message that contains a block

func (*DataMessage) Descriptor

func (*DataMessage) Descriptor() ([]byte, []int)

func (*DataMessage) GetPayload

func (m *DataMessage) GetPayload() *Payload

func (*DataMessage) ProtoMessage

func (*DataMessage) ProtoMessage()

func (*DataMessage) Reset

func (m *DataMessage) Reset()

func (*DataMessage) String

func (m *DataMessage) String() string

type DataRequest

type DataRequest struct {
	Nonce   uint64      `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"`
	Digests []string    `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"`
	MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"`
}

DataRequest is a message used for a peer to request certain data blocks from a remote peer

func (*DataRequest) Descriptor

func (*DataRequest) Descriptor() ([]byte, []int)

func (*DataRequest) GetDigests

func (m *DataRequest) GetDigests() []string

func (*DataRequest) GetMsgType

func (m *DataRequest) GetMsgType() PullMsgType

func (*DataRequest) GetNonce

func (m *DataRequest) GetNonce() uint64

func (*DataRequest) ProtoMessage

func (*DataRequest) ProtoMessage()

func (*DataRequest) Reset

func (m *DataRequest) Reset()

func (*DataRequest) String

func (m *DataRequest) String() string

type DataUpdate

type DataUpdate struct {
	Nonce   uint64      `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"`
	Data    []*Envelope `protobuf:"bytes,2,rep,name=data" json:"data,omitempty"`
	MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"`
}

DataUpdate is the final message in the pull phase sent from the receiver to the initiator

func (*DataUpdate) Descriptor

func (*DataUpdate) Descriptor() ([]byte, []int)

func (*DataUpdate) GetData

func (m *DataUpdate) GetData() []*Envelope

func (*DataUpdate) GetMsgType

func (m *DataUpdate) GetMsgType() PullMsgType

func (*DataUpdate) GetNonce

func (m *DataUpdate) GetNonce() uint64

func (*DataUpdate) ProtoMessage

func (*DataUpdate) ProtoMessage()

func (*DataUpdate) Reset

func (m *DataUpdate) Reset()

func (*DataUpdate) String

func (m *DataUpdate) String() string

type Empty

type Empty struct {
}

Empty is used for pinging and in tests

func (*Empty) Descriptor

func (*Empty) Descriptor() ([]byte, []int)

func (*Empty) ProtoMessage

func (*Empty) ProtoMessage()

func (*Empty) Reset

func (m *Empty) Reset()

func (*Empty) String

func (m *Empty) String() string

type Envelope

type Envelope struct {
	Payload        []byte          `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
	Signature      []byte          `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
	SecretEnvelope *SecretEnvelope `protobuf:"bytes,3,opt,name=secret_envelope,json=secretEnvelope" json:"secret_envelope,omitempty"`
}

Envelope contains a marshalled GossipMessage and a signature over it. It may also contain a SecretEnvelope which is a marshalled Secret

func (*Envelope) Descriptor

func (*Envelope) Descriptor() ([]byte, []int)

func (*Envelope) GetPayload

func (m *Envelope) GetPayload() []byte

func (*Envelope) GetSecretEnvelope

func (m *Envelope) GetSecretEnvelope() *SecretEnvelope

func (*Envelope) GetSignature

func (m *Envelope) GetSignature() []byte

func (*Envelope) ProtoMessage

func (*Envelope) ProtoMessage()

func (*Envelope) Reset

func (m *Envelope) Reset()

func (*Envelope) SignSecret

func (e *Envelope) SignSecret(signer Signer, secret *Secret) error

SignSecret signs the secret payload and creates a secret envelope out of it.

func (*Envelope) String

func (m *Envelope) String() string

func (*Envelope) ToGossipMessage

func (e *Envelope) ToGossipMessage() (*SignedGossipMessage, error)

ToGossipMessage un-marshals a given envelope and creates a SignedGossipMessage out of it. Returns an error if un-marshaling fails.

type GossipClient

type GossipClient interface {
	// GossipStream is the gRPC stream used for sending and receiving messages
	GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error)
	// Ping is used to probe a remote peer's aliveness
	Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
}

func NewGossipClient

func NewGossipClient(cc *grpc.ClientConn) GossipClient

type GossipHello

type GossipHello struct {
	Nonce    uint64      `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"`
	Metadata []byte      `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
	MsgType  PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"`
}

GossipHello is the message that is used for the peer to initiate a pull round with another peer

func (*GossipHello) Descriptor

func (*GossipHello) Descriptor() ([]byte, []int)

func (*GossipHello) GetMetadata

func (m *GossipHello) GetMetadata() []byte

func (*GossipHello) GetMsgType

func (m *GossipHello) GetMsgType() PullMsgType

func (*GossipHello) GetNonce

func (m *GossipHello) GetNonce() uint64

func (*GossipHello) ProtoMessage

func (*GossipHello) ProtoMessage()

func (*GossipHello) Reset

func (m *GossipHello) Reset()

func (*GossipHello) String

func (m *GossipHello) String() string

type GossipMessage

type GossipMessage struct {
	// used mainly for testing, but will might be used in the future
	// for ensuring message delivery by acking
	Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"`
	// The channel of the message.
	// Some GossipMessages may set this to nil, because
	// they are cross-channels but some may not
	Channel []byte `protobuf:"bytes,2,opt,name=channel,proto3" json:"channel,omitempty"`
	// determines to which peers it is allowed
	// to forward the message
	Tag GossipMessage_Tag `protobuf:"varint,3,opt,name=tag,enum=gossip.GossipMessage_Tag" json:"tag,omitempty"`
	// Types that are valid to be assigned to Content:
	//	*GossipMessage_AliveMsg
	//	*GossipMessage_MemReq
	//	*GossipMessage_MemRes
	//	*GossipMessage_DataMsg
	//	*GossipMessage_Hello
	//	*GossipMessage_DataDig
	//	*GossipMessage_DataReq
	//	*GossipMessage_DataUpdate
	//	*GossipMessage_Empty
	//	*GossipMessage_Conn
	//	*GossipMessage_StateInfo
	//	*GossipMessage_StateSnapshot
	//	*GossipMessage_StateInfoPullReq
	//	*GossipMessage_StateRequest
	//	*GossipMessage_StateResponse
	//	*GossipMessage_LeadershipMsg
	//	*GossipMessage_PeerIdentity
	Content isGossipMessage_Content `protobuf_oneof:"content"`
}

GossipMessage defines the message sent in a gossip network

func (*GossipMessage) Descriptor

func (*GossipMessage) Descriptor() ([]byte, []int)

func (*GossipMessage) GetAliveMsg

func (m *GossipMessage) GetAliveMsg() *AliveMessage

func (*GossipMessage) GetChannel

func (m *GossipMessage) GetChannel() []byte

func (*GossipMessage) GetConn

func (m *GossipMessage) GetConn() *ConnEstablish

func (*GossipMessage) GetContent

func (m *GossipMessage) GetContent() isGossipMessage_Content

func (*GossipMessage) GetDataDig

func (m *GossipMessage) GetDataDig() *DataDigest

func (*GossipMessage) GetDataMsg

func (m *GossipMessage) GetDataMsg() *DataMessage

func (*GossipMessage) GetDataReq

func (m *GossipMessage) GetDataReq() *DataRequest

func (*GossipMessage) GetDataUpdate

func (m *GossipMessage) GetDataUpdate() *DataUpdate

func (*GossipMessage) GetEmpty

func (m *GossipMessage) GetEmpty() *Empty

func (*GossipMessage) GetHello

func (m *GossipMessage) GetHello() *GossipHello

func (*GossipMessage) GetLeadershipMsg

func (m *GossipMessage) GetLeadershipMsg() *LeadershipMessage

func (*GossipMessage) GetMemReq

func (m *GossipMessage) GetMemReq() *MembershipRequest

func (*GossipMessage) GetMemRes

func (m *GossipMessage) GetMemRes() *MembershipResponse

func (*GossipMessage) GetNonce

func (m *GossipMessage) GetNonce() uint64

func (*GossipMessage) GetPeerIdentity

func (m *GossipMessage) GetPeerIdentity() *PeerIdentity

func (*GossipMessage) GetPullMsgType

func (m *GossipMessage) GetPullMsgType() PullMsgType

GetPullMsgType returns the phase of the pull mechanism this GossipMessage belongs to for example: Hello, Digest, etc. If this isn't a pull message, PullMsgType_UNDEFINED is returned.

func (*GossipMessage) GetStateInfo

func (m *GossipMessage) GetStateInfo() *StateInfo

func (*GossipMessage) GetStateInfoPullReq

func (m *GossipMessage) GetStateInfoPullReq() *StateInfoPullRequest

func (*GossipMessage) GetStateRequest

func (m *GossipMessage) GetStateRequest() *RemoteStateRequest

func (*GossipMessage) GetStateResponse

func (m *GossipMessage) GetStateResponse() *RemoteStateResponse

func (*GossipMessage) GetStateSnapshot

func (m *GossipMessage) GetStateSnapshot() *StateInfoSnapshot

func (*GossipMessage) GetTag

func (m *GossipMessage) GetTag() GossipMessage_Tag

func (*GossipMessage) IsAliveMsg

func (m *GossipMessage) IsAliveMsg() bool

IsAliveMsg returns whether this GossipMessage is an AliveMessage

func (*GossipMessage) IsChannelRestricted

func (m *GossipMessage) IsChannelRestricted() bool

IsChannelRestricted returns whether this GossipMessage should be routed only in its channel

func (*GossipMessage) IsDataMsg

func (m *GossipMessage) IsDataMsg() bool

IsDataMsg returns whether this GossipMessage is a data message

func (*GossipMessage) IsDataReq

func (m *GossipMessage) IsDataReq() bool

IsDataReq returns whether this GossipMessage is a data request message

func (*GossipMessage) IsDataUpdate

func (m *GossipMessage) IsDataUpdate() bool

IsDataUpdate returns whether this GossipMessage is a data update message

func (*GossipMessage) IsDigestMsg

func (m *GossipMessage) IsDigestMsg() bool

IsDigestMsg returns whether this GossipMessage is a digest message

func (*GossipMessage) IsHelloMsg

func (m *GossipMessage) IsHelloMsg() bool

IsHelloMsg returns whether this GossipMessage is a hello message

func (*GossipMessage) IsIdentityMsg

func (m *GossipMessage) IsIdentityMsg() bool

IsIdentityMsg returns whether this GossipMessage is an identity message

func (*GossipMessage) IsLeadershipMsg

func (m *GossipMessage) IsLeadershipMsg() bool

IsLeadershipMsg returns whether this GossipMessage is a leadership (leader election) message

func (*GossipMessage) IsOrgRestricted

func (m *GossipMessage) IsOrgRestricted() bool

IsOrgRestricted returns whether this GossipMessage should be routed only inside the organization

func (*GossipMessage) IsPullMsg

func (m *GossipMessage) IsPullMsg() bool

IsPullMsg returns whether this GossipMessage is a message that belongs to the pull mechanism

func (*GossipMessage) IsRemoteStateMessage

func (m *GossipMessage) IsRemoteStateMessage() bool

IsRemoteStateMessage returns whether this GossipMessage is related to state synchronization

func (*GossipMessage) IsStateInfoMsg

func (m *GossipMessage) IsStateInfoMsg() bool

IsStateInfoMsg returns whether this GossipMessage is a stateInfo message

func (*GossipMessage) IsStateInfoPullRequestMsg

func (m *GossipMessage) IsStateInfoPullRequestMsg() bool

IsStateInfoPullRequestMsg returns whether this GossipMessage is a stateInfoPullRequest

func (*GossipMessage) IsStateInfoSnapshot

func (m *GossipMessage) IsStateInfoSnapshot() bool

IsStateInfoSnapshot returns whether this GossipMessage is a stateInfo snapshot

func (*GossipMessage) IsTagLegal

func (m *GossipMessage) IsTagLegal() error

IsTagLegal checks the GossipMessage tags and inner type and returns an error if the tag doesn't match the type.

func (*GossipMessage) NoopSign

func (m *GossipMessage) NoopSign() (*SignedGossipMessage, error)

NoopSign creates a SignedGossipMessage with a nil signature

func (*GossipMessage) ProtoMessage

func (*GossipMessage) ProtoMessage()

func (*GossipMessage) Reset

func (m *GossipMessage) Reset()

func (*GossipMessage) String

func (m *GossipMessage) String() string

func (*GossipMessage) XXX_OneofFuncs

func (*GossipMessage) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{})

XXX_OneofFuncs is for the internal use of the proto package.

type GossipMessage_AliveMsg

type GossipMessage_AliveMsg struct {
	AliveMsg *AliveMessage `protobuf:"bytes,5,opt,name=alive_msg,json=aliveMsg,oneof"`
}

type GossipMessage_Conn

type GossipMessage_Conn struct {
	Conn *ConnEstablish `protobuf:"bytes,14,opt,name=conn,oneof"`
}

type GossipMessage_DataDig

type GossipMessage_DataDig struct {
	DataDig *DataDigest `protobuf:"bytes,10,opt,name=data_dig,json=dataDig,oneof"`
}

type GossipMessage_DataMsg

type GossipMessage_DataMsg struct {
	DataMsg *DataMessage `protobuf:"bytes,8,opt,name=data_msg,json=dataMsg,oneof"`
}

type GossipMessage_DataReq

type GossipMessage_DataReq struct {
	DataReq *DataRequest `protobuf:"bytes,11,opt,name=data_req,json=dataReq,oneof"`
}

type GossipMessage_DataUpdate

type GossipMessage_DataUpdate struct {
	DataUpdate *DataUpdate `protobuf:"bytes,12,opt,name=data_update,json=dataUpdate,oneof"`
}

type GossipMessage_Empty

type GossipMessage_Empty struct {
	Empty *Empty `protobuf:"bytes,13,opt,name=empty,oneof"`
}

type GossipMessage_Hello

type GossipMessage_Hello struct {
	Hello *GossipHello `protobuf:"bytes,9,opt,name=hello,oneof"`
}

type GossipMessage_LeadershipMsg

type GossipMessage_LeadershipMsg struct {
	LeadershipMsg *LeadershipMessage `protobuf:"bytes,20,opt,name=leadership_msg,json=leadershipMsg,oneof"`
}

type GossipMessage_MemReq

type GossipMessage_MemReq struct {
	MemReq *MembershipRequest `protobuf:"bytes,6,opt,name=mem_req,json=memReq,oneof"`
}

type GossipMessage_MemRes

type GossipMessage_MemRes struct {
	MemRes *MembershipResponse `protobuf:"bytes,7,opt,name=mem_res,json=memRes,oneof"`
}

type GossipMessage_PeerIdentity

type GossipMessage_PeerIdentity struct {
	PeerIdentity *PeerIdentity `protobuf:"bytes,21,opt,name=peer_identity,json=peerIdentity,oneof"`
}

type GossipMessage_StateInfo

type GossipMessage_StateInfo struct {
	StateInfo *StateInfo `protobuf:"bytes,15,opt,name=state_info,json=stateInfo,oneof"`
}

type GossipMessage_StateInfoPullReq

type GossipMessage_StateInfoPullReq struct {
	StateInfoPullReq *StateInfoPullRequest `protobuf:"bytes,17,opt,name=state_info_pull_req,json=stateInfoPullReq,oneof"`
}

type GossipMessage_StateRequest

type GossipMessage_StateRequest struct {
	StateRequest *RemoteStateRequest `protobuf:"bytes,18,opt,name=state_request,json=stateRequest,oneof"`
}

type GossipMessage_StateResponse

type GossipMessage_StateResponse struct {
	StateResponse *RemoteStateResponse `protobuf:"bytes,19,opt,name=state_response,json=stateResponse,oneof"`
}

type GossipMessage_StateSnapshot

type GossipMessage_StateSnapshot struct {
	StateSnapshot *StateInfoSnapshot `protobuf:"bytes,16,opt,name=state_snapshot,json=stateSnapshot,oneof"`
}

type GossipMessage_Tag

type GossipMessage_Tag int32
const (
	GossipMessage_UNDEFINED    GossipMessage_Tag = 0
	GossipMessage_EMPTY        GossipMessage_Tag = 1
	GossipMessage_ORG_ONLY     GossipMessage_Tag = 2
	GossipMessage_CHAN_ONLY    GossipMessage_Tag = 3
	GossipMessage_CHAN_AND_ORG GossipMessage_Tag = 4
	GossipMessage_CHAN_OR_ORG  GossipMessage_Tag = 5
)

func (GossipMessage_Tag) EnumDescriptor

func (GossipMessage_Tag) EnumDescriptor() ([]byte, []int)

func (GossipMessage_Tag) String

func (x GossipMessage_Tag) String() string

type GossipServer

type GossipServer interface {
	// GossipStream is the gRPC stream used for sending and receiving messages
	GossipStream(Gossip_GossipStreamServer) error
	// Ping is used to probe a remote peer's aliveness
	Ping(context.Context, *Empty) (*Empty, error)
}

type Gossip_GossipStreamClient

type Gossip_GossipStreamClient interface {
	Send(*Envelope) error
	Recv() (*Envelope, error)
	grpc.ClientStream
}

type Gossip_GossipStreamServer

type Gossip_GossipStreamServer interface {
	Send(*Envelope) error
	Recv() (*Envelope, error)
	grpc.ServerStream
}

type IdentifierExtractor

type IdentifierExtractor func(*SignedGossipMessage) string

IdentifierExtractor extracts from a SignedGossipMessage an identifier

type LeadershipMessage

type LeadershipMessage struct {
	PkiId         []byte    `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"`
	Timestamp     *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"`
	IsDeclaration bool      `protobuf:"varint,3,opt,name=is_declaration,json=isDeclaration" json:"is_declaration,omitempty"`
}

Leadership Message is sent during leader election to inform remote peers about intent of peer to proclaim itself as leader

func (*LeadershipMessage) Descriptor

func (*LeadershipMessage) Descriptor() ([]byte, []int)

func (*LeadershipMessage) GetIsDeclaration

func (m *LeadershipMessage) GetIsDeclaration() bool

func (*LeadershipMessage) GetPkiId

func (m *LeadershipMessage) GetPkiId() []byte

func (*LeadershipMessage) GetTimestamp

func (m *LeadershipMessage) GetTimestamp() *PeerTime

func (*LeadershipMessage) ProtoMessage

func (*LeadershipMessage) ProtoMessage()

func (*LeadershipMessage) Reset

func (m *LeadershipMessage) Reset()

func (*LeadershipMessage) String

func (m *LeadershipMessage) String() string

type Member

type Member struct {
	Endpoint string `protobuf:"bytes,1,opt,name=endpoint" json:"endpoint,omitempty"`
	Metadata []byte `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
	PkiId    []byte `protobuf:"bytes,3,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"`
}

Member holds membership-related information about a peer

func (*Member) Descriptor

func (*Member) Descriptor() ([]byte, []int)

func (*Member) GetEndpoint

func (m *Member) GetEndpoint() string

func (*Member) GetMetadata

func (m *Member) GetMetadata() []byte

func (*Member) GetPkiId

func (m *Member) GetPkiId() []byte

func (*Member) ProtoMessage

func (*Member) ProtoMessage()

func (*Member) Reset

func (m *Member) Reset()

func (*Member) String

func (m *Member) String() string

type MembershipRequest

type MembershipRequest struct {
	SelfInformation *Envelope `protobuf:"bytes,1,opt,name=self_information,json=selfInformation" json:"self_information,omitempty"`
	Known           [][]byte  `protobuf:"bytes,2,rep,name=known,proto3" json:"known,omitempty"`
}

MembershipRequest is used to ask membership information from a remote peer

func (*MembershipRequest) Descriptor

func (*MembershipRequest) Descriptor() ([]byte, []int)

func (*MembershipRequest) GetKnown

func (m *MembershipRequest) GetKnown() [][]byte

func (*MembershipRequest) GetSelfInformation

func (m *MembershipRequest) GetSelfInformation() *Envelope

func (*MembershipRequest) ProtoMessage

func (*MembershipRequest) ProtoMessage()

func (*MembershipRequest) Reset

func (m *MembershipRequest) Reset()

func (*MembershipRequest) String

func (m *MembershipRequest) String() string

type MembershipResponse

type MembershipResponse struct {
	Alive []*Envelope `protobuf:"bytes,1,rep,name=alive" json:"alive,omitempty"`
	Dead  []*Envelope `protobuf:"bytes,2,rep,name=dead" json:"dead,omitempty"`
}

MembershipResponse is used for replying to MembershipRequests

func (*MembershipResponse) Descriptor

func (*MembershipResponse) Descriptor() ([]byte, []int)

func (*MembershipResponse) GetAlive

func (m *MembershipResponse) GetAlive() []*Envelope

func (*MembershipResponse) GetDead

func (m *MembershipResponse) GetDead() []*Envelope

func (*MembershipResponse) ProtoMessage

func (*MembershipResponse) ProtoMessage()

func (*MembershipResponse) Reset

func (m *MembershipResponse) Reset()

func (*MembershipResponse) String

func (m *MembershipResponse) String() string

type MsgConsumer

type MsgConsumer func(message *SignedGossipMessage)

MsgConsumer invokes code given a SignedGossipMessage

type Payload

type Payload struct {
	SeqNum uint64 `protobuf:"varint,1,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"`
	Data   []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
}

Payload contains a block

func (*Payload) Descriptor

func (*Payload) Descriptor() ([]byte, []int)

func (*Payload) GetData

func (m *Payload) GetData() []byte

func (*Payload) GetSeqNum

func (m *Payload) GetSeqNum() uint64

func (*Payload) ProtoMessage

func (*Payload) ProtoMessage()

func (*Payload) Reset

func (m *Payload) Reset()

func (*Payload) String

func (m *Payload) String() string

type PeerIdentity

type PeerIdentity struct {
	PkiId    []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"`
	Cert     []byte `protobuf:"bytes,2,opt,name=cert,proto3" json:"cert,omitempty"`
	Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
}

PeerIdentity defines the identity of the peer Used to make other peers learn of the identity of a certain peer

func (*PeerIdentity) Descriptor

func (*PeerIdentity) Descriptor() ([]byte, []int)

func (*PeerIdentity) GetCert

func (m *PeerIdentity) GetCert() []byte

func (*PeerIdentity) GetMetadata

func (m *PeerIdentity) GetMetadata() []byte

func (*PeerIdentity) GetPkiId

func (m *PeerIdentity) GetPkiId() []byte

func (*PeerIdentity) ProtoMessage

func (*PeerIdentity) ProtoMessage()

func (*PeerIdentity) Reset

func (m *PeerIdentity) Reset()

func (*PeerIdentity) String

func (m *PeerIdentity) String() string

type PeerTime

type PeerTime struct {
	IncNum uint64 `protobuf:"varint,1,opt,name=inc_num,json=incNum" json:"inc_num,omitempty"`
	SeqNum uint64 `protobuf:"varint,2,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"`
}

PeerTime defines the logical time of a peer's life

func (*PeerTime) Descriptor

func (*PeerTime) Descriptor() ([]byte, []int)

func (*PeerTime) GetIncNum

func (m *PeerTime) GetIncNum() uint64

func (*PeerTime) GetSeqNum

func (m *PeerTime) GetSeqNum() uint64

func (*PeerTime) ProtoMessage

func (*PeerTime) ProtoMessage()

func (*PeerTime) Reset

func (m *PeerTime) Reset()

func (*PeerTime) String

func (m *PeerTime) String() string

type PullMsgType

type PullMsgType int32
const (
	PullMsgType_UNDEFINED    PullMsgType = 0
	PullMsgType_BLOCK_MSG    PullMsgType = 1
	PullMsgType_IDENTITY_MSG PullMsgType = 2
)

func (PullMsgType) EnumDescriptor

func (PullMsgType) EnumDescriptor() ([]byte, []int)

func (PullMsgType) String

func (x PullMsgType) String() string

type ReceivedMessage

type ReceivedMessage interface {

	// Respond sends a GossipMessage to the origin from which this ReceivedMessage was sent from
	Respond(msg *GossipMessage)

	// GetGossipMessage returns the underlying GossipMessage
	GetGossipMessage() *SignedGossipMessage

	// GetSourceMessage Returns the Envelope the ReceivedMessage was
	// constructed with
	GetSourceEnvelope() *Envelope

	// GetConnectionInfo returns information about the remote peer
	// that sent the message
	GetConnectionInfo() *ConnectionInfo
}

ReceivedMessage is a GossipMessage wrapper that enables the user to send a message to the origin from which the ReceivedMessage was sent from. It also allows to know the identity of the sender, to obtain the raw bytes the GossipMessage was un-marshaled from, and the signature over these raw bytes.

type RemoteStateRequest

type RemoteStateRequest struct {
	StartSeqNum uint64 `protobuf:"varint,1,opt,name=start_seq_num,json=startSeqNum" json:"start_seq_num,omitempty"`
	EndSeqNum   uint64 `protobuf:"varint,2,opt,name=end_seq_num,json=endSeqNum" json:"end_seq_num,omitempty"`
}

RemoteStateRequest is used to ask a set of blocks from a remote peer

func (*RemoteStateRequest) Descriptor

func (*RemoteStateRequest) Descriptor() ([]byte, []int)

func (*RemoteStateRequest) GetEndSeqNum

func (m *RemoteStateRequest) GetEndSeqNum() uint64

func (*RemoteStateRequest) GetStartSeqNum

func (m *RemoteStateRequest) GetStartSeqNum() uint64

func (*RemoteStateRequest) ProtoMessage

func (*RemoteStateRequest) ProtoMessage()

func (*RemoteStateRequest) Reset

func (m *RemoteStateRequest) Reset()

func (*RemoteStateRequest) String

func (m *RemoteStateRequest) String() string

type RemoteStateResponse

type RemoteStateResponse struct {
	Payloads []*Payload `protobuf:"bytes,1,rep,name=payloads" json:"payloads,omitempty"`
}

RemoteStateResponse is used to send a set of blocks to a remote peer

func (*RemoteStateResponse) Descriptor

func (*RemoteStateResponse) Descriptor() ([]byte, []int)

func (*RemoteStateResponse) GetPayloads

func (m *RemoteStateResponse) GetPayloads() []*Payload

func (*RemoteStateResponse) ProtoMessage

func (*RemoteStateResponse) ProtoMessage()

func (*RemoteStateResponse) Reset

func (m *RemoteStateResponse) Reset()

func (*RemoteStateResponse) String

func (m *RemoteStateResponse) String() string

type Secret

type Secret struct {
	// Types that are valid to be assigned to Content:
	//	*Secret_InternalEndpoint
	Content isSecret_Content `protobuf_oneof:"content"`
}

Secret is an entity that might be omitted from an Envelope when the remote peer that is receiving the Envelope shouldn't know the secret's content.

func (*Secret) Descriptor

func (*Secret) Descriptor() ([]byte, []int)

func (*Secret) GetContent

func (m *Secret) GetContent() isSecret_Content

func (*Secret) GetInternalEndpoint

func (m *Secret) GetInternalEndpoint() string

func (*Secret) ProtoMessage

func (*Secret) ProtoMessage()

func (*Secret) Reset

func (m *Secret) Reset()

func (*Secret) String

func (m *Secret) String() string

func (*Secret) XXX_OneofFuncs

func (*Secret) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{})

XXX_OneofFuncs is for the internal use of the proto package.

type SecretEnvelope

type SecretEnvelope struct {
	Payload   []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
	Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
}

SecretEnvelope is a marshalled Secret and a signature over it. The signature should be validated by the peer that signed the Envelope the SecretEnvelope came with

func (*SecretEnvelope) Descriptor

func (*SecretEnvelope) Descriptor() ([]byte, []int)

func (*SecretEnvelope) GetPayload

func (m *SecretEnvelope) GetPayload() []byte

func (*SecretEnvelope) GetSignature

func (m *SecretEnvelope) GetSignature() []byte

func (*SecretEnvelope) InternalEndpoint

func (s *SecretEnvelope) InternalEndpoint() string

InternalEndpoint returns the internal endpoint in the secret envelope, or an empty string if a failure occurs.

func (*SecretEnvelope) ProtoMessage

func (*SecretEnvelope) ProtoMessage()

func (*SecretEnvelope) Reset

func (m *SecretEnvelope) Reset()

func (*SecretEnvelope) String

func (m *SecretEnvelope) String() string

type Secret_InternalEndpoint

type Secret_InternalEndpoint struct {
	InternalEndpoint string `protobuf:"bytes,1,opt,name=internalEndpoint,oneof"`
}

type SignedGossipMessage

type SignedGossipMessage struct {
	*Envelope
	*GossipMessage
}

SignedGossipMessage contains a GossipMessage and the Envelope from which it came from

func (*SignedGossipMessage) IsSigned

func (m *SignedGossipMessage) IsSigned() bool

IsSigned returns whether the message has a signature in the envelope.

func (*SignedGossipMessage) Sign

func (m *SignedGossipMessage) Sign(signer Signer) (*Envelope, error)

Sign signs a GossipMessage with given Signer. Returns an Envelope on success, panics on failure.

func (*SignedGossipMessage) String

func (m *SignedGossipMessage) String() string

String returns a string representation of a SignedGossipMessage

func (*SignedGossipMessage) Verify

func (m *SignedGossipMessage) Verify(peerIdentity []byte, verify Verifier) error

Verify verifies a signed GossipMessage with a given Verifier. Returns nil on success, error on failure.

type Signer

type Signer func(msg []byte) ([]byte, error)

Signer signs a message, and returns (signature, nil) on success, and nil and an error on failure.

type StateInfo

type StateInfo struct {
	Metadata  []byte    `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
	Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"`
	PkiId     []byte    `protobuf:"bytes,3,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"`
	// channel_MAC is an authentication code that proves
	// that the peer that sent this message knows
	// the name of the channel.
	Channel_MAC []byte `protobuf:"bytes,4,opt,name=channel_MAC,json=channelMAC,proto3" json:"channel_MAC,omitempty"`
}

StateInfo is used for a peer to relay its state information to other peers

func (*StateInfo) Descriptor

func (*StateInfo) Descriptor() ([]byte, []int)

func (*StateInfo) GetChannel_MAC

func (m *StateInfo) GetChannel_MAC() []byte

func (*StateInfo) GetMetadata

func (m *StateInfo) GetMetadata() []byte

func (*StateInfo) GetPkiId

func (m *StateInfo) GetPkiId() []byte

func (*StateInfo) GetTimestamp

func (m *StateInfo) GetTimestamp() *PeerTime

func (*StateInfo) ProtoMessage

func (*StateInfo) ProtoMessage()

func (*StateInfo) Reset

func (m *StateInfo) Reset()

func (*StateInfo) String

func (m *StateInfo) String() string

type StateInfoPullRequest

type StateInfoPullRequest struct {
	// channel_MAC is an authentication code that proves
	// that the peer that sent this message knows
	// the name of the channel.
	Channel_MAC []byte `protobuf:"bytes,1,opt,name=channel_MAC,json=channelMAC,proto3" json:"channel_MAC,omitempty"`
}

StateInfoPullRequest is used to fetch a StateInfoSnapshot from a remote peer

func (*StateInfoPullRequest) Descriptor

func (*StateInfoPullRequest) Descriptor() ([]byte, []int)

func (*StateInfoPullRequest) GetChannel_MAC

func (m *StateInfoPullRequest) GetChannel_MAC() []byte

func (*StateInfoPullRequest) ProtoMessage

func (*StateInfoPullRequest) ProtoMessage()

func (*StateInfoPullRequest) Reset

func (m *StateInfoPullRequest) Reset()

func (*StateInfoPullRequest) String

func (m *StateInfoPullRequest) String() string

type StateInfoSnapshot

type StateInfoSnapshot struct {
	Elements []*Envelope `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"`
}

StateInfoSnapshot is an aggregation of StateInfo messages

func (*StateInfoSnapshot) Descriptor

func (*StateInfoSnapshot) Descriptor() ([]byte, []int)

func (*StateInfoSnapshot) GetElements

func (m *StateInfoSnapshot) GetElements() []*Envelope

func (*StateInfoSnapshot) ProtoMessage

func (*StateInfoSnapshot) ProtoMessage()

func (*StateInfoSnapshot) Reset

func (m *StateInfoSnapshot) Reset()

func (*StateInfoSnapshot) String

func (m *StateInfoSnapshot) String() string

type Verifier

type Verifier func(peerIdentity []byte, signature, message []byte) error

Verifier receives a peer identity, a signature and a message and returns nil if the signature on the message could be verified using the given identity.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL