migrate: lux/node/proto/zap → luxfi/proto/node/zap (canonical schema home)

Pulls the 5 node-internal ZAP schemas (platformvm, vm, p2p, sync) out of
the luxfi/node module subpath and into the canonical luxfi/proto module
at proto/node/zap/. Consumer import paths updated in lux/node — same
sweep removed the redundant proto/zap/ subdir there.
This commit is contained in:
Hanzo AI
2026-05-21 14:42:41 -07:00
parent 287ff0840c
commit fbd343d269
5 changed files with 2291 additions and 0 deletions
File diff suppressed because it is too large Load Diff
+630
View File
@@ -0,0 +1,630 @@
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
// Package p2p provides P2P message types for network communication.
// This is the ZAP-based implementation (zero protobuf).
package p2p
import "fmt"
// EngineType represents the consensus engine type
type EngineType int32
const (
EngineType_ENGINE_TYPE_UNSPECIFIED EngineType = 0
EngineType_ENGINE_TYPE_CHAIN EngineType = 1
EngineType_ENGINE_TYPE_DAG EngineType = 2
)
func (e EngineType) String() string {
switch e {
case EngineType_ENGINE_TYPE_CHAIN:
return "CHAIN"
case EngineType_ENGINE_TYPE_DAG:
return "DAG"
default:
return "UNSPECIFIED"
}
}
// Message is the top-level P2P message container
type Message struct {
Message isMessage_Message
}
type isMessage_Message interface {
isMessage_Message()
}
type Message_CompressedZstd struct{ CompressedZstd []byte }
type Message_Ping struct{ Ping *Ping }
type Message_Pong struct{ Pong *Pong }
type Message_Handshake struct{ Handshake *Handshake }
type Message_GetPeerList struct{ GetPeerList *GetPeerList }
type Message_PeerList_ struct{ PeerList_ *PeerList }
type Message_GetStateSummaryFrontier struct{ GetStateSummaryFrontier *GetStateSummaryFrontier }
type Message_StateSummaryFrontier_ struct{ StateSummaryFrontier_ *StateSummaryFrontier }
type Message_GetAcceptedStateSummary struct{ GetAcceptedStateSummary *GetAcceptedStateSummary }
type Message_AcceptedStateSummary_ struct{ AcceptedStateSummary_ *AcceptedStateSummary }
type Message_GetAcceptedFrontier struct{ GetAcceptedFrontier *GetAcceptedFrontier }
type Message_AcceptedFrontier_ struct{ AcceptedFrontier_ *AcceptedFrontier }
type Message_GetAccepted struct{ GetAccepted *GetAccepted }
type Message_Accepted_ struct{ Accepted_ *Accepted }
type Message_GetAncestors struct{ GetAncestors *GetAncestors }
type Message_Ancestors_ struct{ Ancestors_ *Ancestors }
type Message_Get struct{ Get *Get }
type Message_Put struct{ Put *Put }
type Message_PushQuery struct{ PushQuery *PushQuery }
type Message_PullQuery struct{ PullQuery *PullQuery }
type Message_Chits struct{ Chits *Chits }
type Message_Request struct{ Request *Request }
type Message_Response struct{ Response *Response }
type Message_Gossip struct{ Gossip *Gossip }
type Message_Error struct{ Error *Error }
type Message_BFT struct{ BFT *BFT }
func (*Message_CompressedZstd) isMessage_Message() {}
func (*Message_Ping) isMessage_Message() {}
func (*Message_Pong) isMessage_Message() {}
func (*Message_Handshake) isMessage_Message() {}
func (*Message_GetPeerList) isMessage_Message() {}
func (*Message_PeerList_) isMessage_Message() {}
func (*Message_GetStateSummaryFrontier) isMessage_Message() {}
func (*Message_StateSummaryFrontier_) isMessage_Message() {}
func (*Message_GetAcceptedStateSummary) isMessage_Message() {}
func (*Message_AcceptedStateSummary_) isMessage_Message() {}
func (*Message_GetAcceptedFrontier) isMessage_Message() {}
func (*Message_AcceptedFrontier_) isMessage_Message() {}
func (*Message_GetAccepted) isMessage_Message() {}
func (*Message_Accepted_) isMessage_Message() {}
func (*Message_GetAncestors) isMessage_Message() {}
func (*Message_Ancestors_) isMessage_Message() {}
func (*Message_Get) isMessage_Message() {}
func (*Message_Put) isMessage_Message() {}
func (*Message_PushQuery) isMessage_Message() {}
func (*Message_PullQuery) isMessage_Message() {}
func (*Message_Chits) isMessage_Message() {}
func (*Message_Request) isMessage_Message() {}
func (*Message_Response) isMessage_Message() {}
func (*Message_Gossip) isMessage_Message() {}
func (*Message_Error) isMessage_Message() {}
func (*Message_BFT) isMessage_Message() {}
func (m *Message) GetMessage() isMessage_Message { return m.Message }
func (m *Message) GetCompressedZstd() []byte { if x, ok := m.Message.(*Message_CompressedZstd); ok { return x.CompressedZstd }; return nil }
func (m *Message) GetPing() *Ping { if x, ok := m.Message.(*Message_Ping); ok { return x.Ping }; return nil }
func (m *Message) GetPong() *Pong { if x, ok := m.Message.(*Message_Pong); ok { return x.Pong }; return nil }
func (m *Message) GetHandshake() *Handshake { if x, ok := m.Message.(*Message_Handshake); ok { return x.Handshake }; return nil }
func (m *Message) GetGetPeerList() *GetPeerList { if x, ok := m.Message.(*Message_GetPeerList); ok { return x.GetPeerList }; return nil }
func (m *Message) GetPeerList() *PeerList { if x, ok := m.Message.(*Message_PeerList_); ok { return x.PeerList_ }; return nil }
func (m *Message) GetGetStateSummaryFrontier() *GetStateSummaryFrontier { if x, ok := m.Message.(*Message_GetStateSummaryFrontier); ok { return x.GetStateSummaryFrontier }; return nil }
func (m *Message) GetStateSummaryFrontier() *StateSummaryFrontier { if x, ok := m.Message.(*Message_StateSummaryFrontier_); ok { return x.StateSummaryFrontier_ }; return nil }
func (m *Message) GetGetAcceptedStateSummary() *GetAcceptedStateSummary { if x, ok := m.Message.(*Message_GetAcceptedStateSummary); ok { return x.GetAcceptedStateSummary }; return nil }
func (m *Message) GetAcceptedStateSummary() *AcceptedStateSummary { if x, ok := m.Message.(*Message_AcceptedStateSummary_); ok { return x.AcceptedStateSummary_ }; return nil }
func (m *Message) GetGetAcceptedFrontier() *GetAcceptedFrontier { if x, ok := m.Message.(*Message_GetAcceptedFrontier); ok { return x.GetAcceptedFrontier }; return nil }
func (m *Message) GetAcceptedFrontier() *AcceptedFrontier { if x, ok := m.Message.(*Message_AcceptedFrontier_); ok { return x.AcceptedFrontier_ }; return nil }
func (m *Message) GetGetAccepted() *GetAccepted { if x, ok := m.Message.(*Message_GetAccepted); ok { return x.GetAccepted }; return nil }
func (m *Message) GetAccepted() *Accepted { if x, ok := m.Message.(*Message_Accepted_); ok { return x.Accepted_ }; return nil }
func (m *Message) GetGetAncestors() *GetAncestors { if x, ok := m.Message.(*Message_GetAncestors); ok { return x.GetAncestors }; return nil }
func (m *Message) GetAncestors() *Ancestors { if x, ok := m.Message.(*Message_Ancestors_); ok { return x.Ancestors_ }; return nil }
func (m *Message) GetGet() *Get { if x, ok := m.Message.(*Message_Get); ok { return x.Get }; return nil }
func (m *Message) GetPut() *Put { if x, ok := m.Message.(*Message_Put); ok { return x.Put }; return nil }
func (m *Message) GetPushQuery() *PushQuery { if x, ok := m.Message.(*Message_PushQuery); ok { return x.PushQuery }; return nil }
func (m *Message) GetPullQuery() *PullQuery { if x, ok := m.Message.(*Message_PullQuery); ok { return x.PullQuery }; return nil }
func (m *Message) GetChits() *Chits { if x, ok := m.Message.(*Message_Chits); ok { return x.Chits }; return nil }
func (m *Message) GetRequest() *Request { if x, ok := m.Message.(*Message_Request); ok { return x.Request }; return nil }
func (m *Message) GetResponse() *Response { if x, ok := m.Message.(*Message_Response); ok { return x.Response }; return nil }
func (m *Message) GetGossip() *Gossip { if x, ok := m.Message.(*Message_Gossip); ok { return x.Gossip }; return nil }
func (m *Message) GetError() *Error { if x, ok := m.Message.(*Message_Error); ok { return x.Error }; return nil }
func (m *Message) GetBFT() *BFT { if x, ok := m.Message.(*Message_BFT); ok { return x.BFT }; return nil }
func (m *Message) Reset() { *m = Message{} }
func (m *Message) String() string { return fmt.Sprintf("%+v", m.Message) }
// Ping message
type Ping struct {
Uptime uint32
SubnetUptimes []*SubnetUptime
}
func (m *Ping) GetUptime() uint32 { return m.Uptime }
func (m *Ping) GetSubnetUptimes() []*SubnetUptime { return m.SubnetUptimes }
func (m *Ping) Reset() { *m = Ping{} }
func (m *Ping) String() string { return fmt.Sprintf("Ping{Uptime:%d}", m.Uptime) }
// SubnetUptime for ping/pong
type SubnetUptime struct {
ChainId []byte
Uptime uint32
}
func (m *SubnetUptime) GetChainId() []byte { return m.ChainId }
func (m *SubnetUptime) GetUptime() uint32 { return m.Uptime }
// Pong message
type Pong struct {
Uptime uint32
SubnetUptimes []*SubnetUptime
}
func (m *Pong) GetUptime() uint32 { return m.Uptime }
func (m *Pong) GetSubnetUptimes() []*SubnetUptime { return m.SubnetUptimes }
func (m *Pong) Reset() { *m = Pong{} }
func (m *Pong) String() string { return fmt.Sprintf("Pong{Uptime:%d}", m.Uptime) }
// Handshake message
type Handshake struct {
NetworkId uint32
MyTime uint64
IpAddr []byte
IpPort uint32
IpSigningTime uint64
IpNodeIdSig []byte
TrackedNets [][]byte
Client *Client
SupportedLps []uint32
ObjectedLps []uint32
KnownPeers *BloomFilter
IpBlsSig []byte
AllChains bool
// IpMldsaSig is the FIPS 204 ML-DSA-65 signature over the canonical
// SignedIP bytes. Append-only field on the gossip wire: legacy peers
// that never set this send an empty bytes blob, which the receiver
// treats as "classical-only" and refuses only when its chain runs
// under a strict-PQ profile. New strict-PQ producers MUST populate
// it; otherwise their gossip is rejected by strict-PQ verifiers.
IpMldsaSig []byte
}
func (m *Handshake) GetNetworkId() uint32 { return m.NetworkId }
func (m *Handshake) GetMyTime() uint64 { return m.MyTime }
func (m *Handshake) GetIpAddr() []byte { return m.IpAddr }
func (m *Handshake) GetIpPort() uint32 { return m.IpPort }
func (m *Handshake) GetIpSigningTime() uint64 { return m.IpSigningTime }
func (m *Handshake) GetIpNodeIdSig() []byte { return m.IpNodeIdSig }
func (m *Handshake) GetTrackedNets() [][]byte { return m.TrackedNets }
func (m *Handshake) GetClient() *Client { return m.Client }
func (m *Handshake) GetSupportedLps() []uint32 { return m.SupportedLps }
func (m *Handshake) GetObjectedLps() []uint32 { return m.ObjectedLps }
func (m *Handshake) GetKnownPeers() *BloomFilter { return m.KnownPeers }
func (m *Handshake) GetIpBlsSig() []byte { return m.IpBlsSig }
func (m *Handshake) GetAllChains() bool { return m.AllChains }
func (m *Handshake) GetIpMldsaSig() []byte { return m.IpMldsaSig }
func (m *Handshake) Reset() { *m = Handshake{} }
func (m *Handshake) String() string { return fmt.Sprintf("Handshake{NetworkId:%d}", m.NetworkId) }
// Client info
type Client struct {
Name string
Major uint32
Minor uint32
Patch uint32
}
func (m *Client) GetName() string { return m.Name }
func (m *Client) GetMajor() uint32 { return m.Major }
func (m *Client) GetMinor() uint32 { return m.Minor }
func (m *Client) GetPatch() uint32 { return m.Patch }
// BloomFilter for peer discovery
type BloomFilter struct {
Filter []byte
Salt []byte
}
func (m *BloomFilter) GetFilter() []byte { return m.Filter }
func (m *BloomFilter) GetSalt() []byte { return m.Salt }
// GetPeerList message
type GetPeerList struct {
KnownPeers *BloomFilter
AllChains bool
}
func (m *GetPeerList) GetKnownPeers() *BloomFilter { return m.KnownPeers }
func (m *GetPeerList) GetAllChains() bool { return m.AllChains }
func (m *GetPeerList) Reset() { *m = GetPeerList{} }
func (m *GetPeerList) String() string { return "GetPeerList{}" }
// PeerList message
type PeerList struct {
ClaimedIpPorts []*ClaimedIpPort
}
func (m *PeerList) GetClaimedIpPorts() []*ClaimedIpPort { return m.ClaimedIpPorts }
func (m *PeerList) Reset() { *m = PeerList{} }
func (m *PeerList) String() string { return fmt.Sprintf("PeerList{count:%d}", len(m.ClaimedIpPorts)) }
// ClaimedIpPort in peer list
type ClaimedIpPort struct {
X509Certificate []byte
IpAddr []byte
IpPort uint32
Timestamp uint64
Signature []byte
TxId []byte
}
func (m *ClaimedIpPort) GetX509Certificate() []byte { return m.X509Certificate }
func (m *ClaimedIpPort) GetIpAddr() []byte { return m.IpAddr }
func (m *ClaimedIpPort) GetIpPort() uint32 { return m.IpPort }
func (m *ClaimedIpPort) GetTimestamp() uint64 { return m.Timestamp }
func (m *ClaimedIpPort) GetSignature() []byte { return m.Signature }
func (m *ClaimedIpPort) GetTxId() []byte { return m.TxId }
// GetStateSummaryFrontier message
type GetStateSummaryFrontier struct {
ChainId []byte
RequestId uint32
Deadline uint64
}
func (m *GetStateSummaryFrontier) GetChainId() []byte { return m.ChainId }
func (m *GetStateSummaryFrontier) GetRequestId() uint32 { return m.RequestId }
func (m *GetStateSummaryFrontier) GetDeadline() uint64 { return m.Deadline }
func (m *GetStateSummaryFrontier) Reset() { *m = GetStateSummaryFrontier{} }
func (m *GetStateSummaryFrontier) String() string { return fmt.Sprintf("GetStateSummaryFrontier{RequestId:%d}", m.RequestId) }
// StateSummaryFrontier message
type StateSummaryFrontier struct {
ChainId []byte
RequestId uint32
Summary []byte
}
func (m *StateSummaryFrontier) GetChainId() []byte { return m.ChainId }
func (m *StateSummaryFrontier) GetRequestId() uint32 { return m.RequestId }
func (m *StateSummaryFrontier) GetSummary() []byte { return m.Summary }
func (m *StateSummaryFrontier) Reset() { *m = StateSummaryFrontier{} }
func (m *StateSummaryFrontier) String() string { return fmt.Sprintf("StateSummaryFrontier{RequestId:%d}", m.RequestId) }
// GetAcceptedStateSummary message
type GetAcceptedStateSummary struct {
ChainId []byte
RequestId uint32
Deadline uint64
Heights []uint64
}
func (m *GetAcceptedStateSummary) GetChainId() []byte { return m.ChainId }
func (m *GetAcceptedStateSummary) GetRequestId() uint32 { return m.RequestId }
func (m *GetAcceptedStateSummary) GetDeadline() uint64 { return m.Deadline }
func (m *GetAcceptedStateSummary) GetHeights() []uint64 { return m.Heights }
func (m *GetAcceptedStateSummary) Reset() { *m = GetAcceptedStateSummary{} }
func (m *GetAcceptedStateSummary) String() string { return fmt.Sprintf("GetAcceptedStateSummary{RequestId:%d}", m.RequestId) }
// AcceptedStateSummary message
type AcceptedStateSummary struct {
ChainId []byte
RequestId uint32
SummaryIds [][]byte
}
func (m *AcceptedStateSummary) GetChainId() []byte { return m.ChainId }
func (m *AcceptedStateSummary) GetRequestId() uint32 { return m.RequestId }
func (m *AcceptedStateSummary) GetSummaryIds() [][]byte { return m.SummaryIds }
func (m *AcceptedStateSummary) Reset() { *m = AcceptedStateSummary{} }
func (m *AcceptedStateSummary) String() string { return fmt.Sprintf("AcceptedStateSummary{RequestId:%d}", m.RequestId) }
// GetAcceptedFrontier message
type GetAcceptedFrontier struct {
ChainId []byte
RequestId uint32
Deadline uint64
EngineType EngineType
}
func (m *GetAcceptedFrontier) GetChainId() []byte { return m.ChainId }
func (m *GetAcceptedFrontier) GetRequestId() uint32 { return m.RequestId }
func (m *GetAcceptedFrontier) GetDeadline() uint64 { return m.Deadline }
func (m *GetAcceptedFrontier) GetEngineType() EngineType { return m.EngineType }
func (m *GetAcceptedFrontier) Reset() { *m = GetAcceptedFrontier{} }
func (m *GetAcceptedFrontier) String() string { return fmt.Sprintf("GetAcceptedFrontier{RequestId:%d}", m.RequestId) }
// AcceptedFrontier message
type AcceptedFrontier struct {
ChainId []byte
RequestId uint32
ContainerId []byte
}
func (m *AcceptedFrontier) GetChainId() []byte { return m.ChainId }
func (m *AcceptedFrontier) GetRequestId() uint32 { return m.RequestId }
func (m *AcceptedFrontier) GetContainerId() []byte { return m.ContainerId }
func (m *AcceptedFrontier) Reset() { *m = AcceptedFrontier{} }
func (m *AcceptedFrontier) String() string { return fmt.Sprintf("AcceptedFrontier{RequestId:%d}", m.RequestId) }
// GetAccepted message
type GetAccepted struct {
ChainId []byte
RequestId uint32
Deadline uint64
ContainerIds [][]byte
EngineType EngineType
}
func (m *GetAccepted) GetChainId() []byte { return m.ChainId }
func (m *GetAccepted) GetRequestId() uint32 { return m.RequestId }
func (m *GetAccepted) GetDeadline() uint64 { return m.Deadline }
func (m *GetAccepted) GetContainerIds() [][]byte { return m.ContainerIds }
func (m *GetAccepted) GetEngineType() EngineType { return m.EngineType }
func (m *GetAccepted) Reset() { *m = GetAccepted{} }
func (m *GetAccepted) String() string { return fmt.Sprintf("GetAccepted{RequestId:%d}", m.RequestId) }
// Accepted message
type Accepted struct {
ChainId []byte
RequestId uint32
ContainerIds [][]byte
}
func (m *Accepted) GetChainId() []byte { return m.ChainId }
func (m *Accepted) GetRequestId() uint32 { return m.RequestId }
func (m *Accepted) GetContainerIds() [][]byte { return m.ContainerIds }
func (m *Accepted) Reset() { *m = Accepted{} }
func (m *Accepted) String() string { return fmt.Sprintf("Accepted{RequestId:%d}", m.RequestId) }
// GetAncestors message
type GetAncestors struct {
ChainId []byte
RequestId uint32
Deadline uint64
ContainerId []byte
EngineType EngineType
}
func (m *GetAncestors) GetChainId() []byte { return m.ChainId }
func (m *GetAncestors) GetRequestId() uint32 { return m.RequestId }
func (m *GetAncestors) GetDeadline() uint64 { return m.Deadline }
func (m *GetAncestors) GetContainerId() []byte { return m.ContainerId }
func (m *GetAncestors) GetEngineType() EngineType { return m.EngineType }
func (m *GetAncestors) Reset() { *m = GetAncestors{} }
func (m *GetAncestors) String() string { return fmt.Sprintf("GetAncestors{RequestId:%d}", m.RequestId) }
// Ancestors message
type Ancestors struct {
ChainId []byte
RequestId uint32
Containers [][]byte
}
func (m *Ancestors) GetChainId() []byte { return m.ChainId }
func (m *Ancestors) GetRequestId() uint32 { return m.RequestId }
func (m *Ancestors) GetContainers() [][]byte { return m.Containers }
func (m *Ancestors) Reset() { *m = Ancestors{} }
func (m *Ancestors) String() string { return fmt.Sprintf("Ancestors{RequestId:%d}", m.RequestId) }
// Get message
type Get struct {
ChainId []byte
RequestId uint32
Deadline uint64
ContainerId []byte
EngineType EngineType
}
func (m *Get) GetChainId() []byte { return m.ChainId }
func (m *Get) GetRequestId() uint32 { return m.RequestId }
func (m *Get) GetDeadline() uint64 { return m.Deadline }
func (m *Get) GetContainerId() []byte { return m.ContainerId }
func (m *Get) GetEngineType() EngineType { return m.EngineType }
func (m *Get) Reset() { *m = Get{} }
func (m *Get) String() string { return fmt.Sprintf("Get{RequestId:%d}", m.RequestId) }
// Put message
type Put struct {
ChainId []byte
RequestId uint32
Container []byte
EngineType EngineType
}
func (m *Put) GetChainId() []byte { return m.ChainId }
func (m *Put) GetRequestId() uint32 { return m.RequestId }
func (m *Put) GetContainer() []byte { return m.Container }
func (m *Put) GetEngineType() EngineType { return m.EngineType }
func (m *Put) Reset() { *m = Put{} }
func (m *Put) String() string { return fmt.Sprintf("Put{RequestId:%d}", m.RequestId) }
// PushQuery message
type PushQuery struct {
ChainId []byte
RequestId uint32
Deadline uint64
Container []byte
EngineType EngineType
RequestedHeight uint64
}
func (m *PushQuery) GetChainId() []byte { return m.ChainId }
func (m *PushQuery) GetRequestId() uint32 { return m.RequestId }
func (m *PushQuery) GetDeadline() uint64 { return m.Deadline }
func (m *PushQuery) GetContainer() []byte { return m.Container }
func (m *PushQuery) GetEngineType() EngineType { return m.EngineType }
func (m *PushQuery) GetRequestedHeight() uint64 { return m.RequestedHeight }
func (m *PushQuery) Reset() { *m = PushQuery{} }
func (m *PushQuery) String() string { return fmt.Sprintf("PushQuery{RequestId:%d}", m.RequestId) }
// PullQuery message
type PullQuery struct {
ChainId []byte
RequestId uint32
Deadline uint64
ContainerId []byte
EngineType EngineType
RequestedHeight uint64
}
func (m *PullQuery) GetChainId() []byte { return m.ChainId }
func (m *PullQuery) GetRequestId() uint32 { return m.RequestId }
func (m *PullQuery) GetDeadline() uint64 { return m.Deadline }
func (m *PullQuery) GetContainerId() []byte { return m.ContainerId }
func (m *PullQuery) GetEngineType() EngineType { return m.EngineType }
func (m *PullQuery) GetRequestedHeight() uint64 { return m.RequestedHeight }
func (m *PullQuery) Reset() { *m = PullQuery{} }
func (m *PullQuery) String() string { return fmt.Sprintf("PullQuery{RequestId:%d}", m.RequestId) }
// Chits message
type Chits struct {
ChainId []byte
RequestId uint32
PreferredId []byte
PreferredIdAtHeight []byte
AcceptedId []byte
AcceptedHeight uint64
}
func (m *Chits) GetChainId() []byte { return m.ChainId }
func (m *Chits) GetRequestId() uint32 { return m.RequestId }
func (m *Chits) GetPreferredId() []byte { return m.PreferredId }
func (m *Chits) GetPreferredIdAtHeight() []byte { return m.PreferredIdAtHeight }
func (m *Chits) GetAcceptedId() []byte { return m.AcceptedId }
func (m *Chits) GetAcceptedHeight() uint64 { return m.AcceptedHeight }
func (m *Chits) Reset() { *m = Chits{} }
func (m *Chits) String() string { return fmt.Sprintf("Chits{RequestId:%d}", m.RequestId) }
// Request message (application-level)
type Request struct {
ChainId []byte
RequestId uint32
Deadline uint64
AppBytes []byte
}
func (m *Request) GetChainId() []byte { return m.ChainId }
func (m *Request) GetRequestId() uint32 { return m.RequestId }
func (m *Request) GetDeadline() uint64 { return m.Deadline }
func (m *Request) GetAppBytes() []byte { return m.AppBytes }
func (m *Request) Reset() { *m = Request{} }
func (m *Request) String() string { return fmt.Sprintf("Request{RequestId:%d}", m.RequestId) }
// Response message (application-level)
type Response struct {
ChainId []byte
RequestId uint32
AppBytes []byte
}
func (m *Response) GetChainId() []byte { return m.ChainId }
func (m *Response) GetRequestId() uint32 { return m.RequestId }
func (m *Response) GetAppBytes() []byte { return m.AppBytes }
func (m *Response) Reset() { *m = Response{} }
func (m *Response) String() string { return fmt.Sprintf("Response{RequestId:%d}", m.RequestId) }
// Gossip message (application-level)
type Gossip struct {
ChainId []byte
AppBytes []byte
}
func (m *Gossip) GetChainId() []byte { return m.ChainId }
func (m *Gossip) GetAppBytes() []byte { return m.AppBytes }
func (m *Gossip) Reset() { *m = Gossip{} }
func (m *Gossip) String() string { return "Gossip{}" }
// Error message (application-level error)
type Error struct {
ChainId []byte
RequestId uint32
ErrorCode int32
ErrorMessage string
}
func (m *Error) GetChainId() []byte { return m.ChainId }
func (m *Error) GetRequestId() uint32 { return m.RequestId }
func (m *Error) GetErrorCode() int32 { return m.ErrorCode }
func (m *Error) GetErrorMessage() string { return m.ErrorMessage }
func (m *Error) Reset() { *m = Error{} }
func (m *Error) String() string { return fmt.Sprintf("Error{RequestId:%d,Code:%d}", m.RequestId, m.ErrorCode) }
// BFT message
type BFT struct {
ChainId []byte
Message isBFT_Message
}
type isBFT_Message interface {
isBFT_Message()
}
type BFT_BlockProposal struct{ BlockProposal *BlockProposal }
type BFT_Vote struct{ Vote *Vote }
type BFT_EmptyVote struct{ EmptyVote *EmptyVote }
type BFT_FinalizeVote struct{ FinalizeVote *Vote }
type BFT_Notarization struct{ Notarization *QuorumCertificate }
type BFT_EmptyNotarization struct{ EmptyNotarization *EmptyNotarization }
type BFT_Finalization struct{ Finalization *QuorumCertificate }
type BFT_ReplicationRequest struct{ ReplicationRequest *ReplicationRequest }
type BFT_ReplicationResponse struct{ ReplicationResponse *ReplicationResponse }
func (*BFT_BlockProposal) isBFT_Message() {}
func (*BFT_Vote) isBFT_Message() {}
func (*BFT_EmptyVote) isBFT_Message() {}
func (*BFT_FinalizeVote) isBFT_Message() {}
func (*BFT_Notarization) isBFT_Message() {}
func (*BFT_EmptyNotarization) isBFT_Message() {}
func (*BFT_Finalization) isBFT_Message() {}
func (*BFT_ReplicationRequest) isBFT_Message() {}
func (*BFT_ReplicationResponse) isBFT_Message() {}
func (m *BFT) GetChainId() []byte { return m.ChainId }
func (m *BFT) GetMessage() isBFT_Message { return m.Message }
func (m *BFT) GetBlockProposal() *BlockProposal { if x, ok := m.Message.(*BFT_BlockProposal); ok { return x.BlockProposal }; return nil }
func (m *BFT) GetVote() *Vote { if x, ok := m.Message.(*BFT_Vote); ok { return x.Vote }; return nil }
func (m *BFT) GetReplicationRequest() *ReplicationRequest { if x, ok := m.Message.(*BFT_ReplicationRequest); ok { return x.ReplicationRequest }; return nil }
func (m *BFT) GetReplicationResponse() *ReplicationResponse { if x, ok := m.Message.(*BFT_ReplicationResponse); ok { return x.ReplicationResponse }; return nil }
func (m *BFT) Reset() { *m = BFT{} }
func (m *BFT) String() string { return "BFT{}" }
// BlockProposal message
type BlockProposal struct {
Block []byte
}
func (m *BlockProposal) GetBlock() []byte { return m.Block }
// Vote message
type Vote struct {
BlockHash []byte
Signature []byte
}
func (m *Vote) GetBlockHash() []byte { return m.BlockHash }
func (m *Vote) GetSignature() []byte { return m.Signature }
// EmptyVote message
type EmptyVote struct {
View uint64
Seq uint64
Signature []byte
}
// QuorumCertificate message
type QuorumCertificate struct {
BlockHash []byte
View uint64
Seq uint64
AggregatedSignature []byte
Signers []byte
}
// EmptyNotarization message
type EmptyNotarization struct {
View uint64
Seq uint64
AggregatedSignature []byte
Signers []byte
}
// ReplicationRequest message
type ReplicationRequest struct {
Seqs []uint64
LatestRound uint64
}
func (m *ReplicationRequest) GetSeqs() []uint64 { return m.Seqs }
func (m *ReplicationRequest) GetLatestRound() uint64 { return m.LatestRound }
// ReplicationResponse message
type ReplicationResponse struct {
Messages [][]byte
}
+97
View File
@@ -0,0 +1,97 @@
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
// Package platformvm provides Platform VM types for L1 validator operations (ZAP implementation).
package platformvm
// L1ValidatorRegistrationJustification contains justification for L1 validator registration
type L1ValidatorRegistrationJustification struct {
preimage isL1ValidatorRegistrationJustification_Preimage
}
type isL1ValidatorRegistrationJustification_Preimage interface {
isL1ValidatorRegistrationJustification_Preimage()
}
type L1ValidatorRegistrationJustification_ConvertNetworkToL1TxData struct {
ConvertNetworkToL1TxData []byte
}
type L1ValidatorRegistrationJustification_RegisterL1ValidatorMessage struct {
RegisterL1ValidatorMessage []byte
}
func (*L1ValidatorRegistrationJustification_ConvertNetworkToL1TxData) isL1ValidatorRegistrationJustification_Preimage() {}
func (*L1ValidatorRegistrationJustification_RegisterL1ValidatorMessage) isL1ValidatorRegistrationJustification_Preimage() {}
func (m *L1ValidatorRegistrationJustification) GetPreimage() isL1ValidatorRegistrationJustification_Preimage {
return m.preimage
}
func (m *L1ValidatorRegistrationJustification) GetConvertNetworkToL1TxData() []byte {
if x, ok := m.preimage.(*L1ValidatorRegistrationJustification_ConvertNetworkToL1TxData); ok {
return x.ConvertNetworkToL1TxData
}
return nil
}
func (m *L1ValidatorRegistrationJustification) GetRegisterL1ValidatorMessage() []byte {
if x, ok := m.preimage.(*L1ValidatorRegistrationJustification_RegisterL1ValidatorMessage); ok {
return x.RegisterL1ValidatorMessage
}
return nil
}
func (m *L1ValidatorRegistrationJustification) Reset() {
*m = L1ValidatorRegistrationJustification{}
}
// L1ValidatorWeightJustification contains justification for L1 validator weight updates
type L1ValidatorWeightJustification struct {
preimage isL1ValidatorWeightJustification_Preimage
}
type isL1ValidatorWeightJustification_Preimage interface {
isL1ValidatorWeightJustification_Preimage()
}
type L1ValidatorWeightJustification_L1ValidatorWeightMessage struct {
L1ValidatorWeightMessage []byte
}
func (*L1ValidatorWeightJustification_L1ValidatorWeightMessage) isL1ValidatorWeightJustification_Preimage() {}
func (m *L1ValidatorWeightJustification) GetPreimage() isL1ValidatorWeightJustification_Preimage {
return m.preimage
}
func (m *L1ValidatorWeightJustification) GetL1ValidatorWeightMessage() []byte {
if x, ok := m.preimage.(*L1ValidatorWeightJustification_L1ValidatorWeightMessage); ok {
return x.L1ValidatorWeightMessage
}
return nil
}
func (m *L1ValidatorWeightJustification) Reset() {
*m = L1ValidatorWeightJustification{}
}
// ChainIDIndex identifies a validator by chain ID and index
type ChainIDIndex struct {
ChainId []byte
Index uint32
}
func (m *ChainIDIndex) GetChainId() []byte {
if m != nil {
return m.ChainId
}
return nil
}
func (m *ChainIDIndex) GetIndex() uint32 {
if m != nil {
return m.Index
}
return 0
}
+206
View File
@@ -0,0 +1,206 @@
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
// Package sync provides sync types for merkledb.
// This is the ZAP-based implementation (zero protobuf).
package sync
// Key represents a merkle tree key
type Key struct {
Length uint64
Value []byte
}
func (k *Key) GetLength() uint64 {
if k != nil {
return k.Length
}
return 0
}
func (k *Key) GetValue() []byte {
if k != nil {
return k.Value
}
return nil
}
// MaybeBytes represents an optional byte slice
type MaybeBytes struct {
Value []byte
IsNothing bool
}
func (m *MaybeBytes) GetValue() []byte {
if m != nil {
return m.Value
}
return nil
}
func (m *MaybeBytes) GetIsNothing() bool {
if m != nil {
return m.IsNothing
}
return false
}
// ProofNode represents a node in a merkle proof
type ProofNode struct {
Key *Key
ValueOrHash *MaybeBytes
Children map[uint32][]byte
}
func (p *ProofNode) GetKey() *Key {
if p != nil {
return p.Key
}
return nil
}
func (p *ProofNode) GetValueOrHash() *MaybeBytes {
if p != nil {
return p.ValueOrHash
}
return nil
}
func (p *ProofNode) GetChildren() map[uint32][]byte {
if p != nil {
return p.Children
}
return nil
}
// Proof represents a merkle proof
type Proof struct {
Key []byte
Value *MaybeBytes
Proof []*ProofNode
}
func (p *Proof) GetKey() []byte {
if p != nil {
return p.Key
}
return nil
}
func (p *Proof) GetValue() *MaybeBytes {
if p != nil {
return p.Value
}
return nil
}
func (p *Proof) GetProof() []*ProofNode {
if p != nil {
return p.Proof
}
return nil
}
// KeyValue represents a key-value pair
type KeyValue struct {
Key []byte
Value []byte
}
func (kv *KeyValue) GetKey() []byte {
if kv != nil {
return kv.Key
}
return nil
}
func (kv *KeyValue) GetValue() []byte {
if kv != nil {
return kv.Value
}
return nil
}
// KeyChange represents a change to a key
type KeyChange struct {
Key []byte
Value *MaybeBytes
}
func (kc *KeyChange) GetKey() []byte {
if kc != nil {
return kc.Key
}
return nil
}
func (kc *KeyChange) GetValue() *MaybeBytes {
if kc != nil {
return kc.Value
}
return nil
}
// RangeProof represents a range proof
type RangeProof struct {
StartProof []*ProofNode
EndProof []*ProofNode
KeyValues []*KeyValue
}
func (rp *RangeProof) GetStartProof() []*ProofNode {
if rp != nil {
return rp.StartProof
}
return nil
}
func (rp *RangeProof) GetEndProof() []*ProofNode {
if rp != nil {
return rp.EndProof
}
return nil
}
func (rp *RangeProof) GetKeyValues() []*KeyValue {
if rp != nil {
return rp.KeyValues
}
return nil
}
// ChangeProof represents a change proof
type ChangeProof struct {
StartProof []*ProofNode
EndProof []*ProofNode
KeyChanges []*KeyChange
HadRootsInHistory bool
}
func (cp *ChangeProof) GetStartProof() []*ProofNode {
if cp != nil {
return cp.StartProof
}
return nil
}
func (cp *ChangeProof) GetEndProof() []*ProofNode {
if cp != nil {
return cp.EndProof
}
return nil
}
func (cp *ChangeProof) GetKeyChanges() []*KeyChange {
if cp != nil {
return cp.KeyChanges
}
return nil
}
func (cp *ChangeProof) GetHadRootsInHistory() bool {
if cp != nil {
return cp.HadRootsInHistory
}
return false
}
+54
View File
@@ -0,0 +1,54 @@
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
// Package vm provides VM types for node-VM communication (ZAP implementation).
package vm
// State represents the VM state
type State int32
const (
State_STATE_UNSPECIFIED State = 0
State_STATE_STATE_SYNCING State = 1
State_STATE_BOOTSTRAPPING State = 2
State_STATE_NORMAL_OP State = 3
)
func (s State) String() string {
switch s {
case State_STATE_STATE_SYNCING:
return "STATE_SYNCING"
case State_STATE_BOOTSTRAPPING:
return "BOOTSTRAPPING"
case State_STATE_NORMAL_OP:
return "NORMAL_OP"
default:
return "UNSPECIFIED"
}
}
// Error represents VM error codes
type Error int32
const (
Error_ERROR_UNSPECIFIED Error = 0
Error_ERROR_CLOSED Error = 1
Error_ERROR_NOT_FOUND Error = 2
Error_ERROR_HEIGHT_INDEX_INCOMPLETE Error = 3
Error_ERROR_STATE_SYNC_NOT_IMPLEMENTED Error = 4
)
func (e Error) String() string {
switch e {
case Error_ERROR_CLOSED:
return "CLOSED"
case Error_ERROR_NOT_FOUND:
return "NOT_FOUND"
case Error_ERROR_HEIGHT_INDEX_INCOMPLETE:
return "HEIGHT_INDEX_INCOMPLETE"
case Error_ERROR_STATE_SYNC_NOT_IMPLEMENTED:
return "STATE_SYNC_NOT_IMPLEMENTED"
default:
return "UNSPECIFIED"
}
}