gossip

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jul 11, 2017 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