validator-api-client and wallet: compute mixnode reward estimation

This commit is contained in:
Jon Häggblad
2022-09-20 12:02:49 +02:00
parent b9dddd32ca
commit c6a7f4e0ef
8 changed files with 60 additions and 19 deletions
@@ -12,8 +12,9 @@ use validator_api_requests::coconut::{
VerifyCredentialBody, VerifyCredentialResponse,
};
use validator_api_requests::models::{
CoreNodeStatusResponse, InclusionProbabilityResponse, MixNodeBondAnnotated,
MixnodeStatusResponse, RewardEstimationResponse, StakeSaturationResponse, UptimeResponse,
ComputeRewardEstParam, CoreNodeStatusResponse, InclusionProbabilityResponse,
MixNodeBondAnnotated, MixnodeStatusResponse, RewardEstimationResponse, StakeSaturationResponse,
UptimeResponse,
};
pub mod error;
@@ -262,6 +263,25 @@ impl Client {
.await
}
pub async fn compute_mixnode_reward_estimation(
&self,
identity: IdentityKeyRef<'_>,
request_body: &ComputeRewardEstParam,
) -> Result<RewardEstimationResponse, ValidatorAPIError> {
self.post_validator_api(
&[
routes::API_VERSION,
routes::STATUS_ROUTES,
routes::MIXNODE,
identity,
routes::COMPUTE_REWARD_ESTIMATION,
],
NO_PARAMS,
request_body,
)
.await
}
pub async fn get_mixnode_stake_saturation(
&self,
identity: IdentityKeyRef<'_>,
@@ -29,6 +29,7 @@ pub const SINCE_ARG: &str = "since";
pub const STATUS: &str = "status";
pub const REWARD_ESTIMATION: &str = "reward-estimation";
pub const COMPUTE_REWARD_ESTIMATION: &str = "compute-reward-estimation";
pub const AVG_UPTIME: &str = "avg_uptime";
pub const STAKE_SATURATION: &str = "stake-saturation";
pub const INCLUSION_CHANCE: &str = "inclusion-probability";
+2 -2
View File
@@ -1050,7 +1050,7 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
[[package]]
name = "mixnet-contract"
version = "1.0.1"
version = "1.0.2"
dependencies = [
"az",
"bs58",
@@ -1852,7 +1852,7 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "vesting-contract"
version = "1.0.1"
version = "1.0.2"
dependencies = [
"cosmwasm-std",
"cw-storage-plus",
+1 -1
View File
@@ -6498,7 +6498,7 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "vesting-contract"
version = "1.0.1"
version = "1.0.2"
dependencies = [
"cosmwasm-std",
"cw-storage-plus",
+1
View File
@@ -90,6 +90,7 @@ fn main() {
utils::owns_mixnode,
utils::get_env,
utils::get_old_and_incorrect_hardcoded_fee,
validator_api::status::compute_mixnode_reward_estimation,
validator_api::status::gateway_core_node_status,
validator_api::status::mixnode_core_node_status,
validator_api::status::mixnode_inclusion_probability,
@@ -5,8 +5,8 @@ use crate::api_client;
use crate::error::BackendError;
use crate::state::WalletState;
use validator_client::models::{
CoreNodeStatusResponse, InclusionProbabilityResponse, MixnodeStatusResponse,
RewardEstimationResponse, StakeSaturationResponse,
ComputeRewardEstParam, CoreNodeStatusResponse, InclusionProbabilityResponse,
MixnodeStatusResponse, RewardEstimationResponse, StakeSaturationResponse,
};
#[tauri::command]
@@ -49,6 +49,26 @@ pub async fn mixnode_reward_estimation(
.await?)
}
#[tauri::command]
pub async fn compute_mixnode_reward_estimation(
identity: &str,
uptime: Option<u8>,
is_active: Option<bool>,
pledge_amount: Option<u64>,
total_delegation: Option<u64>,
state: tauri::State<'_, WalletState>,
) -> Result<RewardEstimationResponse, BackendError> {
let request_body = ComputeRewardEstParam {
uptime,
is_active,
pledge_amount,
total_delegation,
};
Ok(api_client!(state)
.compute_mixnode_reward_estimation(identity, &request_body)
.await?)
}
#[tauri::command]
pub async fn mixnode_stake_saturation(
identity: &str,
+3 -12
View File
@@ -14,11 +14,10 @@ use rocket::http::Status;
use rocket::serde::json::Json;
use rocket::State;
use rocket_okapi::openapi;
use schemars::JsonSchema;
use serde::Deserialize;
use validator_api_requests::models::{
AllInclusionProbabilitiesResponse, CoreNodeStatusResponse, InclusionProbabilityResponse,
MixnodeStatusResponse, RewardEstimationResponse, StakeSaturationResponse, UptimeResponse,
AllInclusionProbabilitiesResponse, ComputeRewardEstParam, CoreNodeStatusResponse,
InclusionProbabilityResponse, MixnodeStatusResponse, RewardEstimationResponse,
StakeSaturationResponse, UptimeResponse,
};
use super::models::Uptime;
@@ -197,14 +196,6 @@ pub(crate) async fn get_mixnode_reward_estimation(
}
}
#[derive(Deserialize, JsonSchema)]
pub(crate) struct ComputeRewardEstParam {
uptime: Option<u8>,
is_active: Option<bool>,
pledge_amount: Option<u64>,
total_delegation: Option<u64>,
}
#[openapi(tag = "status")]
#[post(
"/mixnode/<identity>/compute-reward-estimation",
@@ -168,3 +168,11 @@ pub struct InclusionProbability {
pub in_active: f64,
pub in_reserve: f64,
}
#[derive(Clone, Serialize, Deserialize, schemars::JsonSchema)]
pub struct ComputeRewardEstParam {
pub uptime: Option<u8>,
pub is_active: Option<bool>,
pub pledge_amount: Option<u64>,
pub total_delegation: Option<u64>,
}