diff --git a/Cargo.toml b/Cargo.toml index 5112e2c..eafe033 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,26 +26,26 @@ base64 = "0.21.7" borsh = { version = "1.3.0" , features = ["derive", "de_strict_order"]} futures = "0.3.30" hex = "0.4.3" -ibc-proto = { version = "0.41", default-features = false, features = ["serde"], optional = true } -ibc-types = { version = "0.12", default-features = false, features = ["std"] } -ics23 = "0.11.3" -jmt = { version = "0.10", features = ["migration"] } +ibc-proto = { version = "0.51.1", default-features = false, features = ["serde"], optional = true } +ibc-types = { version = "0.15.0", default-features = false, features = ["std"] } +ics23 = "0.12.0" +jmt = { version = "0.11", features = ["migration"] } metrics = { version = "0.22.3", optional = true } once_cell = "1.19.0" parking_lot = "0.12.3" -pbjson = { version = "0.6", optional = true } +pbjson = { version = "0.7", optional = true } pin-project = "1.1.5" -prost = { version = "0.12", optional = true } +prost = { version = "0.13.3", optional = true } regex = "1.10.5" rocksdb = "0.21" serde = { version = "1", optional = true} sha2 = "0.10" smallvec = { version = "1.10", features = ["union", "const_generics"] } tempfile = "3.10.1" -tendermint = { version = "0.34", default-features = false } +tendermint = { version = "0.40.0", default-features = false } tokio = { version = "1.38", features = ["full", "tracing"] } tokio-stream = "0.1.15" -tonic = { version = "0.10", optional = true } +tonic = { version = "0.12.3", optional = true } tracing = "0.1" [dev-dependencies] diff --git a/src/gen/penumbra.cnidarium.v1.rs b/src/gen/penumbra.cnidarium.v1.rs index 7a04181..858be10 100644 --- a/src/gen/penumbra.cnidarium.v1.rs +++ b/src/gen/penumbra.cnidarium.v1.rs @@ -1,6 +1,6 @@ +// This file is @generated by prost-build. /// Performs a key-value query against the nonverifiable storage, /// using a byte-encoded key. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct NonVerifiableKeyValueRequest { #[prost(message, optional, tag = "1")] @@ -8,7 +8,6 @@ pub struct NonVerifiableKeyValueRequest { } /// Nested message and enum types in `NonVerifiableKeyValueRequest`. pub mod non_verifiable_key_value_request { - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Key { #[prost(bytes = "vec", tag = "1")] @@ -18,9 +17,10 @@ pub mod non_verifiable_key_value_request { const NAME: &'static str = "Key"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!( - "penumbra.cnidarium.v1.NonVerifiableKeyValueRequest.{}", Self::NAME - ) + "penumbra.cnidarium.v1.NonVerifiableKeyValueRequest.Key".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.NonVerifiableKeyValueRequest.Key".into() } } } @@ -28,10 +28,12 @@ impl ::prost::Name for NonVerifiableKeyValueRequest { const NAME: &'static str = "NonVerifiableKeyValueRequest"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!("penumbra.cnidarium.v1.{}", Self::NAME) + "penumbra.cnidarium.v1.NonVerifiableKeyValueRequest".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.NonVerifiableKeyValueRequest".into() } } -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct NonVerifiableKeyValueResponse { /// The value corresponding to the specified key, if it was found. @@ -40,7 +42,6 @@ pub struct NonVerifiableKeyValueResponse { } /// Nested message and enum types in `NonVerifiableKeyValueResponse`. pub mod non_verifiable_key_value_response { - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Value { #[prost(bytes = "vec", tag = "1")] @@ -50,9 +51,10 @@ pub mod non_verifiable_key_value_response { const NAME: &'static str = "Value"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!( - "penumbra.cnidarium.v1.NonVerifiableKeyValueResponse.{}", Self::NAME - ) + "penumbra.cnidarium.v1.NonVerifiableKeyValueResponse.Value".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.NonVerifiableKeyValueResponse.Value".into() } } } @@ -60,13 +62,15 @@ impl ::prost::Name for NonVerifiableKeyValueResponse { const NAME: &'static str = "NonVerifiableKeyValueResponse"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!("penumbra.cnidarium.v1.{}", Self::NAME) + "penumbra.cnidarium.v1.NonVerifiableKeyValueResponse".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.NonVerifiableKeyValueResponse".into() } } /// Performs a key-value query against the JMT, either by key or by key hash. /// /// Proofs are only supported by key. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct KeyValueRequest { /// If set, the key to fetch from storage. @@ -80,10 +84,12 @@ impl ::prost::Name for KeyValueRequest { const NAME: &'static str = "KeyValueRequest"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!("penumbra.cnidarium.v1.{}", Self::NAME) + "penumbra.cnidarium.v1.KeyValueRequest".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.KeyValueRequest".into() } } -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct KeyValueResponse { /// The value corresponding to the specified key, if it was found. @@ -97,7 +103,6 @@ pub struct KeyValueResponse { } /// Nested message and enum types in `KeyValueResponse`. pub mod key_value_response { - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Value { #[prost(bytes = "vec", tag = "1")] @@ -107,9 +112,10 @@ pub mod key_value_response { const NAME: &'static str = "Value"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!( - "penumbra.cnidarium.v1.KeyValueResponse.{}", Self::NAME - ) + "penumbra.cnidarium.v1.KeyValueResponse.Value".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.KeyValueResponse.Value".into() } } } @@ -117,11 +123,13 @@ impl ::prost::Name for KeyValueResponse { const NAME: &'static str = "KeyValueResponse"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!("penumbra.cnidarium.v1.{}", Self::NAME) + "penumbra.cnidarium.v1.KeyValueResponse".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.KeyValueResponse".into() } } /// Performs a prefixed key-value query, by string prefix. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct PrefixValueRequest { /// The prefix to fetch subkeys from storage. @@ -132,10 +140,12 @@ impl ::prost::Name for PrefixValueRequest { const NAME: &'static str = "PrefixValueRequest"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!("penumbra.cnidarium.v1.{}", Self::NAME) + "penumbra.cnidarium.v1.PrefixValueRequest".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.PrefixValueRequest".into() } } -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct PrefixValueResponse { #[prost(string, tag = "1")] @@ -147,11 +157,13 @@ impl ::prost::Name for PrefixValueResponse { const NAME: &'static str = "PrefixValueResponse"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!("penumbra.cnidarium.v1.{}", Self::NAME) + "penumbra.cnidarium.v1.PrefixValueResponse".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.PrefixValueResponse".into() } } /// Requests a stream of new key-value pairs that have been committed to the state. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct WatchRequest { /// A regex for keys in the verifiable storage. @@ -173,11 +185,13 @@ impl ::prost::Name for WatchRequest { const NAME: &'static str = "WatchRequest"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!("penumbra.cnidarium.v1.{}", Self::NAME) + "penumbra.cnidarium.v1.WatchRequest".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.WatchRequest".into() } } /// A key-value pair that has been committed to the state. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct WatchResponse { /// The state version the key-value pair was committed at. @@ -190,7 +204,6 @@ pub struct WatchResponse { /// Nested message and enum types in `WatchResponse`. pub mod watch_response { /// Elements of the verifiable storage have string keys. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct KeyValue { #[prost(string, tag = "1")] @@ -206,11 +219,13 @@ pub mod watch_response { const NAME: &'static str = "KeyValue"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!("penumbra.cnidarium.v1.WatchResponse.{}", Self::NAME) + "penumbra.cnidarium.v1.WatchResponse.KeyValue".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.WatchResponse.KeyValue".into() } } /// Elements of the nonverifiable storage have byte keys. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct NvKeyValue { #[prost(bytes = "vec", tag = "1")] @@ -226,11 +241,13 @@ pub mod watch_response { const NAME: &'static str = "NvKeyValue"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!("penumbra.cnidarium.v1.WatchResponse.{}", Self::NAME) + "penumbra.cnidarium.v1.WatchResponse.NvKeyValue".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.WatchResponse.NvKeyValue".into() } } /// The entry that was committed. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum Entry { #[prost(message, tag = "5")] @@ -243,13 +260,22 @@ impl ::prost::Name for WatchResponse { const NAME: &'static str = "WatchResponse"; const PACKAGE: &'static str = "penumbra.cnidarium.v1"; fn full_name() -> ::prost::alloc::string::String { - ::prost::alloc::format!("penumbra.cnidarium.v1.{}", Self::NAME) + "penumbra.cnidarium.v1.WatchResponse".into() + } + fn type_url() -> ::prost::alloc::string::String { + "/penumbra.cnidarium.v1.WatchResponse".into() } } /// Generated client implementations. #[cfg(feature = "rpc")] pub mod query_service_client { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value, + )] use tonic::codegen::*; use tonic::codegen::http::Uri; #[derive(Debug, Clone)] @@ -271,8 +297,8 @@ pub mod query_service_client { where T: tonic::client::GrpcService, T::Error: Into, - T::ResponseBody: Body + Send + 'static, - ::Error: Into + Send, + T::ResponseBody: Body + std::marker::Send + 'static, + ::Error: Into + std::marker::Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); @@ -297,7 +323,7 @@ pub mod query_service_client { >, , - >>::Error: Into + Send + Sync, + >>::Error: Into + std::marker::Send + std::marker::Sync, { QueryServiceClient::new(InterceptedService::new(inner, interceptor)) } @@ -345,8 +371,7 @@ pub mod query_service_client { .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -374,8 +399,7 @@ pub mod query_service_client { .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -406,8 +430,7 @@ pub mod query_service_client { .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -434,8 +457,7 @@ pub mod query_service_client { .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -453,11 +475,17 @@ pub mod query_service_client { /// Generated server implementations. #[cfg(feature = "rpc")] pub mod query_service_server { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value, + )] use tonic::codegen::*; /// Generated trait containing gRPC methods that should be implemented for use with QueryServiceServer. #[async_trait] - pub trait QueryService: Send + Sync + 'static { + pub trait QueryService: std::marker::Send + std::marker::Sync + 'static { /// General-purpose key-value state query API, that can be used to query /// arbitrary keys in the JMT storage. async fn key_value( @@ -480,7 +508,7 @@ pub mod query_service_server { type PrefixValueStream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, > - + Send + + std::marker::Send + 'static; /// General-purpose prefixed key-value state query API, that can be used to query /// arbitrary prefixes in the JMT storage. @@ -495,7 +523,7 @@ pub mod query_service_server { type WatchStream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, > - + Send + + std::marker::Send + 'static; /// Subscribes to a stream of key-value updates, with regex filtering on keys. async fn watch( @@ -504,20 +532,18 @@ pub mod query_service_server { ) -> std::result::Result, tonic::Status>; } #[derive(Debug)] - pub struct QueryServiceServer { - inner: _Inner, + pub struct QueryServiceServer { + inner: Arc, accept_compression_encodings: EnabledCompressionEncodings, send_compression_encodings: EnabledCompressionEncodings, max_decoding_message_size: Option, max_encoding_message_size: Option, } - struct _Inner(Arc); - impl QueryServiceServer { + impl QueryServiceServer { pub fn new(inner: T) -> Self { Self::from_arc(Arc::new(inner)) } pub fn from_arc(inner: Arc) -> Self { - let inner = _Inner(inner); Self { inner, accept_compression_encodings: Default::default(), @@ -567,8 +593,8 @@ pub mod query_service_server { impl tonic::codegen::Service> for QueryServiceServer where T: QueryService, - B: Body + Send + 'static, - B::Error: Into + Send + 'static, + B: Body + std::marker::Send + 'static, + B::Error: Into + std::marker::Send + 'static, { type Response = http::Response; type Error = std::convert::Infallible; @@ -580,7 +606,6 @@ pub mod query_service_server { Poll::Ready(Ok(())) } fn call(&mut self, req: http::Request) -> Self::Future { - let inner = self.inner.clone(); match req.uri().path() { "/penumbra.cnidarium.v1.QueryService/KeyValue" => { #[allow(non_camel_case_types)] @@ -611,7 +636,6 @@ pub mod query_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { - let inner = inner.0; let method = KeyValueSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -661,7 +685,6 @@ pub mod query_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { - let inner = inner.0; let method = NonVerifiableKeyValueSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -708,7 +731,6 @@ pub mod query_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { - let inner = inner.0; let method = PrefixValueSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -755,7 +777,6 @@ pub mod query_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { - let inner = inner.0; let method = WatchSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -774,20 +795,25 @@ pub mod query_service_server { } _ => { Box::pin(async move { - Ok( - http::Response::builder() - .status(200) - .header("grpc-status", "12") - .header("content-type", "application/grpc") - .body(empty_body()) - .unwrap(), - ) + let mut response = http::Response::new(empty_body()); + let headers = response.headers_mut(); + headers + .insert( + tonic::Status::GRPC_STATUS, + (tonic::Code::Unimplemented as i32).into(), + ); + headers + .insert( + http::header::CONTENT_TYPE, + tonic::metadata::GRPC_CONTENT_TYPE, + ); + Ok(response) }) } } } } - impl Clone for QueryServiceServer { + impl Clone for QueryServiceServer { fn clone(&self) -> Self { let inner = self.inner.clone(); Self { @@ -799,17 +825,9 @@ pub mod query_service_server { } } } - impl Clone for _Inner { - fn clone(&self) -> Self { - Self(Arc::clone(&self.0)) - } - } - impl std::fmt::Debug for _Inner { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{:?}", self.0) - } - } - impl tonic::server::NamedService for QueryServiceServer { - const NAME: &'static str = "penumbra.cnidarium.v1.QueryService"; + /// Generated gRPC service name + pub const SERVICE_NAME: &str = "penumbra.cnidarium.v1.QueryService"; + impl tonic::server::NamedService for QueryServiceServer { + const NAME: &'static str = SERVICE_NAME; } } diff --git a/src/gen/penumbra.cnidarium.v1.serde.rs b/src/gen/penumbra.cnidarium.v1.serde.rs index 8751e80..6eea278 100644 --- a/src/gen/penumbra.cnidarium.v1.serde.rs +++ b/src/gen/penumbra.cnidarium.v1.serde.rs @@ -236,6 +236,7 @@ impl serde::Serialize for key_value_response::Value { let mut struct_ser = serializer.serialize_struct("penumbra.cnidarium.v1.KeyValueResponse.Value", len)?; if !self.value.is_empty() { #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] struct_ser.serialize_field("value", pbjson::private::base64::encode(&self.value).as_str())?; } struct_ser.end() @@ -429,6 +430,7 @@ impl serde::Serialize for non_verifiable_key_value_request::Key { let mut struct_ser = serializer.serialize_struct("penumbra.cnidarium.v1.NonVerifiableKeyValueRequest.Key", len)?; if !self.inner.is_empty() { #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] struct_ser.serialize_field("inner", pbjson::private::base64::encode(&self.inner).as_str())?; } struct_ser.end() @@ -622,6 +624,7 @@ impl serde::Serialize for non_verifiable_key_value_response::Value { let mut struct_ser = serializer.serialize_struct("penumbra.cnidarium.v1.NonVerifiableKeyValueResponse.Value", len)?; if !self.value.is_empty() { #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] struct_ser.serialize_field("value", pbjson::private::base64::encode(&self.value).as_str())?; } struct_ser.end() @@ -821,6 +824,7 @@ impl serde::Serialize for PrefixValueResponse { } if !self.value.is_empty() { #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] struct_ser.serialize_field("value", pbjson::private::base64::encode(&self.value).as_str())?; } struct_ser.end() @@ -1047,6 +1051,7 @@ impl serde::Serialize for WatchResponse { let mut struct_ser = serializer.serialize_struct("penumbra.cnidarium.v1.WatchResponse", len)?; if self.version != 0 { #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] struct_ser.serialize_field("version", ToString::to_string(&self.version).as_str())?; } if let Some(v) = self.entry.as_ref() { @@ -1187,6 +1192,7 @@ impl serde::Serialize for watch_response::KeyValue { } if !self.value.is_empty() { #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] struct_ser.serialize_field("value", pbjson::private::base64::encode(&self.value).as_str())?; } if self.deleted { @@ -1316,10 +1322,12 @@ impl serde::Serialize for watch_response::NvKeyValue { let mut struct_ser = serializer.serialize_struct("penumbra.cnidarium.v1.WatchResponse.NvKeyValue", len)?; if !self.key.is_empty() { #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] struct_ser.serialize_field("key", pbjson::private::base64::encode(&self.key).as_str())?; } if !self.value.is_empty() { #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] struct_ser.serialize_field("value", pbjson::private::base64::encode(&self.value).as_str())?; } if self.deleted { diff --git a/tools/proto-compiler/Cargo.toml b/tools/proto-compiler/Cargo.toml index 43dc1ca..65b8558 100644 --- a/tools/proto-compiler/Cargo.toml +++ b/tools/proto-compiler/Cargo.toml @@ -6,13 +6,13 @@ publish = false [dependencies] anyhow = "1" -ibc-proto = { version = "0.40.0" } -ics23 = "0.11.3" -pbjson = "0.6" -pbjson-build = "0.6" -pbjson-types = "0.6" -prost = "0.12.3" -prost-build = "0.12.3" -prost-types = "0.12" +ibc-proto = { version = "0.51.1" } +ics23 = "0.12.0" +pbjson = "0.7" +pbjson-build = "0.7" +pbjson-types = "0.7" +prost = "0.13.3" +prost-build = "0.13.3" +prost-types = "0.13.3" tempfile = "3" -tonic-build = { version = "0.10.0", features = ["cleanup-markdown"] } +tonic-build = { version = "0.12.3", features = ["cleanup-markdown"] } diff --git a/tools/proto-compiler/src/main.rs b/tools/proto-compiler/src/main.rs index 53155f5..9ac0e56 100644 --- a/tools/proto-compiler/src/main.rs +++ b/tools/proto-compiler/src/main.rs @@ -37,7 +37,7 @@ fn main() -> anyhow::Result<()> { .emit_rerun_if_changed(false) .server_mod_attribute(".", rpc_doc_attr) .client_mod_attribute(".", rpc_doc_attr) - .compile_with_config( + .compile_protos_with_config( config, &["../../proto/penumbra/penumbra/cnidarium/v1/cnidarium.proto"], &["../../proto/penumbra/", "../../proto/rust-vendored/"],