Skip to content
Merged
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
243 changes: 132 additions & 111 deletions Cargo.lock

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,4 @@ tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
validator = { version = "0.16.0", features = ["derive"] }
vergen = "8.0.0"
bech32 = "0.11.0"
reqwest = { version = "0.11.27", features = ["json", "cookies"] }
25 changes: 10 additions & 15 deletions chain/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ use shared::balance::TokenSupply;
use shared::block::Block;
use shared::block_result::BlockResult;
use shared::checksums::Checksums;
use shared::client::Client;
use shared::crawler::crawl;
use shared::crawler_state::ChainCrawlerState;
use shared::error::{
Expand All @@ -39,7 +40,6 @@ use shared::token::Token;
use shared::utils::BalanceChange;
use shared::validator::ValidatorSet;
use tendermint_rpc::HttpClient;
use tendermint_rpc::client::CompatMode;
use tendermint_rpc::endpoint::block::Response as TendermintBlockResponse;
use tokio::sync::Mutex;
use tokio::time::Instant;
Expand All @@ -50,13 +50,9 @@ use tokio_retry::strategy::{ExponentialBackoff, jitter};
async fn main() -> Result<(), MainError> {
let config = AppConfig::parse();

let client =
HttpClient::builder(config.tendermint_url.as_str().parse().unwrap())
.compat_mode(CompatMode::V0_37)
.build()
.unwrap();
let client = Client::new(&config.tendermint_url);

let chain_id = tendermint_service::query_status(&client)
let chain_id = tendermint_service::query_status(client.as_ref())
.await
.into_rpc_error()?
.node_info
Expand All @@ -65,12 +61,11 @@ async fn main() -> Result<(), MainError> {

tracing::info!("Network chain id: {}", chain_id);

let checksums = Arc::new(Mutex::new(query_checksums(&client).await));
let checksums =
Arc::new(Mutex::new(query_checksums(client.as_ref()).await));

config.log.init();

let client = Arc::new(client);

let app_state = AppState::new(config.database_url).into_db_error()?;
let conn = Arc::new(app_state.get_db_connection().await.into_db_error()?);

Expand All @@ -83,7 +78,7 @@ async fn main() -> Result<(), MainError> {
rlimit::increase_nofile_limit(10240).unwrap();
rlimit::increase_nofile_limit(u64::MAX).unwrap();

let last_block_height = namada_service::get_last_block(&client)
let last_block_height = namada_service::get_last_block(client.as_ref())
.await
.into_rpc_error()?;
let crawler_state = db_service::try_get_chain_crawler_state(&conn)
Expand Down Expand Up @@ -117,7 +112,7 @@ async fn main() -> Result<(), MainError> {
// Try to run crawler_fn with the last processed block
let crawl_result = crawling_fn(
crawler_state.last_processed_block,
client.clone(),
Arc::new(client.get()),
conn.clone(),
checksums.clone(),
true,
Expand Down Expand Up @@ -179,7 +174,7 @@ async fn main() -> Result<(), MainError> {
Some(state) => {
if config.reindex_bonds {
let (bonds, unbonds) =
query_all_bonds_and_unbonds(&client, None, None)
query_all_bonds_and_unbonds(client.as_ref(), None, None)
.await
.into_rpc_error()?;
conn.interact(move |conn| {
Expand Down Expand Up @@ -208,7 +203,7 @@ async fn main() -> Result<(), MainError> {
None => {
let checksums = checksums.lock().await;
initial_query(
&client,
client.as_ref(),
&conn,
&checksums,
config.initial_query_retry_time,
Expand All @@ -226,7 +221,7 @@ async fn main() -> Result<(), MainError> {
move |block_height| {
crawling_fn(
block_height,
client.clone(),
Arc::new(client.get()),
conn.clone(),
checksums.clone(),
config.backfill_from.is_none(),
Expand Down
13 changes: 4 additions & 9 deletions governance/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ use namada_governance::storage::proposal::{AddRemove, PGFAction, PGFTarget};
use namada_sdk::time::DateTimeUtc;
use orm::migrations::CustomMigrationSource;
use shared::balance::Amount as NamadaAmount;
use shared::client::Client;
use shared::crawler;
use shared::crawler_state::{CrawlerName, IntervalCrawlerState};
use shared::error::{AsDbError, AsRpcError, ContextDbInteractError, MainError};
use shared::id::Id;
use shared::pgf::{PaymentKind, PaymentRecurrence, PgfAction, PgfPayment};
use shared::proposal::GovernanceProposalResult;
use tendermint_rpc::HttpClient;
use tendermint_rpc::client::CompatMode;
use tokio::sync::{Mutex, MutexGuard};
use tokio::time::Instant;

Expand All @@ -35,14 +35,9 @@ async fn main() -> Result<(), MainError> {

tracing::info!("version: {}", env!("VERGEN_GIT_SHA").to_string());

let client = Arc::new(
HttpClient::builder(config.tendermint_url.as_str().parse().unwrap())
.compat_mode(CompatMode::V0_37)
.build()
.unwrap(),
);
let client = Client::new(&config.tendermint_url);

let chain_id = tendermint_service::query_status(&client)
let chain_id = tendermint_service::query_status(client.as_ref())
.await
.into_rpc_error()?
.node_info
Expand Down Expand Up @@ -73,7 +68,7 @@ async fn main() -> Result<(), MainError> {
move |_| {
crawling_fn(
conn.clone(),
client.clone(),
Arc::new(client.get()),
instant.clone(),
config.sleep_for,
)
Expand Down
15 changes: 5 additions & 10 deletions parameters/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,26 +15,21 @@ use parameters::repository;
use parameters::services::{
namada as namada_service, tendermint as tendermint_service,
};
use shared::client::Client;
use shared::crawler;
use shared::crawler_state::{CrawlerName, IntervalCrawlerState};
use shared::error::{AsDbError, AsRpcError, ContextDbInteractError, MainError};
use tendermint_rpc::HttpClient;
use tendermint_rpc::client::CompatMode;

#[tokio::main]
async fn main() -> Result<(), MainError> {
let config = AppConfig::parse();

config.log.init();

let client = Arc::new(
HttpClient::builder(config.tendermint_url.as_str().parse().unwrap())
.compat_mode(CompatMode::V0_37)
.build()
.unwrap(),
);
let client = Client::new(&config.tendermint_url);

let chain_id = tendermint_service::query_status(&client)
let chain_id = tendermint_service::query_status(client.as_ref())
.await
.into_rpc_error()?
.node_info
Expand All @@ -52,12 +47,12 @@ async fn main() -> Result<(), MainError> {
.await
.expect("Should be able to run migrations");

let current_epoch = namada_service::get_current_epoch(&client.clone())
let current_epoch = namada_service::get_current_epoch(client.as_ref())
.await
.into_rpc_error()?;

crawler::crawl(
move |epoch| crawling_fn(epoch, conn.clone(), client.clone()),
move |epoch| crawling_fn(epoch, conn.clone(), Arc::new(client.get())),
current_epoch,
None,
)
Expand Down
15 changes: 5 additions & 10 deletions pos/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,21 @@ use pos::repository::{self};
use pos::services::{
namada as namada_service, tendermint as tendermint_service,
};
use shared::client::Client;
use shared::crawler;
use shared::crawler_state::{CrawlerName, EpochCrawlerState};
use shared::error::{AsDbError, AsRpcError, ContextDbInteractError, MainError};
use tendermint_rpc::HttpClient;
use tendermint_rpc::client::CompatMode;

#[tokio::main]
async fn main() -> Result<(), MainError> {
let config = AppConfig::parse();

config.log.init();

let client = Arc::new(
HttpClient::builder(config.tendermint_url.as_str().parse().unwrap())
.compat_mode(CompatMode::V0_37)
.build()
.unwrap(),
);
let client = Client::new(&config.tendermint_url);

let chain_id = tendermint_service::query_status(&client)
let chain_id = tendermint_service::query_status(client.as_ref())
.await
.into_rpc_error()?
.node_info
Expand All @@ -52,12 +47,12 @@ async fn main() -> Result<(), MainError> {
.expect("Should be able to run migrations");

// We always start from the current epoch
let next_epoch = namada_service::get_current_epoch(&client.clone())
let next_epoch = namada_service::get_current_epoch(client.as_ref())
.await
.into_rpc_error()?;

crawler::crawl(
move |epoch| crawling_fn(epoch, conn.clone(), client.clone()),
move |epoch| crawling_fn(epoch, conn.clone(), Arc::new(client.get())),
next_epoch,
None,
)
Expand Down
15 changes: 5 additions & 10 deletions rewards/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ use rewards::services::{
namada as namada_service, tendermint as tendermint_service,
};
use rewards::state::AppState;
use shared::client::Client;
use shared::crawler;
use shared::crawler_state::{CrawlerName, IntervalCrawlerState};
use shared::error::{AsDbError, AsRpcError, ContextDbInteractError, MainError};
use tendermint_rpc::HttpClient;
use tendermint_rpc::client::CompatMode;
use tokio::time::sleep;

#[tokio::main]
Expand All @@ -28,14 +28,9 @@ async fn main() -> Result<(), MainError> {

tracing::info!("version: {}", env!("VERGEN_GIT_SHA").to_string());

let client = Arc::new(
HttpClient::builder(config.tendermint_url.as_str().parse().unwrap())
.compat_mode(CompatMode::V0_37)
.build()
.unwrap(),
);
let client = Client::new(&config.tendermint_url);

let chain_id = tendermint_service::query_status(&client)
let chain_id = tendermint_service::query_status(client.as_ref())
.await
.into_rpc_error()?
.node_info
Expand All @@ -61,7 +56,7 @@ async fn main() -> Result<(), MainError> {
if epoch.is_none() {
loop {
epoch = Some(
namada_service::get_current_epoch(&client)
namada_service::get_current_epoch(client.as_ref())
.await
.into_rpc_error()?,
);
Expand All @@ -76,7 +71,7 @@ async fn main() -> Result<(), MainError> {
}

crawler::crawl(
move |epoch| crawling_fn(conn.clone(), client.clone(), epoch),
move |epoch| crawling_fn(conn.clone(), Arc::new(client.get()), epoch),
epoch.unwrap_or(0),
None,
)
Expand Down
3 changes: 2 additions & 1 deletion shared/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,5 @@ tokio.workspace = true
tokio-retry.workspace = true
tracing.workspace = true
tracing-subscriber.workspace = true
bech32.workspace = true
bech32.workspace = true
reqwest.workspace = true
32 changes: 32 additions & 0 deletions shared/src/client.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
use tendermint_rpc::HttpClient;

#[derive(Clone, Debug)]
pub struct Client {
inner: HttpClient,
}

impl Client {
pub fn new(ur: &str) -> Self {
let url = ur.parse().expect("Invalid URL");
let inner = reqwest::Client::builder()
.cookie_store(true)
.build()
.expect("Failed to create HTTP client");
let http_client = HttpClient::new_from_parts(
inner,
url,
tendermint_rpc::client::CompatMode::V0_37,
);
Client { inner: http_client }
}

pub fn get(&self) -> HttpClient {
self.inner.clone()
}
}

impl AsRef<HttpClient> for Client {
fn as_ref(&self) -> &HttpClient {
&self.inner
}
}
1 change: 1 addition & 0 deletions shared/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ pub mod balance;
pub mod block;
pub mod block_result;
pub mod checksums;
pub mod client;
pub mod crawler;
pub mod crawler_state;
pub mod error;
Expand Down
16 changes: 6 additions & 10 deletions transactions/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ use orm::migrations::CustomMigrationSource;
use shared::block::Block;
use shared::block_result::BlockResult;
use shared::checksums::Checksums;
use shared::client::Client;
use shared::crawler::crawl;
use shared::crawler_state::BlockCrawlerState;
use shared::error::{AsDbError, AsRpcError, ContextDbInteractError, MainError};
use shared::id::Id;
use shared::transaction::{IbcTokenAction, IbcTokenFlow};
use tendermint_rpc::HttpClient;
use tendermint_rpc::client::CompatMode;
use tokio::sync::Mutex;
use tokio::time::Instant;
use transactions::app_state::AppState;
Expand All @@ -37,14 +37,9 @@ async fn main() -> Result<(), MainError> {

config.log.init();

let client = Arc::new(
HttpClient::builder(config.tendermint_url.as_str().parse().unwrap())
.compat_mode(CompatMode::V0_37)
.build()
.unwrap(),
);
let client = Client::new(&config.tendermint_url);

let chain_id = tendermint_service::query_status(&client)
let chain_id = tendermint_service::query_status(client.as_ref())
.await
.into_rpc_error()?
.node_info
Expand All @@ -53,7 +48,8 @@ async fn main() -> Result<(), MainError> {

tracing::info!("Network chain id: {}", chain_id);

let checksums = Arc::new(Mutex::new(query_checksums(&client).await));
let checksums =
Arc::new(Mutex::new(query_checksums(client.as_ref()).await));

let app_state = AppState::new(config.database_url).into_db_error()?;
let conn = Arc::new(app_state.get_db_connection().await.into_db_error()?);
Expand Down Expand Up @@ -83,7 +79,7 @@ async fn main() -> Result<(), MainError> {
move |block_height| {
crawling_fn(
block_height,
client.clone(),
Arc::new(client.get()),
conn.clone(),
checksums.clone(),
config.backfill_from.is_none(),
Expand Down
Loading
Loading