[INFO] cloning repository https://github.com/xkillx/rustchain [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/xkillx/rustchain" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fxkillx%2Frustchain", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fxkillx%2Frustchain'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 5cc377043f759e320922f775e2138cf935508160 [INFO] testing xkillx/rustchain against beta-2026-04-21 for beta-1.96-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fxkillx%2Frustchain" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/xkillx/rustchain [INFO] finished tweaking git repo https://github.com/xkillx/rustchain [INFO] tweaked toml for git repo https://github.com/xkillx/rustchain written to /workspace/builds/worker-4-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/xkillx/rustchain on toolchain beta-2026-04-21 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/xkillx/rustchain already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 993bebcffbc1dde55318ae379738d3facf8bad651eeb3ec258fab7be60bebb12 [INFO] running `Command { std: "docker" "start" "-a" "993bebcffbc1dde55318ae379738d3facf8bad651eeb3ec258fab7be60bebb12", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "993bebcffbc1dde55318ae379738d3facf8bad651eeb3ec258fab7be60bebb12", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "993bebcffbc1dde55318ae379738d3facf8bad651eeb3ec258fab7be60bebb12", kill_on_drop: false }` [INFO] [stdout] 993bebcffbc1dde55318ae379738d3facf8bad651eeb3ec258fab7be60bebb12 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 081cc4d60940f232b61d260273d6fc16d22b45f033ff65588249085324b6a864 [INFO] running `Command { std: "docker" "start" "-a" "081cc4d60940f232b61d260273d6fc16d22b45f033ff65588249085324b6a864", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling zmij v1.0.19 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling rustchain v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `ValidationResult` [INFO] [stdout] --> src/attacks.rs:21:48 [INFO] [stdout] | [INFO] [stdout] 21 | use crate::validation::{self, ValidationError, ValidationResult}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::transaction::Transaction` [INFO] [stdout] --> src/experiments.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::transaction::Transaction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/experiments.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `results` [INFO] [stdout] --> src/cli.rs:691:13 [INFO] [stdout] | [INFO] [stdout] 691 | let results = self.attack_simulator.run_all_attacks(&self.blockchain); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_results` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `original_chain` is never read [INFO] [stdout] --> src/attacks.rs:160:5 [INFO] [stdout] | [INFO] [stdout] 158 | pub struct AttackSimulator { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 159 | /// Original blockchain before attacks (for comparison) [INFO] [stdout] 160 | original_chain: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `save_original` is never used [INFO] [stdout] --> src/attacks.rs:175:12 [INFO] [stdout] | [INFO] [stdout] 165 | impl AttackSimulator { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn save_original(&mut self, blockchain: &Blockchain) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `display` is never used [INFO] [stdout] --> src/block.rs:102:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl Block { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn display(&self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChainDiff` is never constructed [INFO] [stdout] --> src/blockchain.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct ChainDiff { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/blockchain.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 24 | impl Blockchain { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 72 | pub fn clear_pending_transactions(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn display(&self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn display_pending_transactions(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn summary(&self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 205 | pub fn tamper_with_transactions(&mut self, index: usize, new_transactions: Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 223 | pub fn tamper_with_nonce(&mut self, index: usize, new_nonce: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | pub fn tamper_with_previous_hash(&mut self, index: usize, new_previous_hash: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | pub fn is_longer_than(&self, other: &Blockchain) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 243 | pub fn compare_chains(&self, other: &Blockchain) -> ChainDiff { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `auto_save_path` is never read [INFO] [stdout] --> src/cli.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 100 | pub struct Cli { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 103 | auto_save_path: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `with_blockchain`, `show_history`, `blockchain`, and `blockchain_mut` are never used [INFO] [stdout] --> src/cli.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 110 | impl Cli { [INFO] [stdout] | -------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn with_blockchain(blockchain: Blockchain) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 907 | pub fn show_history(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 915 | pub fn blockchain(&self) -> &Blockchain { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 920 | pub fn blockchain_mut(&mut self) -> &mut Blockchain { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_args` is never used [INFO] [stdout] --> src/cli.rs:932:8 [INFO] [stdout] | [INFO] [stdout] 932 | pub fn parse_args(args: &[String]) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MiningExperimentResult` is never constructed [INFO] [stdout] --> src/experiments.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct MiningExperimentResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `blocks_to_rewrite`, `difficulty`, `estimated_hashes_per_block`, `total_hashes`, `estimated_time`, and `estimated_cost` are never read [INFO] [stdout] --> src/experiments.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct SecurityCostResult { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 33 | /// Number of blocks to rewrite [INFO] [stdout] 34 | pub blocks_to_rewrite: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 35 | /// Current difficulty [INFO] [stdout] 36 | pub difficulty: u32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 37 | /// Estimated hashes needed per block [INFO] [stdout] 38 | pub estimated_hashes_per_block: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 39 | /// Total estimated hashes [INFO] [stdout] 40 | pub total_hashes: u64, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 41 | /// Estimated time at given hashrate [INFO] [stdout] 42 | pub estimated_time: Duration, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 43 | /// Estimated cost at given electricity rate [INFO] [stdout] 44 | pub estimated_cost: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SecurityCostResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `difficulties`, `avg_times`, `avg_nonces`, `time_increase_factor`, and `security_increase_factor` are never read [INFO] [stdout] --> src/experiments.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 49 | pub struct DifficultyComparisonResult { [INFO] [stdout] | -------------------------- fields in this struct [INFO] [stdout] 50 | /// Difficulty levels tested [INFO] [stdout] 51 | pub difficulties: Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 52 | /// Average mining time for each difficulty [INFO] [stdout] 53 | pub avg_times: Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 54 | /// Average nonces for each difficulty [INFO] [stdout] 55 | pub avg_nonces: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 56 | /// Time increase factor (relative to lowest difficulty) [INFO] [stdout] 57 | pub time_increase_factor: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 58 | /// Security increase factor (exponential) [INFO] [stdout] 59 | pub security_increase_factor: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DifficultyComparisonResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `blockchain` is never read [INFO] [stdout] --> src/experiments.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct SecurityExperiments { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] 64 | /// Test blockchain for experiments [INFO] [stdout] 65 | blockchain: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `create_test_blockchain` is never used [INFO] [stdout] --> src/experiments.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 68 | impl SecurityExperiments { [INFO] [stdout] | ------------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn create_test_blockchain(&mut self, difficulty: u32, blocks: usize) -> &Blockchain { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `display_errors` is never used [INFO] [stdout] --> src/validation.rs:69:12 [INFO] [stdout] | [INFO] [stdout] 50 | impl ValidationResult { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn display_errors(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate_chain_quick` is never used [INFO] [stdout] --> src/validation.rs:197:8 [INFO] [stdout] | [INFO] [stdout] 197 | pub fn validate_chain_quick(blockchain: &Blockchain) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `use_colors` is never read [INFO] [stdout] --> src/visualization.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 49 | pub struct BlockchainVisualizer { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] 50 | /// Whether to use colors [INFO] [stdout] 51 | pub use_colors: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `without_colors`, `display_compact_chain`, `display_validation_result`, `display_attack_comparison`, and `display_cascading_failure` are never used [INFO] [stdout] --> src/visualization.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl BlockchainVisualizer { [INFO] [stdout] | ------------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn without_colors() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | pub fn display_compact_chain(&self, blockchain: &Blockchain) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn display_validation_result(&self, result: &ValidationResult) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn display_attack_comparison( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 252 | pub fn display_cascading_failure(&self, tamper_block: usize, chain_len: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.37s [INFO] running `Command { std: "docker" "inspect" "081cc4d60940f232b61d260273d6fc16d22b45f033ff65588249085324b6a864", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "081cc4d60940f232b61d260273d6fc16d22b45f033ff65588249085324b6a864", kill_on_drop: false }` [INFO] [stdout] 081cc4d60940f232b61d260273d6fc16d22b45f033ff65588249085324b6a864 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 34f5f6a32a6188fdba2da2afe3c268dd19a9974ce5f1ce8a978b5c9610728cfc [INFO] running `Command { std: "docker" "start" "-a" "34f5f6a32a6188fdba2da2afe3c268dd19a9974ce5f1ce8a978b5c9610728cfc", kill_on_drop: false }` [INFO] [stderr] Compiling rustchain v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `ValidationResult` [INFO] [stdout] --> src/attacks.rs:21:48 [INFO] [stdout] | [INFO] [stdout] 21 | use crate::validation::{self, ValidationError, ValidationResult}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::transaction::Transaction` [INFO] [stdout] --> src/experiments.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::transaction::Transaction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/experiments.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::transaction::Transaction` [INFO] [stdout] --> src/validation.rs:222:9 [INFO] [stdout] | [INFO] [stdout] 222 | use crate::transaction::Transaction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `results` [INFO] [stdout] --> src/cli.rs:691:13 [INFO] [stdout] | [INFO] [stdout] 691 | let results = self.attack_simulator.run_all_attacks(&self.blockchain); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_results` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `original_chain` is never read [INFO] [stdout] --> src/attacks.rs:160:5 [INFO] [stdout] | [INFO] [stdout] 158 | pub struct AttackSimulator { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 159 | /// Original blockchain before attacks (for comparison) [INFO] [stdout] 160 | original_chain: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `save_original` is never used [INFO] [stdout] --> src/attacks.rs:175:12 [INFO] [stdout] | [INFO] [stdout] 165 | impl AttackSimulator { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn save_original(&mut self, blockchain: &Blockchain) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `display` is never used [INFO] [stdout] --> src/block.rs:102:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl Block { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn display(&self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_empty`, `display`, `display_pending_transactions`, `summary`, and `tamper_with_nonce` are never used [INFO] [stdout] --> src/blockchain.rs:145:12 [INFO] [stdout] | [INFO] [stdout] 24 | impl Blockchain { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn display(&self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn display_pending_transactions(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn summary(&self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 223 | pub fn tamper_with_nonce(&mut self, index: usize, new_nonce: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `auto_save_path` is never read [INFO] [stdout] --> src/cli.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 100 | pub struct Cli { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 103 | auto_save_path: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `with_blockchain`, `show_history`, `blockchain`, and `blockchain_mut` are never used [INFO] [stdout] --> src/cli.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 110 | impl Cli { [INFO] [stdout] | -------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn with_blockchain(blockchain: Blockchain) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 907 | pub fn show_history(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 915 | pub fn blockchain(&self) -> &Blockchain { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 920 | pub fn blockchain_mut(&mut self) -> &mut Blockchain { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_args` is never used [INFO] [stdout] --> src/cli.rs:932:8 [INFO] [stdout] | [INFO] [stdout] 932 | pub fn parse_args(args: &[String]) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MiningExperimentResult` is never constructed [INFO] [stdout] --> src/experiments.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct MiningExperimentResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `total_hashes`, `estimated_time`, and `estimated_cost` are never read [INFO] [stdout] --> src/experiments.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct SecurityCostResult { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 40 | pub total_hashes: u64, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 41 | /// Estimated time at given hashrate [INFO] [stdout] 42 | pub estimated_time: Duration, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 43 | /// Estimated cost at given electricity rate [INFO] [stdout] 44 | pub estimated_cost: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SecurityCostResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `avg_nonces`, `time_increase_factor`, and `security_increase_factor` are never read [INFO] [stdout] --> src/experiments.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 49 | pub struct DifficultyComparisonResult { [INFO] [stdout] | -------------------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 55 | pub avg_nonces: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 56 | /// Time increase factor (relative to lowest difficulty) [INFO] [stdout] 57 | pub time_increase_factor: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 58 | /// Security increase factor (exponential) [INFO] [stdout] 59 | pub security_increase_factor: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DifficultyComparisonResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `display_errors` is never used [INFO] [stdout] --> src/validation.rs:69:12 [INFO] [stdout] | [INFO] [stdout] 50 | impl ValidationResult { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn display_errors(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `display_compact_chain`, `display_validation_result`, `display_attack_comparison`, and `display_cascading_failure` are never used [INFO] [stdout] --> src/visualization.rs:127:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl BlockchainVisualizer { [INFO] [stdout] | ------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 127 | pub fn display_compact_chain(&self, blockchain: &Blockchain) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn display_validation_result(&self, result: &ValidationResult) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn display_attack_comparison( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 252 | pub fn display_cascading_failure(&self, tamper_block: usize, chain_len: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.60s [INFO] running `Command { std: "docker" "inspect" "34f5f6a32a6188fdba2da2afe3c268dd19a9974ce5f1ce8a978b5c9610728cfc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "34f5f6a32a6188fdba2da2afe3c268dd19a9974ce5f1ce8a978b5c9610728cfc", kill_on_drop: false }` [INFO] [stdout] 34f5f6a32a6188fdba2da2afe3c268dd19a9974ce5f1ce8a978b5c9610728cfc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 2978f7d0bcf50587631c6b22776e598d430343d86f35585cb6d86bdd9aa7a199 [INFO] running `Command { std: "docker" "start" "-a" "2978f7d0bcf50587631c6b22776e598d430343d86f35585cb6d86bdd9aa7a199", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `ValidationResult` [INFO] [stderr] --> src/attacks.rs:21:48 [INFO] [stderr] | [INFO] [stderr] 21 | use crate::validation::{self, ValidationError, ValidationResult}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::transaction::Transaction` [INFO] [stderr] --> src/experiments.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::transaction::Transaction; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/experiments.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::transaction::Transaction` [INFO] [stderr] --> src/validation.rs:222:9 [INFO] [stderr] | [INFO] [stderr] 222 | use crate::transaction::Transaction; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `results` [INFO] [stderr] --> src/cli.rs:691:13 [INFO] [stderr] | [INFO] [stderr] 691 | let results = self.attack_simulator.run_all_attacks(&self.blockchain); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_results` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: field `original_chain` is never read [INFO] [stderr] --> src/attacks.rs:160:5 [INFO] [stderr] | [INFO] [stderr] 158 | pub struct AttackSimulator { [INFO] [stderr] | --------------- field in this struct [INFO] [stderr] 159 | /// Original blockchain before attacks (for comparison) [INFO] [stderr] 160 | original_chain: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: method `save_original` is never used [INFO] [stderr] --> src/attacks.rs:175:12 [INFO] [stderr] | [INFO] [stderr] 165 | impl AttackSimulator { [INFO] [stderr] | -------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 175 | pub fn save_original(&mut self, blockchain: &Blockchain) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `display` is never used [INFO] [stderr] --> src/block.rs:102:12 [INFO] [stderr] | [INFO] [stderr] 16 | impl Block { [INFO] [stderr] | ---------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 102 | pub fn display(&self) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `is_empty`, `display`, `display_pending_transactions`, `summary`, and `tamper_with_nonce` are never used [INFO] [stderr] --> src/blockchain.rs:145:12 [INFO] [stderr] | [INFO] [stderr] 24 | impl Blockchain { [INFO] [stderr] | --------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 145 | pub fn is_empty(&self) -> bool { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 150 | pub fn display(&self) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 164 | pub fn display_pending_transactions(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 176 | pub fn summary(&self) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 223 | pub fn tamper_with_nonce(&mut self, index: usize, new_nonce: u64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `auto_save_path` is never read [INFO] [stderr] --> src/cli.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 100 | pub struct Cli { [INFO] [stderr] | --- field in this struct [INFO] [stderr] ... [INFO] [stderr] 103 | auto_save_path: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `with_blockchain`, `show_history`, `blockchain`, and `blockchain_mut` are never used [INFO] [stderr] --> src/cli.rs:124:12 [INFO] [stderr] | [INFO] [stderr] 110 | impl Cli { [INFO] [stderr] | -------- associated items in this implementation [INFO] [stderr] ... [INFO] [stderr] 124 | pub fn with_blockchain(blockchain: Blockchain) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 907 | pub fn show_history(&self) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 915 | pub fn blockchain(&self) -> &Blockchain { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 920 | pub fn blockchain_mut(&mut self) -> &mut Blockchain { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `parse_args` is never used [INFO] [stderr] --> src/cli.rs:932:8 [INFO] [stderr] | [INFO] [stderr] 932 | pub fn parse_args(args: &[String]) -> Result { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `MiningExperimentResult` is never constructed [INFO] [stderr] --> src/experiments.rs:13:12 [INFO] [stderr] | [INFO] [stderr] 13 | pub struct MiningExperimentResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `total_hashes`, `estimated_time`, and `estimated_cost` are never read [INFO] [stderr] --> src/experiments.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 32 | pub struct SecurityCostResult { [INFO] [stderr] | ------------------ fields in this struct [INFO] [stderr] ... [INFO] [stderr] 40 | pub total_hashes: u64, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] 41 | /// Estimated time at given hashrate [INFO] [stderr] 42 | pub estimated_time: Duration, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] 43 | /// Estimated cost at given electricity rate [INFO] [stderr] 44 | pub estimated_cost: f64, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `SecurityCostResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `avg_nonces`, `time_increase_factor`, and `security_increase_factor` are never read [INFO] [stderr] --> src/experiments.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 49 | pub struct DifficultyComparisonResult { [INFO] [stderr] | -------------------------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 55 | pub avg_nonces: Vec, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 56 | /// Time increase factor (relative to lowest difficulty) [INFO] [stderr] 57 | pub time_increase_factor: f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 58 | /// Security increase factor (exponential) [INFO] [stderr] 59 | pub security_increase_factor: f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `DifficultyComparisonResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: method `display_errors` is never used [INFO] [stderr] --> src/validation.rs:69:12 [INFO] [stderr] | [INFO] [stderr] 50 | impl ValidationResult { [INFO] [stderr] | --------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 69 | pub fn display_errors(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `display_compact_chain`, `display_validation_result`, `display_attack_comparison`, and `display_cascading_failure` are never used [INFO] [stderr] --> src/visualization.rs:127:12 [INFO] [stderr] | [INFO] [stderr] 54 | impl BlockchainVisualizer { [INFO] [stderr] | ------------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 127 | pub fn display_compact_chain(&self, blockchain: &Blockchain) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 152 | pub fn display_validation_result(&self, result: &ValidationResult) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 194 | pub fn display_attack_comparison( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 252 | pub fn display_cascading_failure(&self, tamper_block: usize, chain_len: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `rustchain` (bin "rustchain" test) generated 17 warnings (run `cargo fix --bin "rustchain" -p rustchain --tests` to apply 5 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.07s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rustchain-6b0964f8dc5bbaef) [INFO] [stdout] [INFO] [stdout] running 81 tests [INFO] [stdout] test attacks::tests::test_attack_type_all ... ok [INFO] [stdout] test attacks::tests::test_attack_type_display ... ok [INFO] [stdout] test block::tests::test_avalanche_effect ... ok [INFO] [stdout] test block::tests::test_basic_mining ... ok [INFO] [stdout] test block::tests::test_block_creation_empty ... ok [INFO] [stdout] test block::tests::test_hash_determinism ... ok [INFO] [stdout] test block::tests::test_mining_changes_hash ... ok [INFO] [stdout] test block::tests::test_genesis_block ... ok [INFO] [stdout] test block::tests::test_hash_validation ... ok [INFO] [stdout] test block::tests::test_block_creation_with_transactions ... ok [INFO] [stdout] test block::tests::test_mining_determinism ... ok [INFO] [stdout] test blockchain::tests::test_add_invalid_transaction ... ok [INFO] [stdout] test block::tests::test_mining_with_different_difficulties ... ok [INFO] [stdout] test blockchain::tests::test_add_transaction ... ok [INFO] [stdout] test block::tests::test_mining_with_transactions ... ok [INFO] [stdout] test blockchain::tests::test_blockchain_creation ... ok [INFO] [stdout] test block::tests::test_transaction_order_affects_hash ... ok [INFO] [stdout] test blockchain::tests::test_clear_pending_transactions ... ok [INFO] [stdout] test attacks::tests::test_attack_transaction_tampering ... ok [INFO] [stdout] test blockchain::tests::test_chain_validation_with_transactions ... ok [INFO] [stdout] test blockchain::tests::test_default_difficulty ... ok [INFO] [stdout] test blockchain::tests::test_compare_chains_identical ... ok [INFO] [stdout] test blockchain::tests::test_genesis_block_is_first ... ok [INFO] [stdout] test blockchain::tests::test_get_block ... ok [INFO] [stdout] test blockchain::tests::test_difficulty_affects_mining_time ... ok [INFO] [stdout] test blockchain::tests::test_get_pending_transactions ... ok [INFO] [stdout] test blockchain::tests::test_chain_validation_checks_proof_of_work ... ok [INFO] [stdout] test blockchain::tests::test_mine_block_with_transactions ... ok [INFO] [stdout] test blockchain::tests::test_get_block_mut ... ok [INFO] [stdout] test blockchain::tests::test_is_longer_than ... ok [INFO] [stdout] test blockchain::tests::test_mine_empty_block ... ok [INFO] [stdout] test blockchain::tests::test_mining_with_different_difficulties ... ok [INFO] [stdout] test blockchain::tests::test_mining_determinism ... ok [INFO] [stdout] test attacks::tests::test_attack_hash_replacement ... ok [INFO] [stdout] test blockchain::tests::test_replace_chain_with_invalid ... ok [INFO] [stdout] test blockchain::tests::test_mining_creates_valid_proof_of_work ... ok [INFO] [stdout] test attacks::tests::test_attack_genesis_tampering ... ok [INFO] [stdout] test blockchain::tests::test_set_difficulty ... ok [INFO] [stdout] test blockchain::tests::test_replace_chain_with_shorter ... ok [INFO] [stdout] test blockchain::tests::test_multiple_blocks_with_mining ... ok [INFO] [stdout] test blockchain::tests::test_cascading_validation_failure ... ok [INFO] [stdout] test blockchain::tests::test_tamper_with_transactions_detected ... ok [INFO] [stdout] test crypto::tests::test_avalanche_effect ... ok [INFO] [stdout] test crypto::tests::test_hash_determinism ... ok [INFO] [stdout] test crypto::tests::test_hash_length ... ok [INFO] [stdout] test experiments::tests::test_attack_cost_calculation ... ok [INFO] [stdout] test experiments::tests::test_create_test_blockchain ... ok [INFO] [stdout] test experiments::tests::test_difficulty_experiment ... ok [INFO] [stdout] test experiments::tests::test_format_duration ... ok [INFO] [stdout] test experiments::tests::test_format_number ... ok [INFO] [stdout] test experiments::tests::test_security_experiments_default ... ok [INFO] [stdout] test transaction::tests::test_empty_receiver_rejected ... ok [INFO] [stdout] test transaction::tests::test_empty_sender_rejected ... ok [INFO] [stdout] test transaction::tests::test_negative_amount_rejected ... ok [INFO] [stdout] test transaction::tests::test_self_transaction_rejected ... ok [INFO] [stdout] test transaction::tests::test_transaction_clone ... ok [INFO] [stdout] test transaction::tests::test_transaction_display ... ok [INFO] [stdout] test transaction::tests::test_valid_transaction ... ok [INFO] [stdout] test transaction::tests::test_zero_amount_rejected ... ok [INFO] [stdout] test blockchain::tests::test_transaction_order_preserved_in_block ... ok [INFO] [stdout] test blockchain::tests::test_compare_chains_different ... ok [INFO] [stdout] test validation::tests::test_validate_chain_quick ... ok [INFO] [stdout] test validation::tests::test_verify_block_hash_invalid ... ok [INFO] [stdout] test validation::tests::test_verify_block_hash_valid ... ok [INFO] [stdout] test validation::tests::test_verify_chain_link_invalid ... ok [INFO] [stdout] test validation::tests::test_verify_chain_link_valid ... ok [INFO] [stdout] test validation::tests::test_verify_genesis_block_invalid_index ... ok [INFO] [stdout] test validation::tests::test_verify_genesis_block_invalid_previous_hash ... ok [INFO] [stdout] test validation::tests::test_verify_genesis_block_valid ... ok [INFO] [stdout] test validation::tests::test_verify_proof_of_work_invalid ... ok [INFO] [stdout] test validation::tests::test_verify_proof_of_work_valid ... ok [INFO] [stdout] test visualization::tests::test_format_colors ... ok [INFO] [stdout] test visualization::tests::test_visualizer_creation ... ok [INFO] [stdout] test visualization::tests::test_visualizer_default ... ok [INFO] [stdout] test validation::tests::test_validate_chain_tampered_block ... ok [INFO] [stdout] test blockchain::tests::test_tamper_with_hash_detected ... ok [INFO] [stdout] test blockchain::tests::test_tamper_with_previous_hash_detected ... ok [INFO] [stdout] test validation::tests::test_validate_chain_valid ... ok [INFO] [stdout] test attacks::tests::test_all_attacks_detected ... ok [INFO] [stdout] test blockchain::tests::test_remine_from ... ok [INFO] [stdout] test blockchain::tests::test_replace_chain_with_valid_longer ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 81 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 40.12s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "2978f7d0bcf50587631c6b22776e598d430343d86f35585cb6d86bdd9aa7a199", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2978f7d0bcf50587631c6b22776e598d430343d86f35585cb6d86bdd9aa7a199", kill_on_drop: false }` [INFO] [stdout] 2978f7d0bcf50587631c6b22776e598d430343d86f35585cb6d86bdd9aa7a199