[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 1.95.0 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-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/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-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/xkillx/rustchain on toolchain 1.95.0 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] bd964e277bcdb7445e2ec759735edf65e91710f9b2e7e68da196bd6e3b69abf5 [INFO] running `Command { std: "docker" "start" "-a" "bd964e277bcdb7445e2ec759735edf65e91710f9b2e7e68da196bd6e3b69abf5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "bd964e277bcdb7445e2ec759735edf65e91710f9b2e7e68da196bd6e3b69abf5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bd964e277bcdb7445e2ec759735edf65e91710f9b2e7e68da196bd6e3b69abf5", kill_on_drop: false }` [INFO] [stdout] bd964e277bcdb7445e2ec759735edf65e91710f9b2e7e68da196bd6e3b69abf5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] ce631769bd0b506be2b20c80104f350f73876a9ace0ed7d34f3fc5ccc1df44be [INFO] running `Command { std: "docker" "start" "-a" "ce631769bd0b506be2b20c80104f350f73876a9ace0ed7d34f3fc5ccc1df44be", 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 generic-array v0.14.7 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling serde_json v1.0.149 [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.86s [INFO] running `Command { std: "docker" "inspect" "ce631769bd0b506be2b20c80104f350f73876a9ace0ed7d34f3fc5ccc1df44be", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ce631769bd0b506be2b20c80104f350f73876a9ace0ed7d34f3fc5ccc1df44be", kill_on_drop: false }` [INFO] [stdout] ce631769bd0b506be2b20c80104f350f73876a9ace0ed7d34f3fc5ccc1df44be [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0a8c9460816fb0e2abe9c3e03f05dffee6389de07aabef53d2b46113c7641abd [INFO] running `Command { std: "docker" "start" "-a" "0a8c9460816fb0e2abe9c3e03f05dffee6389de07aabef53d2b46113c7641abd", 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.66s [INFO] running `Command { std: "docker" "inspect" "0a8c9460816fb0e2abe9c3e03f05dffee6389de07aabef53d2b46113c7641abd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0a8c9460816fb0e2abe9c3e03f05dffee6389de07aabef53d2b46113c7641abd", kill_on_drop: false }` [INFO] [stdout] 0a8c9460816fb0e2abe9c3e03f05dffee6389de07aabef53d2b46113c7641abd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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" "+1.95.0" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 9f432aaa5946368b871101a4b24957fe6804eb3937c4cb3347f1dbd06bfa51ec [INFO] running `Command { std: "docker" "start" "-a" "9f432aaa5946368b871101a4b24957fe6804eb3937c4cb3347f1dbd06bfa51ec", 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.06s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rustchain-43fbba49e00b3e33) [INFO] [stdout] [INFO] [stdout] running 81 tests [INFO] [stdout] test attacks::tests::test_attack_type_display ... ok [INFO] [stdout] test block::tests::test_basic_mining ... ok [INFO] [stdout] test block::tests::test_block_creation_with_transactions ... ok [INFO] [stdout] test block::tests::test_block_creation_empty ... ok [INFO] [stdout] test block::tests::test_avalanche_effect ... ok [INFO] [stdout] test attacks::tests::test_attack_type_all ... 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_mining_changes_hash ... ok [INFO] [stdout] test block::tests::test_mining_with_transactions ... ok [INFO] [stdout] test block::tests::test_hash_determinism ... ok [INFO] [stdout] test blockchain::tests::test_add_invalid_transaction ... ok [INFO] [stdout] test blockchain::tests::test_add_transaction ... ok [INFO] [stdout] test blockchain::tests::test_blockchain_creation ... ok [INFO] [stdout] test block::tests::test_transaction_order_affects_hash ... ok [INFO] [stdout] test block::tests::test_mining_with_different_difficulties ... ok [INFO] [stdout] test block::tests::test_mining_determinism ... 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_compare_chains_identical ... ok [INFO] [stdout] test blockchain::tests::test_default_difficulty ... ok [INFO] [stdout] test blockchain::tests::test_difficulty_affects_mining_time ... 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_compare_chains_different ... ok [INFO] [stdout] test blockchain::tests::test_get_pending_transactions ... ok [INFO] [stdout] test blockchain::tests::test_get_block_mut ... ok [INFO] [stdout] test attacks::tests::test_attack_hash_replacement ... ok [INFO] [stdout] test attacks::tests::test_attack_genesis_tampering ... ok [INFO] [stdout] test blockchain::tests::test_chain_validation_checks_proof_of_work ... ok [INFO] [stdout] test blockchain::tests::test_mining_determinism ... ok [INFO] [stdout] test blockchain::tests::test_mining_with_different_difficulties ... FAILED [INFO] [stdout] test blockchain::tests::test_mining_creates_valid_proof_of_work ... ok [INFO] [stdout] test blockchain::tests::test_mine_empty_block ... ok [INFO] [stdout] test blockchain::tests::test_chain_validation_with_transactions ... ok [INFO] [stdout] test blockchain::tests::test_is_longer_than ... ok [INFO] [stdout] test blockchain::tests::test_mine_block_with_transactions ... ok [INFO] [stdout] test blockchain::tests::test_set_difficulty ... ok [INFO] [stdout] test blockchain::tests::test_replace_chain_with_invalid ... ok [INFO] [stdout] test blockchain::tests::test_replace_chain_with_shorter ... ok [INFO] [stdout] test attacks::tests::test_all_attacks_detected ... 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_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_tampered_block ... 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 blockchain::tests::test_replace_chain_with_valid_longer ... ok [INFO] [stdout] test validation::tests::test_validate_chain_quick ... ok [INFO] [stdout] test validation::tests::test_validate_chain_valid ... ok [INFO] [stdout] test blockchain::tests::test_multiple_blocks_with_mining ... ok [INFO] [stdout] test blockchain::tests::test_transaction_order_preserved_in_block ... ok [INFO] [stdout] test blockchain::tests::test_cascading_validation_failure ... ok [INFO] [stdout] test blockchain::tests::test_remine_from ... ok [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- blockchain::tests::test_mining_with_different_difficulties stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'blockchain::tests::test_mining_with_different_difficulties' (54) panicked at src/blockchain.rs:505:9: [INFO] [stdout] assertion failed: blockchain2.chain[1].nonce > blockchain1.chain[1].nonce [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x5f02f504d35a - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x5f02f504d35a - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized:: [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x5f02f504d35a - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74:9 [INFO] [stdout] 3: 0x5f02f504d35a - <::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44:26 [INFO] [stdout] 4: 0x5f02f5061afa - ::fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76 [INFO] [stdout] 5: 0x5f02f5061afa - core[c1f1a4ba060b9bfa]::fmt::write [INFO] [stdout] 6: 0x5f02f5051be2 - std[e28293b1aa0f68bd]::io::default_write_fmt::> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x5f02f5051be2 - as std[e28293b1aa0f68bd]::io::Write>::write_fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13 [INFO] [stdout] 8: 0x5f02f502c56f - ::print [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47:9 [INFO] [stdout] 9: 0x5f02f502c56f - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27 [INFO] [stdout] 10: 0x5f02f50458c9 - std[e28293b1aa0f68bd]::panicking::default_hook [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:316:9 [INFO] [stdout] 11: 0x5f02f4fd698c - core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9 [INFO] [stdout] 12: 0x5f02f4fd698c - test[273d7611820c9051]::test_main_with_exit_callback::::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x5f02f5045a82 - core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9 [INFO] [stdout] 14: 0x5f02f5045a82 - std[e28293b1aa0f68bd]::panicking::panic_with_hook [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:833:13 [INFO] [stdout] 15: 0x5f02f502c65a - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:691:13 [INFO] [stdout] 16: 0x5f02f5023fc9 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:182:18 [INFO] [stdout] 17: 0x5f02f502d33d - __rustc[b7974e8690430dd9]::rust_begin_unwind [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5 [INFO] [stdout] 18: 0x5f02f506236c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:80:14 [INFO] [stdout] 19: 0x5f02f5062332 - core[c1f1a4ba060b9bfa]::panicking::panic [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:150:5 [INFO] [stdout] 20: 0x5f02f4fbd6d7 - rustchain::blockchain::tests::test_mining_with_different_difficulties::hf18cb364c7fa9620 [INFO] [stdout] at /opt/rustwide/workdir/src/blockchain.rs:505:9 [INFO] [stdout] 21: 0x5f02f4fbd857 - rustchain::blockchain::tests::test_mining_with_different_difficulties::{{closure}}::he8c14167cab39f6e [INFO] [stdout] at /opt/rustwide/workdir/src/blockchain.rs:493:49 [INFO] [stdout] 22: 0x5f02f4facd46 - core::ops::function::FnOnce::call_once::he06b9b0a0a4ef9d7 [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 23: 0x5f02f4fcaa6b - core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 24: 0x5f02f4fcaa6b - test[273d7611820c9051]::__rust_begin_short_backtrace::, fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:663:18 [INFO] [stdout] 25: 0x5f02f4fd745b - test[273d7611820c9051]::run_test_in_process::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:74 [INFO] [stdout] 26: 0x5f02f4fd745b - as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 27: 0x5f02f4fd745b - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40 [INFO] [stdout] 28: 0x5f02f4fd745b - std[e28293b1aa0f68bd]::panicking::catch_unwind::, core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19 [INFO] [stdout] 29: 0x5f02f4fd745b - std[e28293b1aa0f68bd]::panic::catch_unwind::, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14 [INFO] [stdout] 30: 0x5f02f4fd745b - test[273d7611820c9051]::run_test_in_process [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:27 [INFO] [stdout] 31: 0x5f02f4fd745b - test[273d7611820c9051]::run_test::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:607:43 [INFO] [stdout] 32: 0x5f02f4fd2b74 - test[273d7611820c9051]::run_test::{closure#1} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:637:41 [INFO] [stdout] 33: 0x5f02f4fd2b74 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:166:18 [INFO] [stdout] 34: 0x5f02f4fda062 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::::{closure#1}::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:91:13 [INFO] [stdout] 35: 0x5f02f4fda062 - ::{closure#1}::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 36: 0x5f02f4fda062 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::::{closure#1}::{closure#0}>, ()> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40 [INFO] [stdout] 37: 0x5f02f4fda062 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<(), core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe::{closure#1}::{closure#0}>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19 [INFO] [stdout] 38: 0x5f02f4fda062 - std[e28293b1aa0f68bd]::panic::catch_unwind::::{closure#1}::{closure#0}>, ()> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14 [INFO] [stdout] 39: 0x5f02f4fda062 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::::{closure#1} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:89:26 [INFO] [stdout] 40: 0x5f02f4fda062 - ::{closure#1} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 41: 0x5f02f504cc6f - + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2240:9 [INFO] [stdout] 42: 0x5f02f504cc6f - ::new::thread_start [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/thread/unix.rs:118:17 [INFO] [stdout] 43: 0x71041ff45aa4 - [INFO] [stdout] 44: 0x71041ffd2a64 - clone [INFO] [stdout] 45: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] blockchain::tests::test_mining_with_different_difficulties [INFO] [stdout] [INFO] [stdout] test result: FAILED. 80 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 38.16s [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass `--bin rustchain` [INFO] running `Command { std: "docker" "inspect" "9f432aaa5946368b871101a4b24957fe6804eb3937c4cb3347f1dbd06bfa51ec", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9f432aaa5946368b871101a4b24957fe6804eb3937c4cb3347f1dbd06bfa51ec", kill_on_drop: false }` [INFO] [stdout] 9f432aaa5946368b871101a4b24957fe6804eb3937c4cb3347f1dbd06bfa51ec