mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-11-10 18:25:17 +00:00
Better synchronization targeting
This commit is contained in:
parent
6641ad680a
commit
926e6bba22
@ -23,8 +23,8 @@ import (
|
|||||||
logging "github.com/ipfs/go-log/v2"
|
logging "github.com/ipfs/go-log/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DefaultMaximumMessageSize is 1mb.
|
// DefaultMaximumMessageSize is 16.7 MB.
|
||||||
const DefaultMaxMessageSize = 1 << 20
|
const DefaultMaxMessageSize = 1 << 24
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// TimeCacheDuration specifies how long a message ID will be remembered as seen.
|
// TimeCacheDuration specifies how long a message ID will be remembered as seen.
|
||||||
@ -492,7 +492,7 @@ func WithRawTracer(tracer RawTracer) Option {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WithMaxMessageSize sets the global maximum message size for pubsub wire
|
// WithMaxMessageSize sets the global maximum message size for pubsub wire
|
||||||
// messages. The default value is 1MiB (DefaultMaxMessageSize).
|
// messages. The default value is 16.7MiB (DefaultMaxMessageSize).
|
||||||
//
|
//
|
||||||
// Observe the following warnings when setting this option.
|
// Observe the following warnings when setting this option.
|
||||||
//
|
//
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/iden3/go-iden3-crypto/poseidon"
|
"github.com/iden3/go-iden3-crypto/poseidon"
|
||||||
|
"github.com/libp2p/go-libp2p/core/peer"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"golang.org/x/crypto/sha3"
|
"golang.org/x/crypto/sha3"
|
||||||
@ -104,6 +105,7 @@ func (e *CeremonyDataClockConsensusEngine) handleMessage(
|
|||||||
message.From,
|
message.From,
|
||||||
msg.Address,
|
msg.Address,
|
||||||
any,
|
any,
|
||||||
|
false,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return errors.Wrap(err, "handle message")
|
return errors.Wrap(err, "handle message")
|
||||||
}
|
}
|
||||||
@ -123,11 +125,122 @@ func (e *CeremonyDataClockConsensusEngine) handleMessage(
|
|||||||
if err := e.handleKeyBundle(message.From, msg.Address, any); err != nil {
|
if err := e.handleKeyBundle(message.From, msg.Address, any); err != nil {
|
||||||
return errors.Wrap(err, "handle message")
|
return errors.Wrap(err, "handle message")
|
||||||
}
|
}
|
||||||
|
case protobufs.CeremonyPeerListAnnounceType:
|
||||||
|
if err := e.handleCeremonyPeerListAnnounce(
|
||||||
|
message.From,
|
||||||
|
msg.Address,
|
||||||
|
any,
|
||||||
|
); err != nil {
|
||||||
|
return errors.Wrap(err, "handle message")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *CeremonyDataClockConsensusEngine) handleCeremonyPeerListAnnounce(
|
||||||
|
peerID []byte,
|
||||||
|
address []byte,
|
||||||
|
any *anypb.Any,
|
||||||
|
) error {
|
||||||
|
if bytes.Equal(peerID, e.pubSub.GetPeerID()) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
announce := &protobufs.CeremonyPeerListAnnounce{}
|
||||||
|
if err := any.UnmarshalTo(announce); err != nil {
|
||||||
|
return errors.Wrap(err, "handle ceremony peer list announce")
|
||||||
|
}
|
||||||
|
|
||||||
|
e.peerAnnounceMapMx.Lock()
|
||||||
|
e.peerAnnounceMap[string(peerID)] = announce
|
||||||
|
e.peerAnnounceMapMx.Unlock()
|
||||||
|
|
||||||
|
e.peerMapMx.Lock()
|
||||||
|
for _, p := range announce.PeerList {
|
||||||
|
if bytes.Equal(p.PeerId, e.pubSub.GetPeerID()) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
pr, ok := e.peerMap[string(p.PeerId)]
|
||||||
|
if !ok {
|
||||||
|
if bytes.Equal(p.PeerId, peerID) {
|
||||||
|
e.peerMap[string(p.PeerId)] = &peerInfo{
|
||||||
|
peerId: p.PeerId,
|
||||||
|
multiaddr: e.pubSub.GetMultiaddrOfPeer(peerID),
|
||||||
|
maxFrame: p.MaxFrame,
|
||||||
|
direct: bytes.Equal(p.PeerId, peerID),
|
||||||
|
lastSeen: time.Now().Unix(),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
e.peerMap[string(p.PeerId)] = &peerInfo{
|
||||||
|
peerId: p.PeerId,
|
||||||
|
multiaddr: p.Multiaddr,
|
||||||
|
maxFrame: p.MaxFrame,
|
||||||
|
direct: bytes.Equal(p.PeerId, peerID),
|
||||||
|
lastSeen: time.Now().Unix(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if bytes.Equal(p.PeerId, peerID) {
|
||||||
|
e.peerMap[string(p.PeerId)] = &peerInfo{
|
||||||
|
peerId: p.PeerId,
|
||||||
|
multiaddr: e.pubSub.GetMultiaddrOfPeer(peerID),
|
||||||
|
maxFrame: p.MaxFrame,
|
||||||
|
direct: bytes.Equal(p.PeerId, peerID),
|
||||||
|
lastSeen: time.Now().Unix(),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if pr.direct {
|
||||||
|
dst := int64(p.MaxFrame) - int64(pr.maxFrame)
|
||||||
|
if time.Now().Unix()-pr.lastSeen > 30 {
|
||||||
|
e.peerMap[string(p.PeerId)] = &peerInfo{
|
||||||
|
peerId: p.PeerId,
|
||||||
|
multiaddr: p.Multiaddr,
|
||||||
|
maxFrame: p.MaxFrame,
|
||||||
|
direct: false,
|
||||||
|
lastSeen: time.Now().Unix(),
|
||||||
|
}
|
||||||
|
} else if dst > 4 {
|
||||||
|
e.logger.Warn(
|
||||||
|
"peer sent announcement with higher frame index for peer",
|
||||||
|
zap.String("sender_peer", peer.ID(peerID).String()),
|
||||||
|
zap.String("announced_peer", peer.ID(pr.peerId).String()),
|
||||||
|
zap.Int64("frame_distance", dst),
|
||||||
|
)
|
||||||
|
} else if dst < -4 {
|
||||||
|
e.logger.Debug(
|
||||||
|
"peer sent announcement with lower frame index for peer",
|
||||||
|
zap.String("sender_peer", peer.ID(peerID).String()),
|
||||||
|
zap.String("announced_peer", peer.ID(pr.peerId).String()),
|
||||||
|
zap.Int64("frame_distance", dst),
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
e.peerMap[string(p.PeerId)] = &peerInfo{
|
||||||
|
peerId: p.PeerId,
|
||||||
|
multiaddr: p.Multiaddr,
|
||||||
|
maxFrame: p.MaxFrame,
|
||||||
|
direct: false,
|
||||||
|
lastSeen: time.Now().Unix(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
e.peerMap[string(p.PeerId)] = &peerInfo{
|
||||||
|
peerId: p.PeerId,
|
||||||
|
multiaddr: p.Multiaddr,
|
||||||
|
maxFrame: p.MaxFrame,
|
||||||
|
direct: false,
|
||||||
|
lastSeen: time.Now().Unix(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
e.peerMapMx.Unlock()
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (e *CeremonyDataClockConsensusEngine) handleCeremonyLobbyStateTransition(
|
func (e *CeremonyDataClockConsensusEngine) handleCeremonyLobbyStateTransition(
|
||||||
transition *protobufs.CeremonyLobbyStateTransition,
|
transition *protobufs.CeremonyLobbyStateTransition,
|
||||||
) error {
|
) error {
|
||||||
@ -339,7 +452,12 @@ func (e *CeremonyDataClockConsensusEngine) handleClockFrameData(
|
|||||||
peerID []byte,
|
peerID []byte,
|
||||||
address []byte,
|
address []byte,
|
||||||
any *anypb.Any,
|
any *anypb.Any,
|
||||||
|
isSync bool,
|
||||||
) error {
|
) error {
|
||||||
|
if isSync && bytes.Equal(peerID, e.pubSub.GetPeerID()) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
frame := &protobufs.ClockFrame{}
|
frame := &protobufs.ClockFrame{}
|
||||||
if err := any.UnmarshalTo(frame); err != nil {
|
if err := any.UnmarshalTo(frame); err != nil {
|
||||||
return errors.Wrap(err, "handle clock frame data")
|
return errors.Wrap(err, "handle clock frame data")
|
||||||
|
@ -31,6 +31,14 @@ const (
|
|||||||
SyncStatusSynchronizing
|
SyncStatusSynchronizing
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type peerInfo struct {
|
||||||
|
peerId []byte
|
||||||
|
multiaddr string
|
||||||
|
maxFrame uint64
|
||||||
|
lastSeen int64
|
||||||
|
direct bool
|
||||||
|
}
|
||||||
|
|
||||||
type CeremonyDataClockConsensusEngine struct {
|
type CeremonyDataClockConsensusEngine struct {
|
||||||
frame uint64
|
frame uint64
|
||||||
activeFrame *protobufs.ClockFrame
|
activeFrame *protobufs.ClockFrame
|
||||||
@ -69,7 +77,11 @@ type CeremonyDataClockConsensusEngine struct {
|
|||||||
dependencyMapMx sync.Mutex
|
dependencyMapMx sync.Mutex
|
||||||
stagedKeyCommitsMx sync.Mutex
|
stagedKeyCommitsMx sync.Mutex
|
||||||
stagedLobbyStateTransitionsMx sync.Mutex
|
stagedLobbyStateTransitionsMx sync.Mutex
|
||||||
|
peerMapMx sync.Mutex
|
||||||
|
peerAnnounceMapMx sync.Mutex
|
||||||
lastKeyBundleAnnouncementFrame uint64
|
lastKeyBundleAnnouncementFrame uint64
|
||||||
|
peerAnnounceMap map[string]*protobufs.CeremonyPeerListAnnounce
|
||||||
|
peerMap map[string]*peerInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ consensus.DataConsensusEngine = (*CeremonyDataClockConsensusEngine)(nil)
|
var _ consensus.DataConsensusEngine = (*CeremonyDataClockConsensusEngine)(nil)
|
||||||
@ -137,6 +149,8 @@ func NewCeremonyDataClockConsensusEngine(
|
|||||||
stagedKeyCommits: make(InclusionMap),
|
stagedKeyCommits: make(InclusionMap),
|
||||||
stagedKeyPolynomials: make(PolynomialMap),
|
stagedKeyPolynomials: make(PolynomialMap),
|
||||||
syncingStatus: SyncStatusNotSyncing,
|
syncingStatus: SyncStatusNotSyncing,
|
||||||
|
peerAnnounceMap: map[string]*protobufs.CeremonyPeerListAnnounce{},
|
||||||
|
peerMap: map[string]*peerInfo{},
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Info("constructing consensus engine")
|
logger.Info("constructing consensus engine")
|
||||||
@ -194,6 +208,35 @@ func (e *CeremonyDataClockConsensusEngine) Start(
|
|||||||
go e.handlePendingCommits(i)
|
go e.handlePendingCommits(i)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
time.Sleep(30 * time.Second)
|
||||||
|
|
||||||
|
list := &protobufs.CeremonyPeerListAnnounce{
|
||||||
|
PeerList: []*protobufs.CeremonyPeer{},
|
||||||
|
}
|
||||||
|
|
||||||
|
e.peerMapMx.Lock()
|
||||||
|
e.peerMap[string(e.pubSub.GetPeerID())] = &peerInfo{
|
||||||
|
peerId: e.pubSub.GetPeerID(),
|
||||||
|
multiaddr: "",
|
||||||
|
maxFrame: e.frame,
|
||||||
|
}
|
||||||
|
for _, v := range e.peerMap {
|
||||||
|
list.PeerList = append(list.PeerList, &protobufs.CeremonyPeer{
|
||||||
|
PeerId: v.peerId,
|
||||||
|
Multiaddr: v.multiaddr,
|
||||||
|
MaxFrame: v.maxFrame,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
e.peerMapMx.Unlock()
|
||||||
|
|
||||||
|
if err := e.publishMessage(e.filter, list); err != nil {
|
||||||
|
e.logger.Debug("error publishing message", zap.Error(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
for e.state < consensus.EngineStateStopping {
|
for e.state < consensus.EngineStateStopping {
|
||||||
switch e.state {
|
switch e.state {
|
||||||
|
@ -16,7 +16,6 @@ import (
|
|||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"golang.org/x/crypto/sha3"
|
"golang.org/x/crypto/sha3"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
"source.quilibrium.com/quilibrium/monorepo/go-libp2p-blossomsub/pb"
|
|
||||||
"source.quilibrium.com/quilibrium/monorepo/nekryptology/pkg/core/curves"
|
"source.quilibrium.com/quilibrium/monorepo/nekryptology/pkg/core/curves"
|
||||||
"source.quilibrium.com/quilibrium/monorepo/nekryptology/pkg/vdf"
|
"source.quilibrium.com/quilibrium/monorepo/nekryptology/pkg/vdf"
|
||||||
"source.quilibrium.com/quilibrium/monorepo/node/consensus"
|
"source.quilibrium.com/quilibrium/monorepo/node/consensus"
|
||||||
@ -828,6 +827,29 @@ func (e *CeremonyDataClockConsensusEngine) commitLongestPath() (
|
|||||||
return current, nil
|
return current, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *CeremonyDataClockConsensusEngine) GetMostAheadPeer() (
|
||||||
|
[]byte,
|
||||||
|
uint64,
|
||||||
|
error,
|
||||||
|
) {
|
||||||
|
e.peerMapMx.Lock()
|
||||||
|
max := e.frame
|
||||||
|
var peer []byte = nil
|
||||||
|
for _, v := range e.peerMap {
|
||||||
|
if v.maxFrame > max {
|
||||||
|
peer = v.peerId
|
||||||
|
max = v.maxFrame
|
||||||
|
}
|
||||||
|
}
|
||||||
|
e.peerMapMx.Unlock()
|
||||||
|
|
||||||
|
if peer == nil {
|
||||||
|
return nil, 0, p2p.ErrNoPeersAvailable
|
||||||
|
}
|
||||||
|
|
||||||
|
return peer, max, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (e *CeremonyDataClockConsensusEngine) collect(
|
func (e *CeremonyDataClockConsensusEngine) collect(
|
||||||
currentFramePublished *protobufs.ClockFrame,
|
currentFramePublished *protobufs.ClockFrame,
|
||||||
) (*protobufs.ClockFrame, error) {
|
) (*protobufs.ClockFrame, error) {
|
||||||
@ -841,29 +863,25 @@ func (e *CeremonyDataClockConsensusEngine) collect(
|
|||||||
return nil, errors.Wrap(err, "collect")
|
return nil, errors.Wrap(err, "collect")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maxFrame := uint64(0)
|
||||||
if e.syncingStatus == SyncStatusNotSyncing {
|
if e.syncingStatus == SyncStatusNotSyncing {
|
||||||
peerId, err := e.pubSub.GetRandomPeer(e.filter)
|
var peerId []byte
|
||||||
|
peerId, maxFrame, err = e.GetMostAheadPeer()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, p2p.ErrNoPeersAvailable) {
|
e.logger.Warn("no peers available, skipping sync")
|
||||||
e.logger.Warn("no peers available, skipping sync")
|
|
||||||
} else {
|
|
||||||
e.logger.Error("error while fetching random peer", zap.Error(err))
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
e.syncingStatus = SyncStatusAwaitingResponse
|
e.syncingStatus = SyncStatusAwaitingResponse
|
||||||
e.logger.Info(
|
e.logger.Info(
|
||||||
"setting syncing target",
|
"setting syncing target",
|
||||||
zap.String("peer_id", peer.ID(peerId).String()),
|
zap.String("peer_id", peer.ID(peerId).String()),
|
||||||
)
|
)
|
||||||
channel := e.createPeerReceiveChannel(peerId)
|
|
||||||
e.pubSub.Subscribe(channel, e.handleSync, true)
|
|
||||||
e.syncingTarget = peerId
|
|
||||||
|
|
||||||
e.pubSub.Subscribe(
|
e.pubSub.Subscribe(
|
||||||
append(append([]byte{}, e.filter...), peerId...),
|
append(append([]byte{}, e.filter...), peerId...),
|
||||||
func(message *pb.Message) error { return nil },
|
e.handleSync,
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
|
e.syncingTarget = peerId
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
time.Sleep(2 * time.Second)
|
time.Sleep(2 * time.Second)
|
||||||
@ -882,6 +900,7 @@ func (e *CeremonyDataClockConsensusEngine) collect(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
performedSync := false
|
||||||
waitDecay := time.Duration(2000)
|
waitDecay := time.Duration(2000)
|
||||||
for e.syncingStatus != SyncStatusNotSyncing {
|
for e.syncingStatus != SyncStatusNotSyncing {
|
||||||
e.logger.Info(
|
e.logger.Info(
|
||||||
@ -892,13 +911,14 @@ func (e *CeremonyDataClockConsensusEngine) collect(
|
|||||||
time.Sleep(waitDecay * time.Millisecond)
|
time.Sleep(waitDecay * time.Millisecond)
|
||||||
|
|
||||||
waitDecay = waitDecay * 2
|
waitDecay = waitDecay * 2
|
||||||
if waitDecay >= (100 * (2 << 6)) {
|
if waitDecay >= (100 * (2 << 7)) {
|
||||||
if e.syncingStatus == SyncStatusAwaitingResponse {
|
if e.syncingStatus == SyncStatusAwaitingResponse {
|
||||||
e.logger.Info("maximum wait for sync response, skipping sync")
|
e.logger.Info("maximum wait for sync response, skipping sync")
|
||||||
e.syncingStatus = SyncStatusNotSyncing
|
e.syncingStatus = SyncStatusNotSyncing
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
waitDecay = 100 * (2 << 6)
|
waitDecay = 100 * (2 << 7)
|
||||||
|
performedSync = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -926,7 +946,8 @@ func (e *CeremonyDataClockConsensusEngine) collect(
|
|||||||
zap.Uint64("frame_number", latestFrame.FrameNumber),
|
zap.Uint64("frame_number", latestFrame.FrameNumber),
|
||||||
)
|
)
|
||||||
|
|
||||||
if latestFrame.FrameNumber >= currentFramePublished.FrameNumber {
|
if latestFrame.FrameNumber >= currentFramePublished.FrameNumber &&
|
||||||
|
(!performedSync || e.frame+32 >= maxFrame) {
|
||||||
e.setFrame(latestFrame)
|
e.setFrame(latestFrame)
|
||||||
e.state = consensus.EngineStateProving
|
e.state = consensus.EngineStateProving
|
||||||
return latestFrame, nil
|
return latestFrame, nil
|
||||||
|
@ -47,6 +47,7 @@ func (e *CeremonyDataClockConsensusEngine) handleSync(
|
|||||||
message.From,
|
message.From,
|
||||||
msg.Address,
|
msg.Address,
|
||||||
any,
|
any,
|
||||||
|
true,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return errors.Wrap(err, "handle sync")
|
return errors.Wrap(err, "handle sync")
|
||||||
}
|
}
|
||||||
@ -87,24 +88,6 @@ func (e *CeremonyDataClockConsensusEngine) handleSync(
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *CeremonyDataClockConsensusEngine) createPeerReceiveChannel(
|
|
||||||
peerID []byte,
|
|
||||||
) []byte {
|
|
||||||
return append(
|
|
||||||
append(append([]byte{}, e.filter...), peerID...),
|
|
||||||
e.pubSub.GetPeerID()...,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *CeremonyDataClockConsensusEngine) createPeerSendChannel(
|
|
||||||
peerID []byte,
|
|
||||||
) []byte {
|
|
||||||
return append(
|
|
||||||
append(append([]byte{}, e.filter...), e.pubSub.GetPeerID()...),
|
|
||||||
peerID...,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *CeremonyDataClockConsensusEngine) handleClockFramesResponse(
|
func (e *CeremonyDataClockConsensusEngine) handleClockFramesResponse(
|
||||||
peerID []byte,
|
peerID []byte,
|
||||||
address []byte,
|
address []byte,
|
||||||
@ -399,8 +382,11 @@ func (e *CeremonyDataClockConsensusEngine) handleProvingKeyRequest(
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
channel := e.createPeerSendChannel(peerID)
|
e.pubSub.Subscribe(
|
||||||
e.pubSub.Subscribe(channel, e.handleSync, true)
|
append(append([]byte{}, e.filter...), peerID...),
|
||||||
|
e.handleSync,
|
||||||
|
true,
|
||||||
|
)
|
||||||
|
|
||||||
e.logger.Debug(
|
e.logger.Debug(
|
||||||
"received proving key request",
|
"received proving key request",
|
||||||
@ -453,8 +439,11 @@ func (e *CeremonyDataClockConsensusEngine) handleProvingKeyRequest(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := e.publishMessage(channel, provingKey); err != nil {
|
if err := e.publishMessage(
|
||||||
return errors.Wrap(err, "handle proving key request")
|
append(append([]byte{}, e.filter...), peerID...),
|
||||||
|
provingKey,
|
||||||
|
); err != nil {
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -474,9 +463,11 @@ func (e *CeremonyDataClockConsensusEngine) handleClockFramesRequest(
|
|||||||
return errors.Wrap(err, "handle clock frame request")
|
return errors.Wrap(err, "handle clock frame request")
|
||||||
}
|
}
|
||||||
|
|
||||||
channel := e.createPeerSendChannel(peerID)
|
e.pubSub.Subscribe(
|
||||||
|
append(append([]byte{}, e.filter...), peerID...),
|
||||||
e.pubSub.Subscribe(channel, e.handleSync, true)
|
e.handleSync,
|
||||||
|
true,
|
||||||
|
)
|
||||||
|
|
||||||
e.logger.Info(
|
e.logger.Info(
|
||||||
"received clock frame request",
|
"received clock frame request",
|
||||||
@ -502,19 +493,22 @@ func (e *CeremonyDataClockConsensusEngine) handleClockFramesRequest(
|
|||||||
)
|
)
|
||||||
return errors.Wrap(err, "handle clock frame request")
|
return errors.Wrap(err, "handle clock frame request")
|
||||||
} else {
|
} else {
|
||||||
e.logger.Info(
|
e.logger.Debug(
|
||||||
"peer asked for undiscovered frame",
|
"peer asked for undiscovered frame",
|
||||||
zap.Binary("peer_id", peerID),
|
zap.Binary("peer_id", peerID),
|
||||||
zap.Binary("address", address),
|
zap.Binary("address", address),
|
||||||
zap.Uint64("frame_number", request.FromFrameNumber),
|
zap.Uint64("frame_number", request.FromFrameNumber),
|
||||||
)
|
)
|
||||||
|
|
||||||
if err = e.publishMessage(channel, &protobufs.ClockFramesResponse{
|
if err = e.publishMessage(
|
||||||
Filter: request.Filter,
|
append(append([]byte{}, e.filter...), peerID...),
|
||||||
FromFrameNumber: 0,
|
&protobufs.ClockFramesResponse{
|
||||||
ToFrameNumber: 0,
|
Filter: request.Filter,
|
||||||
ClockFrames: []*protobufs.ClockFrame{},
|
FromFrameNumber: 0,
|
||||||
}); err != nil {
|
ToFrameNumber: 0,
|
||||||
|
ClockFrames: []*protobufs.ClockFrame{},
|
||||||
|
},
|
||||||
|
); err != nil {
|
||||||
return errors.Wrap(err, "handle clock frame request")
|
return errors.Wrap(err, "handle clock frame request")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -567,7 +561,7 @@ func (e *CeremonyDataClockConsensusEngine) handleClockFramesRequest(
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err = e.publishMessage(
|
if err = e.publishMessage(
|
||||||
channel,
|
append(append([]byte{}, e.filter...), peerID...),
|
||||||
frame,
|
frame,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return errors.Wrap(err, "handle clock frame request")
|
return errors.Wrap(err, "handle clock frame request")
|
||||||
@ -609,7 +603,7 @@ func (e *CeremonyDataClockConsensusEngine) handleClockFramesRequest(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err = e.publishMessage(
|
if err = e.publishMessage(
|
||||||
channel,
|
append(append([]byte{}, e.filter...), peerID...),
|
||||||
frame,
|
frame,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return errors.Wrap(err, "handle clock frame request")
|
return errors.Wrap(err, "handle clock frame request")
|
||||||
@ -625,23 +619,5 @@ func (e *CeremonyDataClockConsensusEngine) handleClockFramesRequest(
|
|||||||
searchSpan = nextSpan
|
searchSpan = nextSpan
|
||||||
}
|
}
|
||||||
|
|
||||||
e.logger.Info(
|
|
||||||
"sending response",
|
|
||||||
zap.Binary("peer_id", peerID),
|
|
||||||
zap.Binary("address", address),
|
|
||||||
zap.Uint64("from", from),
|
|
||||||
zap.Uint64("to", to),
|
|
||||||
zap.Uint64("total_frames", uint64(len(set))),
|
|
||||||
)
|
|
||||||
|
|
||||||
if err = e.publishMessage(channel, &protobufs.ClockFramesResponse{
|
|
||||||
Filter: request.Filter,
|
|
||||||
FromFrameNumber: request.FromFrameNumber,
|
|
||||||
ToFrameNumber: to,
|
|
||||||
ClockFrames: set,
|
|
||||||
}); err != nil {
|
|
||||||
return errors.Wrap(err, "handle clock frame request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -305,6 +305,10 @@ func (b *BlossomSub) GetNetworkPeersCount() int {
|
|||||||
return len(b.h.Network().Peers())
|
return len(b.h.Network().Peers())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *BlossomSub) GetMultiaddrOfPeer(peerId []byte) string {
|
||||||
|
return b.h.Peerstore().Addrs(peer.ID(peerId))[0].String()
|
||||||
|
}
|
||||||
|
|
||||||
func discoverPeers(
|
func discoverPeers(
|
||||||
p2pConfig *config.P2PConfig,
|
p2pConfig *config.P2PConfig,
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
|
@ -14,4 +14,5 @@ type PubSub interface {
|
|||||||
GetPeerstoreCount() int
|
GetPeerstoreCount() int
|
||||||
GetNetworkPeersCount() int
|
GetNetworkPeersCount() int
|
||||||
GetRandomPeer(bitmask []byte) ([]byte, error)
|
GetRandomPeer(bitmask []byte) ([]byte, error)
|
||||||
|
GetMultiaddrOfPeer(peerId []byte) string
|
||||||
}
|
}
|
||||||
|
@ -972,6 +972,116 @@ func (x *CeremonyValidatingState) GetNextRoundParticipants() []*Ed448PublicKey {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type CeremonyPeerListAnnounce struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
PeerList []*CeremonyPeer `protobuf:"bytes,1,rep,name=peer_list,json=peerList,proto3" json:"peer_list,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CeremonyPeerListAnnounce) Reset() {
|
||||||
|
*x = CeremonyPeerListAnnounce{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_ceremony_proto_msgTypes[13]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CeremonyPeerListAnnounce) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*CeremonyPeerListAnnounce) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *CeremonyPeerListAnnounce) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_ceremony_proto_msgTypes[13]
|
||||||
|
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 CeremonyPeerListAnnounce.ProtoReflect.Descriptor instead.
|
||||||
|
func (*CeremonyPeerListAnnounce) Descriptor() ([]byte, []int) {
|
||||||
|
return file_ceremony_proto_rawDescGZIP(), []int{13}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CeremonyPeerListAnnounce) GetPeerList() []*CeremonyPeer {
|
||||||
|
if x != nil {
|
||||||
|
return x.PeerList
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type CeremonyPeer 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"`
|
||||||
|
Multiaddr string `protobuf:"bytes,2,opt,name=multiaddr,proto3" json:"multiaddr,omitempty"`
|
||||||
|
MaxFrame uint64 `protobuf:"varint,3,opt,name=max_frame,json=maxFrame,proto3" json:"max_frame,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CeremonyPeer) Reset() {
|
||||||
|
*x = CeremonyPeer{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_ceremony_proto_msgTypes[14]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CeremonyPeer) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*CeremonyPeer) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *CeremonyPeer) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_ceremony_proto_msgTypes[14]
|
||||||
|
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 CeremonyPeer.ProtoReflect.Descriptor instead.
|
||||||
|
func (*CeremonyPeer) Descriptor() ([]byte, []int) {
|
||||||
|
return file_ceremony_proto_rawDescGZIP(), []int{14}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CeremonyPeer) GetPeerId() []byte {
|
||||||
|
if x != nil {
|
||||||
|
return x.PeerId
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CeremonyPeer) GetMultiaddr() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Multiaddr
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CeremonyPeer) GetMaxFrame() uint64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.MaxFrame
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
var File_ceremony_proto protoreflect.FileDescriptor
|
var File_ceremony_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_ceremony_proto_rawDesc = []byte{
|
var file_ceremony_proto_rawDesc = []byte{
|
||||||
@ -1260,11 +1370,24 @@ var file_ceremony_proto_rawDesc = []byte{
|
|||||||
0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e,
|
0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e,
|
||||||
0x70, 0x62, 0x2e, 0x45, 0x64, 0x34, 0x34, 0x38, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65,
|
0x70, 0x62, 0x2e, 0x45, 0x64, 0x34, 0x34, 0x38, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65,
|
||||||
0x79, 0x52, 0x15, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x74,
|
0x79, 0x52, 0x15, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x74,
|
||||||
0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x42, 0x3a, 0x5a, 0x38, 0x73, 0x6f, 0x75, 0x72,
|
0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x22, 0x62, 0x0a, 0x18, 0x43, 0x65, 0x72, 0x65,
|
||||||
0x63, 0x65, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f,
|
0x6d, 0x6f, 0x6e, 0x79, 0x50, 0x65, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x6e, 0x6f,
|
||||||
0x6d, 0x2f, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2f, 0x6d, 0x6f, 0x6e,
|
0x75, 0x6e, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73,
|
||||||
0x6f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62,
|
||||||
0x62, 0x75, 0x66, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x65, 0x72, 0x65, 0x6d, 0x6f,
|
||||||
|
0x6e, 0x79, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x50, 0x65,
|
||||||
|
0x65, 0x72, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x62, 0x0a, 0x0c,
|
||||||
|
0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x50, 0x65, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07,
|
||||||
|
0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70,
|
||||||
|
0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64,
|
||||||
|
0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61,
|
||||||
|
0x64, 0x64, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65,
|
||||||
|
0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||||
|
0x42, 0x3a, 0x5a, 0x38, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69,
|
||||||
|
0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62,
|
||||||
|
0x72, 0x69, 0x75, 0x6d, 0x2f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x6e, 0x6f,
|
||||||
|
0x64, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x73, 0x62, 0x06, 0x70, 0x72,
|
||||||
|
0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -1279,7 +1402,7 @@ func file_ceremony_proto_rawDescGZIP() []byte {
|
|||||||
return file_ceremony_proto_rawDescData
|
return file_ceremony_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_ceremony_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
|
var file_ceremony_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
|
||||||
var file_ceremony_proto_goTypes = []interface{}{
|
var file_ceremony_proto_goTypes = []interface{}{
|
||||||
(*CeremonyTranscript)(nil), // 0: quilibrium.node.ceremony.pb.CeremonyTranscript
|
(*CeremonyTranscript)(nil), // 0: quilibrium.node.ceremony.pb.CeremonyTranscript
|
||||||
(*CeremonyLobbyState)(nil), // 1: quilibrium.node.ceremony.pb.CeremonyLobbyState
|
(*CeremonyLobbyState)(nil), // 1: quilibrium.node.ceremony.pb.CeremonyLobbyState
|
||||||
@ -1294,59 +1417,62 @@ var file_ceremony_proto_goTypes = []interface{}{
|
|||||||
(*CeremonyInProgressState)(nil), // 10: quilibrium.node.ceremony.pb.CeremonyInProgressState
|
(*CeremonyInProgressState)(nil), // 10: quilibrium.node.ceremony.pb.CeremonyInProgressState
|
||||||
(*CeremonyFinalizingState)(nil), // 11: quilibrium.node.ceremony.pb.CeremonyFinalizingState
|
(*CeremonyFinalizingState)(nil), // 11: quilibrium.node.ceremony.pb.CeremonyFinalizingState
|
||||||
(*CeremonyValidatingState)(nil), // 12: quilibrium.node.ceremony.pb.CeremonyValidatingState
|
(*CeremonyValidatingState)(nil), // 12: quilibrium.node.ceremony.pb.CeremonyValidatingState
|
||||||
(*BLS48581G1PublicKey)(nil), // 13: quilibrium.node.keys.pb.BLS48581G1PublicKey
|
(*CeremonyPeerListAnnounce)(nil), // 13: quilibrium.node.ceremony.pb.CeremonyPeerListAnnounce
|
||||||
(*BLS48581G2PublicKey)(nil), // 14: quilibrium.node.keys.pb.BLS48581G2PublicKey
|
(*CeremonyPeer)(nil), // 14: quilibrium.node.ceremony.pb.CeremonyPeer
|
||||||
(*Ed448PublicKey)(nil), // 15: quilibrium.node.keys.pb.Ed448PublicKey
|
(*BLS48581G1PublicKey)(nil), // 15: quilibrium.node.keys.pb.BLS48581G1PublicKey
|
||||||
(*Ed448Signature)(nil), // 16: quilibrium.node.keys.pb.Ed448Signature
|
(*BLS48581G2PublicKey)(nil), // 16: quilibrium.node.keys.pb.BLS48581G2PublicKey
|
||||||
(*BLS48581Signature)(nil), // 17: quilibrium.node.keys.pb.BLS48581Signature
|
(*Ed448PublicKey)(nil), // 17: quilibrium.node.keys.pb.Ed448PublicKey
|
||||||
(*X448PublicKey)(nil), // 18: quilibrium.node.keys.pb.X448PublicKey
|
(*Ed448Signature)(nil), // 18: quilibrium.node.keys.pb.Ed448Signature
|
||||||
|
(*BLS48581Signature)(nil), // 19: quilibrium.node.keys.pb.BLS48581Signature
|
||||||
|
(*X448PublicKey)(nil), // 20: quilibrium.node.keys.pb.X448PublicKey
|
||||||
}
|
}
|
||||||
var file_ceremony_proto_depIdxs = []int32{
|
var file_ceremony_proto_depIdxs = []int32{
|
||||||
13, // 0: quilibrium.node.ceremony.pb.CeremonyTranscript.g1_powers:type_name -> quilibrium.node.keys.pb.BLS48581G1PublicKey
|
15, // 0: quilibrium.node.ceremony.pb.CeremonyTranscript.g1_powers:type_name -> quilibrium.node.keys.pb.BLS48581G1PublicKey
|
||||||
14, // 1: quilibrium.node.ceremony.pb.CeremonyTranscript.g2_powers:type_name -> quilibrium.node.keys.pb.BLS48581G2PublicKey
|
16, // 1: quilibrium.node.ceremony.pb.CeremonyTranscript.g2_powers:type_name -> quilibrium.node.keys.pb.BLS48581G2PublicKey
|
||||||
13, // 2: quilibrium.node.ceremony.pb.CeremonyTranscript.running_g1_256_witnesses:type_name -> quilibrium.node.keys.pb.BLS48581G1PublicKey
|
15, // 2: quilibrium.node.ceremony.pb.CeremonyTranscript.running_g1_256_witnesses:type_name -> quilibrium.node.keys.pb.BLS48581G1PublicKey
|
||||||
14, // 3: quilibrium.node.ceremony.pb.CeremonyTranscript.running_g2_256_powers:type_name -> quilibrium.node.keys.pb.BLS48581G2PublicKey
|
16, // 3: quilibrium.node.ceremony.pb.CeremonyTranscript.running_g2_256_powers:type_name -> quilibrium.node.keys.pb.BLS48581G2PublicKey
|
||||||
9, // 4: quilibrium.node.ceremony.pb.CeremonyLobbyState.ceremony_open_state:type_name -> quilibrium.node.ceremony.pb.CeremonyOpenState
|
9, // 4: quilibrium.node.ceremony.pb.CeremonyLobbyState.ceremony_open_state:type_name -> quilibrium.node.ceremony.pb.CeremonyOpenState
|
||||||
10, // 5: quilibrium.node.ceremony.pb.CeremonyLobbyState.ceremony_in_progress_state:type_name -> quilibrium.node.ceremony.pb.CeremonyInProgressState
|
10, // 5: quilibrium.node.ceremony.pb.CeremonyLobbyState.ceremony_in_progress_state:type_name -> quilibrium.node.ceremony.pb.CeremonyInProgressState
|
||||||
11, // 6: quilibrium.node.ceremony.pb.CeremonyLobbyState.ceremony_finalizing_state:type_name -> quilibrium.node.ceremony.pb.CeremonyFinalizingState
|
11, // 6: quilibrium.node.ceremony.pb.CeremonyLobbyState.ceremony_finalizing_state:type_name -> quilibrium.node.ceremony.pb.CeremonyFinalizingState
|
||||||
12, // 7: quilibrium.node.ceremony.pb.CeremonyLobbyState.ceremony_validating_state:type_name -> quilibrium.node.ceremony.pb.CeremonyValidatingState
|
12, // 7: quilibrium.node.ceremony.pb.CeremonyLobbyState.ceremony_validating_state:type_name -> quilibrium.node.ceremony.pb.CeremonyValidatingState
|
||||||
0, // 8: quilibrium.node.ceremony.pb.CeremonyLobbyState.latest_transcript:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscript
|
0, // 8: quilibrium.node.ceremony.pb.CeremonyLobbyState.latest_transcript:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscript
|
||||||
15, // 9: quilibrium.node.ceremony.pb.CeremonySeenProverAttestation.seen_prover_key:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
17, // 9: quilibrium.node.ceremony.pb.CeremonySeenProverAttestation.seen_prover_key:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
||||||
16, // 10: quilibrium.node.ceremony.pb.CeremonySeenProverAttestation.prover_signature:type_name -> quilibrium.node.keys.pb.Ed448Signature
|
18, // 10: quilibrium.node.ceremony.pb.CeremonySeenProverAttestation.prover_signature:type_name -> quilibrium.node.keys.pb.Ed448Signature
|
||||||
15, // 11: quilibrium.node.ceremony.pb.CeremonyDroppedProverAttestation.dropped_prover_key:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
17, // 11: quilibrium.node.ceremony.pb.CeremonyDroppedProverAttestation.dropped_prover_key:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
||||||
16, // 12: quilibrium.node.ceremony.pb.CeremonyDroppedProverAttestation.prover_signature:type_name -> quilibrium.node.keys.pb.Ed448Signature
|
18, // 12: quilibrium.node.ceremony.pb.CeremonyDroppedProverAttestation.prover_signature:type_name -> quilibrium.node.keys.pb.Ed448Signature
|
||||||
13, // 13: quilibrium.node.ceremony.pb.CeremonyTranscriptShare.additive_g1_powers:type_name -> quilibrium.node.keys.pb.BLS48581G1PublicKey
|
15, // 13: quilibrium.node.ceremony.pb.CeremonyTranscriptShare.additive_g1_powers:type_name -> quilibrium.node.keys.pb.BLS48581G1PublicKey
|
||||||
14, // 14: quilibrium.node.ceremony.pb.CeremonyTranscriptShare.additive_g2_powers:type_name -> quilibrium.node.keys.pb.BLS48581G2PublicKey
|
16, // 14: quilibrium.node.ceremony.pb.CeremonyTranscriptShare.additive_g2_powers:type_name -> quilibrium.node.keys.pb.BLS48581G2PublicKey
|
||||||
13, // 15: quilibrium.node.ceremony.pb.CeremonyTranscriptShare.additive_g1_256_witness:type_name -> quilibrium.node.keys.pb.BLS48581G1PublicKey
|
15, // 15: quilibrium.node.ceremony.pb.CeremonyTranscriptShare.additive_g1_256_witness:type_name -> quilibrium.node.keys.pb.BLS48581G1PublicKey
|
||||||
14, // 16: quilibrium.node.ceremony.pb.CeremonyTranscriptShare.additive_g2_256_witness:type_name -> quilibrium.node.keys.pb.BLS48581G2PublicKey
|
16, // 16: quilibrium.node.ceremony.pb.CeremonyTranscriptShare.additive_g2_256_witness:type_name -> quilibrium.node.keys.pb.BLS48581G2PublicKey
|
||||||
16, // 17: quilibrium.node.ceremony.pb.CeremonyTranscriptShare.prover_signature:type_name -> quilibrium.node.keys.pb.Ed448Signature
|
18, // 17: quilibrium.node.ceremony.pb.CeremonyTranscriptShare.prover_signature:type_name -> quilibrium.node.keys.pb.Ed448Signature
|
||||||
16, // 18: quilibrium.node.ceremony.pb.CeremonyTranscriptCommit.prover_signature:type_name -> quilibrium.node.keys.pb.Ed448Signature
|
18, // 18: quilibrium.node.ceremony.pb.CeremonyTranscriptCommit.prover_signature:type_name -> quilibrium.node.keys.pb.Ed448Signature
|
||||||
17, // 19: quilibrium.node.ceremony.pb.CeremonyTranscriptCommit.contribution_signature:type_name -> quilibrium.node.keys.pb.BLS48581Signature
|
19, // 19: quilibrium.node.ceremony.pb.CeremonyTranscriptCommit.contribution_signature:type_name -> quilibrium.node.keys.pb.BLS48581Signature
|
||||||
5, // 20: quilibrium.node.ceremony.pb.CeremonyAdvanceRound.commits:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscriptCommit
|
5, // 20: quilibrium.node.ceremony.pb.CeremonyAdvanceRound.commits:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscriptCommit
|
||||||
18, // 21: quilibrium.node.ceremony.pb.CeremonyLobbyJoin.identity_key:type_name -> quilibrium.node.keys.pb.X448PublicKey
|
20, // 21: quilibrium.node.ceremony.pb.CeremonyLobbyJoin.identity_key:type_name -> quilibrium.node.keys.pb.X448PublicKey
|
||||||
18, // 22: quilibrium.node.ceremony.pb.CeremonyLobbyJoin.signed_pre_key:type_name -> quilibrium.node.keys.pb.X448PublicKey
|
20, // 22: quilibrium.node.ceremony.pb.CeremonyLobbyJoin.signed_pre_key:type_name -> quilibrium.node.keys.pb.X448PublicKey
|
||||||
16, // 23: quilibrium.node.ceremony.pb.CeremonyLobbyJoin.public_key_signature_ed448:type_name -> quilibrium.node.keys.pb.Ed448Signature
|
18, // 23: quilibrium.node.ceremony.pb.CeremonyLobbyJoin.public_key_signature_ed448:type_name -> quilibrium.node.keys.pb.Ed448Signature
|
||||||
7, // 24: quilibrium.node.ceremony.pb.CeremonyOpenState.joined_participants:type_name -> quilibrium.node.ceremony.pb.CeremonyLobbyJoin
|
7, // 24: quilibrium.node.ceremony.pb.CeremonyOpenState.joined_participants:type_name -> quilibrium.node.ceremony.pb.CeremonyLobbyJoin
|
||||||
15, // 25: quilibrium.node.ceremony.pb.CeremonyOpenState.preferred_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
17, // 25: quilibrium.node.ceremony.pb.CeremonyOpenState.preferred_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
||||||
15, // 26: quilibrium.node.ceremony.pb.CeremonyInProgressState.active_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
17, // 26: quilibrium.node.ceremony.pb.CeremonyInProgressState.active_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
||||||
2, // 27: quilibrium.node.ceremony.pb.CeremonyInProgressState.latest_seen_prover_attestations:type_name -> quilibrium.node.ceremony.pb.CeremonySeenProverAttestation
|
2, // 27: quilibrium.node.ceremony.pb.CeremonyInProgressState.latest_seen_prover_attestations:type_name -> quilibrium.node.ceremony.pb.CeremonySeenProverAttestation
|
||||||
3, // 28: quilibrium.node.ceremony.pb.CeremonyInProgressState.dropped_participant_attestations:type_name -> quilibrium.node.ceremony.pb.CeremonyDroppedProverAttestation
|
3, // 28: quilibrium.node.ceremony.pb.CeremonyInProgressState.dropped_participant_attestations:type_name -> quilibrium.node.ceremony.pb.CeremonyDroppedProverAttestation
|
||||||
6, // 29: quilibrium.node.ceremony.pb.CeremonyInProgressState.transcript_round_advance_commits:type_name -> quilibrium.node.ceremony.pb.CeremonyAdvanceRound
|
6, // 29: quilibrium.node.ceremony.pb.CeremonyInProgressState.transcript_round_advance_commits:type_name -> quilibrium.node.ceremony.pb.CeremonyAdvanceRound
|
||||||
15, // 30: quilibrium.node.ceremony.pb.CeremonyInProgressState.next_round_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
17, // 30: quilibrium.node.ceremony.pb.CeremonyInProgressState.next_round_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
||||||
15, // 31: quilibrium.node.ceremony.pb.CeremonyFinalizingState.active_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
17, // 31: quilibrium.node.ceremony.pb.CeremonyFinalizingState.active_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
||||||
2, // 32: quilibrium.node.ceremony.pb.CeremonyFinalizingState.latest_seen_prover_attestations:type_name -> quilibrium.node.ceremony.pb.CeremonySeenProverAttestation
|
2, // 32: quilibrium.node.ceremony.pb.CeremonyFinalizingState.latest_seen_prover_attestations:type_name -> quilibrium.node.ceremony.pb.CeremonySeenProverAttestation
|
||||||
3, // 33: quilibrium.node.ceremony.pb.CeremonyFinalizingState.dropped_participant_attestations:type_name -> quilibrium.node.ceremony.pb.CeremonyDroppedProverAttestation
|
3, // 33: quilibrium.node.ceremony.pb.CeremonyFinalizingState.dropped_participant_attestations:type_name -> quilibrium.node.ceremony.pb.CeremonyDroppedProverAttestation
|
||||||
5, // 34: quilibrium.node.ceremony.pb.CeremonyFinalizingState.commits:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscriptCommit
|
5, // 34: quilibrium.node.ceremony.pb.CeremonyFinalizingState.commits:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscriptCommit
|
||||||
4, // 35: quilibrium.node.ceremony.pb.CeremonyFinalizingState.shares:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscriptShare
|
4, // 35: quilibrium.node.ceremony.pb.CeremonyFinalizingState.shares:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscriptShare
|
||||||
15, // 36: quilibrium.node.ceremony.pb.CeremonyFinalizingState.next_round_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
17, // 36: quilibrium.node.ceremony.pb.CeremonyFinalizingState.next_round_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
||||||
5, // 37: quilibrium.node.ceremony.pb.CeremonyValidatingState.commits:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscriptCommit
|
5, // 37: quilibrium.node.ceremony.pb.CeremonyValidatingState.commits:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscriptCommit
|
||||||
0, // 38: quilibrium.node.ceremony.pb.CeremonyValidatingState.updated_transcript:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscript
|
0, // 38: quilibrium.node.ceremony.pb.CeremonyValidatingState.updated_transcript:type_name -> quilibrium.node.ceremony.pb.CeremonyTranscript
|
||||||
15, // 39: quilibrium.node.ceremony.pb.CeremonyValidatingState.next_round_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
17, // 39: quilibrium.node.ceremony.pb.CeremonyValidatingState.next_round_participants:type_name -> quilibrium.node.keys.pb.Ed448PublicKey
|
||||||
40, // [40:40] is the sub-list for method output_type
|
14, // 40: quilibrium.node.ceremony.pb.CeremonyPeerListAnnounce.peer_list:type_name -> quilibrium.node.ceremony.pb.CeremonyPeer
|
||||||
40, // [40:40] is the sub-list for method input_type
|
41, // [41:41] is the sub-list for method output_type
|
||||||
40, // [40:40] is the sub-list for extension type_name
|
41, // [41:41] is the sub-list for method input_type
|
||||||
40, // [40:40] is the sub-list for extension extendee
|
41, // [41:41] is the sub-list for extension type_name
|
||||||
0, // [0:40] is the sub-list for field type_name
|
41, // [41:41] is the sub-list for extension extendee
|
||||||
|
0, // [0:41] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_ceremony_proto_init() }
|
func init() { file_ceremony_proto_init() }
|
||||||
@ -1512,6 +1638,30 @@ func file_ceremony_proto_init() {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
file_ceremony_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*CeremonyPeerListAnnounce); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_ceremony_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*CeremonyPeer); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
file_ceremony_proto_msgTypes[1].OneofWrappers = []interface{}{
|
file_ceremony_proto_msgTypes[1].OneofWrappers = []interface{}{
|
||||||
(*CeremonyLobbyState_CeremonyOpenState)(nil),
|
(*CeremonyLobbyState_CeremonyOpenState)(nil),
|
||||||
@ -1525,7 +1675,7 @@ func file_ceremony_proto_init() {
|
|||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_ceremony_proto_rawDesc,
|
RawDescriptor: file_ceremony_proto_rawDesc,
|
||||||
NumEnums: 0,
|
NumEnums: 0,
|
||||||
NumMessages: 13,
|
NumMessages: 15,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
|
@ -124,3 +124,13 @@ message CeremonyValidatingState {
|
|||||||
CeremonyTranscript updated_transcript = 2;
|
CeremonyTranscript updated_transcript = 2;
|
||||||
repeated quilibrium.node.keys.pb.Ed448PublicKey next_round_participants = 3;
|
repeated quilibrium.node.keys.pb.Ed448PublicKey next_round_participants = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message CeremonyPeerListAnnounce {
|
||||||
|
repeated CeremonyPeer peer_list = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message CeremonyPeer {
|
||||||
|
bytes peer_id = 1;
|
||||||
|
string multiaddr = 2;
|
||||||
|
uint64 max_frame = 3;
|
||||||
|
}
|
||||||
|
@ -21,6 +21,8 @@ const (
|
|||||||
CeremonyInProgressStateType = CeremonyPrefix + "CeremonyInProgressState"
|
CeremonyInProgressStateType = CeremonyPrefix + "CeremonyInProgressState"
|
||||||
CeremonyFinalizingStateType = CeremonyPrefix + "CeremonyFinalizingState"
|
CeremonyFinalizingStateType = CeremonyPrefix + "CeremonyFinalizingState"
|
||||||
CeremonyValidatingStateType = CeremonyPrefix + "CeremonyValidatingState"
|
CeremonyValidatingStateType = CeremonyPrefix + "CeremonyValidatingState"
|
||||||
|
CeremonyPeerListAnnounceType = CeremonyPrefix + "CeremonyPeerListAnnounce"
|
||||||
|
CeremonyPeerType = CeremonyPrefix + "CeremonyPeer"
|
||||||
ApplicationType = AppPrefix + "Application"
|
ApplicationType = AppPrefix + "Application"
|
||||||
ExecutionContextType = AppPrefix + "ExecutionContext"
|
ExecutionContextType = AppPrefix + "ExecutionContext"
|
||||||
MessageType = AppPrefix + "Message"
|
MessageType = AppPrefix + "Message"
|
||||||
|
Loading…
Reference in New Issue
Block a user