Help us shape the future of Go! Take the 2026 Go Developer Survey

p2p

package
v1.16.16 Latest Latest
Warning

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

Go to latest
Published: Sep 21, 2025 License: BSD-3-Clause Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	EngineType_name = map[int32]string{
		0: "ENGINE_TYPE_UNSPECIFIED",
		1: "ENGINE_TYPE_DAG",
		2: "ENGINE_TYPE_CHAIN",
	}
	EngineType_value = map[string]int32{
		"ENGINE_TYPE_UNSPECIFIED": 0,
		"ENGINE_TYPE_DAG":         1,
		"ENGINE_TYPE_CHAIN":       2,
	}
)

Enum value maps for EngineType.

View Source
var File_p2p_p2p_proto protoreflect.FileDescriptor

Functions

This section is empty.

Types

type Accepted

type Accepted struct {

	// Chain being responded from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Request id of the original GetAccepted request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Subset of container ids from the GetAccepted request that the sender has
	// accepted
	ContainerIds [][]byte `protobuf:"bytes,3,rep,name=container_ids,json=containerIds,proto3" json:"container_ids,omitempty"`
	// contains filtered or unexported fields
}

Accepted is sent in response to GetAccepted. The sending peer responds with a subset of container ids from the GetAccepted request that the sending peer has accepted.

func (*Accepted) Descriptor deprecated

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

Deprecated: Use Accepted.ProtoReflect.Descriptor instead.

func (*Accepted) GetChainId

func (x *Accepted) GetChainId() []byte

func (*Accepted) GetContainerIds

func (x *Accepted) GetContainerIds() [][]byte

func (*Accepted) GetRequestId

func (x *Accepted) GetRequestId() uint32

func (*Accepted) ProtoMessage

func (*Accepted) ProtoMessage()

func (*Accepted) ProtoReflect

func (x *Accepted) ProtoReflect() protoreflect.Message

func (*Accepted) Reset

func (x *Accepted) Reset()

func (*Accepted) String

func (x *Accepted) String() string

type AcceptedFrontier

