Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions crates/types/network/src/network.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1073,6 +1073,39 @@ pub mod prover_network_client {
.insert(GrpcMethod::new("network.ProverNetwork", "GetProvePrice"));
self.inner.unary(req, path, codec).await
}
/// Get requester addresses opted into dynamic pricing. Bidders gate their USD floor on
/// this set; addresses not in the response are bid under the static path.
pub async fn get_dynamic_pricing_requesters(
&mut self,
request: impl tonic::IntoRequest<
super::super::types::GetDynamicPricingRequestersRequest,
>,
) -> std::result::Result<
tonic::Response<super::super::types::GetDynamicPricingRequestersResponse>,
tonic::Status,
> {
self.inner
.ready()
.await
.map_err(|e| {
tonic::Status::unknown(
format!("Service was not ready: {}", e.into()),
)
})?;
let codec = tonic::codec::ProstCodec::default();
let path = http::uri::PathAndQuery::from_static(
"/network.ProverNetwork/GetDynamicPricingRequesters",
);
let mut req = request.into_request();
req.extensions_mut()
.insert(
GrpcMethod::new(
"network.ProverNetwork",
"GetDynamicPricingRequesters",
),
);
self.inner.unary(req, path, codec).await
}
/// Get the provers that have historically had reliable uptime.
pub async fn get_provers_by_uptime(
&mut self,
Expand Down Expand Up @@ -2026,6 +2059,17 @@ pub mod prover_network_server {
tonic::Response<super::super::types::GetProvePriceResponse>,
tonic::Status,
>;
/// Get requester addresses opted into dynamic pricing. Bidders gate their USD floor on
/// this set; addresses not in the response are bid under the static path.
async fn get_dynamic_pricing_requesters(
&self,
request: tonic::Request<
super::super::types::GetDynamicPricingRequestersRequest,
>,
) -> std::result::Result<
tonic::Response<super::super::types::GetDynamicPricingRequestersResponse>,
tonic::Status,
>;
/// Get the provers that have historically had reliable uptime.
async fn get_provers_by_uptime(
&self,
Expand Down Expand Up @@ -4106,6 +4150,58 @@ pub mod prover_network_server {
};
Box::pin(fut)
}
"/network.ProverNetwork/GetDynamicPricingRequesters" => {
#[allow(non_camel_case_types)]
struct GetDynamicPricingRequestersSvc<T: ProverNetwork>(pub Arc<T>);
impl<
T: ProverNetwork,
> tonic::server::UnaryService<
super::super::types::GetDynamicPricingRequestersRequest,
> for GetDynamicPricingRequestersSvc<T> {
type Response = super::super::types::GetDynamicPricingRequestersResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<
super::super::types::GetDynamicPricingRequestersRequest,
>,
) -> Self::Future {
let inner = Arc::clone(&self.0);
let fut = async move {
<T as ProverNetwork>::get_dynamic_pricing_requesters(
&inner,
request,
)
.await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let max_decoding_message_size = self.max_decoding_message_size;
let max_encoding_message_size = self.max_encoding_message_size;
let inner = self.inner.clone();
let fut = async move {
let method = GetDynamicPricingRequestersSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
)
.apply_max_message_size_config(
max_decoding_message_size,
max_encoding_message_size,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/network.ProverNetwork/GetProversByUptime" => {
#[allow(non_camel_case_types)]
struct GetProversByUptimeSvc<T: ProverNetwork>(pub Arc<T>);
Expand Down
12 changes: 12 additions & 0 deletions crates/types/network/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1427,6 +1427,18 @@ pub struct GetProvePriceResponse {
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GetDynamicPricingRequestersRequest {}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetDynamicPricingRequestersResponse {
/// Requester addresses opted into dynamic pricing. Bidders apply their USD floor only
/// to requests originating from these addresses; everyone else is priced under the
/// static path.
#[prost(bytes = "vec", repeated, tag = "1")]
pub requesters: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GetProversByUptimeRequest {
/// Whether to only return high availability provers.
#[prost(bool, tag = "1")]
Expand Down
4 changes: 4 additions & 0 deletions proto/network.proto
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,10 @@ service ProverNetwork {
rpc Settle(types.SettleRequest) returns (types.SettleResponse) {}
// Get the current PROVE token price in USD.
rpc GetProvePrice(types.GetProvePriceRequest) returns (types.GetProvePriceResponse) {}
// Get requester addresses opted into dynamic pricing. Bidders gate their USD floor on
// this set; addresses not in the response are bid under the static path.
rpc GetDynamicPricingRequesters(types.GetDynamicPricingRequestersRequest)
returns (types.GetDynamicPricingRequestersResponse) {}
// Get the provers that have historically had reliable uptime.
rpc GetProversByUptime(types.GetProversByUptimeRequest) returns (types.GetProversByUptimeResponse) {}
// Get settleable proof requests that have passed auction period and have bids.
Expand Down
10 changes: 10 additions & 0 deletions proto/types.proto
Original file line number Diff line number Diff line change
Expand Up @@ -1088,6 +1088,16 @@ message GetProvePriceResponse {
string percent_change_24h = 3;
}

message GetDynamicPricingRequestersRequest {
}

message GetDynamicPricingRequestersResponse {
// Requester addresses opted into dynamic pricing. Bidders apply their USD floor only
// to requests originating from these addresses; everyone else is priced under the
// static path.
repeated bytes requesters = 1;
}

message GetProversByUptimeRequest {
// Whether to only return high availability provers.
bool high_availability_only = 1;
Expand Down
Loading