From 3531d7d8adbc5411bc74890db4b41aa505d5c7ac Mon Sep 17 00:00:00 2001 From: Osuji Date: Wed, 29 Oct 2025 01:57:06 +0100 Subject: [PATCH] chore: week 2 assignment --- code/src/main.rs | 34 +++++++++++++++++++++++++++------ code/src/week_2/ebuka_task_1.rs | 4 ++++ code/src/week_2/ebuka_task_2.rs | 20 +++++++++++++++++++ code/src/week_2/ebuka_task_3.rs | 12 ++++++++++++ code/src/week_2/mod.rs | 5 ++++- code/src/week_2/task_1.rs | 3 +-- 6 files changed, 69 insertions(+), 9 deletions(-) create mode 100644 code/src/week_2/ebuka_task_1.rs create mode 100644 code/src/week_2/ebuka_task_2.rs create mode 100644 code/src/week_2/ebuka_task_3.rs diff --git a/code/src/main.rs b/code/src/main.rs index 4308031..a96ed7f 100644 --- a/code/src/main.rs +++ b/code/src/main.rs @@ -1,10 +1,32 @@ // import session_3 module mod week_2; -// entry point to run all topics covered +// use week_2::ebuka_task_3; + +use week_2::ebuka_task_3::Network; + +use week_2::ebuka_task_3::get_rpc_url; + fn main() { - // call functions from session_3 modules - week_2::function::run(); - week_2::loops::run(); - week_2::primitive_types::run(); -} \ No newline at end of file + //First Task + let btc = 1.00; + let rate = 105000.00; + let value_in_usd = week_2::ebuka_task_1::btc_value_in_usd(btc, rate); + println!("value in usd {}", value_in_usd); + + //Second Task + week_2::ebuka_task_2::mine_blocks(10); + + //Third Task + + let selected_network = Network::Regtest; + match selected_network { + Network::Mainnet => println!("Selected: Mainnet. This is the live production network."), + Network::Testnet => println!("Selected: Testnet. Use this for testing applications."), + Network::Regtest => { + println!("Selected: Regtest. This is a private network for local development.") + } + } + let rpc_url = get_rpc_url(&selected_network); + println!("RPC URL for network is: {}", rpc_url); +} diff --git a/code/src/week_2/ebuka_task_1.rs b/code/src/week_2/ebuka_task_1.rs new file mode 100644 index 0000000..8e0b9af --- /dev/null +++ b/code/src/week_2/ebuka_task_1.rs @@ -0,0 +1,4 @@ +//- Write a function `btc_value_in_usd(btc: f64, rate: f64) -> f64` that returns btc * rate. +pub fn btc_value_in_usd(btc: f64, rate: f64) -> f64 { + btc * rate +} diff --git a/code/src/week_2/ebuka_task_2.rs b/code/src/week_2/ebuka_task_2.rs new file mode 100644 index 0000000..5170735 --- /dev/null +++ b/code/src/week_2/ebuka_task_2.rs @@ -0,0 +1,20 @@ +pub fn mine_blocks(limit: u8) { + for height in 1..=limit { + let mut attempts = 1; + let target_difficulty = 3; + + println!("\n--- Starting work for Block #{} ---", height); + + while attempts <= target_difficulty { + println!("Simulating difficulty attempt #{}", attempts); + attempts += 1; + } + println!("*** Block #{} Mined! ***", height); + + if height % 5 == 0 { + println!("!> Checkpoint reached at block #{} Continuing chain {}", height); + } + } +} diff --git a/code/src/week_2/ebuka_task_3.rs b/code/src/week_2/ebuka_task_3.rs new file mode 100644 index 0000000..33a391d --- /dev/null +++ b/code/src/week_2/ebuka_task_3.rs @@ -0,0 +1,12 @@ +pub enum Network { + Mainnet, + Testnet, + Regtest, +} +pub fn get_rpc_url(network: &Network) -> &str { + match network { + Network::Mainnet => "https://api.mainnet.com/rpc", + Network::Testnet => "https://testnet-explorer.io/rpc", + Network::Regtest => "http://localhost:18443/rpc", + } +} diff --git a/code/src/week_2/mod.rs b/code/src/week_2/mod.rs index 1747ed4..a3c3795 100644 --- a/code/src/week_2/mod.rs +++ b/code/src/week_2/mod.rs @@ -1,6 +1,9 @@ // // import all the files within session_3 +pub mod ebuka_task_1; +pub mod ebuka_task_2; +pub mod ebuka_task_3; pub mod function; pub mod loops; pub mod primitive_types; pub mod slices; -pub mod variables; \ No newline at end of file +pub mod variables; diff --git a/code/src/week_2/task_1.rs b/code/src/week_2/task_1.rs index f47db00..d1fa2e8 100644 --- a/code/src/week_2/task_1.rs +++ b/code/src/week_2/task_1.rs @@ -1,6 +1,5 @@ - fn btc_value_in_usd(btc: f64, rate: f64) -> f64 { - btc * rate + btc * rate } //main run main fn main() {