Skip to content

Commit 40a3d9a

Browse files
committed
Merge remote-tracking branch 'upstream/main' into whankinsiv/multiassets-in-utxo-deltas
2 parents 09c01ac + 8951137 commit 40a3d9a

24 files changed

+2242
-1396
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

common/src/queries/epochs.rs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,18 @@
1-
use crate::{messages::EpochActivityMessage, protocol_params::ProtocolParams, KeyHash};
2-
3-
pub const DEFAULT_PARAMETERS_QUERY_TOPIC: (&str, &str) =
4-
("parameters-state-query-topic", "cardano.query.parameters");
1+
use crate::{messages::EpochActivityMessage, KeyHash};
52

63
pub const DEFAULT_EPOCHS_QUERY_TOPIC: (&str, &str) =
74
("epochs-state-query-topic", "cardano.query.epochs");
85

96
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
107
pub enum EpochsStateQuery {
118
GetLatestEpoch,
12-
GetLatestEpochParameters,
139
GetEpochInfo { epoch_number: u64 },
1410
GetNextEpochs { epoch_number: u64 },
1511
GetPreviousEpochs { epoch_number: u64 },
1612
GetEpochStakeDistribution { epoch_number: u64 },
1713
GetEpochStakeDistributionByPool { epoch_number: u64 },
1814
GetEpochBlockDistribution { epoch_number: u64 },
1915
GetEpochBlockDistributionByPool { epoch_number: u64 },
20-
GetEpochParameters { epoch_number: u64 },
2116

2217
// Pools related queries
2318
GetBlocksMintedByPools { vrf_key_hashes: Vec<KeyHash> },
@@ -26,15 +21,13 @@ pub enum EpochsStateQuery {
2621
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
2722
pub enum EpochsStateQueryResponse {
2823
LatestEpoch(LatestEpoch),
29-
LatestEpochParameters(LatestEpochParameters),
3024
EpochInfo(EpochInfo),
3125
NextEpochs(NextEpochs),
3226
PreviousEpochs(PreviousEpochs),
3327
EpochStakeDistribution(EpochStakeDistribution),
3428
EpochStakeDistributionByPool(EpochStakeDistributionByPool),
3529
EpochBlockDistribution(EpochBlockDistribution),
3630
EpochBlockDistributionByPool(EpochBlockDistributionByPool),
37-
EpochParameters(EpochParameters),
3831

3932
// Pools related responses
4033
BlocksMintedByPools(BlocksMintedByPools),
@@ -48,11 +41,6 @@ pub struct LatestEpoch {
4841
pub epoch: EpochActivityMessage,
4942
}
5043

51-
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
52-
pub struct LatestEpochParameters {
53-
pub parameters: ProtocolParams,
54-
}
55-
5644
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
5745
pub struct EpochInfo {}
5846

@@ -74,9 +62,6 @@ pub struct EpochBlockDistribution {}
7462
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
7563
pub struct EpochBlockDistributionByPool {}
7664

77-
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
78-
pub struct EpochParameters {}
79-
8065
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
8166
pub struct BlocksMintedByPools {
8267
// this is in same order of vrf_key_hashes from EpochsStateQuery::BlocksMintedByPools

common/src/queries/parameters.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ pub const DEFAULT_PARAMETERS_QUERY_TOPIC: (&str, &str) =
55

66
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
77
pub enum ParametersStateQuery {
8-
GetLatestParameters,
8+
GetLatestEpochParameters,
9+
GetEpochParameters { epoch_number: u64 },
910
}
1011

1112
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
1213
pub enum ParametersStateQueryResponse {
13-
LatestParameters(LatestParameters),
14-
14+
LatestEpochParameters(ProtocolParams),
15+
EpochParameters(ProtocolParams),
1516
NotFound,
1617
Error(String),
1718
}

common/src/queries/pools.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::{KeyHash, PoolEpochState, PoolMetadata, PoolRegistration, PoolRetirement};
1+
use crate::{KeyHash, PoolEpochState, PoolMetadata, PoolRegistration, PoolRetirement, Relay};
22

33
pub const DEFAULT_POOLS_QUERY_TOPIC: (&str, &str) =
44
("pools-state-query-topic", "cardano.query.pools");
@@ -107,8 +107,9 @@ pub struct PoolHistory {
107107
}
108108

109109
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
110-
pub struct PoolRelays {}
111-
110+
pub struct PoolRelays {
111+
pub relays: Vec<Relay>,
112+
}
112113
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
113114
pub struct PoolDelegators {}
114115

common/src/types.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ pub struct MultiHostName {
482482
pub dns_name: String,
483483
}
484484

485-
/// Pool relay
485+
/// Pool Relay
486486
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, Eq, PartialEq)]
487487
pub enum Relay {
488488
SingleHostAddr(SingleHostAddr),
@@ -580,6 +580,21 @@ pub struct PoolRetirement {
580580
pub epoch: u64,
581581
}
582582

583+
/// Pool Update Action
584+
#[derive(Debug, Clone, Serialize, Deserialize)]
585+
pub enum PoolUpdateAction {
586+
Registered,
587+
Deregistered,
588+
}
589+
590+
/// Pool Update Event
591+
#[derive(Debug, Clone, Serialize, Deserialize)]
592+
pub struct PoolUpdateEvent {
593+
pub tx_hash: TxHash,
594+
pub cert_index: u64,
595+
pub action: PoolUpdateAction,
596+
}
597+
583598
/// Pool Epoch History Data
584599
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
585600
pub struct PoolEpochState {

modules/parameters_state/src/parameters_state.rs

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44
use acropolis_common::{
55
messages::{CardanoMessage, Message, ProtocolParamsMessage, StateQuery, StateQueryResponse},
66
queries::parameters::{
7-
LatestParameters, ParametersStateQuery, ParametersStateQueryResponse,
8-
DEFAULT_PARAMETERS_QUERY_TOPIC,
7+
ParametersStateQuery, ParametersStateQueryResponse, DEFAULT_PARAMETERS_QUERY_TOPIC,
98
},
10-
rest_helper::handle_rest,
119
state_history::{StateHistory, StateHistoryStore},
1210
BlockInfo, BlockStatus,
1311
};
@@ -17,20 +15,14 @@ use config::Config;
1715
use std::sync::Arc;
1816
use tokio::sync::Mutex;
1917
use tracing::{error, info, info_span, Instrument};
20-
2118
mod alonzo_genesis;
2219
mod genesis_params;
2320
mod parameters_updater;
24-
mod rest;
2521
mod state;
26-
2722
use parameters_updater::ParametersUpdater;
28-
use rest::handle_current;
2923
use state::State;
3024

3125
const DEFAULT_ENACT_STATE_TOPIC: (&str, &str) = ("enact-state-topic", "cardano.enact.state");
32-
const DEFAULT_HANDLE_CURRENT_TOPIC: (&str, &str) =
33-
("handle-current-params-topic", "rest.get.epoch.parameters");
3426
const DEFAULT_PROTOCOL_PARAMETERS_TOPIC: (&str, &str) =
3527
("publish-parameters-topic", "cardano.protocol.parameters");
3628
const DEFAULT_NETWORK_NAME: (&str, &str) = ("network-name", "mainnet");
@@ -48,7 +40,6 @@ struct ParametersStateConfig {
4840
pub context: Arc<Context<Message>>,
4941
pub network_name: String,
5042
pub enact_state_topic: String,
51-
pub handle_current_topic: String,
5243
pub protocol_parameters_topic: String,
5344
pub parameters_query_topic: String,
5445
pub store_history: bool,
@@ -72,7 +63,6 @@ impl ParametersStateConfig {
7263
context,
7364
network_name: Self::conf(config, DEFAULT_NETWORK_NAME),
7465
enact_state_topic: Self::conf(config, DEFAULT_ENACT_STATE_TOPIC),
75-
handle_current_topic: Self::conf(config, DEFAULT_HANDLE_CURRENT_TOPIC),
7666
protocol_parameters_topic: Self::conf(config, DEFAULT_PROTOCOL_PARAMETERS_TOPIC),
7767
parameters_query_topic: Self::conf(config, DEFAULT_PARAMETERS_QUERY_TOPIC),
7868
store_history: Self::conf_bool(config, DEFAULT_STORE_HISTORY),
@@ -155,9 +145,10 @@ impl ParametersState {
155145
pub async fn init(&self, context: Arc<Context<Message>>, config: Arc<Config>) -> Result<()> {
156146
let cfg = ParametersStateConfig::new(context.clone(), &config);
157147
let enact = cfg.context.subscribe(&cfg.enact_state_topic).await?;
148+
let store_history = cfg.store_history;
158149

159150
// Initalize state history
160-
let history = if cfg.store_history {
151+
let history = if store_history {
161152
Arc::new(Mutex::new(StateHistory::<State>::new(
162153
"ParameterState",
163154
StateHistoryStore::Unbounded,
@@ -171,11 +162,6 @@ impl ParametersState {
171162

172163
let query_state = history.clone();
173164

174-
let state_rest = history.clone();
175-
handle_rest(cfg.context.clone(), &cfg.handle_current_topic, move || {
176-
handle_current(state_rest.clone())
177-
});
178-
179165
// Handle parameters queries
180166
context.handle(&cfg.parameters_query_topic, move |message| {
181167
let history = query_state.clone();
@@ -188,12 +174,27 @@ impl ParametersState {
188174
)));
189175
};
190176

191-
let state = history.lock().await.get_current_state();
177+
let lock = history.lock().await;
192178
let response = match query {
193-
ParametersStateQuery::GetLatestParameters => {
194-
ParametersStateQueryResponse::LatestParameters(LatestParameters {
195-
parameters: state.current_params.get_params(),
196-
})
179+
ParametersStateQuery::GetLatestEpochParameters => {
180+
ParametersStateQueryResponse::LatestEpochParameters(
181+
lock.get_current_state().current_params.get_params(),
182+
)
183+
}
184+
ParametersStateQuery::GetEpochParameters { epoch_number } => {
185+
if !store_history {
186+
ParametersStateQueryResponse::Error(
187+
"Historical protocol parameter storage disabled by config"
188+
.to_string(),
189+
)
190+
} else {
191+
match lock.get_at_or_before(*epoch_number) {
192+
Some(state) => ParametersStateQueryResponse::EpochParameters(
193+
state.current_params.get_params(),
194+
),
195+
None => ParametersStateQueryResponse::NotFound,
196+
}
197+
}
197198
}
198199
};
199200
Arc::new(Message::StateQueryResponse(StateQueryResponse::Parameters(

0 commit comments

Comments
 (0)