type AcceptedFrontier struct {

	// Chain being responded from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Request id of the original GetAcceptedFrontier request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// The id of the last accepted frontier
	ContainerId []byte `protobuf:"bytes,3,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
	// contains filtered or unexported fields
}

AcceptedFrontier contains the remote peer's last accepted frontier.

AcceptedFrontier is sent in response to GetAcceptedFrontier.

func (*AcceptedFrontier) Descriptor deprecated

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

Deprecated: Use AcceptedFrontier.ProtoReflect.Descriptor instead.

func (*AcceptedFrontier) GetChainId

func (x *AcceptedFrontier) GetChainId() []byte

func (*AcceptedFrontier) GetContainerId

func (x *AcceptedFrontier) GetContainerId() []byte

func (*AcceptedFrontier) GetRequestId

func (x *AcceptedFrontier) GetRequestId() uint32

func (*AcceptedFrontier) ProtoMessage

func (*AcceptedFrontier) ProtoMessage()

func (*AcceptedFrontier) ProtoReflect

func (x *AcceptedFrontier) ProtoReflect() protoreflect.Message

func (*AcceptedFrontier) Reset

func (x *AcceptedFrontier) Reset()

func (*AcceptedFrontier) String

func (x *AcceptedFrontier) String() string

type AcceptedStateSummary

type AcceptedStateSummary struct {

	// Chain being responded from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Request id of the original GetAcceptedStateSummary request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// State summary ids
	SummaryIds [][]byte `protobuf:"bytes,3,rep,name=summary_ids,json=summaryIds,proto3" json:"summary_ids,omitempty"`
	// contains filtered or unexported fields
}

AcceptedStateSummary is sent in response to GetAcceptedStateSummary

func (*AcceptedStateSummary) Descriptor deprecated

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

Deprecated: Use AcceptedStateSummary.ProtoReflect.Descriptor instead.

func (*AcceptedStateSummary) GetChainId

func (x *AcceptedStateSummary) GetChainId() []byte

func (*AcceptedStateSummary) GetRequestId

func (x *AcceptedStateSummary) GetRequestId() uint32

func (*AcceptedStateSummary) GetSummaryIds

func (x *AcceptedStateSummary) GetSummaryIds() [][]byte

func (*AcceptedStateSummary) ProtoMessage

func (*AcceptedStateSummary) ProtoMessage()

func (*AcceptedStateSummary) ProtoReflect

func (x *AcceptedStateSummary) ProtoReflect() protoreflect.Message

func (*AcceptedStateSummary) Reset

func (x *AcceptedStateSummary) Reset()

func (*AcceptedStateSummary) String

func (x *AcceptedStateSummary) String() string

type Ancestors

type Ancestors struct {

	// Chain being responded from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Request id of the original GetAncestors request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Ancestry for the requested container
	Containers [][]byte `protobuf:"bytes,3,rep,name=containers,proto3" json:"containers,omitempty"`
	// contains filtered or unexported fields
}

Ancestors is sent in response to GetAncestors.

Ancestors contains a contiguous ancestry of containers for the requested container in order of increasing block height.

func (*Ancestors) Descriptor deprecated

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

Deprecated: Use Ancestors.ProtoReflect.Descriptor instead.

func (*Ancestors) GetChainId

func (x *Ancestors) GetChainId() []byte

func (*Ancestors) GetContainers

func (x *Ancestors) GetContainers() [][]byte

func (*Ancestors) GetRequestId

func (x *Ancestors) GetRequestId() uint32

func (*Ancestors) ProtoMessage

func (*Ancestors) ProtoMessage()

func (*Ancestors) ProtoReflect

func (x *Ancestors) ProtoReflect() protoreflect.Message

func (*Ancestors) Reset

func (x *Ancestors) Reset()

func (*Ancestors) String

func (x *Ancestors) String() string

type AppError

type AppError struct {

	// Chain the message is for
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Request id of the original AppRequest
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// VM defined error code. VMs may define error codes > 0.
	ErrorCode int32 `protobuf:"zigzag32,3,opt,name=error_code,json=errorCode,proto3" json:"error_code,omitempty"`
	// VM defined error message
	ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
	// contains filtered or unexported fields
}

AppError is a VM-defined error sent in response to AppRequest

func (*AppError) Descriptor deprecated

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

Deprecated: Use AppError.ProtoReflect.Descriptor instead.

func (*AppError) GetChainId

func (x *AppError) GetChainId() []byte

func (*AppError) GetErrorCode

func (x *AppError) GetErrorCode() int32

func (*AppError) GetErrorMessage

func (x *AppError) GetErrorMessage() string

func (*AppError) GetRequestId

func (x *AppError) GetRequestId() uint32

func (*AppError) ProtoMessage

func (*AppError) ProtoMessage()

func (*AppError) ProtoReflect

func (x *AppError) ProtoReflect() protoreflect.Message

func (*AppError) Reset

func (x *AppError) Reset()

func (*AppError) String

func (x *AppError) String() string

type AppGossip

type AppGossip struct {

	// Chain the message is for
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Message body
	AppBytes []byte `protobuf:"bytes,2,opt,name=app_bytes,json=appBytes,proto3" json:"app_bytes,omitempty"`
	// contains filtered or unexported fields
}

AppGossip is a VM-defined message

func (*AppGossip) Descriptor deprecated

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

Deprecated: Use AppGossip.ProtoReflect.Descriptor instead.

func (*AppGossip) GetAppBytes

func (x *AppGossip) GetAppBytes() []byte

func (*AppGossip) GetChainId

func (x *AppGossip) GetChainId() []byte

func (*AppGossip) ProtoMessage

func (*AppGossip) ProtoMessage()

func (*AppGossip) ProtoReflect

func (x *AppGossip) ProtoReflect() protoreflect.Message

func (*AppGossip) Reset

func (x *AppGossip) Reset()

func (*AppGossip) String

func (x *AppGossip) String() string

type AppRequest

type AppRequest struct {

	// Chain being requested from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Unique identifier for this request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Timeout (ns) for this request
	Deadline uint64 `protobuf:"varint,3,opt,name=deadline,proto3" json:"deadline,omitempty"`
	// Request body
	AppBytes []byte `protobuf:"bytes,4,opt,name=app_bytes,json=appBytes,proto3" json:"app_bytes,omitempty"`
	// contains filtered or unexported fields
}

AppRequest is a VM-defined request.

Remote peers must respond to AppRequest with a corresponding AppResponse or AppError

func (*AppRequest) Descriptor deprecated

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

Deprecated: Use AppRequest.ProtoReflect.Descriptor instead.

func (*AppRequest) GetAppBytes

func (x *AppRequest) GetAppBytes() []byte

func (*AppRequest) GetChainId

func (x *AppRequest) GetChainId() []byte

func (*AppRequest) GetDeadline

func (x *AppRequest) GetDeadline() uint64

func (*AppRequest) GetRequestId

func (x *AppRequest) GetRequestId() uint32

func (*AppRequest) ProtoMessage

func (*AppRequest) ProtoMessage()

func (*AppRequest) ProtoReflect

func (x *AppRequest) ProtoReflect() protoreflect.Message

func (*AppRequest) Reset

func (x *AppRequest) Reset()

func (*AppRequest) String

func (x *AppRequest) String() string

type AppResponse

type AppResponse struct {

	// Chain being responded from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Request id of the original AppRequest
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Response body
	AppBytes []byte `protobuf:"bytes,3,opt,name=app_bytes,json=appBytes,proto3" json:"app_bytes,omitempty"`
	// contains filtered or unexported fields
}

AppResponse is a VM-defined response sent in response to AppRequest

func (*AppResponse) Descriptor deprecated

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

Deprecated: Use AppResponse.ProtoReflect.Descriptor instead.

func (*AppResponse) GetAppBytes

func (x *AppResponse) GetAppBytes() []byte

func (*AppResponse) GetChainId

func (x *AppResponse) GetChainId() []byte

func (*AppResponse) GetRequestId

func (x *AppResponse) GetRequestId() uint32

func (*AppResponse) ProtoMessage

func (*AppResponse) ProtoMessage()

func (*AppResponse) ProtoReflect

func (x *AppResponse) ProtoReflect() protoreflect.Message

func (*AppResponse) Reset

func (x *AppResponse) Reset()

func (*AppResponse) String

func (x *AppResponse) String() string

type BFT added in v1.1.11

type BFT struct {

	// Chain the message is for
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// BFT message content
	//
	// Types that are assignable to Message:
	//
	//	*BFT_BlockProposal
	//	*BFT_Vote
	//	*BFT_EmptyVote
	//	*BFT_FinalizeVote
	//	*BFT_Notarization
	//	*BFT_EmptyNotarization
	//	*BFT_Finalization
	//	*BFT_ReplicationRequest
	//	*BFT_ReplicationResponse
	Message isBFT_Message `protobuf_oneof:"message"`
	// contains filtered or unexported fields
}

BFT consensus messages

func (*BFT) Descriptor deprecated added in v1.1.11

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

Deprecated: Use BFT.ProtoReflect.Descriptor instead.

func (*BFT) GetBlockProposal added in v1.1.11

func (x *BFT) GetBlockProposal() *BlockProposal

func (*BFT) GetChainId added in v1.1.11

func (x *BFT) GetChainId() []byte

func (*BFT) GetEmptyNotarization added in v1.1.11

func (x *BFT) GetEmptyNotarization() *EmptyNotarization

func (*BFT) GetEmptyVote added in v1.1.11

func (x *BFT) GetEmptyVote() *EmptyVote

func (*BFT) GetFinalization added in v1.1.11

func (x *BFT) GetFinalization() *QuorumCertificate

func (*BFT) GetFinalizeVote added in v1.1.11

func (x *BFT) GetFinalizeVote() *Vote

func (*BFT) GetMessage added in v1.1.11

func (m *BFT) GetMessage() isBFT_Message

func (*BFT) GetNotarization added in v1.1.11

func (x *BFT) GetNotarization() *QuorumCertificate

func (*BFT) GetReplicationRequest added in v1.1.11

func (x *BFT) GetReplicationRequest() *ReplicationRequest

func (*BFT) GetReplicationResponse added in v1.1.11

func (x *BFT) GetReplicationResponse() *ReplicationResponse

func (*BFT) GetVote added in v1.1.11

func (x *BFT) GetVote() *Vote

func (*BFT) ProtoMessage added in v1.1.11

func (*BFT) ProtoMessage()

func (*BFT) ProtoReflect added in v1.1.11

func (x *BFT) ProtoReflect() protoreflect.Message

func (*BFT) Reset added in v1.1.11

func (x *BFT) Reset()

func (*BFT) String added in v1.1.11

func (x *BFT) String() string

type BFT_BlockProposal added in v1.1.11

type BFT_BlockProposal struct {
	BlockProposal *BlockProposal `protobuf:"bytes,2,opt,name=block_proposal,json=blockProposal,proto3,oneof"`
}

type BFT_EmptyNotarization added in v1.1.11

type BFT_EmptyNotarization struct {
	EmptyNotarization *EmptyNotarization `protobuf:"bytes,7,opt,name=empty_notarization,json=emptyNotarization,proto3,oneof"`
}

type BFT_EmptyVote added in v1.1.11

type BFT_EmptyVote struct {
	EmptyVote *EmptyVote `protobuf:"bytes,4,opt,name=empty_vote,json=emptyVote,proto3,oneof"`
}

type BFT_Finalization added in v1.1.11

type BFT_Finalization struct {
	Finalization *QuorumCertificate `protobuf:"bytes,8,opt,name=finalization,proto3,oneof"`
}

type BFT_FinalizeVote added in v1.1.11

type BFT_FinalizeVote struct {
	FinalizeVote *Vote `protobuf:"bytes,5,opt,name=finalize_vote,json=finalizeVote,proto3,oneof"`
}

type BFT_Notarization added in v1.1.11

type BFT_Notarization struct {
	Notarization *QuorumCertificate `protobuf:"bytes,6,opt,name=notarization,proto3,oneof"`
}

type BFT_ReplicationRequest added in v1.1.11

type BFT_ReplicationRequest struct {
	ReplicationRequest *ReplicationRequest `protobuf:"bytes,9,opt,name=replication_request,json=replicationRequest,proto3,oneof"`
}

type BFT_ReplicationResponse added in v1.1.11

type BFT_ReplicationResponse struct {
	ReplicationResponse *ReplicationResponse `protobuf:"bytes,10,opt,name=replication_response,json=replicationResponse,proto3,oneof"`
}

type BFT_Vote added in v1.1.11

type BFT_Vote struct {
	Vote *Vote `protobuf:"bytes,3,opt,name=vote,proto3,oneof"`
}

type BlockHeader

type BlockHeader struct {
	BlockId     []byte `protobuf:"bytes,1,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"`
	Round       uint64 `protobuf:"varint,2,opt,name=round,proto3" json:"round,omitempty"`
	ParentRound uint64 `protobuf:"varint,3,opt,name=parent_round,json=parentRound,proto3" json:"parent_round,omitempty"`
	// contains filtered or unexported fields
}

BlockHeader represents a block header

func (*BlockHeader) Descriptor deprecated

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

Deprecated: Use BlockHeader.ProtoReflect.Descriptor instead.

func (*BlockHeader) GetBlockId added in v1.1.11

func (x *BlockHeader) GetBlockId() []byte

func (*BlockHeader) GetParentRound added in v1.1.11

func (x *BlockHeader) GetParentRound() uint64

func (*BlockHeader) GetRound added in v1.1.11

func (x *BlockHeader) GetRound() uint64

func (*BlockHeader) ProtoMessage

func (*BlockHeader) ProtoMessage()

func (*BlockHeader) ProtoReflect

func (x *BlockHeader) ProtoReflect() protoreflect.Message

func (*BlockHeader) Reset

func (x *BlockHeader) Reset()

func (*BlockHeader) String

func (x *BlockHeader) String() string

type BlockProposal

type BlockProposal struct {
	Block []byte `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"`
	Vote  *Vote  `protobuf:"bytes,2,opt,name=vote,proto3" json:"vote,omitempty"`
	// contains filtered or unexported fields
}

BlockProposal represents a proposed block with its vote

func (*BlockProposal) Descriptor deprecated

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

Deprecated: Use BlockProposal.ProtoReflect.Descriptor instead.

func (*BlockProposal) GetBlock

func (x *BlockProposal) GetBlock() []byte

func (*BlockProposal) GetVote

func (x *BlockProposal) GetVote() *Vote

func (*BlockProposal) ProtoMessage

