From 43ff6e706cc8249d21b33f2d099ec9df795981e0 Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Sun, 24 Dec 2023 18:22:27 -0500 Subject: [PATCH] proto: add `timestamp` field to `SubscribeUpdate` message --- .github/workflows/test.yml | 2 +- CHANGELOG.md | 22 ++++++++++++++++++++++ Cargo.lock | 11 ++++++----- Cargo.toml | 15 ++++++++------- examples/rust/Cargo.toml | 2 +- yellowstone-grpc-client/Cargo.toml | 2 +- yellowstone-grpc-geyser/Cargo.toml | 2 +- yellowstone-grpc-geyser/src/filters.rs | 23 +++++++++++++++-------- yellowstone-grpc-geyser/src/grpc.rs | 3 +++ yellowstone-grpc-proto/Cargo.toml | 3 ++- yellowstone-grpc-proto/proto/geyser.proto | 2 ++ yellowstone-grpc-proto/src/lib.rs | 1 + yellowstone-grpc-tools/Cargo.toml | 2 +- yellowstone-grpc-tools/src/kafka/grpc.rs | 19 ++++++++++++------- 14 files changed, 76 insertions(+), 33 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e762076..3552a80 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,7 +8,7 @@ on: pull_request: push: branches: - - 'master' + - 'v1.17-gamma' workflow_dispatch: env: diff --git a/CHANGELOG.md b/CHANGELOG.md index 2430604..d63cc4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,17 @@ The minor version will be incremented upon a breaking change and the patch versi ### Breaking +## 2024-01-09 + +- yellowstone-grpc-client-1.13.0+solana.1.17.15.gamma +- yellowstone-grpc-geyser-1.12.0+solana.1.17.15.gamma +- yellowstone-grpc-proto-1.12.0+solana.1.17.15.gamma +- yellowstone-grpc-tools-1.0.0-rc.9+solana.1.17.15.gamma + +### Features + +- proto: add `timestamp` field to `SubscribeUpdate` message + ## 2024-01-08 - yellowstone-grpc-client-1.13.0+solana.1.17.15 @@ -28,6 +39,17 @@ The minor version will be incremented upon a breaking change and the patch versi - proto: add more convert functions ([#264](https://github.com/rpcpool/yellowstone-grpc/pull/264)) - geyser: set plugin name to `{name}-{version}` ([#270](https://github.com/rpcpool/yellowstone-grpc/pull/270)) +## 2023-12-24 + +- yellowstone-grpc-client-1.13.0+solana.1.16.21 +- yellowstone-grpc-geyser-1.12.0+solana.1.16.21 +- yellowstone-grpc-proto-1.12.0+solana.1.16.21 +- yellowstone-grpc-tools-1.0.0-rc.10+solana.1.16.21 + +### Features + +- proto: add `timestamp` field to `SubscribeUpdate` message + ## 2023-12-22 - yellowstone-grpc-client-1.12.0+solana.1.17.12 diff --git a/Cargo.lock b/Cargo.lock index bf73b9b..98c8cde 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5033,7 +5033,7 @@ dependencies = [ [[package]] name = "yellowstone-grpc-client" -version = "1.13.0+solana.1.17.15" +version = "1.13.0+solana.1.17.15.gamma" dependencies = [ "bytes", "futures", @@ -5047,7 +5047,7 @@ dependencies = [ [[package]] name = "yellowstone-grpc-client-simple" -version = "1.11.0+solana.1.17.15" +version = "1.11.0+solana.1.17.15.gamma" dependencies = [ "anyhow", "backoff", @@ -5070,7 +5070,7 @@ dependencies = [ [[package]] name = "yellowstone-grpc-geyser" -version = "1.12.0+solana.1.17.15" +version = "1.12.0+solana.1.17.15.gamma" dependencies = [ "anyhow", "base64 0.21.4", @@ -5102,11 +5102,12 @@ dependencies = [ [[package]] name = "yellowstone-grpc-proto" -version = "1.12.0+solana.1.17.15" +version = "1.12.0+solana.1.17.15.gamma" dependencies = [ "anyhow", "bincode", "prost 0.12.1", + "prost-types 0.12.1", "protobuf-src", "solana-account-decoder", "solana-sdk", @@ -5117,7 +5118,7 @@ dependencies = [ [[package]] name = "yellowstone-grpc-tools" -version = "1.0.0-rc.9+solana.1.17.15" +version = "1.0.0-rc.9+solana.1.17.15.gamma" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index 78b9209..b58e7b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,11 +1,11 @@ [workspace] resolver = "2" members = [ - "examples/rust", # 1.11.0+solana.1.17.15 - "yellowstone-grpc-client", # 1.13.0+solana.1.17.15 - "yellowstone-grpc-geyser", # 1.12.0+solana.1.17.15 - "yellowstone-grpc-proto", # 1.12.0+solana.1.17.15 - "yellowstone-grpc-tools", # 1.0.0-rc.9+solana.1.17.15 + "examples/rust", # 1.11.0+solana.1.17.15.gamma + "yellowstone-grpc-client", # 1.13.0+solana.1.17.15.gamma + "yellowstone-grpc-geyser", # 1.12.0+solana.1.17.15.gamma + "yellowstone-grpc-proto", # 1.12.0+solana.1.17.15.gamma + "yellowstone-grpc-tools", # 1.0.0-rc.9+solana.1.17.15.gamma ] [workspace.package] @@ -44,6 +44,7 @@ log = "0.4.17" maplit = "1.0.2" prometheus = "0.13.2" prost = "0.12.1" +prost-types = "0.12.1" protobuf-src = "1.1.0" rdkafka = "0.34.0" serde = "1.0.145" @@ -65,8 +66,8 @@ tonic-health = "0.10.2" tracing = "0.1.37" tracing-subscriber = "0.3.17" vergen = "8.2.1" -yellowstone-grpc-client = { path = "yellowstone-grpc-client", version = "=1.13.0+solana.1.17.15" } -yellowstone-grpc-proto = { path = "yellowstone-grpc-proto", version = "=1.12.0+solana.1.17.15" } +yellowstone-grpc-client = { path = "yellowstone-grpc-client", version = "=1.13.0+solana.1.17.15.gamma" } +yellowstone-grpc-proto = { path = "yellowstone-grpc-proto", version = "=1.12.0+solana.1.17.15.gamma" } [profile.release] debug = true diff --git a/examples/rust/Cargo.toml b/examples/rust/Cargo.toml index bc03973..8a53867 100644 --- a/examples/rust/Cargo.toml +++ b/examples/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yellowstone-grpc-client-simple" -version = "1.11.0+solana.1.17.15" +version = "1.11.0+solana.1.17.15.gamma" authors = { workspace = true } edition = { workspace = true } homepage = { workspace = true } diff --git a/yellowstone-grpc-client/Cargo.toml b/yellowstone-grpc-client/Cargo.toml index 8ca955f..5140374 100644 --- a/yellowstone-grpc-client/Cargo.toml +++ b/yellowstone-grpc-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yellowstone-grpc-client" -version = "1.13.0+solana.1.17.15" +version = "1.13.0+solana.1.17.15.gamma" authors = { workspace = true } edition = { workspace = true } description = "Yellowstone gRPC Geyser Simple Client" diff --git a/yellowstone-grpc-geyser/Cargo.toml b/yellowstone-grpc-geyser/Cargo.toml index b61f1f6..25c1247 100644 --- a/yellowstone-grpc-geyser/Cargo.toml +++ b/yellowstone-grpc-geyser/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yellowstone-grpc-geyser" -version = "1.12.0+solana.1.17.15" +version = "1.12.0+solana.1.17.15.gamma" authors = { workspace = true } edition = { workspace = true } description = "Yellowstone gRPC Geyser Plugin" diff --git a/yellowstone-grpc-geyser/src/filters.rs b/yellowstone-grpc-geyser/src/filters.rs index 7de9fa3..1dc0f83 100644 --- a/yellowstone-grpc-geyser/src/filters.rs +++ b/yellowstone-grpc-geyser/src/filters.rs @@ -17,15 +17,20 @@ use { collections::{HashMap, HashSet}, iter::FromIterator, str::FromStr, + time::SystemTime, }, - yellowstone_grpc_proto::prelude::{ - subscribe_request_filter_accounts_filter::Filter as AccountsFilterDataOneof, - subscribe_request_filter_accounts_filter_memcmp::Data as AccountsFilterMemcmpOneof, - subscribe_update::UpdateOneof, CommitmentLevel, SubscribeRequest, - SubscribeRequestAccountsDataSlice, SubscribeRequestFilterAccounts, - SubscribeRequestFilterAccountsFilter, SubscribeRequestFilterBlocks, - SubscribeRequestFilterBlocksMeta, SubscribeRequestFilterEntry, SubscribeRequestFilterSlots, - SubscribeRequestFilterTransactions, SubscribeUpdate, SubscribeUpdatePong, + yellowstone_grpc_proto::{ + prelude::{ + subscribe_request_filter_accounts_filter::Filter as AccountsFilterDataOneof, + subscribe_request_filter_accounts_filter_memcmp::Data as AccountsFilterMemcmpOneof, + subscribe_update::UpdateOneof, CommitmentLevel, SubscribeRequest, + SubscribeRequestAccountsDataSlice, SubscribeRequestFilterAccounts, + SubscribeRequestFilterAccountsFilter, SubscribeRequestFilterBlocks, + SubscribeRequestFilterBlocksMeta, SubscribeRequestFilterEntry, + SubscribeRequestFilterSlots, SubscribeRequestFilterTransactions, SubscribeUpdate, + SubscribeUpdatePong, + }, + prost_types::Timestamp, }, }; @@ -113,6 +118,7 @@ impl Filter { Some(SubscribeUpdate { filters, update_oneof: Some(message.to_proto(&self.accounts_data_slice)), + timestamp: Some(Timestamp::from(SystemTime::now())), }) } }) @@ -123,6 +129,7 @@ impl Filter { self.ping.map(|id| SubscribeUpdate { filters: vec![], update_oneof: Some(UpdateOneof::Pong(SubscribeUpdatePong { id })), + timestamp: Some(Timestamp::from(SystemTime::now())), }) } } diff --git a/yellowstone-grpc-geyser/src/grpc.rs b/yellowstone-grpc-geyser/src/grpc.rs index c9276fb..d0fd465 100644 --- a/yellowstone-grpc-geyser/src/grpc.rs +++ b/yellowstone-grpc-geyser/src/grpc.rs @@ -23,6 +23,7 @@ use { atomic::{AtomicUsize, Ordering}, Arc, }, + time::SystemTime, }, tokio::{ fs, @@ -52,6 +53,7 @@ use { SubscribeUpdateBlockMeta, SubscribeUpdateEntry, SubscribeUpdatePing, SubscribeUpdateSlot, SubscribeUpdateTransaction, SubscribeUpdateTransactionInfo, }, + prost_types::Timestamp, }, }; @@ -1228,6 +1230,7 @@ impl Geyser for GrpcService { let ping_msg = SubscribeUpdate { filters: vec![], update_oneof: Some(UpdateOneof::Ping(SubscribeUpdatePing {})), + timestamp: Some(Timestamp::from(SystemTime::now())), }; loop { diff --git a/yellowstone-grpc-proto/Cargo.toml b/yellowstone-grpc-proto/Cargo.toml index 06b569c..ebd25b2 100644 --- a/yellowstone-grpc-proto/Cargo.toml +++ b/yellowstone-grpc-proto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yellowstone-grpc-proto" -version = "1.12.0+solana.1.17.15" +version = "1.12.0+solana.1.17.15.gamma" authors = { workspace = true } edition = { workspace = true } description = "Yellowstone gRPC Geyser Protobuf Definitions" @@ -13,6 +13,7 @@ publish = true [dependencies] bincode = { workspace = true } prost = { workspace = true } +prost-types = { workspace = true } solana-account-decoder = { workspace = true } solana-sdk = { workspace = true } solana-transaction-status = { workspace = true } diff --git a/yellowstone-grpc-proto/proto/geyser.proto b/yellowstone-grpc-proto/proto/geyser.proto index 6cf6b55..8643742 100644 --- a/yellowstone-grpc-proto/proto/geyser.proto +++ b/yellowstone-grpc-proto/proto/geyser.proto @@ -1,5 +1,6 @@ syntax = "proto3"; +import "google/protobuf/timestamp.proto"; import public "solana-storage.proto"; option go_package = "github.com/rpcpool/solana-geyser-grpc/golang/proto"; @@ -102,6 +103,7 @@ message SubscribeUpdate { SubscribeUpdateBlockMeta block_meta = 7; SubscribeUpdateEntry entry = 8; } + google.protobuf.Timestamp timestamp = 10; } message SubscribeUpdateAccount { diff --git a/yellowstone-grpc-proto/src/lib.rs b/yellowstone-grpc-proto/src/lib.rs index f4d5bb6..425aee7 100644 --- a/yellowstone-grpc-proto/src/lib.rs +++ b/yellowstone-grpc-proto/src/lib.rs @@ -18,6 +18,7 @@ pub mod prelude { } pub use prost; +pub use prost_types; pub use tonic; pub mod convert_to { diff --git a/yellowstone-grpc-tools/Cargo.toml b/yellowstone-grpc-tools/Cargo.toml index 2f71975..2390581 100644 --- a/yellowstone-grpc-tools/Cargo.toml +++ b/yellowstone-grpc-tools/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yellowstone-grpc-tools" -version = "1.0.0-rc.9+solana.1.17.15" +version = "1.0.0-rc.9+solana.1.17.15.gamma" authors = { workspace = true } edition = { workspace = true } description = "Yellowstone gRPC Tools" diff --git a/yellowstone-grpc-tools/src/kafka/grpc.rs b/yellowstone-grpc-tools/src/kafka/grpc.rs index bb9997c..f2c703a 100644 --- a/yellowstone-grpc-tools/src/kafka/grpc.rs +++ b/yellowstone-grpc-tools/src/kafka/grpc.rs @@ -7,6 +7,7 @@ use { atomic::{AtomicUsize, Ordering}, Arc, }, + time::SystemTime, }, tokio::{ sync::{broadcast, mpsc, Notify}, @@ -24,13 +25,16 @@ use { }, tonic_health::server::health_reporter, tracing::{error, info}, - yellowstone_grpc_proto::prelude::{ - geyser_server::{Geyser, GeyserServer}, - subscribe_update::UpdateOneof, - GetBlockHeightRequest, GetBlockHeightResponse, GetLatestBlockhashRequest, - GetLatestBlockhashResponse, GetSlotRequest, GetSlotResponse, GetVersionRequest, - GetVersionResponse, IsBlockhashValidRequest, IsBlockhashValidResponse, PingRequest, - PongResponse, SubscribeRequest, SubscribeUpdate, SubscribeUpdatePing, + yellowstone_grpc_proto::{ + prelude::{ + geyser_server::{Geyser, GeyserServer}, + subscribe_update::UpdateOneof, + GetBlockHeightRequest, GetBlockHeightResponse, GetLatestBlockhashRequest, + GetLatestBlockhashResponse, GetSlotRequest, GetSlotResponse, GetVersionRequest, + GetVersionResponse, IsBlockhashValidRequest, IsBlockhashValidResponse, PingRequest, + PongResponse, SubscribeRequest, SubscribeUpdate, SubscribeUpdatePing, + }, + prost_types::Timestamp, }, }; @@ -119,6 +123,7 @@ impl Geyser for GrpcService { let ping_msg = SubscribeUpdate { filters: vec![], update_oneof: Some(UpdateOneof::Ping(SubscribeUpdatePing {})), + timestamp: Some(Timestamp::from(SystemTime::now())), }; loop {