mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-21 18:37:26 +08:00
* v2.1.0.2 * restore tweaks to simlibp2p * fix: nil ref on size calc * fix: panic should induce shutdown from event_distributor * fix: friendlier initialization that requires less manual kickstarting for test/devnets * fix: fewer available shards than provers should choose shard length * fix: update stored worker registry, improve logging for debug mode * fix: shut the fuck up, peer log * qol: log value should be snake cased * fix:non-archive snap sync issues * fix: separate X448/Decaf448 signed keys, add onion key to registry * fix: overflow arithmetic on frame number comparison * fix: worker registration should be idempotent if inputs are same, otherwise permit updated records * fix: remove global prover state from size calculation * fix: divide by zero case * fix: eager prover * fix: broadcast listener default * qol: diagnostic data for peer authenticator * fix: master/worker connectivity issue in sparse networks tight coupling of peer and workers can sometimes interfere if mesh is sparse, so give workers a pseudoidentity but publish messages with the proper peer key * fix: reorder steps of join creation * fix: join verify frame source + ensure domain is properly padded (unnecessary but good for consistency) * fix: add delegate to protobuf <-> reified join conversion * fix: preempt prover from planning with no workers * fix: use the unallocated workers to generate a proof * qol: underflow causes join fail in first ten frames on test/devnets * qol: small logging tweaks for easier log correlation in debug mode * qol: use fisher-yates shuffle to ensure prover allocations are evenly distributed when scores are equal * qol: separate decisional logic on post-enrollment confirmation into consensus engine, proposer, and worker manager where relevant, refactor out scoring * reuse shard descriptors for both join planning and confirm/reject decisions * fix: add missing interface method and amend test blossomsub to use new peer id basis * fix: only check allocations if they exist * fix: pomw mint proof data needs to be hierarchically under global intrinsic domain * staging temporary state under diagnostics * fix: first phase of distributed lock refactoring * fix: compute intrinsic locking * fix: hypergraph intrinsic locking * fix: token intrinsic locking * fix: update execution engines to support new locking model * fix: adjust tests with new execution shape * fix: weave in lock/unlock semantics to liveness provider * fix lock fallthrough, add missing allocation update * qol: additional logging for diagnostics, also testnet/devnet handling for confirmations * fix: establish grace period on halt scenario to permit recovery * fix: support test/devnet defaults for coverage scenarios * fix: nil ref on consensus halts for non-archive nodes * fix: remove unnecessary prefix from prover ref * add test coverage for fork choice behaviors and replay – once passing, blocker (2) is resolved * fix: no fork replay on repeat for non-archive nodes, snap now behaves correctly * rollup of pre-liveness check lock interactions * ahead of tests, get the protobuf/metrics-related changes out so teams can prepare * add test coverage for distributed lock behaviors – once passing, blocker (3) is resolved * fix: blocker (3) * Dev docs improvements (#445) * Make install deps script more robust * Improve testing instructions * Worker node should stop upon OS SIGINT/SIGTERM signal (#447) * move pebble close to Stop() * move deferred Stop() to Start() * add core id to worker stop log message * create done os signal channel and stop worker upon message to it --------- Co-authored-by: Cassandra Heart <7929478+CassOnMars@users.noreply.github.com> --------- Co-authored-by: Daz <daz_the_corgi@proton.me> Co-authored-by: Black Swan <3999712+blacks1ne@users.noreply.github.com>
233 lines
6.2 KiB
Protocol Buffer
233 lines
6.2 KiB
Protocol Buffer
syntax = "proto3";
|
||
|
||
package quilibrium.node.node.pb;
|
||
|
||
option go_package = "source.quilibrium.com/quilibrium/monorepo/node/protobufs";
|
||
|
||
import "channel.proto";
|
||
import "global.proto";
|
||
import "google/protobuf/wrappers.proto";
|
||
|
||
message GetPeerInfoRequest {}
|
||
|
||
message GetNodeInfoRequest {}
|
||
|
||
message GetWorkerInfoRequest {}
|
||
|
||
message Reachability {
|
||
// The filter this reachability information references.
|
||
bytes filter = 1;
|
||
// The node's pubsub interface multiaddrs for the given shard.
|
||
repeated string pubsub_multiaddrs = 2;
|
||
// The node's streaming interface multiaddrs for the given shard.
|
||
repeated string stream_multiaddrs = 3;
|
||
}
|
||
|
||
message PeerInfo {
|
||
// The node's peer id, derived from ed448 public key.
|
||
bytes peer_id = 1;
|
||
// The node's reachability information for given filters.
|
||
repeated Reachability reachability = 2;
|
||
// The timestamp the peer info report was generated.
|
||
int64 timestamp = 3;
|
||
// The core version string of the node, in semantic versioning:
|
||
// [byte 0].[byte 1].[byte 2]
|
||
bytes version = 4;
|
||
// The patch version of the node
|
||
bytes patch_version = 5;
|
||
// The list of supported capabilities.
|
||
repeated Capability capabilities = 6;
|
||
// The public key of the node.
|
||
bytes public_key = 7;
|
||
// The signature of the node.
|
||
bytes signature = 8;
|
||
}
|
||
|
||
message PeerInfoResponse {
|
||
PeerInfo peer_info = 1;
|
||
}
|
||
|
||
message NodeInfoResponse {
|
||
string peer_id = 1;
|
||
uint64 peer_score = 2;
|
||
bytes version = 3;
|
||
bytes peer_seniority = 4;
|
||
uint32 workers = 5;
|
||
}
|
||
|
||
message WorkerInfo {
|
||
uint32 core_id = 1;
|
||
bytes filter = 2;
|
||
uint64 available_storage = 3;
|
||
uint64 total_storage = 4;
|
||
}
|
||
|
||
message WorkerInfoResponse {
|
||
repeated WorkerInfo worker_info = 1;
|
||
}
|
||
|
||
message Capability {
|
||
// A general protocol identifier as a uint32 – this is expected to rarely
|
||
// iterate, and should be uniquely identifying both protocol and version.
|
||
// Pragmatically speaking, this implies that the least significant byte
|
||
// specifies version (which should iterate most minimally), and the three most
|
||
// significant bytes should specify protocol. Recipients SHOULD ignore
|
||
// messages with incompatible protocol identifiers, but also SHOULD warn on
|
||
// identifiers with versions higher than the supported protocol. A large
|
||
// number of unsupported protocol messages may indicate spam/some other
|
||
// attack, whereas a large number of unsupported protocol versions may
|
||
// indicate an out of date client, respective to which side is the maximum of
|
||
// the version number.
|
||
uint32 protocol_identifier = 1;
|
||
// An optional bundle of information specific to the capability – used for
|
||
// extensibility in negotiating variations of a protocol – e.g. Triple-Ratchet
|
||
// but only for certain curve types.
|
||
bytes additional_metadata = 2;
|
||
}
|
||
|
||
message InlineKey {
|
||
bytes ref = 1;
|
||
bytes key = 2;
|
||
}
|
||
|
||
message KeyRing {
|
||
repeated InlineKey keys = 1;
|
||
}
|
||
|
||
// Specifies the delivery method for the transaction's dispatchable outputs.
|
||
// Must match the number of outputs for the given transaction for multiple
|
||
// output transactions (for example, token transfers).
|
||
message DeliveryMethod {
|
||
// Dictates the method of delivery to be performed, 0 for normal inbox
|
||
// delivery, 1 for suppressed delivery.
|
||
uint32 delivery_type = 1;
|
||
// The inbox or hub address to deliver to.
|
||
bytes address = 2;
|
||
}
|
||
|
||
message DeliveryData {
|
||
repeated quilibrium.node.channel.pb.InboxMessage messages = 1;
|
||
}
|
||
|
||
// Sends either a message, delivery data, or both
|
||
message SendRequest {
|
||
// The applicable domain to the messages
|
||
bytes domain = 1;
|
||
// The underlying request(s) to send
|
||
quilibrium.node.global.pb.MessageBundle request = 2;
|
||
// The authentication token
|
||
bytes authentication = 3;
|
||
// Delivery data to send
|
||
repeated DeliveryData delivery_data = 4;
|
||
}
|
||
|
||
// The response confirming deliveries
|
||
message SendResponse {
|
||
repeated DeliveryData delivery_data = 1;
|
||
}
|
||
|
||
message OriginatedAccountRef {
|
||
bytes address = 1;
|
||
}
|
||
|
||
message ImplicitAccount {
|
||
uint32 implicit_type = 1;
|
||
bytes address = 2;
|
||
bytes domain = 3;
|
||
}
|
||
|
||
message AccountRef {
|
||
oneof account {
|
||
OriginatedAccountRef originated_account = 1;
|
||
ImplicitAccount implicit_account = 2;
|
||
}
|
||
}
|
||
|
||
message Coin {
|
||
bytes amount = 1;
|
||
bytes intersection = 2;
|
||
AccountRef owner = 3;
|
||
}
|
||
|
||
message LegacyCoin {
|
||
Coin coin = 1;
|
||
uint64 frame_number = 2;
|
||
bytes address = 3;
|
||
}
|
||
|
||
message MaterializedTransaction {
|
||
bytes address = 1;
|
||
bytes raw_balance = 2;
|
||
uint64 frame_number = 3;
|
||
bytes commitment = 4;
|
||
bytes one_time_key = 5;
|
||
bytes verification_key = 6;
|
||
bytes coin_balance = 7;
|
||
bytes mask = 8;
|
||
bytes additional_reference = 9;
|
||
bytes additional_reference_key = 10;
|
||
}
|
||
|
||
message MaterializedPendingTransaction {
|
||
bytes address = 1;
|
||
bytes raw_balance = 2;
|
||
uint64 frame_number = 3;
|
||
bytes commitment = 4;
|
||
bytes to_one_time_key = 5;
|
||
bytes refund_one_time_key = 6;
|
||
bytes to_verification_key = 7;
|
||
bytes refund_verification_key = 8;
|
||
bytes to_coin_balance = 9;
|
||
bytes refund_coin_balance = 10;
|
||
bytes to_mask = 11;
|
||
bytes refund_mask = 12;
|
||
bytes to_additional_reference = 13;
|
||
bytes to_additional_reference_key = 14;
|
||
bytes refund_additional_reference = 15;
|
||
bytes refund_additional_reference_key = 16;
|
||
uint64 expiration = 17;
|
||
}
|
||
|
||
message GetTokensByAccountRequest {
|
||
bytes address = 1;
|
||
bytes domain = 2;
|
||
}
|
||
|
||
message GetTokensByAccountResponse {
|
||
repeated LegacyCoin legacy_coins = 1;
|
||
repeated MaterializedTransaction transactions = 2;
|
||
repeated MaterializedPendingTransaction pending_transactions = 3;
|
||
}
|
||
|
||
service NodeService {
|
||
rpc GetPeerInfo(GetPeerInfoRequest) returns (PeerInfoResponse);
|
||
rpc GetNodeInfo(GetNodeInfoRequest) returns (NodeInfoResponse);
|
||
rpc GetWorkerInfo(GetWorkerInfoRequest) returns (WorkerInfoResponse);
|
||
rpc Send(SendRequest) returns (SendResponse);
|
||
rpc GetTokensByAccount(GetTokensByAccountRequest)
|
||
returns (GetTokensByAccountResponse);
|
||
}
|
||
|
||
message RespawnRequest {
|
||
bytes filter = 1;
|
||
}
|
||
|
||
message RespawnResponse {
|
||
}
|
||
|
||
message CreateJoinProofRequest {
|
||
bytes challenge = 1;
|
||
uint32 difficulty = 2;
|
||
repeated bytes ids = 3;
|
||
uint32 prover_index = 4;
|
||
}
|
||
|
||
message CreateJoinProofResponse {
|
||
bytes response = 1;
|
||
}
|
||
|
||
service DataIPCService {
|
||
rpc Respawn(RespawnRequest) returns (RespawnResponse);
|
||
rpc CreateJoinProof(CreateJoinProofRequest) returns (CreateJoinProofResponse);
|
||
}
|