func (*BlockProposal) ProtoMessage()

func (*BlockProposal) ProtoReflect

func (x *BlockProposal) ProtoReflect() protoreflect.Message

func (*BlockProposal) Reset

func (x *BlockProposal) Reset()

func (*BlockProposal) String

func (x *BlockProposal) String() string

type BloomFilter

type BloomFilter struct {
	Filter []byte `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	Salt   []byte `protobuf:"bytes,2,opt,name=salt,proto3" json:"salt,omitempty"`
	// contains filtered or unexported fields
}

BloomFilter with a random salt to prevent consistent hash collisions

func (*BloomFilter) Descriptor deprecated

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

Deprecated: Use BloomFilter.ProtoReflect.Descriptor instead.

func (*BloomFilter) GetFilter

func (x *BloomFilter) GetFilter() []byte

func (*BloomFilter) GetSalt

func (x *BloomFilter) GetSalt() []byte

func (*BloomFilter) ProtoMessage

func (*BloomFilter) ProtoMessage()

func (*BloomFilter) ProtoReflect

func (x *BloomFilter) ProtoReflect() protoreflect.Message

func (*BloomFilter) Reset

func (x *BloomFilter) Reset()

func (*BloomFilter) String

func (x *BloomFilter) String() string

type Chits

type Chits struct {

	// Chain being responded from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Request id of the original PushQuery/PullQuery request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Currently preferred block
	PreferredId []byte `protobuf:"bytes,3,opt,name=preferred_id,json=preferredId,proto3" json:"preferred_id,omitempty"`
	// Last accepted block
	AcceptedId []byte `protobuf:"bytes,4,opt,name=accepted_id,json=acceptedId,proto3" json:"accepted_id,omitempty"`
	// Currently preferred block at the requested height
	PreferredIdAtHeight []byte `protobuf:"bytes,5,opt,name=preferred_id_at_height,json=preferredIdAtHeight,proto3" json:"preferred_id_at_height,omitempty"`
	// contains filtered or unexported fields
}

Chits contains the preferences of a peer in response to a PushQuery or PullQuery message.

func (*Chits) Descriptor deprecated

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

Deprecated: Use Chits.ProtoReflect.Descriptor instead.

func (*Chits) GetAcceptedId

func (x *Chits) GetAcceptedId() []byte

func (*Chits) GetChainId

func (x *Chits) GetChainId() []byte

func (*Chits) GetPreferredId

func (x *Chits) GetPreferredId() []byte

func (*Chits) GetPreferredIdAtHeight

func (x *Chits) GetPreferredIdAtHeight() []byte

func (*Chits) GetRequestId

func (x *Chits) GetRequestId() uint32

func (*Chits) ProtoMessage

func (*Chits) ProtoMessage()

func (*Chits) ProtoReflect

func (x *Chits) ProtoReflect() protoreflect.Message

func (*Chits) Reset

func (x *Chits) Reset()

func (*Chits) String

func (x *Chits) String() string

type ClaimedIpPort

type ClaimedIpPort struct {

	// X509 certificate of the peer
	X509Certificate []byte `protobuf:"bytes,1,opt,name=x509_certificate,json=x509Certificate,proto3" json:"x509_certificate,omitempty"`
	// IP address of the peer
	IpAddr []byte `protobuf:"bytes,2,opt,name=ip_addr,json=ipAddr,proto3" json:"ip_addr,omitempty"`
	// IP port of the peer
	IpPort uint32 `protobuf:"varint,3,opt,name=ip_port,json=ipPort,proto3" json:"ip_port,omitempty"`
	// Timestamp of the IP address + port pair
	Timestamp uint64 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	// Signature of the IP port pair at a provided timestamp
	Signature []byte `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
	// P-Chain transaction that added this peer to the validator set
	TxId []byte `protobuf:"bytes,6,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"`
	// contains filtered or unexported fields
}

ClaimedIpPort contains metadata needed to connect to a peer

func (*ClaimedIpPort) Descriptor deprecated

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

Deprecated: Use ClaimedIpPort.ProtoReflect.Descriptor instead.

func (*ClaimedIpPort) GetIpAddr

func (x *ClaimedIpPort) GetIpAddr() []byte

func (*ClaimedIpPort) GetIpPort

func (x *ClaimedIpPort) GetIpPort() uint32

func (*ClaimedIpPort) GetSignature

func (x *ClaimedIpPort) GetSignature() []byte

func (*ClaimedIpPort) GetTimestamp

func (x *ClaimedIpPort) GetTimestamp() uint64

func (*ClaimedIpPort) GetTxId

func (x *ClaimedIpPort) GetTxId() []byte

func (*ClaimedIpPort) GetX509Certificate

func (x *ClaimedIpPort) GetX509Certificate() []byte

func (*ClaimedIpPort) ProtoMessage

func (*ClaimedIpPort) ProtoMessage()

func (*ClaimedIpPort) ProtoReflect

func (x *ClaimedIpPort) ProtoReflect() protoreflect.Message

func (*ClaimedIpPort) Reset

func (x *ClaimedIpPort) Reset()

func (*ClaimedIpPort) String

func (x *ClaimedIpPort) String() string

type Client

type Client struct {

	// Client name (e.g node)
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Client semantic version
	Major uint32 `protobuf:"varint,2,opt,name=major,proto3" json:"major,omitempty"`
	Minor uint32 `protobuf:"varint,3,opt,name=minor,proto3" json:"minor,omitempty"`
	Patch uint32 `protobuf:"varint,4,opt,name=patch,proto3" json:"patch,omitempty"`
	// contains filtered or unexported fields
}

Metadata about a peer's P2P client used to determine compatibility

func (*Client) Descriptor deprecated

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

Deprecated: Use Client.ProtoReflect.Descriptor instead.

func (*Client) GetMajor

func (x *Client) GetMajor() uint32

func (*Client) GetMinor

func (x *Client) GetMinor() uint32

func (*Client) GetName

func (x *Client) GetName() string

func (*Client) GetPatch

func (x *Client) GetPatch() uint32

func (*Client) ProtoMessage

func (*Client) ProtoMessage()

func (*Client) ProtoReflect

func (x *Client) ProtoReflect() protoreflect.Message

func (*Client) Reset

func (x *Client) Reset()

func (*Client) String

func (x *Client) String() string

type EmptyNotarization

type EmptyNotarization struct {
	Metadata          *ProtocolMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
	QuorumCertificate []byte            `protobuf:"bytes,2,opt,name=quorum_certificate,json=quorumCertificate,proto3" json:"quorum_certificate,omitempty"`
	// contains filtered or unexported fields
}

EmptyNotarization represents a notarization for no block

func (*EmptyNotarization) Descriptor deprecated

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

Deprecated: Use EmptyNotarization.ProtoReflect.Descriptor instead.

func (*EmptyNotarization) GetMetadata

func (x *EmptyNotarization) GetMetadata() *ProtocolMetadata

func (*EmptyNotarization) GetQuorumCertificate

func (x *EmptyNotarization) GetQuorumCertificate() []byte

func (*EmptyNotarization) ProtoMessage

func (*EmptyNotarization) ProtoMessage()

func (*EmptyNotarization) ProtoReflect

func (x *EmptyNotarization) ProtoReflect() protoreflect.Message

func (*EmptyNotarization) Reset

func (x *EmptyNotarization) Reset()

func (*EmptyNotarization) String

func (x *EmptyNotarization) String() string

type EmptyVote

