Skip to content

Commit

Permalink
zombie: fix a couple of pitfalls
Browse files Browse the repository at this point in the history
outdated urls, a runtime panic, non-zero scan blocks per iteration
  • Loading branch information
mariocynicys committed Aug 16, 2024
1 parent a036908 commit 873c20e
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 31 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,5 @@ MM2.json
[._]sw[a-p]

# mergetool
*.orig
*.orig
hidden
3 changes: 1 addition & 2 deletions mm2src/coins/utxo/utxo_builder/utxo_coin_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -775,8 +775,7 @@ pub trait UtxoCoinBuilderCommonOps {
};

let secs_since_date = current_time_sec - date_s;
// FIXME: This panics subtract with overflow.
let days_since_date = (secs_since_date / DAY_IN_SECONDS) - 1;
let days_since_date = (secs_since_date / DAY_IN_SECONDS).min(1) - 1;
let blocks_to_sync = (days_since_date * blocks_per_day) + blocks_per_day;

if current_block_height < blocks_to_sync {
Expand Down
24 changes: 18 additions & 6 deletions mm2src/coins/z_coin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,8 @@ use async_trait::async_trait;
use bitcrypto::dhash256;
use chain::constants::SEQUENCE_FINAL;
use chain::{Transaction as UtxoTx, TransactionOutput};
use common::calc_total_pages;
use common::executor::{AbortableSystem, AbortedError};
use common::{log, one_thousand_u32};
use common::{calc_total_pages, log};
use crypto::privkey::{key_pair_from_secret, secp_privkey_from_hash};
use crypto::HDPathToCoin;
use crypto::{Bip32DerPathOps, GlobalHDAccountArc};
Expand All @@ -70,6 +69,7 @@ use serialization::CoinVariant;
use std::collections::{HashMap, HashSet};
use std::convert::TryInto;
use std::iter;
use std::num::NonZeroU32;
use std::path::PathBuf;
use std::sync::Arc;
pub use z_coin_errors::*;
Expand Down Expand Up @@ -748,19 +748,31 @@ pub enum ZcoinRpcMode {
}

#[derive(Clone, Deserialize)]
#[serde(default)]
pub struct ZcoinActivationParams {
pub mode: ZcoinRpcMode,
pub required_confirmations: Option<u64>,
pub requires_notarization: Option<bool>,
pub zcash_params_path: Option<String>,
#[serde(default = "one_thousand_u32")]
pub scan_blocks_per_iteration: u32,
#[serde(default)]
pub scan_blocks_per_iteration: NonZeroU32,
pub scan_interval_ms: u64,
#[serde(default)]
pub account: u32,
}

impl Default for ZcoinActivationParams {
fn default() -> Self {
Self {
mode: ZcoinRpcMode::Native,
required_confirmations: None,
requires_notarization: None,
zcash_params_path: None,
scan_blocks_per_iteration: NonZeroU32::new(1000).expect("1000 is a valid value"),
scan_interval_ms: 0,
account: 0,
}
}
}

pub async fn z_coin_from_conf_and_params(
ctx: &MmArc,
ticker: &str,
Expand Down
12 changes: 3 additions & 9 deletions mm2src/coins/z_coin/z_coin_native_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use bitcrypto::dhash160;
use common::custom_futures::timeout::FutureTimerExt;
use common::{block_on, now_sec};
use mm2_core::mm_ctx::MmCtxBuilder;
use mm2_test_helpers::for_tests::{zombie_conf, ZOMBIE_TICKER};
use mm2_test_helpers::for_tests::{zombie_conf, ZOMBIE_ELECTRUMS, ZOMBIE_LIGHTWALLETD_URLS, ZOMBIE_TICKER};
use std::path::PathBuf;
use std::time::Duration;
use zcash_client_backend::encoding::decode_extended_spending_key;
Expand Down Expand Up @@ -33,21 +33,15 @@ fn native_zcoin_activation_params() -> ZcoinActivationParams {
fn light_zcoin_activation_params() -> ZcoinActivationParams {
ZcoinActivationParams {
mode: ZcoinRpcMode::Light {
electrum_servers: ["zombie.dragonhound.info:10033", "zombie.dragonhound.info:10133"]
electrum_servers: ZOMBIE_ELECTRUMS
.iter()
.map(|s| ElectrumRpcRequest {
url: s.to_string(),
protocol: Default::default(),
disable_cert_verification: Default::default(),
})
.collect(),
light_wallet_d_servers: [
"https://zombie.dragonhound.info:443",
"https://zombie.dragonhound.info:1443",
]
.iter()
.map(|s| s.to_string())
.collect(),
light_wallet_d_servers: ZOMBIE_LIGHTWALLETD_URLS.iter().map(|s| s.to_string()).collect(),
sync_params: Some(crate::z_coin::SyncStartPoint::Date(now_sec() - 24 * 60 * 60)),
skip_sync_params: None,
},
Expand Down
4 changes: 2 additions & 2 deletions mm2src/coins/z_coin/z_rpc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -567,7 +567,7 @@ pub(super) async fn init_light_client<'a>(
main_sync_state_finished: false,
on_tx_gen_watcher,
watch_for_tx: None,
scan_blocks_per_iteration: builder.z_coin_params.scan_blocks_per_iteration,
scan_blocks_per_iteration: builder.z_coin_params.scan_blocks_per_iteration.into(),
scan_interval_ms: builder.z_coin_params.scan_interval_ms,
first_sync_block: first_sync_block.clone(),
streaming_manager: builder.ctx.event_stream_manager.clone(),
Expand Down Expand Up @@ -614,7 +614,7 @@ pub(super) async fn init_native_client<'a>(
main_sync_state_finished: false,
on_tx_gen_watcher,
watch_for_tx: None,
scan_blocks_per_iteration: builder.z_coin_params.scan_blocks_per_iteration,
scan_blocks_per_iteration: builder.z_coin_params.scan_blocks_per_iteration.into(),
scan_interval_ms: builder.z_coin_params.scan_interval_ms,
first_sync_block: first_sync_block.clone(),
streaming_manager: builder.ctx.event_stream_manager.clone(),
Expand Down
28 changes: 17 additions & 11 deletions mm2src/mm2_test_helpers/src/for_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -194,29 +194,35 @@ pub const MARTY_ELECTRUM_ADDRS: &[&str] = &[
"electrum3.cipig.net:10021",
];
pub const ZOMBIE_TICKER: &str = "ZOMBIE";
#[cfg(not(target_arch = "wasm32"))]
pub const ZOMBIE_ELECTRUMS: &[&str] = &["zombie.dragonhound.info:10033", "zombie.dragonhound.info:10133"];
#[cfg(target_arch = "wasm32")]
pub const ZOMBIE_ELECTRUMS: &[&str] = &["zombie.dragonhound.info:30058", "zombie.dragonhound.info:30059"];
pub const ZOMBIE_LIGHTWALLETD_URLS: &[&str] = &[
"https://zombie.dragonhound.info:443",
"https://zombie.dragonhound.info:1443",
];
pub const ARRR: &str = "ARRR";
pub const ZOMBIE_ELECTRUMS: &[&str] = &[
#[cfg(not(target_arch = "wasm32"))]
pub const PIRATE_ELECTRUMS: &[&str] = &[
"electrum1.cipig.net:10008",
"electrum2.cipig.net:10008",
"electrum3.cipig.net:10008",
];
pub const ZOMBIE_LIGHTWALLETD_URLS: &[&str] = &[
"https://lightd1.pirate.black:443",
"https://piratelightd1.cryptoforge.cc:443",
"https://piratelightd2.cryptoforge.cc:443",
"https://piratelightd3.cryptoforge.cc:443",
"https://piratelightd4.cryptoforge.cc:443",
];
#[cfg(not(target_arch = "wasm32"))]
pub const PIRATE_ELECTRUMS: &[&str] = &["node1.chainkeeper.pro:10132"];
#[cfg(target_arch = "wasm32")]
pub const PIRATE_ELECTRUMS: &[&str] = &[
"electrum3.cipig.net:30008",
"electrum1.cipig.net:30008",
"electrum2.cipig.net:30008",
];
#[cfg(not(target_arch = "wasm32"))]
pub const PIRATE_LIGHTWALLETD_URLS: &[&str] = &["http://node1.chainkeeper.pro:443"];
pub const PIRATE_LIGHTWALLETD_URLS: &[&str] = &[
"https://lightd1.pirate.black:443",
"https://piratelightd1.cryptoforge.cc:443",
"https://piratelightd2.cryptoforge.cc:443",
"https://piratelightd3.cryptoforge.cc:443",
"https://piratelightd4.cryptoforge.cc:443",
];
#[cfg(target_arch = "wasm32")]
pub const PIRATE_LIGHTWALLETD_URLS: &[&str] = &["https://pirate.battlefield.earth:8581"];
pub const DEFAULT_RPC_PASSWORD: &str = "pass";
Expand Down

0 comments on commit 873c20e

Please sign in to comment.