This commit is contained in:
Cassandra Heart 2024-03-03 21:20:24 -06:00 committed by GitHub
parent 7ad553fd62
commit a523edcb2a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 824 additions and 210 deletions

View File

@ -887,11 +887,11 @@ func logoVersion(width int) string {
out += " ''---.. ...---'' ##\n" out += " ''---.. ...---'' ##\n"
out += " ''----------''\n" out += " ''----------''\n"
out += " \n" out += " \n"
out += " Quilibrium Node - v1.4.0 Sunset\n" out += " Quilibrium Node - v1.4.1 Sunset\n"
out += " \n" out += " \n"
out += " DB Console\n" out += " DB Console\n"
} else { } else {
out = "Quilibrium Node - v1.4.0 Sunset - DB Console\n" out = "Quilibrium Node - v1.4.1 Sunset - DB Console\n"
} }
return out return out
} }

View File

@ -5,6 +5,7 @@ import (
"go.uber.org/zap" "go.uber.org/zap"
"source.quilibrium.com/quilibrium/monorepo/node/consensus" "source.quilibrium.com/quilibrium/monorepo/node/consensus"
"source.quilibrium.com/quilibrium/monorepo/node/consensus/master"
"source.quilibrium.com/quilibrium/monorepo/node/execution" "source.quilibrium.com/quilibrium/monorepo/node/execution"
"source.quilibrium.com/quilibrium/monorepo/node/execution/intrinsics/ceremony" "source.quilibrium.com/quilibrium/monorepo/node/execution/intrinsics/ceremony"
"source.quilibrium.com/quilibrium/monorepo/node/keys" "source.quilibrium.com/quilibrium/monorepo/node/keys"
@ -83,6 +84,10 @@ func (n *Node) GetPubSub() p2p.PubSub {
return n.pubSub return n.pubSub
} }
func (n *Node) GetMasterClock() *master.MasterClockConsensusEngine {
return n.engine.(*master.MasterClockConsensusEngine)
}
func (n *Node) GetExecutionEngines() []execution.ExecutionEngine { func (n *Node) GetExecutionEngines() []execution.ExecutionEngine {
list := []execution.ExecutionEngine{} list := []execution.ExecutionEngine{}
for _, e := range n.execEngines { for _, e := range n.execEngines {

View File

@ -59,5 +59,5 @@ func GetMinimumVersion() []byte {
} }
func GetVersion() []byte { func GetVersion() []byte {
return []byte{0x01, 0x04, 0x00} return []byte{0x01, 0x04, 0x01}
} }

View File

@ -146,7 +146,7 @@ func (e *MasterClockConsensusEngine) handleSelfTestReport(
} }
e.peerMapMx.Lock() e.peerMapMx.Lock()
if _, ok := e.peerMap[string(peerID)]; !ok { if _, ok := e.peerMap[string(peerID)]; ok {
e.peerMapMx.Unlock() e.peerMapMx.Unlock()
return nil return nil
} }

View File

@ -3,6 +3,7 @@ package master
import ( import (
"context" "context"
"encoding/hex" "encoding/hex"
"math/big"
"sync" "sync"
"time" "time"
@ -280,6 +281,54 @@ func (e *MasterClockConsensusEngine) Stop(force bool) <-chan error {
return errChan return errChan
} }
func (
e *MasterClockConsensusEngine,
) GetPeerManifests() *protobufs.PeerManifestsResponse {
response := &protobufs.PeerManifestsResponse{
PeerManifests: []*protobufs.PeerManifest{},
}
e.peerMapMx.Lock()
for peerId, peerManifest := range e.peerMap {
peerId := peerId
peerManifest := peerManifest
manifest := &protobufs.PeerManifest{
PeerId: []byte(peerId),
Difficulty: peerManifest.Difficulty,
DifficultyMetric: peerManifest.DifficultyMetric,
Commit_16Metric: peerManifest.Commit_16Metric,
Commit_128Metric: peerManifest.Commit_128Metric,
Commit_1024Metric: peerManifest.Commit_1024Metric,
Commit_65536Metric: peerManifest.Commit_65536Metric,
Proof_16Metric: peerManifest.Proof_16Metric,
Proof_128Metric: peerManifest.Proof_128Metric,
Proof_1024Metric: peerManifest.Proof_1024Metric,
Proof_65536Metric: peerManifest.Proof_65536Metric,
Cores: peerManifest.Cores,
Memory: new(big.Int).SetBytes(peerManifest.Memory).Bytes(),
Storage: new(big.Int).SetBytes(peerManifest.Storage).Bytes(),
}
for _, capability := range peerManifest.Capabilities {
metadata := make([]byte, len(capability.AdditionalMetadata))
copy(metadata[:], capability.AdditionalMetadata[:])
manifest.Capabilities = append(
manifest.Capabilities,
&protobufs.Capability{
ProtocolIdentifier: capability.ProtocolIdentifier,
AdditionalMetadata: metadata,
},
)
}
response.PeerManifests = append(
response.PeerManifests,
manifest,
)
}
e.peerMapMx.Unlock()
return response
}
func (e *MasterClockConsensusEngine) GetDifficulty() uint32 { func (e *MasterClockConsensusEngine) GetDifficulty() uint32 {
return e.difficulty return e.difficulty
} }

View File

@ -34,6 +34,7 @@ var unknownDistance = new(big.Int).SetBytes([]byte{
type pendingFrame struct { type pendingFrame struct {
selector *big.Int selector *big.Int
parentSelector *big.Int parentSelector *big.Int
frameNumber uint64
} }
type DataTimeReel struct { type DataTimeReel struct {
@ -57,7 +58,7 @@ type DataTimeReel struct {
proverTrie *tries.RollingFrecencyCritbitTrie proverTrie *tries.RollingFrecencyCritbitTrie
pending map[uint64][]*pendingFrame pending map[uint64][]*pendingFrame
incompleteForks map[uint64][]*pendingFrame incompleteForks map[uint64][]*pendingFrame
frames chan *protobufs.ClockFrame frames chan *pendingFrame
newFrameCh chan *protobufs.ClockFrame newFrameCh chan *protobufs.ClockFrame
badFrameCh chan *protobufs.ClockFrame badFrameCh chan *protobufs.ClockFrame
done chan bool done chan bool
@ -111,7 +112,7 @@ func NewDataTimeReel(
lruFrames: cache, lruFrames: cache,
pending: make(map[uint64][]*pendingFrame), pending: make(map[uint64][]*pendingFrame),
incompleteForks: make(map[uint64][]*pendingFrame), incompleteForks: make(map[uint64][]*pendingFrame),
frames: make(chan *protobufs.ClockFrame), frames: make(chan *pendingFrame),
newFrameCh: make(chan *protobufs.ClockFrame), newFrameCh: make(chan *protobufs.ClockFrame),
badFrameCh: make(chan *protobufs.ClockFrame), badFrameCh: make(chan *protobufs.ClockFrame),
done: make(chan bool), done: make(chan bool),
@ -168,8 +169,22 @@ func (d *DataTimeReel) Insert(frame *protobufs.ClockFrame) error {
d.lruFrames.Add(string(frame.Output[:64]), string(frame.ParentSelector)) d.lruFrames.Add(string(frame.Output[:64]), string(frame.ParentSelector))
parent := new(big.Int).SetBytes(frame.ParentSelector)
selector, err := frame.GetSelector()
if err != nil {
panic(err)
}
distance, _ := d.GetDistance(frame)
d.storePending(selector, parent, distance, frame)
go func() { go func() {
d.frames <- frame d.frames <- &pendingFrame{
selector: selector,
parentSelector: parent,
frameNumber: frame.FrameNumber,
}
}() }()
return nil return nil
@ -251,24 +266,14 @@ func (d *DataTimeReel) runLoop() {
for { for {
select { select {
case frame := <-d.frames: case frame := <-d.frames:
d.logger.Debug(
"processing frame",
zap.Uint64("frame_number", frame.FrameNumber),
zap.String("output_tag", hex.EncodeToString(frame.Output[:64])),
zap.Uint64("head_number", d.head.FrameNumber),
zap.String("head_output_tag", hex.EncodeToString(d.head.Output[:64])),
)
// Most common scenario: in order new frame is higher number // Most common scenario: in order new frame is higher number
if d.head.FrameNumber < frame.FrameNumber { if d.head.FrameNumber < frame.frameNumber {
d.logger.Debug("frame is higher") d.logger.Debug("frame is higher")
parent := new(big.Int).SetBytes(frame.ParentSelector) // tag: equinox master filter changes
selector, err := frame.GetSelector() _, err := d.clockStore.GetMasterClockFrame(
if err != nil { allBitmaskFilter,
panic(err) frame.frameNumber)
}
distance, err := d.GetDistance(frame)
if err != nil { if err != nil {
d.logger.Debug("no master, add pending") d.logger.Debug("no master, add pending")
@ -279,7 +284,7 @@ func (d *DataTimeReel) runLoop() {
panic(err) panic(err)
} }
d.addPending(selector, parent, distance, frame) d.addPending(frame.selector, frame.parentSelector, frame.frameNumber)
d.processPending(d.head, frame) d.processPending(d.head, frame)
continue continue
} }
@ -289,58 +294,84 @@ func (d *DataTimeReel) runLoop() {
panic(err) panic(err)
} }
rawFrame, err := d.clockStore.GetParentDataClockFrame(
d.filter,
frame.frameNumber,
frame.selector.FillBytes(make([]byte, 32)),
false,
)
if err != nil {
panic(err)
}
distance, err := d.GetDistance(rawFrame)
if err != nil {
panic(err)
}
// If the frame has a gap from the head or is not descendent, mark it as // If the frame has a gap from the head or is not descendent, mark it as
// pending: // pending:
if frame.FrameNumber-d.head.FrameNumber != 1 || if frame.frameNumber-d.head.FrameNumber != 1 ||
parent.Cmp(headSelector) != 0 { frame.parentSelector.Cmp(headSelector) != 0 {
d.logger.Debug( d.logger.Debug(
"frame has has gap or is non-descendent, fork choice", "frame has has gap or is non-descendent, fork choice",
zap.Bool("has_gap", frame.FrameNumber-d.head.FrameNumber != 1), zap.Bool("has_gap", frame.frameNumber-d.head.FrameNumber != 1),
zap.String("parent_selector", parent.Text(16)), zap.String("parent_selector", frame.parentSelector.Text(16)),
zap.String("head_selector", headSelector.Text(16)), zap.String("head_selector", headSelector.Text(16)),
) )
d.forkChoice(frame, distance) d.forkChoice(rawFrame, distance)
d.processPending(d.head, frame) d.processPending(d.head, frame)
continue continue
} }
// Otherwise set it as the next and process all pending // Otherwise set it as the next and process all pending
d.setHead(frame, distance) d.setHead(rawFrame, distance)
d.processPending(d.head, frame) d.processPending(d.head, frame)
} else if d.head.FrameNumber == frame.FrameNumber { } else if d.head.FrameNumber == frame.frameNumber {
// frames are equivalent, no need to act // frames are equivalent, no need to act
if bytes.Equal(d.head.Output, frame.Output) { headSelector, err := d.head.GetSelector()
if err != nil {
panic(err)
}
if headSelector.Cmp(frame.selector) == 0 {
d.logger.Debug("equivalent frame") d.logger.Debug("equivalent frame")
d.processPending(d.head, frame) d.processPending(d.head, frame)
continue continue
} }
distance, err := d.GetDistance(frame) rawFrame, err := d.clockStore.GetParentDataClockFrame(
d.filter,
frame.frameNumber,
frame.selector.FillBytes(make([]byte, 32)),
false,
)
if err != nil {
panic(err)
}
distance, err := d.GetDistance(rawFrame)
if err != nil { if err != nil {
panic(err) panic(err)
} }
d.logger.Debug(
"frame is same height",
zap.String("head_distance", d.headDistance.Text(16)),
zap.String("distance", distance.Text(16)),
)
// Optimization: if competing frames share a parent we can short-circuit // Optimization: if competing frames share a parent we can short-circuit
// fork choice // fork choice
if bytes.Equal(d.head.ParentSelector, frame.ParentSelector) && if new(big.Int).SetBytes(d.head.ParentSelector).Cmp(
distance.Cmp(d.headDistance) < 0 { frame.parentSelector,
) == 0 && distance.Cmp(d.headDistance) < 0 {
d.logger.Debug( d.logger.Debug(
"frame shares parent, has shorter distance, short circuit", "frame shares parent, has shorter distance, short circuit",
) )
d.totalDistance.Sub(d.totalDistance, d.headDistance) d.totalDistance.Sub(d.totalDistance, d.headDistance)
d.setHead(frame, distance) d.setHead(rawFrame, distance)
d.processPending(d.head, frame) d.processPending(d.head, frame)
continue continue
} }
// Choose fork // Choose fork
d.forkChoice(frame, distance) d.forkChoice(rawFrame, distance)
d.processPending(d.head, frame) d.processPending(d.head, frame)
} else { } else {
d.logger.Debug("frame is lower height") d.logger.Debug("frame is lower height")
@ -349,7 +380,7 @@ func (d *DataTimeReel) runLoop() {
// thrashing // thrashing
existing, _, err := d.clockStore.GetDataClockFrame( existing, _, err := d.clockStore.GetDataClockFrame(
d.filter, d.filter,
frame.FrameNumber, frame.frameNumber,
true, true,
) )
if err != nil { if err != nil {
@ -358,22 +389,17 @@ func (d *DataTimeReel) runLoop() {
panic(err) panic(err)
} }
existingSelector, err := existing.GetSelector()
if err != nil {
panic(err)
}
// It's a fork, but it's behind. We need to stash it until it catches // It's a fork, but it's behind. We need to stash it until it catches
// up (or dies off) // up (or dies off)
if !bytes.Equal(existing.Output, frame.Output) { if existingSelector.Cmp(frame.selector) != 0 {
d.logger.Debug("is fork, add pending") d.logger.Debug("is fork, add pending")
distance, err := d.GetDistance(frame) d.addPending(frame.selector, frame.parentSelector, frame.frameNumber)
if err != nil {
panic(err)
}
parent, selector, err := frame.GetParentAndSelector()
if err != nil {
panic(err)
}
d.addPending(selector, parent, distance, frame)
d.processPending(d.head, frame) d.processPending(d.head, frame)
} }
} }
@ -386,25 +412,23 @@ func (d *DataTimeReel) runLoop() {
func (d *DataTimeReel) addPending( func (d *DataTimeReel) addPending(
selector *big.Int, selector *big.Int,
parent *big.Int, parent *big.Int,
distance *big.Int, frameNumber uint64,
frame *protobufs.ClockFrame,
) { ) {
d.logger.Debug( d.logger.Debug(
"add pending", "add pending",
zap.Uint64("head_frame_number", d.head.FrameNumber), zap.Uint64("head_frame_number", d.head.FrameNumber),
zap.Uint64("add_frame_number", frame.FrameNumber), zap.Uint64("add_frame_number", frameNumber),
zap.String("selector", selector.Text(16)), zap.String("selector", selector.Text(16)),
zap.String("parent", parent.Text(16)), zap.String("parent", parent.Text(16)),
zap.String("distance", distance.Text(16)),
) )
if d.head.FrameNumber <= frame.FrameNumber { if d.head.FrameNumber <= frameNumber {
if _, ok := d.pending[frame.FrameNumber]; !ok { if _, ok := d.pending[frameNumber]; !ok {
d.pending[frame.FrameNumber] = []*pendingFrame{} d.pending[frameNumber] = []*pendingFrame{}
} }
// avoid heavy thrashing // avoid heavy thrashing
for _, frame := range d.pending[frame.FrameNumber] { for _, frame := range d.pending[frameNumber] {
if frame.selector.Cmp(selector) == 0 { if frame.selector.Cmp(selector) == 0 {
d.logger.Debug("exists in pending already") d.logger.Debug("exists in pending already")
return return
@ -412,6 +436,29 @@ func (d *DataTimeReel) addPending(
} }
} }
if d.head.FrameNumber <= frameNumber {
d.logger.Debug(
"accumulate in pending",
zap.Int("pending_neighbors", len(d.pending[frameNumber])),
)
d.pending[frameNumber] = append(
d.pending[frameNumber],
&pendingFrame{
selector: selector,
parentSelector: parent,
frameNumber: frameNumber,
},
)
}
}
func (d *DataTimeReel) storePending(
selector *big.Int,
parent *big.Int,
distance *big.Int,
frame *protobufs.ClockFrame,
) {
// avoid db thrashing // avoid db thrashing
if existing, err := d.clockStore.GetParentDataClockFrame( if existing, err := d.clockStore.GetParentDataClockFrame(
frame.Filter, frame.Filter,
@ -446,26 +493,11 @@ func (d *DataTimeReel) addPending(
panic(err) panic(err)
} }
} }
if d.head.FrameNumber <= frame.FrameNumber {
d.logger.Debug(
"accumulate in pending",
zap.Int("pending_neighbors", len(d.pending[frame.FrameNumber])),
)
d.pending[frame.FrameNumber] = append(
d.pending[frame.FrameNumber],
&pendingFrame{
selector: selector,
parentSelector: parent,
},
)
}
} }
func (d *DataTimeReel) processPending( func (d *DataTimeReel) processPending(
frame *protobufs.ClockFrame, frame *protobufs.ClockFrame,
lastReceived *protobufs.ClockFrame, lastReceived *pendingFrame,
) { ) {
d.logger.Debug( d.logger.Debug(
"process pending", "process pending",
@ -484,10 +516,7 @@ func (d *DataTimeReel) processPending(
return frameNumbers[i] > frameNumbers[j] return frameNumbers[i] > frameNumbers[j]
}) })
lastSelector, err := lastReceived.GetSelector() lastSelector := lastReceived.selector
if err != nil {
panic(err)
}
for _, f := range frameNumbers { for _, f := range frameNumbers {
if f < d.head.FrameNumber { if f < d.head.FrameNumber {
@ -514,7 +543,7 @@ func (d *DataTimeReel) processPending(
d.logger.Debug("try process next") d.logger.Debug("try process next")
next := nextPending[0] next := nextPending[0]
d.pending[f] = d.pending[f][1:] d.pending[f] = d.pending[f][1:]
if f == lastReceived.FrameNumber && next.selector.Cmp(lastSelector) == 0 { if f == lastReceived.frameNumber && next.selector.Cmp(lastSelector) == 0 {
d.pending[f] = append(d.pending[f], next) d.pending[f] = append(d.pending[f], next)
if len(d.pending[f]) == 1 { if len(d.pending[f]) == 1 {
nextPending = nil nextPending = nil
@ -522,28 +551,10 @@ func (d *DataTimeReel) processPending(
continue continue
} }
nextFrame, err := d.clockStore.GetParentDataClockFrame( go func() {
d.filter, d.frames <- next
f, }()
next.selector.FillBytes(make([]byte, 32)), return
false,
)
if err != nil && !errors.Is(err, store.ErrNotFound) {
panic(err)
}
if nextFrame != nil {
d.logger.Debug("next found, send frame back in")
go func() {
d.frames <- nextFrame
}()
return
}
if len(d.pending[f]) == 0 {
d.logger.Debug("last next processing, clear list")
delete(d.pending, f)
nextPending = nil
}
} }
} }
} }
@ -690,7 +701,7 @@ func (d *DataTimeReel) forkChoice(
if err != nil { if err != nil {
// If lineage cannot be verified, set it for later // If lineage cannot be verified, set it for later
if errors.Is(err, store.ErrNotFound) { if errors.Is(err, store.ErrNotFound) {
d.addPending(selector, parentSelector, distance, frame) d.addPending(selector, parentSelector, frame.FrameNumber)
return return
} else { } else {
panic(err) panic(err)
@ -753,7 +764,7 @@ func (d *DataTimeReel) forkChoice(
if err != nil { if err != nil {
// If lineage cannot be verified, set it for later // If lineage cannot be verified, set it for later
if errors.Is(err, store.ErrNotFound) { if errors.Is(err, store.ErrNotFound) {
d.addPending(selector, parentSelector, distance, frame) d.addPending(selector, parentSelector, frame.FrameNumber)
return return
} else { } else {
panic(err) panic(err)
@ -787,7 +798,7 @@ func (d *DataTimeReel) forkChoice(
zap.String("right_total", rightTotal.Text(16)), zap.String("right_total", rightTotal.Text(16)),
zap.String("left_total", overweight.Text(16)), zap.String("left_total", overweight.Text(16)),
) )
d.addPending(selector, parentSelector, distance, frame) d.addPending(selector, parentSelector, frame.FrameNumber)
return return
} }

View File

@ -107,7 +107,7 @@ func generateTestProvers() (
} }
func TestDataTimeReel(t *testing.T) { func TestDataTimeReel(t *testing.T) {
logger, _ := zap.NewProduction() logger, _ := zap.NewDevelopment()
db := store.NewInMemKVDB() db := store.NewInMemKVDB()
clockStore := store.NewPebbleClockStore(db, logger) clockStore := store.NewPebbleClockStore(db, logger)
prover := qcrypto.NewWesolowskiFrameProver(logger) prover := qcrypto.NewWesolowskiFrameProver(logger)

View File

@ -180,6 +180,7 @@ func main() {
node.GetClockStore(), node.GetClockStore(),
node.GetKeyManager(), node.GetKeyManager(),
node.GetPubSub(), node.GetPubSub(),
node.GetMasterClock(),
node.GetExecutionEngines(), node.GetExecutionEngines(),
) )
if err != nil { if err != nil {
@ -494,5 +495,5 @@ func printLogo() {
func printVersion() { func printVersion() {
fmt.Println(" ") fmt.Println(" ")
fmt.Println(" Quilibrium Node - v1.4.0 Sunset") fmt.Println(" Quilibrium Node - v1.4.1 Sunset")
} }

View File

@ -297,7 +297,7 @@ func initDHT(
logger.Info("establishing dht") logger.Info("establishing dht")
var kademliaDHT *dht.IpfsDHT var kademliaDHT *dht.IpfsDHT
var err error var err error
if !isBootstrapPeer { if isBootstrapPeer {
kademliaDHT, err = dht.New(ctx, h, dht.Mode(dht.ModeServer)) kademliaDHT, err = dht.New(ctx, h, dht.Mode(dht.ModeServer))
} else { } else {
kademliaDHT, err = dht.New(ctx, h, dht.Mode(dht.ModeAuto)) kademliaDHT, err = dht.New(ctx, h, dht.Mode(dht.ModeAuto))
@ -327,6 +327,11 @@ func initDHT(
wg.Add(1) wg.Add(1)
go func() { go func() {
defer wg.Done() defer wg.Done()
if peerinfo.ID == h.ID() ||
h.Network().Connectedness(peerinfo.ID) == network.Connected {
return
}
if err := h.Connect(ctx, *peerinfo); err != nil { if err := h.Connect(ctx, *peerinfo); err != nil {
logger.Info("error while connecting to dht peer", zap.Error(err)) logger.Info("error while connecting to dht peer", zap.Error(err))
} else { } else {

View File

@ -1263,6 +1263,272 @@ func (x *ValidationMessage) GetValidation() []byte {
return nil return nil
} }
type GetPeerManifestsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *GetPeerManifestsRequest) Reset() {
*x = GetPeerManifestsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_node_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetPeerManifestsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetPeerManifestsRequest) ProtoMessage() {}
func (x *GetPeerManifestsRequest) ProtoReflect() protoreflect.Message {
mi := &file_node_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetPeerManifestsRequest.ProtoReflect.Descriptor instead.
func (*GetPeerManifestsRequest) Descriptor() ([]byte, []int) {
return file_node_proto_rawDescGZIP(), []int{20}
}
type PeerManifest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PeerId []byte `protobuf:"bytes,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"`
// The difficulty the self test was conducted under
Difficulty uint32 `protobuf:"varint,2,opt,name=difficulty,proto3" json:"difficulty,omitempty"`
// The resulting local time of computing the VDF test under the difficulty
DifficultyMetric int64 `protobuf:"varint,3,opt,name=difficulty_metric,json=difficultyMetric,proto3" json:"difficulty_metric,omitempty"`
// The resulting local time of computing a KZG commitment for a 16 degree
// polynomial
Commit_16Metric int64 `protobuf:"varint,4,opt,name=commit_16_metric,json=commit16Metric,proto3" json:"commit_16_metric,omitempty"`
// The resulting local time of computing a KZG commitment for a 128 degree
// polynomial
Commit_128Metric int64 `protobuf:"varint,5,opt,name=commit_128_metric,json=commit128Metric,proto3" json:"commit_128_metric,omitempty"`
// The resulting local time of computing a KZG commitment for a 1024 degree
// polynomial
Commit_1024Metric int64 `protobuf:"varint,6,opt,name=commit_1024_metric,json=commit1024Metric,proto3" json:"commit_1024_metric,omitempty"`
// The resulting local time of computing a KZG commitment for a 65536 degree
// polynomial
Commit_65536Metric int64 `protobuf:"varint,7,opt,name=commit_65536_metric,json=commit65536Metric,proto3" json:"commit_65536_metric,omitempty"`
// The resulting local time of computing a KZG proof for a 16 degree
// polynomial
Proof_16Metric int64 `protobuf:"varint,8,opt,name=proof_16_metric,json=proof16Metric,proto3" json:"proof_16_metric,omitempty"`
// The resulting local time of computing a KZG proof for a 128 degree
// polynomial
Proof_128Metric int64 `protobuf:"varint,9,opt,name=proof_128_metric,json=proof128Metric,proto3" json:"proof_128_metric,omitempty"`
// The resulting local time of computing a KZG proof for a 1024 degree
// polynomial
Proof_1024Metric int64 `protobuf:"varint,10,opt,name=proof_1024_metric,json=proof1024Metric,proto3" json:"proof_1024_metric,omitempty"`
// The resulting local time of computing a KZG proof for a 65536 degree
// polynomial
Proof_65536Metric int64 `protobuf:"varint,11,opt,name=proof_65536_metric,json=proof65536Metric,proto3" json:"proof_65536_metric,omitempty"`
// The number of reported accessible cores
Cores uint32 `protobuf:"varint,12,opt,name=cores,proto3" json:"cores,omitempty"`
// The total available memory
Memory []byte `protobuf:"bytes,13,opt,name=memory,proto3" json:"memory,omitempty"`
// The total available storage
Storage []byte `protobuf:"bytes,14,opt,name=storage,proto3" json:"storage,omitempty"`
// The list of supported capabilities
Capabilities []*Capability `protobuf:"bytes,15,rep,name=capabilities,proto3" json:"capabilities,omitempty"`
}
func (x *PeerManifest) Reset() {
*x = PeerManifest{}
if protoimpl.UnsafeEnabled {
mi := &file_node_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PeerManifest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PeerManifest) ProtoMessage() {}
func (x *PeerManifest) ProtoReflect() protoreflect.Message {
mi := &file_node_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PeerManifest.ProtoReflect.Descriptor instead.
func (*PeerManifest) Descriptor() ([]byte, []int) {
return file_node_proto_rawDescGZIP(), []int{21}
}
func (x *PeerManifest) GetPeerId() []byte {
if x != nil {
return x.PeerId
}
return nil
}
func (x *PeerManifest) GetDifficulty() uint32 {
if x != nil {
return x.Difficulty
}
return 0
}
func (x *PeerManifest) GetDifficultyMetric() int64 {
if x != nil {
return x.DifficultyMetric
}
return 0
}
func (x *PeerManifest) GetCommit_16Metric() int64 {
if x != nil {
return x.Commit_16Metric
}
return 0
}
func (x *PeerManifest) GetCommit_128Metric() int64 {
if x != nil {
return x.Commit_128Metric
}
return 0
}
func (x *PeerManifest) GetCommit_1024Metric() int64 {
if x != nil {
return x.Commit_1024Metric
}
return 0
}
func (x *PeerManifest) GetCommit_65536Metric() int64 {
if x != nil {
return x.Commit_65536Metric
}
return 0
}
func (x *PeerManifest) GetProof_16Metric() int64 {
if x != nil {
return x.Proof_16Metric
}
return 0
}
func (x *PeerManifest) GetProof_128Metric() int64 {
if x != nil {
return x.Proof_128Metric
}
return 0
}
func (x *PeerManifest) GetProof_1024Metric() int64 {
if x != nil {
return x.Proof_1024Metric
}
return 0
}
func (x *PeerManifest) GetProof_65536Metric() int64 {
if x != nil {
return x.Proof_65536Metric
}
return 0
}
func (x *PeerManifest) GetCores() uint32 {
if x != nil {
return x.Cores
}
return 0
}
func (x *PeerManifest) GetMemory() []byte {
if x != nil {
return x.Memory
}
return nil
}
func (x *PeerManifest) GetStorage() []byte {
if x != nil {
return x.Storage
}
return nil
}
func (x *PeerManifest) GetCapabilities() []*Capability {
if x != nil {
return x.Capabilities
}
return nil
}
type PeerManifestsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PeerManifests []*PeerManifest `protobuf:"bytes,1,rep,name=peer_manifests,json=peerManifests,proto3" json:"peer_manifests,omitempty"`
}
func (x *PeerManifestsResponse) Reset() {
*x = PeerManifestsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_node_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PeerManifestsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PeerManifestsResponse) ProtoMessage() {}
func (x *PeerManifestsResponse) ProtoReflect() protoreflect.Message {
mi := &file_node_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PeerManifestsResponse.ProtoReflect.Descriptor instead.
func (*PeerManifestsResponse) Descriptor() ([]byte, []int) {
return file_node_proto_rawDescGZIP(), []int{22}
}
func (x *PeerManifestsResponse) GetPeerManifests() []*PeerManifest {
if x != nil {
return x.PeerManifests
}
return nil
}
var File_node_proto protoreflect.FileDescriptor var File_node_proto protoreflect.FileDescriptor
var file_node_proto_rawDesc = []byte{ var file_node_proto_rawDesc = []byte{
@ -1433,55 +1699,109 @@ var file_node_proto_rawDesc = []byte{
0x74, 0x69, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x11, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x11, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x61, 0x6c,
0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x76, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x76,
0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x80, 0x01, 0x0a, 0x11, 0x56, 0x61, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, 0x74,
0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x65, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71,
0x6b, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x75, 0x65, 0x73, 0x74, 0x22, 0xe5, 0x04, 0x0a, 0x0c, 0x50, 0x65, 0x65, 0x72, 0x4d, 0x61, 0x6e,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64,
0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e,
0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01,
0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x28, 0x0d, 0x52, 0x0a, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x12, 0x2b,
0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x0a, 0x11, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x5f, 0x6d, 0x65, 0x74,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x80, 0x05, 0x0a, 0x72, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x64, 0x69, 0x66, 0x66, 0x69,
0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x09, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x28, 0x0a, 0x10, 0x63,
0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x31, 0x36, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18,
0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x31, 0x36, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f,
0x31, 0x32, 0x38, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x31, 0x32, 0x38, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x31, 0x30, 0x32, 0x34,
0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63,
0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x31, 0x30, 0x32, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12,
0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x36, 0x35, 0x35, 0x33, 0x36, 0x5f,
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x63, 0x6f,
0x6d, 0x6d, 0x69, 0x74, 0x36, 0x35, 0x35, 0x33, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12,
0x26, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x31, 0x36, 0x5f, 0x6d, 0x65, 0x74, 0x72,
0x69, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x31,
0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x6f, 0x66,
0x5f, 0x31, 0x32, 0x38, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x31, 0x32, 0x38, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x5f,
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x70, 0x72,
0x6f, 0x6f, 0x66, 0x31, 0x30, 0x32, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x2c, 0x0a,
0x12, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x36, 0x35, 0x35, 0x33, 0x36, 0x5f, 0x6d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x6f, 0x66,
0x36, 0x35, 0x35, 0x33, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x63,
0x6f, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65,
0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f,
0x72, 0x61, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72,
0x61, 0x67, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
0x69, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, 0x75, 0x69, 0x6c,
0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65,
0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x65, 0x0a, 0x15,
0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x50, 0x65, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73,
0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0e, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6d, 0x61,
0x0c, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x66, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x73, 0x74, 0x73, 0x32, 0x80, 0x01, 0x0a, 0x11, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69,
0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6b, 0x0a, 0x11, 0x50, 0x65, 0x72,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a,
0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65,
0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x69,
0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d,
0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65,
0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65,
0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x2e,
0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x71, 0x75, 0x69,
0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64,
0x65, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0xf6, 0x05, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53,
0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61,
0x6d, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d,
0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65,
0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27,
0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65,
0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x72,
0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62,
0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70,
0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69,
0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70,
0x62, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65,
0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69,
0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e,
0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x65, 0x12, 0x65, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x6f, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f,
0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65,
0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e,
0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e,
0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62,
0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70,
0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75,
0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x4e,
0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x6e, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66,
0x6f, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e,
0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e,
0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e,
0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x74, 0x77,
0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x68, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64,
0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e,
0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x10, 0x47, 0x65, 0x74,
0x50, 0x65, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x12, 0x30, 0x2e,
0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x4d,
0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x2e, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64,
0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x4d, 0x61,
0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32,
0xcf, 0x01, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x60, 0x0a, 0xcf, 0x01, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x60, 0x0a,
0x0b, 0x50, 0x75, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x2e, 0x71, 0x0b, 0x50, 0x75, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x2e, 0x71,
0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e,
@ -1514,62 +1834,69 @@ func file_node_proto_rawDescGZIP() []byte {
return file_node_proto_rawDescData return file_node_proto_rawDescData
} }
var file_node_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_node_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
var file_node_proto_goTypes = []interface{}{ var file_node_proto_goTypes = []interface{}{
(*GetFramesRequest)(nil), // 0: quilibrium.node.node.pb.GetFramesRequest (*GetFramesRequest)(nil), // 0: quilibrium.node.node.pb.GetFramesRequest
(*GetFrameInfoRequest)(nil), // 1: quilibrium.node.node.pb.GetFrameInfoRequest (*GetFrameInfoRequest)(nil), // 1: quilibrium.node.node.pb.GetFrameInfoRequest
(*GetPeerInfoRequest)(nil), // 2: quilibrium.node.node.pb.GetPeerInfoRequest (*GetPeerInfoRequest)(nil), // 2: quilibrium.node.node.pb.GetPeerInfoRequest
(*GetNodeInfoRequest)(nil), // 3: quilibrium.node.node.pb.GetNodeInfoRequest (*GetNodeInfoRequest)(nil), // 3: quilibrium.node.node.pb.GetNodeInfoRequest
(*GetNetworkInfoRequest)(nil), // 4: quilibrium.node.node.pb.GetNetworkInfoRequest (*GetNetworkInfoRequest)(nil), // 4: quilibrium.node.node.pb.GetNetworkInfoRequest
(*FramesResponse)(nil), // 5: quilibrium.node.node.pb.FramesResponse (*FramesResponse)(nil), // 5: quilibrium.node.node.pb.FramesResponse
(*FrameInfoResponse)(nil), // 6: quilibrium.node.node.pb.FrameInfoResponse (*FrameInfoResponse)(nil), // 6: quilibrium.node.node.pb.FrameInfoResponse
(*PeerInfo)(nil), // 7: quilibrium.node.node.pb.PeerInfo (*PeerInfo)(nil), // 7: quilibrium.node.node.pb.PeerInfo
(*PeerInfoResponse)(nil), // 8: quilibrium.node.node.pb.PeerInfoResponse (*PeerInfoResponse)(nil), // 8: quilibrium.node.node.pb.PeerInfoResponse
(*NetworkInfo)(nil), // 9: quilibrium.node.node.pb.NetworkInfo (*NetworkInfo)(nil), // 9: quilibrium.node.node.pb.NetworkInfo
(*NodeInfoResponse)(nil), // 10: quilibrium.node.node.pb.NodeInfoResponse (*NodeInfoResponse)(nil), // 10: quilibrium.node.node.pb.NodeInfoResponse
(*PutPeerInfoRequest)(nil), // 11: quilibrium.node.node.pb.PutPeerInfoRequest (*PutPeerInfoRequest)(nil), // 11: quilibrium.node.node.pb.PutPeerInfoRequest
(*PutNodeInfoRequest)(nil), // 12: quilibrium.node.node.pb.PutNodeInfoRequest (*PutNodeInfoRequest)(nil), // 12: quilibrium.node.node.pb.PutNodeInfoRequest
(*PutResponse)(nil), // 13: quilibrium.node.node.pb.PutResponse (*PutResponse)(nil), // 13: quilibrium.node.node.pb.PutResponse
(*NetworkInfoResponse)(nil), // 14: quilibrium.node.node.pb.NetworkInfoResponse (*NetworkInfoResponse)(nil), // 14: quilibrium.node.node.pb.NetworkInfoResponse
(*GetTokenInfoRequest)(nil), // 15: quilibrium.node.node.pb.GetTokenInfoRequest (*GetTokenInfoRequest)(nil), // 15: quilibrium.node.node.pb.GetTokenInfoRequest
(*TokenInfoResponse)(nil), // 16: quilibrium.node.node.pb.TokenInfoResponse (*TokenInfoResponse)(nil), // 16: quilibrium.node.node.pb.TokenInfoResponse
(*Capability)(nil), // 17: quilibrium.node.node.pb.Capability (*Capability)(nil), // 17: quilibrium.node.node.pb.Capability
(*SelfTestReport)(nil), // 18: quilibrium.node.node.pb.SelfTestReport (*SelfTestReport)(nil), // 18: quilibrium.node.node.pb.SelfTestReport
(*ValidationMessage)(nil), // 19: quilibrium.node.node.pb.ValidationMessage (*ValidationMessage)(nil), // 19: quilibrium.node.node.pb.ValidationMessage
(*ClockFrame)(nil), // 20: quilibrium.node.clock.pb.ClockFrame (*GetPeerManifestsRequest)(nil), // 20: quilibrium.node.node.pb.GetPeerManifestsRequest
(*PeerManifest)(nil), // 21: quilibrium.node.node.pb.PeerManifest
(*PeerManifestsResponse)(nil), // 22: quilibrium.node.node.pb.PeerManifestsResponse
(*ClockFrame)(nil), // 23: quilibrium.node.clock.pb.ClockFrame
} }
var file_node_proto_depIdxs = []int32{ var file_node_proto_depIdxs = []int32{
20, // 0: quilibrium.node.node.pb.FramesResponse.truncated_clock_frames:type_name -> quilibrium.node.clock.pb.ClockFrame 23, // 0: quilibrium.node.node.pb.FramesResponse.truncated_clock_frames:type_name -> quilibrium.node.clock.pb.ClockFrame
20, // 1: quilibrium.node.node.pb.FrameInfoResponse.clock_frame:type_name -> quilibrium.node.clock.pb.ClockFrame 23, // 1: quilibrium.node.node.pb.FrameInfoResponse.clock_frame:type_name -> quilibrium.node.clock.pb.ClockFrame
7, // 2: quilibrium.node.node.pb.PeerInfoResponse.peer_info:type_name -> quilibrium.node.node.pb.PeerInfo 7, // 2: quilibrium.node.node.pb.PeerInfoResponse.peer_info:type_name -> quilibrium.node.node.pb.PeerInfo
7, // 3: quilibrium.node.node.pb.PeerInfoResponse.uncooperative_peer_info:type_name -> quilibrium.node.node.pb.PeerInfo 7, // 3: quilibrium.node.node.pb.PeerInfoResponse.uncooperative_peer_info:type_name -> quilibrium.node.node.pb.PeerInfo
7, // 4: quilibrium.node.node.pb.PutPeerInfoRequest.peer_info:type_name -> quilibrium.node.node.pb.PeerInfo 7, // 4: quilibrium.node.node.pb.PutPeerInfoRequest.peer_info:type_name -> quilibrium.node.node.pb.PeerInfo
7, // 5: quilibrium.node.node.pb.PutPeerInfoRequest.uncooperative_peer_info:type_name -> quilibrium.node.node.pb.PeerInfo 7, // 5: quilibrium.node.node.pb.PutPeerInfoRequest.uncooperative_peer_info:type_name -> quilibrium.node.node.pb.PeerInfo
9, // 6: quilibrium.node.node.pb.NetworkInfoResponse.network_info:type_name -> quilibrium.node.node.pb.NetworkInfo 9, // 6: quilibrium.node.node.pb.NetworkInfoResponse.network_info:type_name -> quilibrium.node.node.pb.NetworkInfo
17, // 7: quilibrium.node.node.pb.SelfTestReport.capabilities:type_name -> quilibrium.node.node.pb.Capability 17, // 7: quilibrium.node.node.pb.SelfTestReport.capabilities:type_name -> quilibrium.node.node.pb.Capability
19, // 8: quilibrium.node.node.pb.ValidationService.PerformValidation:input_type -> quilibrium.node.node.pb.ValidationMessage 17, // 8: quilibrium.node.node.pb.PeerManifest.capabilities:type_name -> quilibrium.node.node.pb.Capability
0, // 9: quilibrium.node.node.pb.NodeService.GetFrames:input_type -> quilibrium.node.node.pb.GetFramesRequest 21, // 9: quilibrium.node.node.pb.PeerManifestsResponse.peer_manifests:type_name -> quilibrium.node.node.pb.PeerManifest
1, // 10: quilibrium.node.node.pb.NodeService.GetFrameInfo:input_type -> quilibrium.node.node.pb.GetFrameInfoRequest 19, // 10: quilibrium.node.node.pb.ValidationService.PerformValidation:input_type -> quilibrium.node.node.pb.ValidationMessage
2, // 11: quilibrium.node.node.pb.NodeService.GetPeerInfo:input_type -> quilibrium.node.node.pb.GetPeerInfoRequest 0, // 11: quilibrium.node.node.pb.NodeService.GetFrames:input_type -> quilibrium.node.node.pb.GetFramesRequest
3, // 12: quilibrium.node.node.pb.NodeService.GetNodeInfo:input_type -> quilibrium.node.node.pb.GetNodeInfoRequest 1, // 12: quilibrium.node.node.pb.NodeService.GetFrameInfo:input_type -> quilibrium.node.node.pb.GetFrameInfoRequest
4, // 13: quilibrium.node.node.pb.NodeService.GetNetworkInfo:input_type -> quilibrium.node.node.pb.GetNetworkInfoRequest 2, // 13: quilibrium.node.node.pb.NodeService.GetPeerInfo:input_type -> quilibrium.node.node.pb.GetPeerInfoRequest
15, // 14: quilibrium.node.node.pb.NodeService.GetTokenInfo:input_type -> quilibrium.node.node.pb.GetTokenInfoRequest 3, // 14: quilibrium.node.node.pb.NodeService.GetNodeInfo:input_type -> quilibrium.node.node.pb.GetNodeInfoRequest
12, // 15: quilibrium.node.node.pb.NodeStats.PutNodeInfo:input_type -> quilibrium.node.node.pb.PutNodeInfoRequest 4, // 15: quilibrium.node.node.pb.NodeService.GetNetworkInfo:input_type -> quilibrium.node.node.pb.GetNetworkInfoRequest
11, // 16: quilibrium.node.node.pb.NodeStats.PutPeerInfo:input_type -> quilibrium.node.node.pb.PutPeerInfoRequest 15, // 16: quilibrium.node.node.pb.NodeService.GetTokenInfo:input_type -> quilibrium.node.node.pb.GetTokenInfoRequest
19, // 17: quilibrium.node.node.pb.ValidationService.PerformValidation:output_type -> quilibrium.node.node.pb.ValidationMessage 20, // 17: quilibrium.node.node.pb.NodeService.GetPeerManifests:input_type -> quilibrium.node.node.pb.GetPeerManifestsRequest
5, // 18: quilibrium.node.node.pb.NodeService.GetFrames:output_type -> quilibrium.node.node.pb.FramesResponse 12, // 18: quilibrium.node.node.pb.NodeStats.PutNodeInfo:input_type -> quilibrium.node.node.pb.PutNodeInfoRequest
6, // 19: quilibrium.node.node.pb.NodeService.GetFrameInfo:output_type -> quilibrium.node.node.pb.FrameInfoResponse 11, // 19: quilibrium.node.node.pb.NodeStats.PutPeerInfo:input_type -> quilibrium.node.node.pb.PutPeerInfoRequest
8, // 20: quilibrium.node.node.pb.NodeService.GetPeerInfo:output_type -> quilibrium.node.node.pb.PeerInfoResponse 19, // 20: quilibrium.node.node.pb.ValidationService.PerformValidation:output_type -> quilibrium.node.node.pb.ValidationMessage
10, // 21: quilibrium.node.node.pb.NodeService.GetNodeInfo:output_type -> quilibrium.node.node.pb.NodeInfoResponse 5, // 21: quilibrium.node.node.pb.NodeService.GetFrames:output_type -> quilibrium.node.node.pb.FramesResponse
14, // 22: quilibrium.node.node.pb.NodeService.GetNetworkInfo:output_type -> quilibrium.node.node.pb.NetworkInfoResponse 6, // 22: quilibrium.node.node.pb.NodeService.GetFrameInfo:output_type -> quilibrium.node.node.pb.FrameInfoResponse
16, // 23: quilibrium.node.node.pb.NodeService.GetTokenInfo:output_type -> quilibrium.node.node.pb.TokenInfoResponse 8, // 23: quilibrium.node.node.pb.NodeService.GetPeerInfo:output_type -> quilibrium.node.node.pb.PeerInfoResponse
13, // 24: quilibrium.node.node.pb.NodeStats.PutNodeInfo:output_type -> quilibrium.node.node.pb.PutResponse 10, // 24: quilibrium.node.node.pb.NodeService.GetNodeInfo:output_type -> quilibrium.node.node.pb.NodeInfoResponse
13, // 25: quilibrium.node.node.pb.NodeStats.PutPeerInfo:output_type -> quilibrium.node.node.pb.PutResponse 14, // 25: quilibrium.node.node.pb.NodeService.GetNetworkInfo:output_type -> quilibrium.node.node.pb.NetworkInfoResponse
17, // [17:26] is the sub-list for method output_type 16, // 26: quilibrium.node.node.pb.NodeService.GetTokenInfo:output_type -> quilibrium.node.node.pb.TokenInfoResponse
8, // [8:17] is the sub-list for method input_type 22, // 27: quilibrium.node.node.pb.NodeService.GetPeerManifests:output_type -> quilibrium.node.node.pb.PeerManifestsResponse
8, // [8:8] is the sub-list for extension type_name 13, // 28: quilibrium.node.node.pb.NodeStats.PutNodeInfo:output_type -> quilibrium.node.node.pb.PutResponse
8, // [8:8] is the sub-list for extension extendee 13, // 29: quilibrium.node.node.pb.NodeStats.PutPeerInfo:output_type -> quilibrium.node.node.pb.PutResponse
0, // [0:8] is the sub-list for field type_name 20, // [20:30] is the sub-list for method output_type
10, // [10:20] is the sub-list for method input_type
10, // [10:10] is the sub-list for extension type_name
10, // [10:10] is the sub-list for extension extendee
0, // [0:10] is the sub-list for field type_name
} }
func init() { file_node_proto_init() } func init() { file_node_proto_init() }
@ -1819,6 +2146,42 @@ func file_node_proto_init() {
return nil return nil
} }
} }
file_node_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetPeerManifestsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_node_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PeerManifest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_node_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PeerManifestsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
} }
type x struct{} type x struct{}
out := protoimpl.TypeBuilder{ out := protoimpl.TypeBuilder{
@ -1826,7 +2189,7 @@ func file_node_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_node_proto_rawDesc, RawDescriptor: file_node_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 20, NumMessages: 23,
NumExtensions: 0, NumExtensions: 0,
NumServices: 3, NumServices: 3,
}, },

View File

@ -269,6 +269,40 @@ func local_request_NodeService_GetTokenInfo_0(ctx context.Context, marshaler run
} }
func request_NodeService_GetPeerManifests_0(ctx context.Context, marshaler runtime.Marshaler, client NodeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GetPeerManifestsRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.GetPeerManifests(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_NodeService_GetPeerManifests_0(ctx context.Context, marshaler runtime.Marshaler, server NodeServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GetPeerManifestsRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.GetPeerManifests(ctx, &protoReq)
return msg, metadata, err
}
func request_NodeStats_PutNodeInfo_0(ctx context.Context, marshaler runtime.Marshaler, client NodeStatsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { func request_NodeStats_PutNodeInfo_0(ctx context.Context, marshaler runtime.Marshaler, client NodeStatsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq PutNodeInfoRequest var protoReq PutNodeInfoRequest
var metadata runtime.ServerMetadata var metadata runtime.ServerMetadata
@ -527,6 +561,31 @@ func RegisterNodeServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux
}) })
mux.Handle("POST", pattern_NodeService_GetPeerManifests_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/quilibrium.node.node.pb.NodeService/GetPeerManifests", runtime.WithHTTPPathPattern("/quilibrium.node.node.pb.NodeService/GetPeerManifests"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_NodeService_GetPeerManifests_0(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_NodeService_GetPeerManifests_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil return nil
} }
@ -830,6 +889,28 @@ func RegisterNodeServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux
}) })
mux.Handle("POST", pattern_NodeService_GetPeerManifests_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/quilibrium.node.node.pb.NodeService/GetPeerManifests", runtime.WithHTTPPathPattern("/quilibrium.node.node.pb.NodeService/GetPeerManifests"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_NodeService_GetPeerManifests_0(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_NodeService_GetPeerManifests_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil return nil
} }
@ -845,6 +926,8 @@ var (
pattern_NodeService_GetNetworkInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"quilibrium.node.node.pb.NodeService", "GetNetworkInfo"}, "")) pattern_NodeService_GetNetworkInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"quilibrium.node.node.pb.NodeService", "GetNetworkInfo"}, ""))
pattern_NodeService_GetTokenInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"quilibrium.node.node.pb.NodeService", "GetTokenInfo"}, "")) pattern_NodeService_GetTokenInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"quilibrium.node.node.pb.NodeService", "GetTokenInfo"}, ""))
pattern_NodeService_GetPeerManifests_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"quilibrium.node.node.pb.NodeService", "GetPeerManifests"}, ""))
) )
var ( var (
@ -859,6 +942,8 @@ var (
forward_NodeService_GetNetworkInfo_0 = runtime.ForwardResponseMessage forward_NodeService_GetNetworkInfo_0 = runtime.ForwardResponseMessage
forward_NodeService_GetTokenInfo_0 = runtime.ForwardResponseMessage forward_NodeService_GetTokenInfo_0 = runtime.ForwardResponseMessage
forward_NodeService_GetPeerManifests_0 = runtime.ForwardResponseMessage
) )
// RegisterNodeStatsHandlerFromEndpoint is same as RegisterNodeStatsHandler but // RegisterNodeStatsHandlerFromEndpoint is same as RegisterNodeStatsHandler but

View File

@ -162,6 +162,52 @@ service ValidationService {
rpc PerformValidation(ValidationMessage) returns (ValidationMessage); rpc PerformValidation(ValidationMessage) returns (ValidationMessage);
} }
message GetPeerManifestsRequest {}
message PeerManifest {
bytes peer_id = 1;
// The difficulty the self test was conducted under
uint32 difficulty = 2;
// The resulting local time of computing the VDF test under the difficulty
int64 difficulty_metric = 3;
// The resulting local time of computing a KZG commitment for a 16 degree
// polynomial
int64 commit_16_metric = 4;
// The resulting local time of computing a KZG commitment for a 128 degree
// polynomial
int64 commit_128_metric = 5;
// The resulting local time of computing a KZG commitment for a 1024 degree
// polynomial
int64 commit_1024_metric = 6;
// The resulting local time of computing a KZG commitment for a 65536 degree
// polynomial
int64 commit_65536_metric = 7;
// The resulting local time of computing a KZG proof for a 16 degree
// polynomial
int64 proof_16_metric = 8;
// The resulting local time of computing a KZG proof for a 128 degree
// polynomial
int64 proof_128_metric = 9;
// The resulting local time of computing a KZG proof for a 1024 degree
// polynomial
int64 proof_1024_metric = 10;
// The resulting local time of computing a KZG proof for a 65536 degree
// polynomial
int64 proof_65536_metric = 11;
// The number of reported accessible cores
uint32 cores = 12;
// The total available memory
bytes memory = 13;
// The total available storage
bytes storage = 14;
// The list of supported capabilities
repeated Capability capabilities = 15;
}
message PeerManifestsResponse {
repeated PeerManifest peer_manifests = 1;
}
service NodeService { service NodeService {
rpc GetFrames(GetFramesRequest) returns (FramesResponse); rpc GetFrames(GetFramesRequest) returns (FramesResponse);
rpc GetFrameInfo(GetFrameInfoRequest) returns (FrameInfoResponse); rpc GetFrameInfo(GetFrameInfoRequest) returns (FrameInfoResponse);
@ -169,6 +215,7 @@ service NodeService {
rpc GetNodeInfo(GetNodeInfoRequest) returns (NodeInfoResponse); rpc GetNodeInfo(GetNodeInfoRequest) returns (NodeInfoResponse);
rpc GetNetworkInfo(GetNetworkInfoRequest) returns (NetworkInfoResponse); rpc GetNetworkInfo(GetNetworkInfoRequest) returns (NetworkInfoResponse);
rpc GetTokenInfo(GetTokenInfoRequest) returns (TokenInfoResponse); rpc GetTokenInfo(GetTokenInfoRequest) returns (TokenInfoResponse);
rpc GetPeerManifests(GetPeerManifestsRequest) returns (PeerManifestsResponse);
} }
service NodeStats { service NodeStats {

View File

@ -109,12 +109,13 @@ var ValidationService_ServiceDesc = grpc.ServiceDesc{
} }
const ( const (
NodeService_GetFrames_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetFrames" NodeService_GetFrames_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetFrames"
NodeService_GetFrameInfo_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetFrameInfo" NodeService_GetFrameInfo_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetFrameInfo"
NodeService_GetPeerInfo_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetPeerInfo" NodeService_GetPeerInfo_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetPeerInfo"
NodeService_GetNodeInfo_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetNodeInfo" NodeService_GetNodeInfo_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetNodeInfo"
NodeService_GetNetworkInfo_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetNetworkInfo" NodeService_GetNetworkInfo_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetNetworkInfo"
NodeService_GetTokenInfo_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetTokenInfo" NodeService_GetTokenInfo_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetTokenInfo"
NodeService_GetPeerManifests_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetPeerManifests"
) )
// NodeServiceClient is the client API for NodeService service. // NodeServiceClient is the client API for NodeService service.
@ -127,6 +128,7 @@ type NodeServiceClient interface {
GetNodeInfo(ctx context.Context, in *GetNodeInfoRequest, opts ...grpc.CallOption) (*NodeInfoResponse, error) GetNodeInfo(ctx context.Context, in *GetNodeInfoRequest, opts ...grpc.CallOption) (*NodeInfoResponse, error)
GetNetworkInfo(ctx context.Context, in *GetNetworkInfoRequest, opts ...grpc.CallOption) (*NetworkInfoResponse, error) GetNetworkInfo(ctx context.Context, in *GetNetworkInfoRequest, opts ...grpc.CallOption) (*NetworkInfoResponse, error)
GetTokenInfo(ctx context.Context, in *GetTokenInfoRequest, opts ...grpc.CallOption) (*TokenInfoResponse, error) GetTokenInfo(ctx context.Context, in *GetTokenInfoRequest, opts ...grpc.CallOption) (*TokenInfoResponse, error)
GetPeerManifests(ctx context.Context, in *GetPeerManifestsRequest, opts ...grpc.CallOption) (*PeerManifestsResponse, error)
} }
type nodeServiceClient struct { type nodeServiceClient struct {
@ -191,6 +193,15 @@ func (c *nodeServiceClient) GetTokenInfo(ctx context.Context, in *GetTokenInfoRe
return out, nil return out, nil
} }
func (c *nodeServiceClient) GetPeerManifests(ctx context.Context, in *GetPeerManifestsRequest, opts ...grpc.CallOption) (*PeerManifestsResponse, error) {
out := new(PeerManifestsResponse)
err := c.cc.Invoke(ctx, NodeService_GetPeerManifests_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// NodeServiceServer is the server API for NodeService service. // NodeServiceServer is the server API for NodeService service.
// All implementations must embed UnimplementedNodeServiceServer // All implementations must embed UnimplementedNodeServiceServer
// for forward compatibility // for forward compatibility
@ -201,6 +212,7 @@ type NodeServiceServer interface {
GetNodeInfo(context.Context, *GetNodeInfoRequest) (*NodeInfoResponse, error) GetNodeInfo(context.Context, *GetNodeInfoRequest) (*NodeInfoResponse, error)
GetNetworkInfo(context.Context, *GetNetworkInfoRequest) (*NetworkInfoResponse, error) GetNetworkInfo(context.Context, *GetNetworkInfoRequest) (*NetworkInfoResponse, error)
GetTokenInfo(context.Context, *GetTokenInfoRequest) (*TokenInfoResponse, error) GetTokenInfo(context.Context, *GetTokenInfoRequest) (*TokenInfoResponse, error)
GetPeerManifests(context.Context, *GetPeerManifestsRequest) (*PeerManifestsResponse, error)
mustEmbedUnimplementedNodeServiceServer() mustEmbedUnimplementedNodeServiceServer()
} }
@ -226,6 +238,9 @@ func (UnimplementedNodeServiceServer) GetNetworkInfo(context.Context, *GetNetwor
func (UnimplementedNodeServiceServer) GetTokenInfo(context.Context, *GetTokenInfoRequest) (*TokenInfoResponse, error) { func (UnimplementedNodeServiceServer) GetTokenInfo(context.Context, *GetTokenInfoRequest) (*TokenInfoResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetTokenInfo not implemented") return nil, status.Errorf(codes.Unimplemented, "method GetTokenInfo not implemented")
} }
func (UnimplementedNodeServiceServer) GetPeerManifests(context.Context, *GetPeerManifestsRequest) (*PeerManifestsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetPeerManifests not implemented")
}
func (UnimplementedNodeServiceServer) mustEmbedUnimplementedNodeServiceServer() {} func (UnimplementedNodeServiceServer) mustEmbedUnimplementedNodeServiceServer() {}
// UnsafeNodeServiceServer may be embedded to opt out of forward compatibility for this service. // UnsafeNodeServiceServer may be embedded to opt out of forward compatibility for this service.
@ -347,6 +362,24 @@ func _NodeService_GetTokenInfo_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _NodeService_GetPeerManifests_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetPeerManifestsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(NodeServiceServer).GetPeerManifests(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: NodeService_GetPeerManifests_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(NodeServiceServer).GetPeerManifests(ctx, req.(*GetPeerManifestsRequest))
}
return interceptor(ctx, in, info, handler)
}
// NodeService_ServiceDesc is the grpc.ServiceDesc for NodeService service. // NodeService_ServiceDesc is the grpc.ServiceDesc for NodeService service.
// It's only intended for direct use with grpc.RegisterService, // It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy) // and not to be introspected or modified (even as a copy)
@ -378,6 +411,10 @@ var NodeService_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetTokenInfo", MethodName: "GetTokenInfo",
Handler: _NodeService_GetTokenInfo_Handler, Handler: _NodeService_GetTokenInfo_Handler,
}, },
{
MethodName: "GetPeerManifests",
Handler: _NodeService_GetPeerManifests_Handler,
},
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "node.proto", Metadata: "node.proto",

View File

@ -8,7 +8,7 @@ const (
ClockPrefix = NamespacePrefix + "clock.pb." ClockPrefix = NamespacePrefix + "clock.pb."
KeysPrefix = NamespacePrefix + "keys.pb." KeysPrefix = NamespacePrefix + "keys.pb."
CeremonyPrefix = NamespacePrefix + "ceremony.pb." CeremonyPrefix = NamespacePrefix + "ceremony.pb."
NodePrefix = NamespacePrefix + "node.pb" NodePrefix = NamespacePrefix + "node.pb."
CeremonyTranscriptType = CeremonyPrefix + "CeremonyTranscript" CeremonyTranscriptType = CeremonyPrefix + "CeremonyTranscript"
CeremonyLobbyStateType = CeremonyPrefix + "CeremonyLobbyState" CeremonyLobbyStateType = CeremonyPrefix + "CeremonyLobbyState"
CeremonySeenProverAttestationType = CeremonyPrefix + "CeremonySeenProverAttestation" CeremonySeenProverAttestationType = CeremonyPrefix + "CeremonySeenProverAttestation"

View File

@ -17,6 +17,7 @@ import (
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/credentials/insecure"
"google.golang.org/grpc/reflection" "google.golang.org/grpc/reflection"
"source.quilibrium.com/quilibrium/monorepo/node/consensus/master"
"source.quilibrium.com/quilibrium/monorepo/node/execution" "source.quilibrium.com/quilibrium/monorepo/node/execution"
"source.quilibrium.com/quilibrium/monorepo/node/execution/intrinsics/ceremony/application" "source.quilibrium.com/quilibrium/monorepo/node/execution/intrinsics/ceremony/application"
"source.quilibrium.com/quilibrium/monorepo/node/keys" "source.quilibrium.com/quilibrium/monorepo/node/keys"
@ -34,6 +35,7 @@ type RPCServer struct {
clockStore store.ClockStore clockStore store.ClockStore
keyManager keys.KeyManager keyManager keys.KeyManager
pubSub p2p.PubSub pubSub p2p.PubSub
masterClock *master.MasterClockConsensusEngine
executionEngines []execution.ExecutionEngine executionEngines []execution.ExecutionEngine
} }
@ -450,6 +452,13 @@ func (r *RPCServer) GetTokenInfo(
}, nil }, nil
} }
func (r *RPCServer) GetPeerManifest(
ctx context.Context,
req *protobufs.GetPeerManifestsRequest,
) (*protobufs.PeerManifestsResponse, error) {
return r.masterClock.GetPeerManifests(), nil
}
func NewRPCServer( func NewRPCServer(
listenAddrGRPC string, listenAddrGRPC string,
listenAddrHTTP string, listenAddrHTTP string,
@ -457,6 +466,7 @@ func NewRPCServer(
clockStore store.ClockStore, clockStore store.ClockStore,
keyManager keys.KeyManager, keyManager keys.KeyManager,
pubSub p2p.PubSub, pubSub p2p.PubSub,
masterClock *master.MasterClockConsensusEngine,
executionEngines []execution.ExecutionEngine, executionEngines []execution.ExecutionEngine,
) (*RPCServer, error) { ) (*RPCServer, error) {
return &RPCServer{ return &RPCServer{
@ -466,6 +476,7 @@ func NewRPCServer(
clockStore: clockStore, clockStore: clockStore,
keyManager: keyManager, keyManager: keyManager,
pubSub: pubSub, pubSub: pubSub,
masterClock: masterClock,
executionEngines: executionEngines, executionEngines: executionEngines,
}, nil }, nil
} }