type EmptyVote struct {
	Metadata  *ProtocolMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
	Signature *Signature        `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
	// contains filtered or unexported fields
}

EmptyVote represents a vote for no block

func (*EmptyVote) Descriptor deprecated

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

Deprecated: Use EmptyVote.ProtoReflect.Descriptor instead.

func (*EmptyVote) GetMetadata

func (x *EmptyVote) GetMetadata() *ProtocolMetadata

func (*EmptyVote) GetSignature

func (x *EmptyVote) GetSignature() *Signature

func (*EmptyVote) ProtoMessage

func (*EmptyVote) ProtoMessage()

func (*EmptyVote) ProtoReflect

func (x *EmptyVote) ProtoReflect() protoreflect.Message

func (*EmptyVote) Reset

func (x *EmptyVote) Reset()

func (*EmptyVote) String

func (x *EmptyVote) String() string

type EngineType

type EngineType int32

The consensus engine that should be used when handling a consensus request.

const (
	EngineType_ENGINE_TYPE_UNSPECIFIED EngineType = 0
	// Only the X-Chain uses lux consensus
	EngineType_ENGINE_TYPE_DAG   EngineType = 1
	EngineType_ENGINE_TYPE_CHAIN EngineType = 2
)

func (EngineType) Descriptor

func (EngineType) Descriptor() protoreflect.EnumDescriptor

func (EngineType) Enum

func (x EngineType) Enum() *EngineType

func (EngineType) EnumDescriptor deprecated

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

Deprecated: Use EngineType.Descriptor instead.

func (EngineType) Number

func (x EngineType) Number() protoreflect.EnumNumber

func (EngineType) String

func (x EngineType) String() string

func (EngineType) Type

type Get

type Get struct {

	// Chain being requested from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Unique identifier for this request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Timeout (ns) for this request
	Deadline uint64 `protobuf:"varint,3,opt,name=deadline,proto3" json:"deadline,omitempty"`
	// Container being requested
	ContainerId []byte `protobuf:"bytes,4,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
	// contains filtered or unexported fields
}

Get requests a container from a remote peer.

Remote peers should respond with a Put message if they have the container.

func (*Get) Descriptor deprecated

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

Deprecated: Use Get.ProtoReflect.Descriptor instead.

func (*Get) GetChainId

func (x *Get) GetChainId() []byte

func (*Get) GetContainerId

func (x *Get) GetContainerId() []byte

func (*Get) GetDeadline

func (x *Get) GetDeadline() uint64

func (*Get) GetRequestId

func (x *Get) GetRequestId() uint32

func (*Get) ProtoMessage

func (*Get) ProtoMessage()

func (*Get) ProtoReflect

func (x *Get) ProtoReflect() protoreflect.Message

func (*Get) Reset

func (x *Get) Reset()

func (*Get) String

func (x *Get) String() string

type GetAccepted

type GetAccepted struct {

	// Chain being requested from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Unique identifier for this message
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Timeout (ns) for this request
	Deadline uint64 `protobuf:"varint,3,opt,name=deadline,proto3" json:"deadline,omitempty"`
	// The sender's accepted frontier
	ContainerIds [][]byte `protobuf:"bytes,4,rep,name=container_ids,json=containerIds,proto3" json:"container_ids,omitempty"`
	// contains filtered or unexported fields
}

GetAccepted sends a request with the sender's accepted frontier to a remote peer.

Peers should respond to GetAccepted with an Accepted message.

func (*GetAccepted) Descriptor deprecated

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

Deprecated: Use GetAccepted.ProtoReflect.Descriptor instead.

func (*GetAccepted) GetChainId

func (x *GetAccepted) GetChainId() []byte

func (*GetAccepted) GetContainerIds

func (x *GetAccepted) GetContainerIds() [][]byte

func (*GetAccepted) GetDeadline

func (x *GetAccepted) GetDeadline() uint64

func (*GetAccepted) GetRequestId

func (x *GetAccepted) GetRequestId() uint32

func (*GetAccepted) ProtoMessage

func (*GetAccepted) ProtoMessage()

func (*GetAccepted) ProtoReflect

func (x *GetAccepted) ProtoReflect() protoreflect.Message

func (*GetAccepted) Reset

func (x *GetAccepted) Reset()

func (*GetAccepted) String

func (x *GetAccepted) String() string

type GetAcceptedFrontier

type GetAcceptedFrontier struct {

	// Chain being requested from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Unique identifier for this request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Timeout (ns) for this request
	Deadline uint64 `protobuf:"varint,3,opt,name=deadline,proto3" json:"deadline,omitempty"`
	// contains filtered or unexported fields
}

GetAcceptedFrontier requests the accepted frontier from a peer.

Peers should respond to GetAcceptedFrontier with AcceptedFrontier.

func (*GetAcceptedFrontier) Descriptor deprecated

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

Deprecated: Use GetAcceptedFrontier.ProtoReflect.Descriptor instead.

func (*GetAcceptedFrontier) GetChainId

func (x *GetAcceptedFrontier) GetChainId() []byte

func (*GetAcceptedFrontier) GetDeadline

func (x *GetAcceptedFrontier) GetDeadline() uint64

func (*GetAcceptedFrontier) GetRequestId

func (x *GetAcceptedFrontier) GetRequestId() uint32

func (*GetAcceptedFrontier) ProtoMessage

func (*GetAcceptedFrontier) ProtoMessage()

func (*GetAcceptedFrontier) ProtoReflect

func (x *GetAcceptedFrontier) ProtoReflect() protoreflect.Message

func (*GetAcceptedFrontier) Reset

func (x *GetAcceptedFrontier) Reset()

func (*GetAcceptedFrontier) String

func (x *GetAcceptedFrontier) String() string

type GetAcceptedStateSummary

type GetAcceptedStateSummary struct {

	// Chain bein requested from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Unique identifier for this request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Timeout (ns) for this request
	Deadline uint64 `protobuf:"varint,3,opt,name=deadline,proto3" json:"deadline,omitempty"`
	// Heights being requested
	Heights []uint64 `protobuf:"varint,4,rep,packed,name=heights,proto3" json:"heights,omitempty"`
	// contains filtered or unexported fields
}

GetAcceptedStateSummary requests a set of state summaries at a set of block heights

func (*GetAcceptedStateSummary) Descriptor deprecated

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

Deprecated: Use GetAcceptedStateSummary.ProtoReflect.Descriptor instead.

func (*GetAcceptedStateSummary) GetChainId

func (x *GetAcceptedStateSummary) GetChainId() []byte

func (*GetAcceptedStateSummary) GetDeadline

func (x *GetAcceptedStateSummary) GetDeadline() uint64

func (*GetAcceptedStateSummary) GetHeights

func (x *GetAcceptedStateSummary) GetHeights() []uint64

func (*GetAcceptedStateSummary) GetRequestId

func (x *GetAcceptedStateSummary) GetRequestId() uint32

func (*GetAcceptedStateSummary) ProtoMessage

func (*GetAcceptedStateSummary) ProtoMessage()

func (*GetAcceptedStateSummary) ProtoReflect

func (x *GetAcceptedStateSummary) ProtoReflect() protoreflect.Message

func (*GetAcceptedStateSummary) Reset

func (x *GetAcceptedStateSummary) Reset()

func (*GetAcceptedStateSummary) String

func (x *GetAcceptedStateSummary) String() string

type GetAncestors

