config.rs 833 B

123456789101112131415161718192021222324252627282930
  1. use {
  2. crate::api::{ApiState, RestError},
  3. axum::{extract::State, Json},
  4. serde::Serialize,
  5. };
  6. #[derive(Serialize, serde::Deserialize)]
  7. pub struct ChainConfigSummary {
  8. pub name: String,
  9. pub contract_addr: String,
  10. pub reveal_delay_blocks: u64,
  11. pub gas_limit: u32,
  12. pub fee: u128,
  13. }
  14. pub async fn get_chain_configs(
  15. State(state): State<ApiState>,
  16. ) -> Result<Json<Vec<ChainConfigSummary>>, RestError> {
  17. let mut configs = Vec::new();
  18. for (name, chain) in state.config.chains.iter() {
  19. configs.push(ChainConfigSummary {
  20. name: name.clone(),
  21. contract_addr: format!("0x{:x}", chain.contract_addr),
  22. reveal_delay_blocks: chain.reveal_delay_blocks,
  23. gas_limit: chain.gas_limit,
  24. fee: chain.fee,
  25. });
  26. }
  27. Ok(Json(configs))
  28. }