type GetAncestors struct {

	// Chain being requested from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Unique identifier for this request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Timeout (ns) for this request
	Deadline uint64 `protobuf:"varint,3,opt,name=deadline,proto3" json:"deadline,omitempty"`
	// Container for which ancestors are being requested
	ContainerId []byte `protobuf:"bytes,4,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
	// Consensus type to handle this message
	EngineType EngineType `protobuf:"varint,5,opt,name=engine_type,json=engineType,proto3,enum=p2p.EngineType" json:"engine_type,omitempty"`
	// contains filtered or unexported fields
}

GetAncestors requests the ancestors for a given container.

The remote peer should respond with an Ancestors message.

func (*GetAncestors) Descriptor deprecated

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

Deprecated: Use GetAncestors.ProtoReflect.Descriptor instead.

func (*GetAncestors) GetChainId

func (x *GetAncestors) GetChainId() []byte

func (*GetAncestors) GetContainerId

func (x *GetAncestors) GetContainerId() []byte

func (*GetAncestors) GetDeadline

func (x *GetAncestors) GetDeadline() uint64

func (*GetAncestors) GetEngineType

func (x *GetAncestors) GetEngineType() EngineType

func (*GetAncestors) GetRequestId

func (x *GetAncestors) GetRequestId() uint32

func (*GetAncestors) ProtoMessage

func (*GetAncestors) ProtoMessage()

func (*GetAncestors) ProtoReflect

func (x *GetAncestors) ProtoReflect() protoreflect.Message

func (*GetAncestors) Reset

func (x *GetAncestors) Reset()

func (*GetAncestors) String

func (x *GetAncestors) String() string

type GetPeerList

type GetPeerList struct {
	KnownPeers *BloomFilter `protobuf:"bytes,1,opt,name=known_peers,json=knownPeers,proto3" json:"known_peers,omitempty"`
	// contains filtered or unexported fields
}

GetPeerList contains a bloom filter of the currently known validator IPs.

GetPeerList must not be responded to until finishing the handshake. After the handshake is completed, GetPeerlist messages should be responded to with a Peerlist message containing validators that are not present in the bloom filter.

func (*GetPeerList) Descriptor deprecated

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

Deprecated: Use GetPeerList.ProtoReflect.Descriptor instead.

func (*GetPeerList) GetKnownPeers

func (x *GetPeerList) GetKnownPeers() *BloomFilter

func (*GetPeerList) ProtoMessage

func (*GetPeerList) ProtoMessage()

func (*GetPeerList) ProtoReflect

func (x *GetPeerList) ProtoReflect() protoreflect.Message

func (*GetPeerList) Reset

func (x *GetPeerList) Reset()

func (*GetPeerList) String

func (x *GetPeerList) String() string

type GetStateSummaryFrontier

type GetStateSummaryFrontier struct {

	// Chain being requested from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Unique identifier for this request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Timeout (ns) for this request
	Deadline uint64 `protobuf:"varint,3,opt,name=deadline,proto3" json:"deadline,omitempty"`
	// contains filtered or unexported fields
}

GetStateSummaryFrontier requests a peer's most recently accepted state summary

func (*GetStateSummaryFrontier) Descriptor deprecated

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

Deprecated: Use GetStateSummaryFrontier.ProtoReflect.Descriptor instead.

func (*GetStateSummaryFrontier) GetChainId

func (x *GetStateSummaryFrontier) GetChainId() []byte

func (*GetStateSummaryFrontier) GetDeadline

func (x *GetStateSummaryFrontier) GetDeadline() uint64

func (*GetStateSummaryFrontier) GetRequestId

func (x *GetStateSummaryFrontier) GetRequestId() uint32

func (*GetStateSummaryFrontier) ProtoMessage

func (*GetStateSummaryFrontier) ProtoMessage()

func (*GetStateSummaryFrontier) ProtoReflect

func (x *GetStateSummaryFrontier) ProtoReflect() protoreflect.Message

func (*GetStateSummaryFrontier) Reset

func (x *GetStateSummaryFrontier) Reset()

func (*GetStateSummaryFrontier) String

func (x *GetStateSummaryFrontier) String() string

type Handshake

type Handshake struct {

	// Network the peer is running on (e.g local, testnet, mainnet)
	NetworkId uint32 `protobuf:"varint,1,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"`
	// Unix timestamp when this Handshake message was created
	MyTime uint64 `protobuf:"varint,2,opt,name=my_time,json=myTime,proto3" json:"my_time,omitempty"`
	// IP address of the peer
	IpAddr []byte `protobuf:"bytes,3,opt,name=ip_addr,json=ipAddr,proto3" json:"ip_addr,omitempty"`
	// IP port of the peer
	IpPort uint32 `protobuf:"varint,4,opt,name=ip_port,json=ipPort,proto3" json:"ip_port,omitempty"`
	// Timestamp of the IP
	IpSigningTime uint64 `protobuf:"varint,6,opt,name=ip_signing_time,json=ipSigningTime,proto3" json:"ip_signing_time,omitempty"`
	// Signature of the peer IP port pair at a provided timestamp with the TLS
	// key.
	IpNodeIdSig []byte `protobuf:"bytes,7,opt,name=ip_node_id_sig,json=ipNodeIdSig,proto3" json:"ip_node_id_sig,omitempty"`
	// Subnets the peer is tracking
	TrackedSubnets [][]byte     `protobuf:"bytes,8,rep,name=tracked_subnets,json=trackedSubnets,proto3" json:"tracked_subnets,omitempty"`
	Client         *Client      `protobuf:"bytes,9,opt,name=client,proto3" json:"client,omitempty"`
	SupportedLps   []uint32     `protobuf:"varint,10,rep,packed,name=supported_lps,json=supportedLps,proto3" json:"supported_lps,omitempty"`
	ObjectedLps    []uint32     `protobuf:"varint,11,rep,packed,name=objected_lps,json=objectedLps,proto3" json:"objected_lps,omitempty"`
	KnownPeers     *BloomFilter `protobuf:"bytes,12,opt,name=known_peers,json=knownPeers,proto3" json:"known_peers,omitempty"`
	// Signature of the peer IP port pair at a provided timestamp with the BLS
	// key.
	IpBlsSig []byte `protobuf:"bytes,13,opt,name=ip_bls_sig,json=ipBlsSig,proto3" json:"ip_bls_sig,omitempty"`
	// contains filtered or unexported fields
}

Handshake is the first outbound message sent to a peer when a connection is established to start the p2p handshake.

Peers must respond to a Handshake message with a PeerList message to allow the peer to connect to other peers in the network.

Peers should drop connections to peers with incompatible versions.

func (*Handshake) Descriptor deprecated

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

Deprecated: Use Handshake.ProtoReflect.Descriptor instead.

func (*Handshake) GetClient

func (x *Handshake) GetClient() *Client

func (*Handshake) GetIpAddr

func (x *Handshake) GetIpAddr() []byte

func (*Handshake) GetIpBlsSig

func (x *Handshake) GetIpBlsSig() []byte

func (*Handshake) GetIpNodeIdSig

func (x *Handshake) GetIpNodeIdSig() []byte

func (*Handshake) GetIpPort

func (x *Handshake) GetIpPort() uint32

func (*Handshake) GetIpSigningTime

func (x *Handshake) GetIpSigningTime() uint64

func (*Handshake) GetKnownPeers

func (x *Handshake) GetKnownPeers() *BloomFilter

func (*Handshake) GetMyTime

func (x *Handshake) GetMyTime() uint64

func (*Handshake) GetNetworkId

func (x *Handshake) GetNetworkId() uint32

func (*Handshake) GetObjectedLps

func (x *Handshake) GetObjectedLps() []uint32

func (*Handshake) GetSupportedLps

func (x *Handshake) GetSupportedLps() []uint32

func (*Handshake) GetTrackedSubnets

func (x *Handshake) GetTrackedSubnets() [][]byte

func (*Handshake) ProtoMessage

func (*Handshake) ProtoMessage()

func (*Handshake) ProtoReflect

func (x *Handshake) ProtoReflect() protoreflect.Message

func (*Handshake) Reset

func (x *Handshake) Reset()

func (*Handshake) String

func (x *Handshake) String() string

type Message

type Message struct {

	// NOTES
	// Use "oneof" for each message type and set rest to null if not used.
	// That is because when the compression is enabled, we don't want to include uncompressed fields.
	//
	// Types that are assignable to Message:
	//
	//	*Message_CompressedZstd
	//	*Message_Ping
	//	*Message_Pong
	//	*Message_Handshake
	//	*Message_GetPeerList
	//	*Message_PeerList_
	//	*Message_GetStateSummaryFrontier
	//	*Message_StateSummaryFrontier_
	//	*Message_GetAcceptedStateSummary
	//	*Message_AcceptedStateSummary_
	//	*Message_GetAcceptedFrontier
	//	*Message_AcceptedFrontier_
	//	*Message_GetAccepted
	//	*Message_Accepted_
	//	*Message_GetAncestors
	//	*Message_Ancestors_
	//	*Message_Get
	//	*Message_Put
	//	*Message_PushQuery
	//	*Message_PullQuery
	//	*Message_Chits
	//	*Message_AppRequest
	//	*Message_AppResponse
	//	*Message_AppGossip
	//	*Message_AppError
	Message isMessage_Message `protobuf_oneof:"message"`
	// contains filtered or unexported fields
}

Represents peer-to-peer messages. Only one type can be non-null.

func (*Message) Descriptor deprecated

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

Deprecated: Use Message.ProtoReflect.Descriptor instead.

func (*Message) GetAcceptedFrontier_

func (x *Message) GetAcceptedFrontier_() *AcceptedFrontier

func (*Message) GetAcceptedStateSummary_

func (x *Message) GetAcceptedStateSummary_() *AcceptedStateSummary

func (*Message) GetAccepted_

func (x *Message) GetAccepted_() *Accepted

func (*Message) GetAncestors_

func (x *Message) GetAncestors_() *Ancestors

func (*Message) GetAppError

func (x *Message) GetAppError() *AppError

func (*Message) GetAppGossip

func (x *Message) GetAppGossip() *AppGossip

func (*Message) GetAppRequest

func (x *Message) GetAppRequest() *AppRequest

func (*Message) GetAppResponse

func (x *Message) GetAppResponse() *AppResponse

func (*Message) GetChits

func (x *Message) GetChits() *Chits

func (*Message) GetCompressedZstd

func (x *Message) GetCompressedZstd() []byte

func (*Message) GetGet

func (x *Message) GetGet() *Get

func (*Message) GetGetAccepted

func (x *Message) GetGetAccepted() *GetAccepted

func (*Message) GetGetAcceptedFrontier

func (x *Message) GetGetAcceptedFrontier() *GetAcceptedFrontier

func (*Message) GetGetAcceptedStateSummary

func (x *Message) GetGetAcceptedStateSummary() *GetAcceptedStateSummary

func (*Message) GetGetAncestors

func (x *Message) GetGetAncestors() *GetAncestors

func (*Message) GetGetPeerList

func (x *Message) GetGetPeerList() *GetPeerList

func (*Message) GetGetStateSummaryFrontier

func (x *Message) GetGetStateSummaryFrontier() *GetStateSummaryFrontier

func (*Message) GetHandshake

func (x *Message) GetHandshake() *Handshake

func (*Message) GetMessage

func (m *Message) GetMessage() isMessage_Message

func (*Message) GetPeerList_

func (x *Message) GetPeerList_() *PeerList

func (*Message) GetPing

func (x *Message) GetPing() *Ping

func (*Message) GetPong

func (x *Message) GetPong() *Pong

func (*Message) GetPullQuery

func (x *Message) GetPullQuery() *PullQuery

func (*Message) GetPushQuery

func (x *Message) GetPushQuery() *PushQuery

func (*Message) GetPut

func (x *Message) GetPut() *Put

func (*Message) GetStateSummaryFrontier_

func (x *Message) GetStateSummaryFrontier_() *StateSummaryFrontier

func (*Message) ProtoMessage

func (*Message) ProtoMessage()

func (*Message) ProtoReflect

func (x *Message) ProtoReflect() protoreflect.Message

func (*Message) Reset

func (x *Message) Reset()

func (*Message) String

func (x *Message) String() string

type Message_AcceptedFrontier_

type Message_AcceptedFrontier_ struct {
	AcceptedFrontier_ *AcceptedFrontier `protobuf:"bytes,20,opt,name=accepted_frontier,json=acceptedFrontier,proto3,oneof"`
}

type Message_AcceptedStateSummary_

type Message_AcceptedStateSummary_ struct {
	AcceptedStateSummary_ *AcceptedStateSummary `protobuf:"bytes,18,opt,name=accepted_state_summary,json=acceptedStateSummary,proto3,oneof"`
}

type Message_Accepted_

type Message_Accepted_ struct {
	Accepted_ *Accepted `protobuf:"bytes,22,opt,name=accepted,proto3,oneof"`
}

type Message_Ancestors_

type Message_Ancestors_ struct {
	Ancestors_ *Ancestors `protobuf:"bytes,24,opt,name=ancestors,proto3,oneof"`
}

type Message_AppError

type Message_AppError struct {
	AppError *AppError `protobuf:"bytes,34,opt,name=app_error,json=appError,proto3,oneof"`
}

type Message_AppGossip

type Message_AppGossip struct {
	AppGossip *AppGossip `protobuf:"bytes,32,opt,name=app_gossip,json=appGossip,proto3,oneof"`
}

type Message_AppRequest

type Message_AppRequest struct {
	// App messages:
	AppRequest *AppRequest `protobuf:"bytes,30,opt,name=app_request,json=appRequest,proto3,oneof"`
}

type Message_AppResponse

type Message_AppResponse struct {
	AppResponse *AppResponse `protobuf:"bytes,31,opt,name=app_response,json=appResponse,proto3,oneof"`
}

type Message_Chits

type Message_Chits struct {
	Chits *Chits `protobuf:"bytes,29,opt,name=chits,proto3,oneof"`
}

type Message_CompressedZstd

type Message_CompressedZstd struct {
	// zstd-compressed bytes of a "p2p.Message" whose "oneof" "message" field is
	// NOT compressed_* BUT one of the message types (e.g. ping, pong, etc.).
	// This field is only set if the message type supports compression.
	CompressedZstd []byte `protobuf:"bytes,2,opt,name=compressed_zstd,json=compressedZstd,proto3,oneof"`
}

type Message_Get

type Message_Get struct {
	// Consensus messages:
	Get *Get `protobuf:"bytes,25,opt,name=get,proto3,oneof"`
}

type Message_GetAccepted

type Message_GetAccepted struct {
	GetAccepted *GetAccepted `protobuf:"bytes,21,opt,name=get_accepted,json=getAccepted,proto3,oneof"`
}

type Message_GetAcceptedFrontier

type Message_GetAcceptedFrontier struct {
	// Bootstrapping messages:
	GetAcceptedFrontier *GetAcceptedFrontier `protobuf:"bytes,19,opt,name=get_accepted_frontier,json=getAcceptedFrontier,proto3,oneof"`
}

type Message_GetAcceptedStateSummary

type Message_GetAcceptedStateSummary struct {
	GetAcceptedStateSummary *GetAcceptedStateSummary `protobuf:"bytes,17,opt,name=get_accepted_state_summary,json=getAcceptedStateSummary,proto3,oneof"`
}

type Message_GetAncestors

type Message_GetAncestors struct {
	GetAncestors *GetAncestors `protobuf:"bytes,23,opt,name=get_ancestors,json=getAncestors,proto3,oneof"`
}

type Message_GetPeerList

type Message_GetPeerList struct {
	GetPeerList *GetPeerList `protobuf:"bytes,35,opt,name=get_peer_list,json=getPeerList,proto3,oneof"`
}

type Message_GetStateSummaryFrontier

type Message_GetStateSummaryFrontier struct {
	// State-sync messages:
	GetStateSummaryFrontier *GetStateSummaryFrontier `protobuf:"bytes,15,opt,name=get_state_summary_frontier,json=getStateSummaryFrontier,proto3,oneof"`
}

type Message_Handshake

type Message_Handshake struct {
	Handshake *Handshake `protobuf:"bytes,13,opt,name=handshake,proto3,oneof"`
}

type Message_PeerList_

type Message_PeerList_ struct {
	PeerList_ *PeerList `protobuf:"bytes,14,opt,name=peer_list,json=peerList,proto3,oneof"`
}

type Message_Ping

type Message_Ping struct {
	// Network messages:
	Ping *Ping `protobuf:"bytes,11,opt,name=ping,proto3,oneof"`
}

type Message_Pong

type Message_Pong struct {
	Pong *Pong `protobuf:"bytes,12,opt,name=pong,proto3,oneof"`
}

type Message_PullQuery

type Message_PullQuery struct {
	PullQuery *PullQuery `protobuf:"bytes,28,opt,name=pull_query,json=pullQuery,proto3,oneof"`
}

type Message_PushQuery

type Message_PushQuery struct {
	PushQuery *PushQuery `protobuf:"bytes,27,opt,name=push_query,json=pushQuery,proto3,oneof"`
}

type Message_Put

type Message_Put struct {
	Put *Put `protobuf:"bytes,26,opt,name=put,proto3,oneof"`
}

type Message_StateSummaryFrontier_

type Message_StateSummaryFrontier_ struct {
	StateSummaryFrontier_ *StateSummaryFrontier `protobuf:"bytes,16,opt,name=state_summary_frontier,json=stateSummaryFrontier,proto3,oneof"`
}

type PeerList

type PeerList struct {
	ClaimedIpPorts []*ClaimedIpPort `protobuf:"bytes,1,rep,name=claimed_ip_ports,json=claimedIpPorts,proto3" json:"claimed_ip_ports,omitempty"`
	// contains filtered or unexported fields
}

PeerList contains network-level metadata for a set of validators.

PeerList must be sent in response to an inbound Handshake message from a remote peer a peer wants to connect to. Once a PeerList is received after a Handshake message, the p2p handshake is complete and the connection is established.

PeerList should be sent in response to a GetPeerlist message if the handshake has been completed.

func (*PeerList) Descriptor deprecated

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

Deprecated: Use PeerList.ProtoReflect.Descriptor instead.

func (*PeerList) GetClaimedIpPorts

func (x *PeerList) GetClaimedIpPorts() []*ClaimedIpPort

func (*PeerList) ProtoMessage

func (*PeerList) ProtoMessage()

func (*PeerList) ProtoReflect

func (x *PeerList) ProtoReflect() protoreflect.Message

func (*PeerList) Reset

func (x *PeerList) Reset()

func (*PeerList) String

func (x *PeerList) String() string

type Ping

type Ping struct {

	// Uptime percentage on the primary network [0, 100]
	Uptime uint32 `protobuf:"varint,1,opt,name=uptime,proto3" json:"uptime,omitempty"`
	// Uptime percentage on subnets
	SubnetUptimes []*SubnetUptime `protobuf:"bytes,2,rep,name=subnet_uptimes,json=subnetUptimes,proto3" json:"subnet_uptimes,omitempty"`
	// contains filtered or unexported fields
}

Ping reports a peer's perceived uptime percentage.

Peers should respond to Ping with a Pong.

func (*Ping) Descriptor deprecated

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

Deprecated: Use Ping.ProtoReflect.Descriptor instead.

func (*Ping) GetSubnetUptimes added in v1.1.11

func (x *Ping) GetSubnetUptimes() []*SubnetUptime

func (*Ping) GetUptime

func (x *Ping) GetUptime() uint32

func (*Ping) ProtoMessage

func (*Ping) ProtoMessage()

func (*Ping) ProtoReflect

func (x *Ping) ProtoReflect() protoreflect.Message

func (*Ping) Reset

func (x *Ping) Reset()

func (*Ping) String

func (x *Ping) String() string

type Pong

type Pong struct {
	// contains filtered or unexported fields
}

Pong is sent in response to a Ping.

func (*Pong) Descriptor deprecated

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

Deprecated: Use Pong.ProtoReflect.Descriptor instead.

func (*Pong) ProtoMessage

func (*Pong) ProtoMessage()

func (*Pong) ProtoReflect

func (x *Pong) ProtoReflect() protoreflect.Message

func (*Pong) Reset

func (x *Pong) Reset()

func (*Pong) String

func (x *Pong) String() string

type ProtocolMetadata

type ProtocolMetadata struct {
	Round      uint64 `protobuf:"varint,1,opt,name=round,proto3" json:"round,omitempty"`
	ParentHash []byte `protobuf:"bytes,2,opt,name=parent_hash,json=parentHash,proto3" json:"parent_hash,omitempty"`
	// contains filtered or unexported fields
}

ProtocolMetadata represents protocol metadata

func (*ProtocolMetadata) Descriptor deprecated

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

Deprecated: Use ProtocolMetadata.ProtoReflect.Descriptor instead.

func (*ProtocolMetadata) GetParentHash added in v1.1.11

func (x *ProtocolMetadata) GetParentHash() []byte

func (*ProtocolMetadata) GetRound

func (x *ProtocolMetadata) GetRound() uint64

func (*ProtocolMetadata) ProtoMessage

func (*ProtocolMetadata) ProtoMessage()

func (*ProtocolMetadata) ProtoReflect

func (x *ProtocolMetadata) ProtoReflect() protoreflect.Message

func (*ProtocolMetadata) Reset

func (x *ProtocolMetadata) Reset()

func (*ProtocolMetadata) String

func (x *ProtocolMetadata) String() string

type PullQuery

type PullQuery struct {

	// Chain being requested from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Unique identifier for this request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Timeout (ns) for this request
	Deadline uint64 `protobuf:"varint,3,opt,name=deadline,proto3" json:"deadline,omitempty"`
	// Container id being gossiped
	ContainerId []byte `protobuf:"bytes,4,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
	// Requesting peer's last accepted height
	RequestedHeight uint64 `protobuf:"varint,6,opt,name=requested_height,json=requestedHeight,proto3" json:"requested_height,omitempty"`
	// contains filtered or unexported fields
}

PullQuery requests the preferences of a remote peer given a container id.

Remote peers should respond to a PullQuery with a Chits message

func (*PullQuery) Descriptor deprecated

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

Deprecated: Use PullQuery.ProtoReflect.Descriptor instead.

func (*PullQuery) GetChainId

func (x *PullQuery) GetChainId() []byte

func (*PullQuery) GetContainerId

func (x *PullQuery) GetContainerId() []byte

func (*PullQuery) GetDeadline

func (x *PullQuery) GetDeadline() uint64

func (*PullQuery) GetRequestId

func (x *PullQuery) GetRequestId() uint32

func (*PullQuery) GetRequestedHeight

func (x *PullQuery) GetRequestedHeight() uint64

func (*PullQuery) ProtoMessage

func (*PullQuery) ProtoMessage()

func (*PullQuery) ProtoReflect

func (x *PullQuery) ProtoReflect() protoreflect.Message

func (*PullQuery) Reset

func (x *PullQuery) Reset()

func (*PullQuery) String

func (x *PullQuery) String() string

type PushQuery

type PushQuery struct {

	// Chain being requested from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Unique identifier for this request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Timeout (ns) for this request
	Deadline uint64 `protobuf:"varint,3,opt,name=deadline,proto3" json:"deadline,omitempty"`
	// Container being gossiped
	Container []byte `protobuf:"bytes,4,opt,name=container,proto3" json:"container,omitempty"`
	// Requesting peer's last accepted height
	RequestedHeight uint64 `protobuf:"varint,6,opt,name=requested_height,json=requestedHeight,proto3" json:"requested_height,omitempty"`
	// contains filtered or unexported fields
}

PushQuery requests the preferences of a remote peer given a container.

Remote peers should respond to a PushQuery with a Chits message

func (*PushQuery) Descriptor deprecated

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

Deprecated: Use PushQuery.ProtoReflect.Descriptor instead.

func (*PushQuery) GetChainId

func (x *PushQuery) GetChainId() []byte

func (*PushQuery) GetContainer

func (x *PushQuery) GetContainer() []byte

func (*PushQuery) GetDeadline

func (x *PushQuery) GetDeadline() uint64

func (*PushQuery) GetRequestId

func (x *PushQuery) GetRequestId() uint32

func (*PushQuery) GetRequestedHeight

func (x *PushQuery) GetRequestedHeight() uint64

func (*PushQuery) ProtoMessage

func (*PushQuery) ProtoMessage()

func (*PushQuery) ProtoReflect

func (x *PushQuery) ProtoReflect() protoreflect.Message

func (*PushQuery) Reset

func (x *PushQuery) Reset()

func (*PushQuery) String

func (x *PushQuery) String() string

type Put

type Put struct {

	// Chain being responded from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Request id of the original Get request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Requested container
	Container []byte `protobuf:"bytes,3,opt,name=container,proto3" json:"container,omitempty"`
	// contains filtered or unexported fields
}

Put is sent in response to Get with the requested block.

func (*Put) Descriptor deprecated

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

Deprecated: Use Put.ProtoReflect.Descriptor instead.

func (*Put) GetChainId

func (x *Put) GetChainId() []byte

func (*Put) GetContainer

func (x *Put) GetContainer() []byte

func (*Put) GetRequestId

func (x *Put) GetRequestId() uint32

func (*Put) ProtoMessage

func (*Put) ProtoMessage()

func (*Put) ProtoReflect

func (x *Put) ProtoReflect() protoreflect.Message

func (*Put) Reset

func (x *Put) Reset()

func (*Put) String

func (x *Put) String() string

type QuorumCertificate

type QuorumCertificate struct {
	BlockHeader       *BlockHeader `protobuf:"bytes,1,opt,name=block_header,json=blockHeader,proto3" json:"block_header,omitempty"`
	QuorumCertificate []byte       `protobuf:"bytes,2,opt,name=quorum_certificate,json=quorumCertificate,proto3" json:"quorum_certificate,omitempty"`
	// contains filtered or unexported fields
}

QuorumCertificate represents a quorum certificate for a block

func (*QuorumCertificate) Descriptor deprecated

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

Deprecated: Use QuorumCertificate.ProtoReflect.Descriptor instead.

func (*QuorumCertificate) GetBlockHeader

func (x *QuorumCertificate) GetBlockHeader() *BlockHeader

func (*QuorumCertificate) GetQuorumCertificate

func (x *QuorumCertificate) GetQuorumCertificate() []byte

func (*QuorumCertificate) ProtoMessage

func (*QuorumCertificate) ProtoMessage()

func (*QuorumCertificate) ProtoReflect

func (x *QuorumCertificate) ProtoReflect() protoreflect.Message

func (*QuorumCertificate) Reset

func (x *QuorumCertificate) Reset()

func (*QuorumCertificate) String

func (x *QuorumCertificate) String() string

type QuorumRound

type QuorumRound struct {
	QuorumCertificate []byte `protobuf:"bytes,1,opt,name=quorum_certificate,json=quorumCertificate,proto3" json:"quorum_certificate,omitempty"`
	Round             uint64 `protobuf:"varint,2,opt,name=round,proto3" json:"round,omitempty"`
	// contains filtered or unexported fields
}

QuorumRound represents a quorum round

func (*QuorumRound) Descriptor deprecated

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

Deprecated: Use QuorumRound.ProtoReflect.Descriptor instead.

func (*QuorumRound) GetQuorumCertificate added in v1.1.11

func (x *QuorumRound) GetQuorumCertificate() []byte

func (*QuorumRound) GetRound added in v1.1.11

func (x *QuorumRound) GetRound() uint64

func (*QuorumRound) ProtoMessage

func (*QuorumRound) ProtoMessage()

func (*QuorumRound) ProtoReflect

func (x *QuorumRound) ProtoReflect() protoreflect.Message

func (*QuorumRound) Reset

func (x *QuorumRound) Reset()

func (*QuorumRound) String

func (x *QuorumRound) String() string

type ReplicationRequest

type ReplicationRequest struct {
	Seqs        []uint64 `protobuf:"varint,1,rep,packed,name=seqs,proto3" json:"seqs,omitempty"`
	LatestRound uint64   `protobuf:"varint,2,opt,name=latest_round,json=latestRound,proto3" json:"latest_round,omitempty"`
	// contains filtered or unexported fields
}

ReplicationRequest requests replicated data

func (*ReplicationRequest) Descriptor deprecated

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

Deprecated: Use ReplicationRequest.ProtoReflect.Descriptor instead.

func (*ReplicationRequest) GetLatestRound

func (x *ReplicationRequest) GetLatestRound() uint64

func (*ReplicationRequest) GetSeqs

func (x *ReplicationRequest) GetSeqs() []uint64

func (*ReplicationRequest) ProtoMessage

func (*ReplicationRequest) ProtoMessage()

func (*ReplicationRequest) ProtoReflect

func (x *ReplicationRequest) ProtoReflect() protoreflect.Message

func (*ReplicationRequest) Reset

func (x *ReplicationRequest) Reset()

func (*ReplicationRequest) String

func (x *ReplicationRequest) String() string

type ReplicationResponse

type ReplicationResponse struct {
	Data        [][]byte `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
	LatestRound uint64   `protobuf:"varint,2,opt,name=latest_round,json=latestRound,proto3" json:"latest_round,omitempty"`
	LatestQr    []byte   `protobuf:"bytes,3,opt,name=latest_qr,json=latestQr,proto3" json:"latest_qr,omitempty"`
	// contains filtered or unexported fields
}

ReplicationResponse contains replicated data

func (*ReplicationResponse) Descriptor deprecated

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

Deprecated: Use ReplicationResponse.ProtoReflect.Descriptor instead.

func (*ReplicationResponse) GetData

func (x *ReplicationResponse) GetData() [][]byte

func (*ReplicationResponse) GetLatestQr added in v1.1.11

func (x *ReplicationResponse) GetLatestQr() []byte

func (*ReplicationResponse) GetLatestRound

func (x *ReplicationResponse) GetLatestRound() uint64

func (*ReplicationResponse) ProtoMessage

func (*ReplicationResponse) ProtoMessage()

func (*ReplicationResponse) ProtoReflect

func (x *ReplicationResponse) ProtoReflect() protoreflect.Message

func (*ReplicationResponse) Reset

func (x *ReplicationResponse) Reset()

func (*ReplicationResponse) String

func (x *ReplicationResponse) String() string

type Signature

type Signature struct {
	Signer []byte `protobuf:"bytes,1,opt,name=signer,proto3" json:"signer,omitempty"`
	Value  []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// contains filtered or unexported fields
}

Signature represents a cryptographic signature

func (*Signature) Descriptor deprecated

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

Deprecated: Use Signature.ProtoReflect.Descriptor instead.

func (*Signature) GetSigner

func (x *Signature) GetSigner() []byte

func (*Signature) GetValue

func (x *Signature) GetValue() []byte

func (*Signature) ProtoMessage

func (*Signature) ProtoMessage()

func (*Signature) ProtoReflect

func (x *Signature) ProtoReflect() protoreflect.Message

func (*Signature) Reset

func (x *Signature) Reset()

func (*Signature) String

func (x *Signature) String() string

type StateSummaryFrontier

type StateSummaryFrontier struct {

	// Chain being responded from
	ChainId []byte `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
	// Request id of the original GetStateSummaryFrontier request
	RequestId uint32 `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// The requested state summary
	Summary []byte `protobuf:"bytes,3,opt,name=summary,proto3" json:"summary,omitempty"`
	// contains filtered or unexported fields
}

StateSummaryFrontier is sent in response to a GetStateSummaryFrontier request

func (*StateSummaryFrontier) Descriptor deprecated

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

Deprecated: Use StateSummaryFrontier.ProtoReflect.Descriptor instead.

func (*StateSummaryFrontier) GetChainId

func (x *StateSummaryFrontier) GetChainId() []byte

func (*StateSummaryFrontier) GetRequestId

func (x *StateSummaryFrontier) GetRequestId() uint32

func (*StateSummaryFrontier) GetSummary

func (x *StateSummaryFrontier) GetSummary() []byte

func (*StateSummaryFrontier) ProtoMessage

func (*StateSummaryFrontier) ProtoMessage()

func (*StateSummaryFrontier) ProtoReflect

func (x *StateSummaryFrontier) ProtoReflect() protoreflect.Message

func (*StateSummaryFrontier) Reset

func (x *StateSummaryFrontier) Reset()

func (*StateSummaryFrontier) String

func (x *StateSummaryFrontier) String() string

type SubnetUptime added in v1.1.11

type SubnetUptime struct {

	// Subnet the peer is validating
	SubnetId []byte `protobuf:"bytes,1,opt,name=subnet_id,json=subnetId,proto3" json:"subnet_id,omitempty"`
	// Uptime percentage on the subnet [0, 100]
	Uptime uint32 `protobuf:"varint,2,opt,name=uptime,proto3" json:"uptime,omitempty"`
	// contains filtered or unexported fields
}

SubnetUptime is a descriptor for a peer's perceived uptime on a subnet.

func (*SubnetUptime) Descriptor deprecated added in v1.1.11

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

Deprecated: Use SubnetUptime.ProtoReflect.Descriptor instead.

func (*SubnetUptime) GetSubnetId added in v1.1.11

func (x *SubnetUptime) GetSubnetId() []byte

func (*SubnetUptime) GetUptime added in v1.1.11

func (x *SubnetUptime) GetUptime() uint32

func (*SubnetUptime) ProtoMessage added in v1.1.11

func (*SubnetUptime) ProtoMessage()

func (*SubnetUptime) ProtoReflect added in v1.1.11

func (x *SubnetUptime) ProtoReflect() protoreflect.Message

func (*SubnetUptime) Reset added in v1.1.11

func (x *SubnetUptime) Reset()

func (*SubnetUptime) String added in v1.1.11

func (x *SubnetUptime) String() string

type Vote

type Vote struct {
	BlockHeader *BlockHeader `protobuf:"bytes,1,opt,name=block_header,json=blockHeader,proto3" json:"block_header,omitempty"`
	Signature   *Signature   `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
	// contains filtered or unexported fields
}

Vote represents a vote on a block

func (*Vote) Descriptor deprecated

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

Deprecated: Use Vote.ProtoReflect.Descriptor instead.

func (*Vote) GetBlockHeader

func (x *Vote) GetBlockHeader() *BlockHeader

func (*Vote) GetSignature

func (x *Vote) GetSignature() *Signature

func (*Vote) ProtoMessage

func (*Vote) ProtoMessage()

func (*Vote) ProtoReflect

func (x *Vote) ProtoReflect() protoreflect.Message

func (*Vote) Reset

func (x *Vote) Reset()

func (*Vote) String

func (x *Vote) String() string

Jump to

Keyboard shortcuts

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