[INFO] cloning repository https://github.com/nirko0/freedom-net
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nirko0/freedom-net" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnirko0%2Ffreedom-net", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnirko0%2Ffreedom-net'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e040d0b1749f6ca79284fbff13ebd11aa520ff85
[INFO] checking nirko0/freedom-net against master#642c19bfc3a5c1de985bf5d0cc8207ac9d22708a for pr-148577
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnirko0%2Ffreedom-net" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  52% (2392/4593)
Updating files:  53% (2435/4593)
Updating files:  54% (2481/4593)
Updating files:  55% (2527/4593)
Updating files:  55% (2572/4593)
Updating files:  56% (2573/4593)
Updating files:  57% (2619/4593)
Updating files:  58% (2664/4593)
Updating files:  58% (2709/4593)
Updating files:  59% (2710/4593)
Updating files:  60% (2756/4593)
Updating files:  61% (2802/4593)
Updating files:  61% (2809/4593)
Updating files:  62% (2848/4593)
Updating files:  63% (2894/4593)
Updating files:  63% (2925/4593)
Updating files:  64% (2940/4593)
Updating files:  64% (2980/4593)
Updating files:  65% (2986/4593)
Updating files:  66% (3032/4593)
Updating files:  66% (3041/4593)
Updating files:  67% (3078/4593)
Updating files:  68% (3124/4593)
Updating files:  69% (3170/4593)
Updating files:  69% (3215/4593)
Updating files:  70% (3216/4593)
Updating files:  71% (3262/4593)
Updating files:  72% (3307/4593)
Updating files:  73% (3353/4593)
Updating files:  74% (3399/4593)
Updating files:  75% (3445/4593)
Updating files:  75% (3453/4593)
Updating files:  76% (3491/4593)
Updating files:  77% (3537/4593)
Updating files:  78% (3583/4593)
Updating files:  79% (3629/4593)
Updating files:  80% (3675/4593)
Updating files:  80% (3692/4593)
Updating files:  80% (3718/4593)
Updating files:  81% (3721/4593)
Updating files:  82% (3767/4593)
Updating files:  83% (3813/4593)
Updating files:  84% (3859/4593)
Updating files:  85% (3905/4593)
Updating files:  86% (3950/4593)
Updating files:  87% (3996/4593)
Updating files:  88% (4042/4593)
Updating files:  89% (4088/4593)
Updating files:  90% (4134/4593)
Updating files:  91% (4180/4593)
Updating files:  92% (4226/4593)
Updating files:  93% (4272/4593)
Updating files:  94% (4318/4593)
Updating files:  95% (4364/4593)
Updating files:  96% (4410/4593)
Updating files:  97% (4456/4593)
Updating files:  97% (4481/4593)
Updating files:  98% (4502/4593)
Updating files:  99% (4548/4593)
Updating files: 100% (4593/4593)
Updating files: 100% (4593/4593), done.
[INFO] started tweaking git repo https://github.com/nirko0/freedom-net
[INFO] finished tweaking git repo https://github.com/nirko0/freedom-net
[INFO] tweaked toml for git repo https://github.com/nirko0/freedom-net written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/nirko0/freedom-net on toolchain 642c19bfc3a5c1de985bf5d0cc8207ac9d22708a
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/nirko0/freedom-net 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" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded metrics v0.21.1
[INFO] [stderr]   Downloaded metrics-exporter-prometheus v0.12.2
[INFO] [stderr]   Downloaded metrics-macros v0.7.1
[INFO] [stderr]   Downloaded metrics-util v0.15.1
[INFO] [stderr]   Downloaded hashbrown v0.13.1
[INFO] [stderr]   Downloaded sled v0.34.7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a19e0ab952d73518250abd66deab8e5677087bef869dd1e787e2b6c4913bcc80
[INFO] running `Command { std: "docker" "start" "-a" "a19e0ab952d73518250abd66deab8e5677087bef869dd1e787e2b6c4913bcc80", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a19e0ab952d73518250abd66deab8e5677087bef869dd1e787e2b6c4913bcc80", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a19e0ab952d73518250abd66deab8e5677087bef869dd1e787e2b6c4913bcc80", kill_on_drop: false }`
[INFO] [stdout] a19e0ab952d73518250abd66deab8e5677087bef869dd1e787e2b6c4913bcc80
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ab2d5917994aad65443b3d4471d7fcf6fb08219566dea1e8d55e1240e656a4b9
[INFO] running `Command { std: "docker" "start" "-a" "ab2d5917994aad65443b3d4471d7fcf6fb08219566dea1e8d55e1240e656a4b9", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking ahash v0.7.8
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking getrandom v0.1.16
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking hashbrown v0.12.3
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]    Compiling cc v1.2.27
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking raw-cpuid v10.7.0
[INFO] [stderr]     Checking digest v0.9.0
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling multer v2.1.0
[INFO] [stderr]     Checking instant v0.1.13
[INFO] [stderr]     Checking dlv-list v0.3.0
[INFO] [stderr]     Checking parking_lot_core v0.8.6
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking ordered-multimap v0.4.3
[INFO] [stderr]     Checking hashbrown v0.13.1
[INFO] [stderr]     Checking headers-core v0.2.0
[INFO] [stderr]     Checking block-buffer v0.9.0
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking winnow v0.7.11
[INFO] [stderr]     Checking subtle v2.4.1
[INFO] [stderr]     Checking sketches-ddsketch v0.2.2
[INFO] [stderr]     Checking clap_builder v4.5.40
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking sha2 v0.9.9
[INFO] [stderr]     Checking quanta v0.11.1
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking rust-ini v0.18.0
[INFO] [stderr]     Checking yaml-rust v0.4.5
[INFO] [stderr]     Checking headers v0.3.9
[INFO] [stderr]    Compiling blake3 v1.8.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking fs2 v0.4.3
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking arrayref v0.3.9
[INFO] [stderr]     Checking humantime v2.2.0
[INFO] [stderr]     Checking pathdiff v0.2.3
[INFO] [stderr]     Checking sled v0.34.7
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking base64ct v1.6.0
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking tokio v1.45.1
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling zeroize_derive v1.4.2
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]    Compiling pest v2.8.1
[INFO] [stderr]    Compiling metrics-macros v0.7.1
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking metrics v0.21.1
[INFO] [stderr]     Checking zeroize v1.8.1
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]     Checking curve25519-dalek v3.2.0
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]    Compiling pest_meta v2.8.1
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking metrics-util v0.15.1
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]    Compiling clap_derive v4.5.40
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]    Compiling pest_generator v2.8.1
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]    Compiling pest_derive v2.8.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking clap v4.5.40
[INFO] [stderr]     Checking h2 v0.3.26
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]     Checking tungstenite v0.20.1
[INFO] [stderr]     Checking tokio-tungstenite v0.21.0
[INFO] [stderr]     Checking tokio-tungstenite v0.20.1
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking ed25519 v1.5.3
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_bytes v0.11.17
[INFO] [stderr]     Checking toml v0.5.11
[INFO] [stderr]     Checking ron v0.7.1
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking ed25519-dalek v1.0.1
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking uuid v1.17.0
[INFO] [stderr]     Checking config v0.13.4
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking warp v0.3.7
[INFO] [stderr]     Checking metrics-exporter-prometheus v0.12.2
[INFO] [stderr]     Checking freedom-net v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Duration` and `sleep`
[INFO] [stdout]  --> examples/network_basic.rs:4:19
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::time::{sleep, Duration};
[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: `tokio_tungstenite::connect_async`
[INFO] [stdout]  --> src/api.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio_tungstenite::connect_async;
[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 imports: `Hash` and `KeyPair`
[INFO] [stdout]   --> src/api.rs:12:30
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::crypto::{Address, Hash, KeyPair};
[INFO] [stdout]    |                              ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MultinodeEvent`
[INFO] [stdout]   --> src/api.rs:13:59
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::multinode::{FreedomMultinode, MultinodeStatus, MultinodeEvent};
[INFO] [stdout]    |                                                           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GovernanceProposal`, `SCTProtocol`, and `SCTToken`
[INFO] [stdout]   --> src/api.rs:14:30
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::smart_contracts::{SCTProtocol, SCTToken, GovernanceProposal};
[INFO] [stdout]    |                              ^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/blockchain.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash_multiple`
[INFO] [stdout]  --> src/blockchain.rs:9:32
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::crypto::{hash_data, hash_multiple, merkle_root, Address, Hash, KeyPair};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Account`, `BlockHeader`, and `ChainState`
[INFO] [stdout]  --> src/consensus.rs:9:32
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::blockchain::{Block, BlockHeader, ChainState, Account};
[INFO] [stdout]   |                                ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `verify_signature`
[INFO] [stdout]   --> src/consensus.rs:10:56
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::crypto::{Address, Hash, KeyPair, hash_data, verify_signature};
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/crypto.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DateTime` and `Utc`
[INFO] [stdout]  --> src/multinode.rs:2:14
[INFO] [stdout]   |
[INFO] [stdout] 2 | use chrono::{DateTime, Utc};
[INFO] [stdout]   |              ^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/multinode.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vote`
[INFO] [stdout]   --> src/multinode.rs:12:41
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::consensus::{ConsensusEngine, Vote};
[INFO] [stdout]    |                                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GovernanceProposal`
[INFO] [stdout]   --> src/multinode.rs:15:53
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::smart_contracts::{SCTProtocol, SCTToken, GovernanceProposal};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/network/discovery.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `timeout`
[INFO] [stdout]   --> src/network/discovery.rs:12:29
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::time::{interval, timeout};
[INFO] [stdout]    |                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/network/message.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv4Addr`
[INFO] [stdout]  --> src/network/nat.rs:7:24
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::net::{IpAddr, Ipv4Addr, SocketAddr};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::time::timeout`
[INFO] [stdout]   --> src/network/relay.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::time::timeout;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sleep`
[INFO] [stdout]   --> src/network/multinode.rs:10:29
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::time::{interval, sleep};
[INFO] [stdout]    |                             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MessageType`
[INFO] [stdout]   --> src/network/multinode.rs:16:77
[INFO] [stdout]    |
[INFO] [stdout] 16 |     message::{ChatMessage, ChatMessageType, ConnectionType, NetworkMessage, MessageType, PeerInfo},
[INFO] [stdout]    |                                                                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `discovery::PeerDiscovery`
[INFO] [stdout]   --> src/network/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use discovery::PeerDiscovery;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChatMessage`, `MessageType`, and `PeerInfo`
[INFO] [stdout]   --> src/network/mod.rs:15:35
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use message::{NetworkMessage, PeerInfo, ChatMessage, MessageType};
[INFO] [stdout]    |                                   ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NatTraversal` and `NatType`
[INFO] [stdout]   --> src/network/mod.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use nat::{NatTraversal, NatType};
[INFO] [stdout]    |               ^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RelayClient`, `RelayManager`, and `RelayServer`
[INFO] [stdout]   --> src/network/mod.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use relay::{RelayManager, RelayServer, RelayClient};
[INFO] [stdout]    |                 ^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `transport::Transport`
[INFO] [stdout]   --> src/network/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use transport::Transport;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]   --> src/network/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use anyhow::Result;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyPair`
[INFO] [stdout]  --> src/smart_contracts.rs:7:36
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::crypto::{Address, Hash, KeyPair};
[INFO] [stdout]   |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio_tungstenite::connect_async`
[INFO] [stdout]  --> src/api.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio_tungstenite::connect_async;
[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 imports: `Hash` and `KeyPair`
[INFO] [stdout]   --> src/api.rs:12:30
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::crypto::{Address, Hash, KeyPair};
[INFO] [stdout]    |                              ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MultinodeEvent`
[INFO] [stdout]   --> src/api.rs:13:59
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::multinode::{FreedomMultinode, MultinodeStatus, MultinodeEvent};
[INFO] [stdout]    |                                                           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GovernanceProposal`, `SCTProtocol`, and `SCTToken`
[INFO] [stdout]   --> src/api.rs:14:30
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::smart_contracts::{SCTProtocol, SCTToken, GovernanceProposal};
[INFO] [stdout]    |                              ^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/blockchain.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash_multiple`
[INFO] [stdout]  --> src/blockchain.rs:9:32
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::crypto::{hash_data, hash_multiple, merkle_root, Address, Hash, KeyPair};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Account`, `BlockHeader`, and `ChainState`
[INFO] [stdout]  --> src/consensus.rs:9:32
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::blockchain::{Block, BlockHeader, ChainState, Account};
[INFO] [stdout]   |                                ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `verify_signature`
[INFO] [stdout]   --> src/consensus.rs:10:56
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::crypto::{Address, Hash, KeyPair, hash_data, verify_signature};
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/crypto.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DateTime` and `Utc`
[INFO] [stdout]  --> src/multinode.rs:2:14
[INFO] [stdout]   |
[INFO] [stdout] 2 | use chrono::{DateTime, Utc};
[INFO] [stdout]   |              ^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/multinode.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vote`
[INFO] [stdout]   --> src/multinode.rs:12:41
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::consensus::{ConsensusEngine, Vote};
[INFO] [stdout]    |                                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GovernanceProposal`
[INFO] [stdout]   --> src/multinode.rs:15:53
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::smart_contracts::{SCTProtocol, SCTToken, GovernanceProposal};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/network/discovery.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `timeout`
[INFO] [stdout]   --> src/network/discovery.rs:12:29
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::time::{interval, timeout};
[INFO] [stdout]    |                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/network/message.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv4Addr`
[INFO] [stdout]  --> src/network/nat.rs:7:24
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::net::{IpAddr, Ipv4Addr, SocketAddr};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::time::timeout`
[INFO] [stdout]   --> src/network/relay.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::time::timeout;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sleep`
[INFO] [stdout]   --> src/network/multinode.rs:10:29
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::time::{interval, sleep};
[INFO] [stdout]    |                             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MessageType`
[INFO] [stdout]   --> src/network/multinode.rs:16:77
[INFO] [stdout]    |
[INFO] [stdout] 16 |     message::{ChatMessage, ChatMessageType, ConnectionType, NetworkMessage, MessageType, PeerInfo},
[INFO] [stdout]    |                                                                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `discovery::PeerDiscovery`
[INFO] [stdout]   --> src/network/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use discovery::PeerDiscovery;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChatMessage`, `MessageType`, and `PeerInfo`
[INFO] [stdout]   --> src/network/mod.rs:15:35
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use message::{NetworkMessage, PeerInfo, ChatMessage, MessageType};
[INFO] [stdout]    |                                   ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NatTraversal` and `NatType`
[INFO] [stdout]   --> src/network/mod.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use nat::{NatTraversal, NatType};
[INFO] [stdout]    |               ^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RelayClient`, `RelayManager`, and `RelayServer`
[INFO] [stdout]   --> src/network/mod.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use relay::{RelayManager, RelayServer, RelayClient};
[INFO] [stdout]    |                 ^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `transport::Transport`
[INFO] [stdout]   --> src/network/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use transport::Transport;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]   --> src/network/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use anyhow::Result;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyPair`
[INFO] [stdout]  --> src/smart_contracts.rs:7:36
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::crypto::{Address, Hash, KeyPair};
[INFO] [stdout]   |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/network/transport.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 244 |                       continue; // Simplified for this example
[INFO] [stdout]     |                       -------- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 251 | /             match Self::read_message_frame(&mut stream).await {
[INFO] [stdout] 252 | |                 Ok(frame) => {
[INFO] [stdout] 253 | |                     // Deserialize message
[INFO] [stdout] 254 | |                     match NetworkMessage::from_bytes(&frame.payload) {
[INFO] [stdout] ...   |
[INFO] [stdout] 282 | |             }
[INFO] [stdout]     | |_____________^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/network/transport.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 244 |                       continue; // Simplified for this example
[INFO] [stdout]     |                       -------- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 251 | /             match Self::read_message_frame(&mut stream).await {
[INFO] [stdout] 252 | |                 Ok(frame) => {
[INFO] [stdout] 253 | |                     // Deserialize message
[INFO] [stdout] 254 | |                     match NetworkMessage::from_bytes(&frame.payload) {
[INFO] [stdout] ...   |
[INFO] [stdout] 282 | |             }
[INFO] [stdout]     | |_____________^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `clients`
[INFO] [stdout]    --> src/api.rs:261:13
[INFO] [stdout]     |
[INFO] [stdout] 261 |         let clients = self.websocket_clients.clone();
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clients`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_sender`
[INFO] [stdout]    --> src/api.rs:264:13
[INFO] [stdout]     |
[INFO] [stdout] 264 |         let event_sender = {
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `clients`
[INFO] [stdout]    --> src/api.rs:261:13
[INFO] [stdout]     |
[INFO] [stdout] 261 |         let clients = self.websocket_clients.clone();
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clients`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_sender`
[INFO] [stdout]    --> src/api.rs:264:13
[INFO] [stdout]     |
[INFO] [stdout] 264 |         let event_sender = {
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request`
[INFO] [stdout]    --> src/api.rs:365:29
[INFO] [stdout]     |
[INFO] [stdout] 365 | async fn submit_transaction(request: TransactionRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multinode`
[INFO] [stdout]    --> src/api.rs:365:58
[INFO] [stdout]     |
[INFO] [stdout] 365 | async fn submit_transaction(request: TransactionRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                                                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multinode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request`
[INFO] [stdout]    --> src/api.rs:373:30
[INFO] [stdout]     |
[INFO] [stdout] 373 | async fn deploy_sct_protocol(request: SCTProtocolRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multinode`
[INFO] [stdout]    --> src/api.rs:373:59
[INFO] [stdout]     |
[INFO] [stdout] 373 | async fn deploy_sct_protocol(request: SCTProtocolRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                                                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multinode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request`
[INFO] [stdout]    --> src/api.rs:381:27
[INFO] [stdout]     |
[INFO] [stdout] 381 | async fn create_sct_token(request: SCTTokenRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multinode`
[INFO] [stdout]    --> src/api.rs:381:53
[INFO] [stdout]     |
[INFO] [stdout] 381 | async fn create_sct_token(request: SCTTokenRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multinode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request`
[INFO] [stdout]    --> src/api.rs:389:37
[INFO] [stdout]     |
[INFO] [stdout] 389 | async fn create_governance_proposal(request: GovernanceProposalRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, R...
[INFO] [stdout]     |                                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multinode`
[INFO] [stdout]    --> src/api.rs:389:73
[INFO] [stdout]     |
[INFO] [stdout] 389 | ...overnanceProposalRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multinode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multinode`
[INFO] [stdout]    --> src/api.rs:401:5
[INFO] [stdout]     |
[INFO] [stdout] 401 |     multinode: Arc<RwLock<FreedomMultinode>>,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multinode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request`
[INFO] [stdout]    --> src/api.rs:365:29
[INFO] [stdout]     |
[INFO] [stdout] 365 | async fn submit_transaction(request: TransactionRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multinode`
[INFO] [stdout]    --> src/api.rs:365:58
[INFO] [stdout]     |
[INFO] [stdout] 365 | async fn submit_transaction(request: TransactionRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                                                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multinode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request`
[INFO] [stdout]    --> src/api.rs:373:30
[INFO] [stdout]     |
[INFO] [stdout] 373 | async fn deploy_sct_protocol(request: SCTProtocolRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multinode`
[INFO] [stdout]    --> src/api.rs:373:59
[INFO] [stdout]     |
[INFO] [stdout] 373 | async fn deploy_sct_protocol(request: SCTProtocolRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                                                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multinode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request`
[INFO] [stdout]    --> src/api.rs:381:27
[INFO] [stdout]     |
[INFO] [stdout] 381 | async fn create_sct_token(request: SCTTokenRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multinode`
[INFO] [stdout]    --> src/api.rs:381:53
[INFO] [stdout]     |
[INFO] [stdout] 381 | async fn create_sct_token(request: SCTTokenRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multinode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request`
[INFO] [stdout]    --> src/api.rs:389:37
[INFO] [stdout]     |
[INFO] [stdout] 389 | async fn create_governance_proposal(request: GovernanceProposalRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, R...
[INFO] [stdout]     |                                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multinode`
[INFO] [stdout]    --> src/api.rs:389:73
[INFO] [stdout]     |
[INFO] [stdout] 389 | ...overnanceProposalRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multinode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multinode`
[INFO] [stdout]    --> src/api.rs:401:5
[INFO] [stdout]     |
[INFO] [stdout] 401 |     multinode: Arc<RwLock<FreedomMultinode>>,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multinode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contract`
[INFO] [stdout]    --> src/smart_contracts.rs:468:45
[INFO] [stdout]     |
[INFO] [stdout] 468 |     pub async fn deploy_contract(&mut self, contract: &SmartContract, init_data: &[u8]) -> Result<()> {
[INFO] [stdout]     |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contract`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `init_data`
[INFO] [stdout]    --> src/smart_contracts.rs:468:71
[INFO] [stdout]     |
[INFO] [stdout] 468 |     pub async fn deploy_contract(&mut self, contract: &SmartContract, init_data: &[u8]) -> Result<()> {
[INFO] [stdout]     |                                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_init_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contract`
[INFO] [stdout]    --> src/smart_contracts.rs:474:43
[INFO] [stdout]     |
[INFO] [stdout] 474 |     pub async fn call_contract(&mut self, contract: &SmartContract, method: &str, args: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contract`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `method`
[INFO] [stdout]    --> src/smart_contracts.rs:474:69
[INFO] [stdout]     |
[INFO] [stdout] 474 |     pub async fn call_contract(&mut self, contract: &SmartContract, method: &str, args: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_method`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> src/smart_contracts.rs:474:83
[INFO] [stdout]     |
[INFO] [stdout] 474 |     pub async fn call_contract(&mut self, contract: &SmartContract, method: &str, args: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contract`
[INFO] [stdout]    --> src/smart_contracts.rs:468:45
[INFO] [stdout]     |
[INFO] [stdout] 468 |     pub async fn deploy_contract(&mut self, contract: &SmartContract, init_data: &[u8]) -> Result<()> {
[INFO] [stdout]     |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contract`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `init_data`
[INFO] [stdout]    --> src/smart_contracts.rs:468:71
[INFO] [stdout]     |
[INFO] [stdout] 468 |     pub async fn deploy_contract(&mut self, contract: &SmartContract, init_data: &[u8]) -> Result<()> {
[INFO] [stdout]     |                                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_init_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contract`
[INFO] [stdout]    --> src/smart_contracts.rs:474:43
[INFO] [stdout]     |
[INFO] [stdout] 474 |     pub async fn call_contract(&mut self, contract: &SmartContract, method: &str, args: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contract`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `method`
[INFO] [stdout]    --> src/smart_contracts.rs:474:69
[INFO] [stdout]     |
[INFO] [stdout] 474 |     pub async fn call_contract(&mut self, contract: &SmartContract, method: &str, args: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_method`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> src/smart_contracts.rs:474:83
[INFO] [stdout]     |
[INFO] [stdout] 474 |     pub async fn call_contract(&mut self, contract: &SmartContract, method: &str, args: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `network_task`
[INFO] [stdout]    --> src/multinode.rs:197:13
[INFO] [stdout]     |
[INFO] [stdout] 197 |         let network_task = {
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_network_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sync_task`
[INFO] [stdout]    --> src/multinode.rs:231:13
[INFO] [stdout]     |
[INFO] [stdout] 231 |         let sync_task = {
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sync_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `metrics_task`
[INFO] [stdout]    --> src/multinode.rs:242:13
[INFO] [stdout]     |
[INFO] [stdout] 242 |         let metrics_task = {
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metrics_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network/multinode.rs:193:32
[INFO] [stdout]     |
[INFO] [stdout] 193 |                     if let Err(e) = self.run_maintenance().await {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network/multinode.rs:200:32
[INFO] [stdout]     |
[INFO] [stdout] 200 |                     if let Err(e) = self.probe_nat().await {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `external_addr`
[INFO] [stdout]    --> src/network/nat.rs:170:59
[INFO] [stdout]     |
[INFO] [stdout] 170 |     async fn classify_nat_type(&self, socket: &UdpSocket, external_addr: SocketAddr) -> Result<NatType> {
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_external_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_info`
[INFO] [stdout]    --> src/network/multinode.rs:542:17
[INFO] [stdout]     |
[INFO] [stdout] 542 |             let peer_info = PeerInfo {
[INFO] [stdout]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_sender`
[INFO] [stdout]    --> src/multinode.rs:428:9
[INFO] [stdout]     |
[INFO] [stdout] 428 |         event_sender: mpsc::UnboundedSender<MultinodeEvent>,
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sync_message`
[INFO] [stdout]    --> src/multinode.rs:446:21
[INFO] [stdout]     |
[INFO] [stdout] 446 |                 let sync_message = NetworkMessage::SyncRequest {
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sync_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `blockchain`
[INFO] [stdout]    --> src/multinode.rs:468:17
[INFO] [stdout]     |
[INFO] [stdout] 468 |             let blockchain = blockchain.read().await;
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_blockchain`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sct_data`
[INFO] [stdout]    --> src/multinode.rs:377:25
[INFO] [stdout]     |
[INFO] [stdout] 377 |             if let Some(sct_data) = &transaction.sct_data {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sct_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `creator_keypair`
[INFO] [stdout]    --> src/multinode.rs:588:59
[INFO] [stdout]     |
[INFO] [stdout] 588 |     pub async fn create_sct_token(&self, token: SCTToken, creator_keypair: &KeyPair) -> Result<String> {
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_creator_keypair`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `network_task`
[INFO] [stdout]    --> src/multinode.rs:197:13
[INFO] [stdout]     |
[INFO] [stdout] 197 |         let network_task = {
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_network_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sync_task`
[INFO] [stdout]    --> src/multinode.rs:231:13
[INFO] [stdout]     |
[INFO] [stdout] 231 |         let sync_task = {
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sync_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `metrics_task`
[INFO] [stdout]    --> src/multinode.rs:242:13
[INFO] [stdout]     |
[INFO] [stdout] 242 |         let metrics_task = {
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metrics_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network/multinode.rs:193:32
[INFO] [stdout]     |
[INFO] [stdout] 193 |                     if let Err(e) = self.run_maintenance().await {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network/multinode.rs:200:32
[INFO] [stdout]     |
[INFO] [stdout] 200 |                     if let Err(e) = self.probe_nat().await {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `external_addr`
[INFO] [stdout]    --> src/network/nat.rs:170:59
[INFO] [stdout]     |
[INFO] [stdout] 170 |     async fn classify_nat_type(&self, socket: &UdpSocket, external_addr: SocketAddr) -> Result<NatType> {
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_external_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_info`
[INFO] [stdout]    --> src/network/multinode.rs:542:17
[INFO] [stdout]     |
[INFO] [stdout] 542 |             let peer_info = PeerInfo {
[INFO] [stdout]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_sender`
[INFO] [stdout]    --> src/multinode.rs:428:9
[INFO] [stdout]     |
[INFO] [stdout] 428 |         event_sender: mpsc::UnboundedSender<MultinodeEvent>,
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sync_message`
[INFO] [stdout]    --> src/multinode.rs:446:21
[INFO] [stdout]     |
[INFO] [stdout] 446 |                 let sync_message = NetworkMessage::SyncRequest {
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sync_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `blockchain`
[INFO] [stdout]    --> src/multinode.rs:468:17
[INFO] [stdout]     |
[INFO] [stdout] 468 |             let blockchain = blockchain.read().await;
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_blockchain`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sct_data`
[INFO] [stdout]    --> src/multinode.rs:377:25
[INFO] [stdout]     |
[INFO] [stdout] 377 |             if let Some(sct_data) = &transaction.sct_data {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sct_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `creator_keypair`
[INFO] [stdout]    --> src/multinode.rs:588:59
[INFO] [stdout]     |
[INFO] [stdout] 588 |     pub async fn create_sct_token(&self, token: SCTToken, creator_keypair: &KeyPair) -> Result<String> {
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_creator_keypair`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx`
[INFO] [stdout]    --> src/network/relay.rs:204:18
[INFO] [stdout]     |
[INFO] [stdout] 204 |             let (tx, rx) = mpsc::unbounded_channel();
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_tx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stream`
[INFO] [stdout]    --> src/network/relay.rs:281:25
[INFO] [stdout]     |
[INFO] [stdout] 281 |             if let Some(stream) = &client.relay_stream {
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/network/relay.rs:282:21
[INFO] [stdout]     |
[INFO] [stdout] 282 |                 let data = bincode::serialize(message)?;
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message_sender`
[INFO] [stdout]    --> src/network/transport.rs:236:9
[INFO] [stdout]     |
[INFO] [stdout] 236 |         message_sender: mpsc::UnboundedSender<NetworkMessage>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stream`
[INFO] [stdout]    --> src/network/transport.rs:239:17
[INFO] [stdout]     |
[INFO] [stdout] 239 |             let mut stream = {
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> src/network/transport.rs:252:20
[INFO] [stdout]     |
[INFO] [stdout] 252 |                 Ok(frame) => {
[INFO] [stdout]     |                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]    --> src/network/transport.rs:255:28
[INFO] [stdout]     |
[INFO] [stdout] 255 |                         Ok(message) => {
[INFO] [stdout]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `conns`
[INFO] [stdout]    --> src/network/transport.rs:258:37
[INFO] [stdout]     |
[INFO] [stdout] 258 | ...                   let mut conns = connections.write().await;
[INFO] [stdout]     |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_conns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `conn`
[INFO] [stdout]    --> src/network/transport.rs:259:45
[INFO] [stdout]     |
[INFO] [stdout] 259 | ...                   if let Some(conn) = conns.get_mut(&peer_id) {
[INFO] [stdout]     |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_conn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network/transport.rs:266:40
[INFO] [stdout]     |
[INFO] [stdout] 266 | ...                   if let Err(e) = message_sender.send(message) {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network/transport.rs:271:29
[INFO] [stdout]     |
[INFO] [stdout] 271 |                         Err(e) => {
[INFO] [stdout]     |                             ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/network/transport.rs:273:33
[INFO] [stdout]     |
[INFO] [stdout] 273 | ...                   let mut s = stats.write().await;
[INFO] [stdout]     |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network/transport.rs:278:21
[INFO] [stdout]     |
[INFO] [stdout] 278 |                 Err(e) => {
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx`
[INFO] [stdout]    --> src/network/relay.rs:204:18
[INFO] [stdout]     |
[INFO] [stdout] 204 |             let (tx, rx) = mpsc::unbounded_channel();
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_tx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stream`
[INFO] [stdout]    --> src/network/relay.rs:281:25
[INFO] [stdout]     |
[INFO] [stdout] 281 |             if let Some(stream) = &client.relay_stream {
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/network/relay.rs:282:21
[INFO] [stdout]     |
[INFO] [stdout] 282 |                 let data = bincode::serialize(message)?;
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message_sender`
[INFO] [stdout]    --> src/network/transport.rs:236:9
[INFO] [stdout]     |
[INFO] [stdout] 236 |         message_sender: mpsc::UnboundedSender<NetworkMessage>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stream`
[INFO] [stdout]    --> src/network/transport.rs:239:17
[INFO] [stdout]     |
[INFO] [stdout] 239 |             let mut stream = {
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> src/network/transport.rs:252:20
[INFO] [stdout]     |
[INFO] [stdout] 252 |                 Ok(frame) => {
[INFO] [stdout]     |                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]    --> src/network/transport.rs:255:28
[INFO] [stdout]     |
[INFO] [stdout] 255 |                         Ok(message) => {
[INFO] [stdout]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `conns`
[INFO] [stdout]    --> src/network/transport.rs:258:37
[INFO] [stdout]     |
[INFO] [stdout] 258 | ...                   let mut conns = connections.write().await;
[INFO] [stdout]     |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_conns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `conn`
[INFO] [stdout]    --> src/network/transport.rs:259:45
[INFO] [stdout]     |
[INFO] [stdout] 259 | ...                   if let Some(conn) = conns.get_mut(&peer_id) {
[INFO] [stdout]     |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_conn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network/transport.rs:266:40
[INFO] [stdout]     |
[INFO] [stdout] 266 | ...                   if let Err(e) = message_sender.send(message) {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network/transport.rs:271:29
[INFO] [stdout]     |
[INFO] [stdout] 271 |                         Err(e) => {
[INFO] [stdout]     |                             ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/network/transport.rs:273:33
[INFO] [stdout]     |
[INFO] [stdout] 273 | ...                   let mut s = stats.write().await;
[INFO] [stdout]     |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network/transport.rs:278:21
[INFO] [stdout]     |
[INFO] [stdout] 278 |                 Err(e) => {
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `creator`
[INFO] [stdout]    --> src/smart_contracts.rs:364:49
[INFO] [stdout]     |
[INFO] [stdout] 364 |     pub async fn create_sct_protocol(&mut self, creator: Address, protocol: SCTProtocol) -> Result<String> {
[INFO] [stdout]     |                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_creator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `string_to_address` is never used
[INFO] [stdout]   --> src/api.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn string_to_address(s: &str) -> Result<Address> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ApiResponse` is never constructed
[INFO] [stdout]   --> src/api.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ApiResponse<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `success` and `error` are never used
[INFO] [stdout]   --> src/api.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl<T> ApiResponse<T> {
[INFO] [stdout]    | ---------------------- associated functions in this implementation
[INFO] [stdout] 37 |     pub fn success(data: T) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn error(message: String) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransactionRequest` is never constructed
[INFO] [stdout]   --> src/api.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct TransactionRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SCTProtocolRequest` is never constructed
[INFO] [stdout]   --> src/api.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct SCTProtocolRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SCTTokenRequest` is never constructed
[INFO] [stdout]   --> src/api.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct SCTTokenRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GovernanceProposalRequest` is never constructed
[INFO] [stdout]   --> src/api.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct GovernanceProposalRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BalanceResponse` is never constructed
[INFO] [stdout]   --> src/api.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct BalanceResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BlockResponse` is never constructed
[INFO] [stdout]    --> src/api.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct BlockResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WebSocketMessage` is never used
[INFO] [stdout]    --> src/api.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum WebSocketMessage {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FreedomAPI` is never constructed
[INFO] [stdout]    --> src/api.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub struct FreedomAPI {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start_server`, `start_event_broadcaster`, and `broadcast_to_all_clients` are never used
[INFO] [stdout]    --> src/api.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl FreedomAPI {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 152 |     pub fn new(multinode: Arc<RwLock<FreedomMultinode>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub async fn start_server(&self, port: u16) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     async fn start_event_broadcaster(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     async fn broadcast_to_all_clients(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_multinode` is never used
[INFO] [stdout]    --> src/api.rs:301:4
[INFO] [stdout]     |
[INFO] [stdout] 301 | fn with_multinode(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `WebSocketClients` is never used
[INFO] [stdout]    --> src/api.rs:307:6
[INFO] [stdout]     |
[INFO] [stdout] 307 | type WebSocketClients = Arc<RwLock<HashMap<String, tokio::sync::mpsc::UnboundedSender<WebSocketMessage>>>>;
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_websocket_clients` is never used
[INFO] [stdout]    --> src/api.rs:309:4
[INFO] [stdout]     |
[INFO] [stdout] 309 | fn with_websocket_clients(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_node_status` is never used
[INFO] [stdout]    --> src/api.rs:316:10
[INFO] [stdout]     |
[INFO] [stdout] 316 | async fn get_node_status(multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_balance` is never used
[INFO] [stdout]    --> src/api.rs:322:10
[INFO] [stdout]     |
[INFO] [stdout] 322 | async fn get_balance(address: String, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_block` is never used
[INFO] [stdout]    --> src/api.rs:344:10
[INFO] [stdout]     |
[INFO] [stdout] 344 | async fn get_block(height: u64, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `submit_transaction` is never used
[INFO] [stdout]    --> src/api.rs:365:10
[INFO] [stdout]     |
[INFO] [stdout] 365 | async fn submit_transaction(request: TransactionRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deploy_sct_protocol` is never used
[INFO] [stdout]    --> src/api.rs:373:10
[INFO] [stdout]     |
[INFO] [stdout] 373 | async fn deploy_sct_protocol(request: SCTProtocolRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_sct_token` is never used
[INFO] [stdout]    --> src/api.rs:381:10
[INFO] [stdout]     |
[INFO] [stdout] 381 | async fn create_sct_token(request: SCTTokenRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_governance_proposal` is never used
[INFO] [stdout]    --> src/api.rs:389:10
[INFO] [stdout]     |
[INFO] [stdout] 389 | async fn create_governance_proposal(request: GovernanceProposalRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, R...
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_websocket` is never used
[INFO] [stdout]    --> src/api.rs:398:10
[INFO] [stdout]     |
[INFO] [stdout] 398 | async fn handle_websocket(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_rejection` is never used
[INFO] [stdout]    --> src/api.rs:468:10
[INFO] [stdout]     |
[INFO] [stdout] 468 | async fn handle_rejection(err: Rejection) -> Result<impl Reply, std::convert::Infallible> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/blockchain.rs:457:14
[INFO] [stdout]     |
[INFO] [stdout]  90 | impl Blockchain {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 457 |     async fn call_contract(&mut self, contract_address: Address, method: String, args: Vec<u8>) -> Result<Vec<u8>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     pub fn get_account(&self, address: &Address) -> Option<&Account> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub fn get_chain_state(&self) -> &ChainState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 473 |     pub fn get_pending_transactions(&self) -> &[Transaction] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 477 |     pub async fn get_block(&self, height: u64) -> Result<Option<Block>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 481 |     pub fn get_balance(&self, address: &Address) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 489 |     pub fn get_pending_transaction_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     pub async fn get_block_by_height(&self, height: u64) -> Result<Option<Block>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 497 |     pub fn get_account_balance(&self, address: &Address) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save` is never used
[INFO] [stdout]    --> src/config.rs:147:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl NodeConfig {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) -> Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Attestation` is never constructed
[INFO] [stdout]   --> src/consensus.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct Attestation {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/consensus.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct ConsensusEngine {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 64 |     config: ConsensusConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/consensus.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl ConsensusEngine {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn is_validator(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn add_validator(&mut self, address: Address, staked_amount: u64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn remove_validator(&mut self, address: &Address) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn update_validator_stake(&mut self, address: &Address, new_stake: u64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     fn calculate_voting_power(&self, staked_amount: u64) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     fn update_block_production_schedule(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn get_next_validator(&mut self) -> Option<Address> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn validate_block_producer(&self, block: &Block) -> Result<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn finalize_block(&mut self, block_hash: Hash, block_height: u64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn slash_validator(&mut self, validator_address: &Address, reason: SlashReason) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn process_epoch_end(&mut self, current_height: u64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn start_new_epoch(&mut self, height: u64) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 385 |     pub fn calculate_block_reward(&self, block_height: u64) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn get_validator_stats(&self) -> ValidatorStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 426 |     pub fn get_current_epoch(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub fn get_validator_set(&self) -> &ValidatorSet {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 434 |     pub fn get_finalized_height(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 438 |     pub fn is_block_finalized(&self, height: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SlashReason` is never used
[INFO] [stdout]    --> src/consensus.rs:444:10
[INFO] [stdout]     |
[INFO] [stdout] 444 | pub enum SlashReason {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ValidatorStats` is never constructed
[INFO] [stdout]    --> src/consensus.rs:452:12
[INFO] [stdout]     |
[INFO] [stdout] 452 | pub struct ValidatorStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConsensusMetrics` is never constructed
[INFO] [stdout]    --> src/consensus.rs:461:12
[INFO] [stdout]     |
[INFO] [stdout] 461 | pub struct ConsensusMetrics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `public_key` is never used
[INFO] [stdout]   --> src/crypto.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl KeyPair {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn public_key(&self) -> PublicKey {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `freedom_format_to_address` is never used
[INFO] [stdout]   --> src/crypto.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn freedom_format_to_address(address_str: &str) -> Result<Address> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `address_zero` is never used
[INFO] [stdout]   --> src/crypto.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn address_zero() -> Address {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `address_from_string` is never used
[INFO] [stdout]   --> src/crypto.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn address_from_string(address_str: &str) -> Result<Address> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `verify_signature` is never used
[INFO] [stdout]   --> src/crypto.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn verify_signature(public_key: &PublicKey, message: &[u8], signature: &Signature) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `from_hex` is never used
[INFO] [stdout]    --> src/crypto.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn from_hex(hex_str: &str) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultinodeStatus` is never constructed
[INFO] [stdout]   --> src/multinode.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct MultinodeStatus {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config`, `node_id`, and `start_time` are never read
[INFO] [stdout]   --> src/multinode.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct FreedomMultinode {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 67 |     // Core components
[INFO] [stdout] 68 |     config: NodeConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     node_id: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 78 |     is_validator: bool,
[INFO] [stdout] 79 |     start_time: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `contracts_executed`, `network_messages_sent`, `network_messages_received`, `average_block_time`, and `sync_duration` are never read
[INFO] [stdout]    --> src/multinode.rs:96:9
[INFO] [stdout]     |
[INFO] [stdout]  93 | pub struct MultinodeMetrics {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub contracts_executed: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  97 |     pub network_messages_sent: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  98 |     pub network_messages_received: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  99 |     pub average_block_time: Duration,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 100 |     pub sync_duration: Duration,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MultinodeMetrics` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/multinode.rs:514:18
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl FreedomMultinode {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 514 |     pub async fn get_status(&self) -> MultinodeStatus {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 539 |     pub async fn submit_transaction(&self, transaction: Transaction) -> Result<Hash> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 558 |     pub async fn get_block(&self, height: u64) -> Result<Option<Block>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 563 |     pub async fn get_balance(&self, address: &Address) -> Result<u64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 568 |     pub async fn deploy_sct_protocol(&self, protocol: SCTProtocol, creator_keypair: &KeyPair) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 588 |     pub async fn create_sct_token(&self, token: SCTToken, creator_keypair: &KeyPair) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 608 |     pub fn get_event_sender(&self) -> mpsc::UnboundedSender<MultinodeEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 612 |     pub async fn shutdown(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_multinode` is never used
[INFO] [stdout]    --> src/multinode.rs:621:14
[INFO] [stdout]     |
[INFO] [stdout] 621 | pub async fn start_multinode(config_path: &str) -> Result<FreedomMultinode> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NetworkStats` is never constructed
[INFO] [stdout]    --> src/multinode.rs:633:12
[INFO] [stdout]     |
[INFO] [stdout] 633 | pub struct NetworkStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/multinode.rs:642:12
[INFO] [stdout]     |
[INFO] [stdout] 641 | impl NetworkStats {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 642 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deploy_protocol` and `create_token` are never used
[INFO] [stdout]    --> src/multinode.rs:680:18
[INFO] [stdout]     |
[INFO] [stdout] 660 | impl SmartContractVM {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 680 |     pub async fn deploy_protocol(&mut self, _protocol_data: &crate::smart_contracts::SCTData) -> anyhow::Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 686 |     pub async fn create_token(&mut self, _token_data: &crate::smart_contracts::SCTData) -> anyhow::Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `initialize` is never used
[INFO] [stdout]   --> src/network/mod.rs:25:14
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub async fn initialize() -> anyhow::Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `local_node_id`, `bootstrap_peers`, `discovery_socket`, `message_sender`, `discovery_cache`, and `local_interfaces` are never read
[INFO] [stdout]   --> src/network/discovery.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct PeerDiscovery {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 19 |     /// Local node ID
[INFO] [stdout] 20 |     local_node_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     bootstrap_peers: Vec<SocketAddr>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |     /// Discovery UDP socket
[INFO] [stdout] 26 |     discovery_socket: Option<Arc<UdpSocket>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     /// Discovery message channel
[INFO] [stdout] 28 |     message_sender: Option<mpsc::UnboundedSender<NetworkMessage>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 29 |     /// Peer discovery cache
[INFO] [stdout] 30 |     discovery_cache: HashMap<String, DiscoveryEntry>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     /// Local network interfaces
[INFO] [stdout] 32 |     local_interfaces: Vec<IpAddr>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PeerDiscovery` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `peer_info`, `discovered_at`, `last_response`, `response_count`, and `is_bootstrap` are never read
[INFO] [stdout]   --> src/network/discovery.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct DiscoveryEntry {
[INFO] [stdout]    |        -------------- fields in this struct
[INFO] [stdout] 38 |     peer_info: PeerInfo,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 39 |     discovered_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 40 |     last_response: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 41 |     response_count: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 42 |     is_bootstrap: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiscoveryEntry` 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: enum `DiscoveryMessage` is never used
[INFO] [stdout]   --> src/network/discovery.rs:47:10
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum DiscoveryMessage {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/network/discovery.rs:117:18
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl PeerDiscovery {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub async fn initialize(
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     async fn discover_local_interfaces(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     async fn start_discovery_tasks(&self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     async fn local_network_scan_task(socket: Arc<UdpSocket>, local_id: String) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     async fn scan_network_range(socket: &UdpSocket, local_id: &str, range: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     async fn bootstrap_discovery_task(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     async fn peer_maintenance_task(socket: Arc<UdpSocket>, local_id: String) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub async fn handle_discovery_message(&mut self, data: &[u8], from: SocketAddr) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     async fn handle_peer_announcement(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     async fn handle_peer_request(&mut self, requesting_node: String, from: SocketAddr, max_peers: u32) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     async fn handle_peer_response(&mut self, _responding_node: String, peers: Vec<PeerInfo>) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     async fn handle_ping(&mut self, node_id: String, from: SocketAddr, timestamp: u64, sequence: u32) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 442 |     async fn handle_pong(&mut self, node_id: String, _from: SocketAddr, _timestamp: u64, _sequence: u32) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 453 |     async fn handle_local_scan(&mut self, node_id: String, from: SocketAddr, port: u16) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 475 |     async fn handle_bootstrap_request(&mut self, node_id: String, from: SocketAddr, need_peers: bool) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 504 |     pub fn peer_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 509 |     pub async fn announce_self(&self, listen_port: u16) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 538 |     pub fn cleanup_old_peers(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MessageType` is never used
[INFO] [stdout]   --> src/network/message.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub enum MessageType {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `message_type`, `requires_auth`, and `target_peer` are never used
[INFO] [stdout]    --> src/network/message.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl NetworkMessage {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] 107 |     /// Get the message type for routing purposes
[INFO] [stdout] 108 |     pub fn message_type(&self) -> MessageType {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn requires_auth(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn target_peer(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `touch`, `is_direct_reachable`, and `best_address` are never used
[INFO] [stdout]    --> src/network/message.rs:178:12
[INFO] [stdout]     |
[INFO] [stdout] 176 | impl PeerInfo {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 177 |     /// Create new peer info
[INFO] [stdout] 178 |     pub fn new(peer_id: String, address: String, port: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn touch(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn is_direct_reachable(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn best_address(&self) -> (String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_text` and `new_system` are never used
[INFO] [stdout]    --> src/network/message.rs:215:12
[INFO] [stdout]     |
[INFO] [stdout] 213 | impl ChatMessage {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] 214 |     /// Create a new text chat message
[INFO] [stdout] 215 |     pub fn new_text(from: String, to: Option<String>, content: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn new_system(content: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target_peer`, `target_addr`, and `started_at` are never read
[INFO] [stdout]   --> src/network/nat.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct HolePunchAttempt {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 49 |     pub target_peer: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 50 |     pub target_addr: SocketAddr,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 51 |     pub started_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HolePunchAttempt` 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: multiple methods are never used
[INFO] [stdout]    --> src/network/nat.rs:96:18
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl NatTraversal {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn initialize(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub async fn handle_hole_punch_packet(&self, data: &[u8], from: SocketAddr) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn external_mapping(&self) -> Option<(IpAddr, u16)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub fn can_direct_connect(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     pub fn find_relay_for_peer(&self, _target_peer: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn get_punch_stats(&self) -> Vec<&HolePunchAttempt> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn cleanup_old_attempts(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `traversal_difficulty` and `supports_hole_punching` are never used
[INFO] [stdout]    --> src/network/nat.rs:308:12
[INFO] [stdout]     |
[INFO] [stdout] 306 | impl NatType {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 307 |     /// Get difficulty level for NAT traversal
[INFO] [stdout] 308 |     pub fn traversal_difficulty(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn supports_hole_punching(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `relay_servers`, `active_relays`, `relay_client`, and `message_sender` are never read
[INFO] [stdout]   --> src/network/relay.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct RelayManager {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 19 |     /// Available relay servers
[INFO] [stdout] 20 |     relay_servers: Arc<RwLock<HashMap<String, RelayServer>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 21 |     /// Active relay connections
[INFO] [stdout] 22 |     active_relays: Arc<RwLock<HashMap<String, RelayConnection>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 23 |     /// Relay client for connecting through relays
[INFO] [stdout] 24 |     relay_client: Option<RelayClient>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 25 |     /// Message sender for relayed messages
[INFO] [stdout] 26 |     message_sender: Option<mpsc::UnboundedSender<NetworkMessage>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelayManager` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/network/relay.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct RelayServer {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 32 |     pub id: String,
[INFO] [stdout] 33 |     pub address: SocketAddr,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 34 |     pub capacity: u32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 35 |     pub current_connections: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub location: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 37 |     pub last_seen: Instant,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 38 |     pub latency: Option<Duration>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 39 |     pub reliability: f32, // 0.0 to 1.0
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelayServer` 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 `start` is never used
[INFO] [stdout]   --> src/network/relay.rs:58:18
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl RelayServer {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub async fn start(&mut self) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `relay_id`, `target_peer`, `established_at`, `bytes_sent`, `bytes_received`, and `last_activity` are never read
[INFO] [stdout]   --> src/network/relay.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct RelayConnection {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 75 |     pub relay_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 76 |     pub target_peer: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 77 |     pub established_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub bytes_sent: u64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 79 |     pub bytes_received: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub last_activity: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelayConnection` 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 `local_peer_id`, `relay_stream`, and `message_receiver` are never read
[INFO] [stdout]   --> src/network/relay.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct RelayClient {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 86 |     local_peer_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 87 |     connected_relay: Option<String>,
[INFO] [stdout] 88 |     relay_stream: Option<TcpStream>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 89 |     message_receiver: mpsc::UnboundedReceiver<NetworkMessage>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelayClient` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RelayServerImpl` is never constructed
[INFO] [stdout]    --> src/network/relay.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub struct RelayServerImpl {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RelayPeerConnection` is never constructed
[INFO] [stdout]    --> src/network/relay.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | struct RelayPeerConnection {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RelayMessage` is never used
[INFO] [stdout]    --> src/network/relay.rs:133:10
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub enum RelayMessage {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/network/relay.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | impl RelayManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn initialize(&mut self, message_sender: mpsc::UnboundedSender<NetworkMessage>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn add_relay_server(&self, server: RelayServer) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub async fn find_best_relay(&self, _target_peer: &str) -> Option<RelayServer> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub async fn connect_through_relay(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub async fn send_through_relay(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     async fn send_relay_message(&self, message: &RelayMessage) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub async fn handle_relay_message(&mut self, data: &[u8]) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 341 |     pub async fn get_relay_stats(&self) -> Vec<RelayConnection> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub async fn cleanup_inactive_connections(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub async fn get_available_relays(&self) -> Vec<RelayServer> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start`, and `handle_connection` are never used
[INFO] [stdout]    --> src/network/relay.rs:365:12
[INFO] [stdout]     |
[INFO] [stdout] 363 | impl RelayServerImpl {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 364 |     /// Create new relay server
[INFO] [stdout] 365 |     pub fn new(id: String, listen_addr: SocketAddr, max_connections: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 375 |     pub async fn start(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     async fn handle_connection(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `listen_addr` and `listener` are never read
[INFO] [stdout]   --> src/network/transport.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Transport {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 19 |     /// Local listening address
[INFO] [stdout] 20 |     listen_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 21 |     /// TCP listener
[INFO] [stdout] 22 |     listener: Option<TcpListener>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Transport` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `peer_id`, `established_at`, and `connection_type` are never read
[INFO] [stdout]   --> src/network/transport.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct Connection {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 34 |     pub peer_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 35 |     pub stream: TcpStream,
[INFO] [stdout] 36 |     pub established_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub connection_type: ConnectionType,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Connection` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bytes_sent`, `bytes_received`, and `connection_errors` are never read
[INFO] [stdout]   --> src/network/transport.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct TransportStats {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub bytes_sent: u64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 49 |     pub bytes_received: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub connection_errors: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TransportStats` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Inbound` is never constructed
[INFO] [stdout]   --> src/network/transport.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub enum ConnectionType {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] 57 |     Inbound,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConnectionType` 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: constant `KEEPALIVE_INTERVAL` is never used
[INFO] [stdout]   --> src/network/transport.rs:78:11
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub const KEEPALIVE_INTERVAL: Duration = Duration::from_secs(60);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `initialize`, `start_accept_loop`, `handle_inbound_connection`, `get_connected_peers`, and `get_stats` are never used
[INFO] [stdout]    --> src/network/transport.rs:93:18
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl Transport {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub async fn initialize(&mut self, message_sender: mpsc::UnboundedSender<NetworkMessage>) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     async fn start_accept_loop(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     async fn handle_inbound_connection(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     pub async fn get_connected_peers(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     pub async fn get_stats(&self) -> TransportStats {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/network/config.rs:284:12
[INFO] [stdout]     |
[INFO] [stdout] 282 | impl NetworkConfig {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 283 |     /// Load configuration from file
[INFO] [stdout] 284 |     pub fn load_from_file<P: AsRef<Path>>(path: P) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn save_to_file<P: AsRef<Path>>(&self, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn create_default_config<P: AsRef<Path>>(path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     pub fn external_socket_addr(&self) -> Option<SocketAddr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     pub fn connection_timeout(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn keepalive_interval(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn nat_detection_timeout(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 364 |     pub fn hole_punch_timeout(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn local_scan_interval(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub fn is_chat_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     pub fn is_local_scan_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 405 |     pub fn stun_server_addrs(&self) -> Vec<SocketAddr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 412 |     pub fn bootstrap_peer_addrs(&self) -> Vec<SocketAddr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 426 |     pub fn set_node_id(&mut self, node_id: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `relay_manager` is never read
[INFO] [stdout]   --> src/network/multinode.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct MultiNode {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     relay_manager: RelayManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MultiNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/network/multinode.rs:135:18
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl MultiNode {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub async fn start(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     async fn start_nat_detection(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     async fn start_peer_discovery(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 458 |     async fn remove_connected_peer(&mut self, peer_id: &str) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 501 |     pub async fn send_chat_message(&self, content: String, recipient: Option<String>) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     pub async fn get_stats(&self) -> NodeStats {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn get_chat_history(&self) -> Vec<super::behaviour::ChatHistoryEntry> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 627 |     pub fn get_message_sender(&self) -> mpsc::UnboundedSender<NetworkMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `handle_message`, `handle_peer_disconnected`, and `name` are never used
[INFO] [stdout]   --> src/network/behaviour.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait NetworkBehaviour: Send + Sync {
[INFO] [stdout]    |           ---------------- methods in this trait
[INFO] [stdout] 14 |     /// Handle incoming network message
[INFO] [stdout] 15 |     fn handle_message(&mut self, message: NetworkMessage, peer_id: &str) -> Result<Option<NetworkMessage>>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     fn handle_peer_disconnected(&mut self, peer_id: &str) -> Result<()>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `node_id`, `message_history`, `max_history`, and `message_sender` are never read
[INFO] [stdout]   --> src/network/behaviour.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ChatBehaviour {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 30 |     /// Node ID
[INFO] [stdout] 31 |     node_id: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 32 |     /// Chat history
[INFO] [stdout] 33 |     message_history: Vec<ChatHistoryEntry>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     /// Maximum history size
[INFO] [stdout] 35 |     max_history: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     message_sender: Option<mpsc::UnboundedSender<NetworkMessage>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChatBehaviour` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `node_id`, `block_cache`, and `transaction_pool` are never read
[INFO] [stdout]   --> src/network/behaviour.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct BlockchainBehaviour {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 55 |     /// Node ID
[INFO] [stdout] 56 |     node_id: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 57 |     /// Block cache
[INFO] [stdout] 58 |     block_cache: HashMap<String, BlockData>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 59 |     /// Transaction pool
[INFO] [stdout] 60 |     transaction_pool: Vec<TransactionData>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BlockchainBehaviour` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `node_id` and `discovery_interval` are never read
[INFO] [stdout]   --> src/network/behaviour.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct DiscoveryBehaviour {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 89 |     /// Node ID
[INFO] [stdout] 90 |     node_id: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     discovery_interval: Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiscoveryBehaviour` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_to_history`, `get_history`, `get_connected_peers`, and `set_message_sender` are never used
[INFO] [stdout]    --> src/network/behaviour.rs:125:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | impl ChatBehaviour {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn add_to_history(&mut self, entry: ChatHistoryEntry) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn get_history(&self) -> &[ChatHistoryEntry] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn get_connected_peers(&self) -> Vec<&PeerInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn set_message_sender(&mut self, sender: mpsc::UnboundedSender<NetworkMessage>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_transaction`, `get_transaction_pool`, `add_block`, and `get_block` are never used
[INFO] [stdout]    --> src/network/behaviour.rs:209:12
[INFO] [stdout]     |
[INFO] [stdout] 197 | impl BlockchainBehaviour {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn add_transaction(&mut self, tx: TransactionData) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn get_transaction_pool(&self) -> &[TransactionData] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn add_block(&mut self, block: BlockData) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn get_block(&self, hash: &str) -> Option<&BlockData> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_known_peers` and `cleanup_stale_peers` are never used
[INFO] [stdout]    --> src/network/behaviour.rs:276:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DiscoveryBehaviour {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn get_known_peers(&self) -> Vec<&PeerInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn cleanup_stale_peers(&mut self, max_age: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `handle_message`, `handle_peer_disconnected`, `send_message`, `get_chat_history`, `get_connected_peers`, and `cleanup_stale_peers` are never used
[INFO] [stdout]    --> src/network/behaviour.rs:372:12
[INFO] [stdout]     |
[INFO] [stdout] 355 | impl FreedomNetBehaviour {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 372 |     pub fn handle_message(&mut self, message: NetworkMessage, peer_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 401 |     pub fn handle_peer_disconnected(&mut self, peer_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     pub fn send_message(&self, message: NetworkMessage) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub fn get_chat_history(&self) -> &[ChatHistoryEntry] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn get_connected_peers(&self) -> Vec<&PeerInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 429 |     pub fn cleanup_stale_peers(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tokens` and `governance_proposals` are never read
[INFO] [stdout]    --> src/smart_contracts.rs:255:5
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub struct VirtualMachine {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] 254 |     protocols: HashMap<String, SCTProtocol>,
[INFO] [stdout] 255 |     tokens: HashMap<Uuid, SCTToken>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 256 |     core_contracts: HashMap<CoreTokenType, CoreTokenContract>,
[INFO] [stdout] 257 |     governance_proposals: HashMap<Uuid, GovernanceProposal>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/smart_contracts.rs:364:18
[INFO] [stdout]     |
[INFO] [stdout] 260 | impl VirtualMachine {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 364 |     pub async fn create_sct_protocol(&mut self, creator: Address, protocol: SCTProtocol) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     pub async fn create_sct_token(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     fn validate_field_values(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     pub async fn call_contract(&mut self, contract: &SmartContract, method: &str, args: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     pub async fn create_governance_proposal(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 518 |     pub fn get_sct_protocols(&self) -> &HashMap<String, SCTProtocol> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 523 |     pub fn get_sct_token(&self, token_id: &Uuid) -> Option<&SCTToken> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub fn get_core_balance(&self, token_type: &CoreTokenType, address: &Address) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TREE_SCT_PROTOCOLS` is never used
[INFO] [stdout]   --> src/storage.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const TREE_SCT_PROTOCOLS: &str = "sct_protocols";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TREE_SCT_TOKENS` is never used
[INFO] [stdout]   --> src/storage.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const TREE_SCT_TOKENS: &str = "sct_tokens";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TREE_GOVERNANCE` is never used
[INFO] [stdout]   --> src/storage.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const TREE_GOVERNANCE: &str = "governance";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TREE_TRANSACTIONS` is never used
[INFO] [stdout]   --> src/storage.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const TREE_TRANSACTIONS: &str = "transactions";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/storage.rs:55:18
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl Storage {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub async fn get_block(&self, height: u64) -> Result<Option<Block>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub async fn get_latest_blocks(&self, count: usize) -> Result<Vec<Block>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn get_account(&self, address: &Address) -> Result<Option<Account>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub async fn store_contract(&self, contract: &SmartContract) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub async fn get_contract(&self, address: &Address) -> Result<Option<SmartContract>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub async fn store_sct_protocol(&self, protocol: &SCTProtocol) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub async fn get_sct_protocol(&self, protocol_id: &str) -> Result<Option<SCTProtocol>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub async fn get_all_sct_protocols(&self) -> Result<HashMap<String, SCTProtocol>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub async fn store_sct_token(&self, token: &SCTToken) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub async fn get_sct_token(&self, token_id: &Uuid) -> Result<Option<SCTToken>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub async fn get_tokens_by_protocol(&self, protocol_id: &str) -> Result<Vec<SCTToken>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub async fn get_tokens_by_creator(&self, creator: &Address) -> Result<Vec<SCTToken>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub async fn store_governance_proposal(&self, proposal: &GovernanceProposal) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub async fn get_governance_proposal(&self, proposal_id: &Uuid) -> Result<Option<GovernanceProposal>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub async fn get_active_governance_proposals(&self) -> Result<Vec<GovernanceProposal>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub async fn get_database_stats(&self) -> Result<DatabaseStats> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DatabaseStats` is never constructed
[INFO] [stdout]    --> src/storage.rs:374:12
[INFO] [stdout]     |
[INFO] [stdout] 374 | pub struct DatabaseStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransactionBuilder` is never constructed
[INFO] [stdout]   --> src/wallet.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct TransactionBuilder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/wallet.rs:72:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | impl Wallet {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn from_keypair(keypair: KeyPair) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn public_key(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn load_from_file<P: AsRef<Path>>(path: P) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn create_transaction(&self, builder: TransactionBuilder) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn create_transfer(&self, to: Address, amount: u64, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn create_stake_transaction(&self, amount: u64, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn create_unstake_transaction(&self, amount: u64, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn create_governance_vote(&self, proposal_id: String, vote: bool, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn create_sct_protocol_deployment(&self, protocol_data: Vec<u8>, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn create_sct_token(&self, protocol_id: String, token_data: HashMap<String, SCTFieldValue>, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn create_sct_transfer(&self, token_id: String, to: Address, amount: u64, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     fn calculate_fee(&self, tx_type: TransactionType, data: Option<&[u8]>) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn add_transaction(&mut self, transaction: WalletTransaction) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn update_balance(&mut self, balance: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn update_staked_amount(&mut self, amount: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub fn add_sct_token(&mut self, token_balance: SCTTokenBalance) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     pub fn update_sct_token_balance(&mut self, token_id: &str, balance: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn add_governance_vote(&mut self, proposal_id: String, vote: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_transaction_history(&self) -> &[WalletTransaction] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn get_sct_tokens(&self) -> &HashMap<String, SCTTokenBalance> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn get_governance_votes(&self) -> &HashMap<String, bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn get_available_balance(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn can_stake(&self, amount: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn can_unstake(&self, amount: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 346 |     pub fn has_voted_on_proposal(&self, proposal_id: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WalletManager` is never constructed
[INFO] [stdout]    --> src/wallet.rs:352:12
[INFO] [stdout]     |
[INFO] [stdout] 352 | pub struct WalletManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/wallet.rs:358:12
[INFO] [stdout]     |
[INFO] [stdout] 357 | impl WalletManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 358 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub fn create_wallet(&mut self) -> Address {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     pub fn import_wallet(&mut self, wallet: Wallet) -> Address {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 388 |     pub fn get_wallet(&self, address: &Address) -> Option<&Wallet> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub fn get_wallet_mut(&mut self, address: &Address) -> Option<&mut Wallet> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub fn get_default_wallet(&self) -> Option<&Wallet> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     pub fn get_default_wallet_mut(&mut self) -> Option<&mut Wallet> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 405 |     pub fn set_default_wallet(&mut self, address: Address) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 414 |     pub fn list_wallets(&self) -> Vec<Address> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub fn remove_wallet(&mut self, address: &Address) -> Option<Wallet> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn save_all_wallets(&self, directory: &Path) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 448 |     pub fn load_all_wallets(&mut self, directory: &Path) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/multinode.rs:374:13
[INFO] [stdout]     |
[INFO] [stdout] 374 |             blockchain.add_pending_transaction(transaction.clone()).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 374 |             let _ = blockchain.add_pending_transaction(transaction.clone()).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/multinode.rs:544:13
[INFO] [stdout]     |
[INFO] [stdout] 544 |             blockchain.add_pending_transaction(transaction.clone()).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 544 |             let _ = blockchain.add_pending_transaction(transaction.clone()).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `creator`
[INFO] [stdout]    --> src/smart_contracts.rs:364:49
[INFO] [stdout]     |
[INFO] [stdout] 364 |     pub async fn create_sct_protocol(&mut self, creator: Address, protocol: SCTProtocol) -> Result<String> {
[INFO] [stdout]     |                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_creator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `string_to_address` is never used
[INFO] [stdout]   --> src/api.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn string_to_address(s: &str) -> Result<Address> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ApiResponse` is never constructed
[INFO] [stdout]   --> src/api.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ApiResponse<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `success` and `error` are never used
[INFO] [stdout]   --> src/api.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl<T> ApiResponse<T> {
[INFO] [stdout]    | ---------------------- associated functions in this implementation
[INFO] [stdout] 37 |     pub fn success(data: T) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn error(message: String) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransactionRequest` is never constructed
[INFO] [stdout]   --> src/api.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct TransactionRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SCTProtocolRequest` is never constructed
[INFO] [stdout]   --> src/api.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct SCTProtocolRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SCTTokenRequest` is never constructed
[INFO] [stdout]   --> src/api.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct SCTTokenRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GovernanceProposalRequest` is never constructed
[INFO] [stdout]   --> src/api.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct GovernanceProposalRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BalanceResponse` is never constructed
[INFO] [stdout]   --> src/api.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct BalanceResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BlockResponse` is never constructed
[INFO] [stdout]    --> src/api.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct BlockResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WebSocketMessage` is never used
[INFO] [stdout]    --> src/api.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum WebSocketMessage {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FreedomAPI` is never constructed
[INFO] [stdout]    --> src/api.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub struct FreedomAPI {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start_server`, `start_event_broadcaster`, and `broadcast_to_all_clients` are never used
[INFO] [stdout]    --> src/api.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl FreedomAPI {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 152 |     pub fn new(multinode: Arc<RwLock<FreedomMultinode>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub async fn start_server(&self, port: u16) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     async fn start_event_broadcaster(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     async fn broadcast_to_all_clients(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_multinode` is never used
[INFO] [stdout]    --> src/api.rs:301:4
[INFO] [stdout]     |
[INFO] [stdout] 301 | fn with_multinode(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `WebSocketClients` is never used
[INFO] [stdout]    --> src/api.rs:307:6
[INFO] [stdout]     |
[INFO] [stdout] 307 | type WebSocketClients = Arc<RwLock<HashMap<String, tokio::sync::mpsc::UnboundedSender<WebSocketMessage>>>>;
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_websocket_clients` is never used
[INFO] [stdout]    --> src/api.rs:309:4
[INFO] [stdout]     |
[INFO] [stdout] 309 | fn with_websocket_clients(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_node_status` is never used
[INFO] [stdout]    --> src/api.rs:316:10
[INFO] [stdout]     |
[INFO] [stdout] 316 | async fn get_node_status(multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_balance` is never used
[INFO] [stdout]    --> src/api.rs:322:10
[INFO] [stdout]     |
[INFO] [stdout] 322 | async fn get_balance(address: String, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_block` is never used
[INFO] [stdout]    --> src/api.rs:344:10
[INFO] [stdout]     |
[INFO] [stdout] 344 | async fn get_block(height: u64, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `submit_transaction` is never used
[INFO] [stdout]    --> src/api.rs:365:10
[INFO] [stdout]     |
[INFO] [stdout] 365 | async fn submit_transaction(request: TransactionRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deploy_sct_protocol` is never used
[INFO] [stdout]    --> src/api.rs:373:10
[INFO] [stdout]     |
[INFO] [stdout] 373 | async fn deploy_sct_protocol(request: SCTProtocolRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_sct_token` is never used
[INFO] [stdout]    --> src/api.rs:381:10
[INFO] [stdout]     |
[INFO] [stdout] 381 | async fn create_sct_token(request: SCTTokenRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, Rejection> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_governance_proposal` is never used
[INFO] [stdout]    --> src/api.rs:389:10
[INFO] [stdout]     |
[INFO] [stdout] 389 | async fn create_governance_proposal(request: GovernanceProposalRequest, multinode: Arc<RwLock<FreedomMultinode>>) -> Result<impl Reply, R...
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_websocket` is never used
[INFO] [stdout]    --> src/api.rs:398:10
[INFO] [stdout]     |
[INFO] [stdout] 398 | async fn handle_websocket(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_rejection` is never used
[INFO] [stdout]    --> src/api.rs:468:10
[INFO] [stdout]     |
[INFO] [stdout] 468 | async fn handle_rejection(err: Rejection) -> Result<impl Reply, std::convert::Infallible> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/blockchain.rs:457:14
[INFO] [stdout]     |
[INFO] [stdout]  90 | impl Blockchain {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 457 |     async fn call_contract(&mut self, contract_address: Address, method: String, args: Vec<u8>) -> Result<Vec<u8>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     pub fn get_account(&self, address: &Address) -> Option<&Account> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub fn get_chain_state(&self) -> &ChainState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 473 |     pub fn get_pending_transactions(&self) -> &[Transaction] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 477 |     pub async fn get_block(&self, height: u64) -> Result<Option<Block>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 481 |     pub fn get_balance(&self, address: &Address) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 489 |     pub fn get_pending_transaction_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     pub async fn get_block_by_height(&self, height: u64) -> Result<Option<Block>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 497 |     pub fn get_account_balance(&self, address: &Address) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save` is never used
[INFO] [stdout]    --> src/config.rs:147:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl NodeConfig {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) -> Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Attestation` is never constructed
[INFO] [stdout]   --> src/consensus.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct Attestation {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/consensus.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct ConsensusEngine {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 64 |     config: ConsensusConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/consensus.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl ConsensusEngine {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn is_validator(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn add_validator(&mut self, address: Address, staked_amount: u64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn remove_validator(&mut self, address: &Address) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn update_validator_stake(&mut self, address: &Address, new_stake: u64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     fn calculate_voting_power(&self, staked_amount: u64) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     fn update_block_production_schedule(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn get_next_validator(&mut self) -> Option<Address> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn validate_block_producer(&self, block: &Block) -> Result<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn finalize_block(&mut self, block_hash: Hash, block_height: u64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn slash_validator(&mut self, validator_address: &Address, reason: SlashReason) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn process_epoch_end(&mut self, current_height: u64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn start_new_epoch(&mut self, height: u64) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 385 |     pub fn calculate_block_reward(&self, block_height: u64) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn get_validator_stats(&self) -> ValidatorStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 426 |     pub fn get_current_epoch(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub fn get_validator_set(&self) -> &ValidatorSet {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 434 |     pub fn get_finalized_height(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 438 |     pub fn is_block_finalized(&self, height: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SlashReason` is never used
[INFO] [stdout]    --> src/consensus.rs:444:10
[INFO] [stdout]     |
[INFO] [stdout] 444 | pub enum SlashReason {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ValidatorStats` is never constructed
[INFO] [stdout]    --> src/consensus.rs:452:12
[INFO] [stdout]     |
[INFO] [stdout] 452 | pub struct ValidatorStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConsensusMetrics` is never constructed
[INFO] [stdout]    --> src/consensus.rs:461:12
[INFO] [stdout]     |
[INFO] [stdout] 461 | pub struct ConsensusMetrics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `public_key` is never used
[INFO] [stdout]   --> src/crypto.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl KeyPair {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn public_key(&self) -> PublicKey {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `freedom_format_to_address` is never used
[INFO] [stdout]   --> src/crypto.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn freedom_format_to_address(address_str: &str) -> Result<Address> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `address_zero` is never used
[INFO] [stdout]   --> src/crypto.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn address_zero() -> Address {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `address_from_string` is never used
[INFO] [stdout]   --> src/crypto.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn address_from_string(address_str: &str) -> Result<Address> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `from_hex` is never used
[INFO] [stdout]    --> src/crypto.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn from_hex(hex_str: &str) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultinodeStatus` is never constructed
[INFO] [stdout]   --> src/multinode.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct MultinodeStatus {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config`, `node_id`, and `start_time` are never read
[INFO] [stdout]   --> src/multinode.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct FreedomMultinode {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 67 |     // Core components
[INFO] [stdout] 68 |     config: NodeConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     node_id: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 78 |     is_validator: bool,
[INFO] [stdout] 79 |     start_time: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `contracts_executed`, `network_messages_sent`, `network_messages_received`, `average_block_time`, and `sync_duration` are never read
[INFO] [stdout]    --> src/multinode.rs:96:9
[INFO] [stdout]     |
[INFO] [stdout]  93 | pub struct MultinodeMetrics {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub contracts_executed: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  97 |     pub network_messages_sent: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  98 |     pub network_messages_received: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  99 |     pub average_block_time: Duration,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 100 |     pub sync_duration: Duration,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MultinodeMetrics` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/multinode.rs:514:18
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl FreedomMultinode {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 514 |     pub async fn get_status(&self) -> MultinodeStatus {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 539 |     pub async fn submit_transaction(&self, transaction: Transaction) -> Result<Hash> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 558 |     pub async fn get_block(&self, height: u64) -> Result<Option<Block>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 563 |     pub async fn get_balance(&self, address: &Address) -> Result<u64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 568 |     pub async fn deploy_sct_protocol(&self, protocol: SCTProtocol, creator_keypair: &KeyPair) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 588 |     pub async fn create_sct_token(&self, token: SCTToken, creator_keypair: &KeyPair) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 608 |     pub fn get_event_sender(&self) -> mpsc::UnboundedSender<MultinodeEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 612 |     pub async fn shutdown(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_multinode` is never used
[INFO] [stdout]    --> src/multinode.rs:621:14
[INFO] [stdout]     |
[INFO] [stdout] 621 | pub async fn start_multinode(config_path: &str) -> Result<FreedomMultinode> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NetworkStats` is never constructed
[INFO] [stdout]    --> src/multinode.rs:633:12
[INFO] [stdout]     |
[INFO] [stdout] 633 | pub struct NetworkStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/multinode.rs:642:12
[INFO] [stdout]     |
[INFO] [stdout] 641 | impl NetworkStats {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 642 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deploy_protocol` and `create_token` are never used
[INFO] [stdout]    --> src/multinode.rs:680:18
[INFO] [stdout]     |
[INFO] [stdout] 660 | impl SmartContractVM {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 680 |     pub async fn deploy_protocol(&mut self, _protocol_data: &crate::smart_contracts::SCTData) -> anyhow::Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 686 |     pub async fn create_token(&mut self, _token_data: &crate::smart_contracts::SCTData) -> anyhow::Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `initialize` is never used
[INFO] [stdout]   --> src/network/mod.rs:25:14
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub async fn initialize() -> anyhow::Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `local_node_id`, `bootstrap_peers`, `discovery_socket`, `message_sender`, `discovery_cache`, and `local_interfaces` are never read
[INFO] [stdout]   --> src/network/discovery.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct PeerDiscovery {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 19 |     /// Local node ID
[INFO] [stdout] 20 |     local_node_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     bootstrap_peers: Vec<SocketAddr>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |     /// Discovery UDP socket
[INFO] [stdout] 26 |     discovery_socket: Option<Arc<UdpSocket>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     /// Discovery message channel
[INFO] [stdout] 28 |     message_sender: Option<mpsc::UnboundedSender<NetworkMessage>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 29 |     /// Peer discovery cache
[INFO] [stdout] 30 |     discovery_cache: HashMap<String, DiscoveryEntry>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     /// Local network interfaces
[INFO] [stdout] 32 |     local_interfaces: Vec<IpAddr>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PeerDiscovery` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `peer_info`, `discovered_at`, `last_response`, `response_count`, and `is_bootstrap` are never read
[INFO] [stdout]   --> src/network/discovery.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct DiscoveryEntry {
[INFO] [stdout]    |        -------------- fields in this struct
[INFO] [stdout] 38 |     peer_info: PeerInfo,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 39 |     discovered_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 40 |     last_response: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 41 |     response_count: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 42 |     is_bootstrap: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiscoveryEntry` 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: enum `DiscoveryMessage` is never used
[INFO] [stdout]   --> src/network/discovery.rs:47:10
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum DiscoveryMessage {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/network/discovery.rs:117:18
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl PeerDiscovery {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub async fn initialize(
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     async fn discover_local_interfaces(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     async fn start_discovery_tasks(&self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     async fn local_network_scan_task(socket: Arc<UdpSocket>, local_id: String) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     async fn scan_network_range(socket: &UdpSocket, local_id: &str, range: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     async fn bootstrap_discovery_task(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     async fn peer_maintenance_task(socket: Arc<UdpSocket>, local_id: String) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub async fn handle_discovery_message(&mut self, data: &[u8], from: SocketAddr) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     async fn handle_peer_announcement(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     async fn handle_peer_request(&mut self, requesting_node: String, from: SocketAddr, max_peers: u32) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     async fn handle_peer_response(&mut self, _responding_node: String, peers: Vec<PeerInfo>) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     async fn handle_ping(&mut self, node_id: String, from: SocketAddr, timestamp: u64, sequence: u32) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 442 |     async fn handle_pong(&mut self, node_id: String, _from: SocketAddr, _timestamp: u64, _sequence: u32) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 453 |     async fn handle_local_scan(&mut self, node_id: String, from: SocketAddr, port: u16) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 475 |     async fn handle_bootstrap_request(&mut self, node_id: String, from: SocketAddr, need_peers: bool) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 504 |     pub fn peer_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 509 |     pub async fn announce_self(&self, listen_port: u16) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 538 |     pub fn cleanup_old_peers(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MessageType` is never used
[INFO] [stdout]   --> src/network/message.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub enum MessageType {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `message_type`, `requires_auth`, and `target_peer` are never used
[INFO] [stdout]    --> src/network/message.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl NetworkMessage {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] 107 |     /// Get the message type for routing purposes
[INFO] [stdout] 108 |     pub fn message_type(&self) -> MessageType {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn requires_auth(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn target_peer(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `touch`, `is_direct_reachable`, and `best_address` are never used
[INFO] [stdout]    --> src/network/message.rs:178:12
[INFO] [stdout]     |
[INFO] [stdout] 176 | impl PeerInfo {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 177 |     /// Create new peer info
[INFO] [stdout] 178 |     pub fn new(peer_id: String, address: String, port: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn touch(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn is_direct_reachable(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn best_address(&self) -> (String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_text` and `new_system` are never used
[INFO] [stdout]    --> src/network/message.rs:215:12
[INFO] [stdout]     |
[INFO] [stdout] 213 | impl ChatMessage {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] 214 |     /// Create a new text chat message
[INFO] [stdout] 215 |     pub fn new_text(from: String, to: Option<String>, content: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn new_system(content: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target_peer`, `target_addr`, and `started_at` are never read
[INFO] [stdout]   --> src/network/nat.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct HolePunchAttempt {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 49 |     pub target_peer: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 50 |     pub target_addr: SocketAddr,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 51 |     pub started_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HolePunchAttempt` 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: multiple methods are never used
[INFO] [stdout]    --> src/network/nat.rs:96:18
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl NatTraversal {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn initialize(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub async fn handle_hole_punch_packet(&self, data: &[u8], from: SocketAddr) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn external_mapping(&self) -> Option<(IpAddr, u16)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub fn can_direct_connect(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     pub fn find_relay_for_peer(&self, _target_peer: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn get_punch_stats(&self) -> Vec<&HolePunchAttempt> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn cleanup_old_attempts(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `traversal_difficulty` and `supports_hole_punching` are never used
[INFO] [stdout]    --> src/network/nat.rs:308:12
[INFO] [stdout]     |
[INFO] [stdout] 306 | impl NatType {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 307 |     /// Get difficulty level for NAT traversal
[INFO] [stdout] 308 |     pub fn traversal_difficulty(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn supports_hole_punching(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `relay_servers`, `active_relays`, `relay_client`, and `message_sender` are never read
[INFO] [stdout]   --> src/network/relay.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct RelayManager {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 19 |     /// Available relay servers
[INFO] [stdout] 20 |     relay_servers: Arc<RwLock<HashMap<String, RelayServer>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 21 |     /// Active relay connections
[INFO] [stdout] 22 |     active_relays: Arc<RwLock<HashMap<String, RelayConnection>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 23 |     /// Relay client for connecting through relays
[INFO] [stdout] 24 |     relay_client: Option<RelayClient>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 25 |     /// Message sender for relayed messages
[INFO] [stdout] 26 |     message_sender: Option<mpsc::UnboundedSender<NetworkMessage>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelayManager` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/network/relay.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct RelayServer {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 32 |     pub id: String,
[INFO] [stdout] 33 |     pub address: SocketAddr,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 34 |     pub capacity: u32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 35 |     pub current_connections: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub location: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 37 |     pub last_seen: Instant,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 38 |     pub latency: Option<Duration>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 39 |     pub reliability: f32, // 0.0 to 1.0
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelayServer` 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 `start` is never used
[INFO] [stdout]   --> src/network/relay.rs:58:18
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl RelayServer {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub async fn start(&mut self) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `relay_id`, `target_peer`, `established_at`, `bytes_sent`, `bytes_received`, and `last_activity` are never read
[INFO] [stdout]   --> src/network/relay.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct RelayConnection {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 75 |     pub relay_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 76 |     pub target_peer: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 77 |     pub established_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub bytes_sent: u64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 79 |     pub bytes_received: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub last_activity: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelayConnection` 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 `local_peer_id`, `relay_stream`, and `message_receiver` are never read
[INFO] [stdout]   --> src/network/relay.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct RelayClient {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 86 |     local_peer_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 87 |     connected_relay: Option<String>,
[INFO] [stdout] 88 |     relay_stream: Option<TcpStream>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 89 |     message_receiver: mpsc::UnboundedReceiver<NetworkMessage>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelayClient` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RelayServerImpl` is never constructed
[INFO] [stdout]    --> src/network/relay.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub struct RelayServerImpl {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RelayPeerConnection` is never constructed
[INFO] [stdout]    --> src/network/relay.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | struct RelayPeerConnection {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RelayMessage` is never used
[INFO] [stdout]    --> src/network/relay.rs:133:10
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub enum RelayMessage {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/network/relay.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | impl RelayManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn initialize(&mut self, message_sender: mpsc::UnboundedSender<NetworkMessage>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn add_relay_server(&self, server: RelayServer) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub async fn find_best_relay(&self, _target_peer: &str) -> Option<RelayServer> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub async fn connect_through_relay(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub async fn send_through_relay(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     async fn send_relay_message(&self, message: &RelayMessage) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub async fn handle_relay_message(&mut self, data: &[u8]) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 341 |     pub async fn get_relay_stats(&self) -> Vec<RelayConnection> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub async fn cleanup_inactive_connections(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub async fn get_available_relays(&self) -> Vec<RelayServer> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start`, and `handle_connection` are never used
[INFO] [stdout]    --> src/network/relay.rs:365:12
[INFO] [stdout]     |
[INFO] [stdout] 363 | impl RelayServerImpl {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 364 |     /// Create new relay server
[INFO] [stdout] 365 |     pub fn new(id: String, listen_addr: SocketAddr, max_connections: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 375 |     pub async fn start(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     async fn handle_connection(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `listen_addr` and `listener` are never read
[INFO] [stdout]   --> src/network/transport.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Transport {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 19 |     /// Local listening address
[INFO] [stdout] 20 |     listen_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 21 |     /// TCP listener
[INFO] [stdout] 22 |     listener: Option<TcpListener>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Transport` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `peer_id`, `established_at`, and `connection_type` are never read
[INFO] [stdout]   --> src/network/transport.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct Connection {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 34 |     pub peer_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 35 |     pub stream: TcpStream,
[INFO] [stdout] 36 |     pub established_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub connection_type: ConnectionType,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Connection` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bytes_sent`, `bytes_received`, and `connection_errors` are never read
[INFO] [stdout]   --> src/network/transport.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct TransportStats {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub bytes_sent: u64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 49 |     pub bytes_received: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub connection_errors: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TransportStats` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Inbound` is never constructed
[INFO] [stdout]   --> src/network/transport.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub enum ConnectionType {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] 57 |     Inbound,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConnectionType` 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: constant `KEEPALIVE_INTERVAL` is never used
[INFO] [stdout]   --> src/network/transport.rs:78:11
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub const KEEPALIVE_INTERVAL: Duration = Duration::from_secs(60);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `initialize`, `start_accept_loop`, `handle_inbound_connection`, `get_connected_peers`, and `get_stats` are never used
[INFO] [stdout]    --> src/network/transport.rs:93:18
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl Transport {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub async fn initialize(&mut self, message_sender: mpsc::UnboundedSender<NetworkMessage>) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     async fn start_accept_loop(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     async fn handle_inbound_connection(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     pub async fn get_connected_peers(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     pub async fn get_stats(&self) -> TransportStats {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/network/config.rs:284:12
[INFO] [stdout]     |
[INFO] [stdout] 282 | impl NetworkConfig {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 283 |     /// Load configuration from file
[INFO] [stdout] 284 |     pub fn load_from_file<P: AsRef<Path>>(path: P) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn save_to_file<P: AsRef<Path>>(&self, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn create_default_config<P: AsRef<Path>>(path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     pub fn external_socket_addr(&self) -> Option<SocketAddr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     pub fn connection_timeout(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn keepalive_interval(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn nat_detection_timeout(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 364 |     pub fn hole_punch_timeout(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn local_scan_interval(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub fn is_chat_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     pub fn is_local_scan_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 405 |     pub fn stun_server_addrs(&self) -> Vec<SocketAddr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 412 |     pub fn bootstrap_peer_addrs(&self) -> Vec<SocketAddr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 426 |     pub fn set_node_id(&mut self, node_id: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `relay_manager` is never read
[INFO] [stdout]   --> src/network/multinode.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct MultiNode {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     relay_manager: RelayManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MultiNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/network/multinode.rs:135:18
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl MultiNode {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub async fn start(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     async fn start_nat_detection(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     async fn start_peer_discovery(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 458 |     async fn remove_connected_peer(&mut self, peer_id: &str) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 501 |     pub async fn send_chat_message(&self, content: String, recipient: Option<String>) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     pub async fn get_stats(&self) -> NodeStats {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn get_chat_history(&self) -> Vec<super::behaviour::ChatHistoryEntry> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 627 |     pub fn get_message_sender(&self) -> mpsc::UnboundedSender<NetworkMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `handle_message`, `handle_peer_disconnected`, and `name` are never used
[INFO] [stdout]   --> src/network/behaviour.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait NetworkBehaviour: Send + Sync {
[INFO] [stdout]    |           ---------------- methods in this trait
[INFO] [stdout] 14 |     /// Handle incoming network message
[INFO] [stdout] 15 |     fn handle_message(&mut self, message: NetworkMessage, peer_id: &str) -> Result<Option<NetworkMessage>>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     fn handle_peer_disconnected(&mut self, peer_id: &str) -> Result<()>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `node_id`, `message_history`, `max_history`, and `message_sender` are never read
[INFO] [stdout]   --> src/network/behaviour.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ChatBehaviour {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 30 |     /// Node ID
[INFO] [stdout] 31 |     node_id: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 32 |     /// Chat history
[INFO] [stdout] 33 |     message_history: Vec<ChatHistoryEntry>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     /// Maximum history size
[INFO] [stdout] 35 |     max_history: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     message_sender: Option<mpsc::UnboundedSender<NetworkMessage>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChatBehaviour` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `node_id`, `block_cache`, and `transaction_pool` are never read
[INFO] [stdout]   --> src/network/behaviour.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct BlockchainBehaviour {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 55 |     /// Node ID
[INFO] [stdout] 56 |     node_id: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 57 |     /// Block cache
[INFO] [stdout] 58 |     block_cache: HashMap<String, BlockData>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 59 |     /// Transaction pool
[INFO] [stdout] 60 |     transaction_pool: Vec<TransactionData>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BlockchainBehaviour` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `node_id` and `discovery_interval` are never read
[INFO] [stdout]   --> src/network/behaviour.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct DiscoveryBehaviour {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 89 |     /// Node ID
[INFO] [stdout] 90 |     node_id: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     discovery_interval: Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiscoveryBehaviour` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_to_history`, `get_history`, `get_connected_peers`, and `set_message_sender` are never used
[INFO] [stdout]    --> src/network/behaviour.rs:125:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | impl ChatBehaviour {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn add_to_history(&mut self, entry: ChatHistoryEntry) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn get_history(&self) -> &[ChatHistoryEntry] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn get_connected_peers(&self) -> Vec<&PeerInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn set_message_sender(&mut self, sender: mpsc::UnboundedSender<NetworkMessage>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_transaction`, `get_transaction_pool`, `add_block`, and `get_block` are never used
[INFO] [stdout]    --> src/network/behaviour.rs:209:12
[INFO] [stdout]     |
[INFO] [stdout] 197 | impl BlockchainBehaviour {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn add_transaction(&mut self, tx: TransactionData) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn get_transaction_pool(&self) -> &[TransactionData] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn add_block(&mut self, block: BlockData) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn get_block(&self, hash: &str) -> Option<&BlockData> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_known_peers` and `cleanup_stale_peers` are never used
[INFO] [stdout]    --> src/network/behaviour.rs:276:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DiscoveryBehaviour {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn get_known_peers(&self) -> Vec<&PeerInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn cleanup_stale_peers(&mut self, max_age: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `handle_message`, `handle_peer_disconnected`, `send_message`, `get_chat_history`, `get_connected_peers`, and `cleanup_stale_peers` are never used
[INFO] [stdout]    --> src/network/behaviour.rs:372:12
[INFO] [stdout]     |
[INFO] [stdout] 355 | impl FreedomNetBehaviour {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 372 |     pub fn handle_message(&mut self, message: NetworkMessage, peer_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 401 |     pub fn handle_peer_disconnected(&mut self, peer_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     pub fn send_message(&self, message: NetworkMessage) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub fn get_chat_history(&self) -> &[ChatHistoryEntry] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn get_connected_peers(&self) -> Vec<&PeerInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 429 |     pub fn cleanup_stale_peers(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tokens` and `governance_proposals` are never read
[INFO] [stdout]    --> src/smart_contracts.rs:255:5
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub struct VirtualMachine {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] 254 |     protocols: HashMap<String, SCTProtocol>,
[INFO] [stdout] 255 |     tokens: HashMap<Uuid, SCTToken>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 256 |     core_contracts: HashMap<CoreTokenType, CoreTokenContract>,
[INFO] [stdout] 257 |     governance_proposals: HashMap<Uuid, GovernanceProposal>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/smart_contracts.rs:364:18
[INFO] [stdout]     |
[INFO] [stdout] 260 | impl VirtualMachine {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 364 |     pub async fn create_sct_protocol(&mut self, creator: Address, protocol: SCTProtocol) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     pub async fn create_sct_token(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     fn validate_field_values(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     pub async fn call_contract(&mut self, contract: &SmartContract, method: &str, args: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     pub async fn create_governance_proposal(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 518 |     pub fn get_sct_protocols(&self) -> &HashMap<String, SCTProtocol> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 523 |     pub fn get_sct_token(&self, token_id: &Uuid) -> Option<&SCTToken> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub fn get_core_balance(&self, token_type: &CoreTokenType, address: &Address) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TREE_SCT_PROTOCOLS` is never used
[INFO] [stdout]   --> src/storage.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const TREE_SCT_PROTOCOLS: &str = "sct_protocols";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TREE_SCT_TOKENS` is never used
[INFO] [stdout]   --> src/storage.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const TREE_SCT_TOKENS: &str = "sct_tokens";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TREE_GOVERNANCE` is never used
[INFO] [stdout]   --> src/storage.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const TREE_GOVERNANCE: &str = "governance";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TREE_TRANSACTIONS` is never used
[INFO] [stdout]   --> src/storage.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const TREE_TRANSACTIONS: &str = "transactions";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/storage.rs:55:18
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl Storage {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub async fn get_block(&self, height: u64) -> Result<Option<Block>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub async fn get_latest_blocks(&self, count: usize) -> Result<Vec<Block>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn get_account(&self, address: &Address) -> Result<Option<Account>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub async fn store_contract(&self, contract: &SmartContract) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub async fn get_contract(&self, address: &Address) -> Result<Option<SmartContract>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub async fn store_sct_protocol(&self, protocol: &SCTProtocol) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub async fn get_sct_protocol(&self, protocol_id: &str) -> Result<Option<SCTProtocol>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub async fn get_all_sct_protocols(&self) -> Result<HashMap<String, SCTProtocol>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub async fn store_sct_token(&self, token: &SCTToken) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub async fn get_sct_token(&self, token_id: &Uuid) -> Result<Option<SCTToken>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub async fn get_tokens_by_protocol(&self, protocol_id: &str) -> Result<Vec<SCTToken>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub async fn get_tokens_by_creator(&self, creator: &Address) -> Result<Vec<SCTToken>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub async fn store_governance_proposal(&self, proposal: &GovernanceProposal) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub async fn get_governance_proposal(&self, proposal_id: &Uuid) -> Result<Option<GovernanceProposal>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub async fn get_active_governance_proposals(&self) -> Result<Vec<GovernanceProposal>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub async fn get_database_stats(&self) -> Result<DatabaseStats> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DatabaseStats` is never constructed
[INFO] [stdout]    --> src/storage.rs:374:12
[INFO] [stdout]     |
[INFO] [stdout] 374 | pub struct DatabaseStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransactionBuilder` is never constructed
[INFO] [stdout]   --> src/wallet.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct TransactionBuilder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/wallet.rs:72:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | impl Wallet {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn from_keypair(keypair: KeyPair) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn public_key(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn load_from_file<P: AsRef<Path>>(path: P) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn create_transaction(&self, builder: TransactionBuilder) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn create_transfer(&self, to: Address, amount: u64, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn create_stake_transaction(&self, amount: u64, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn create_unstake_transaction(&self, amount: u64, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn create_governance_vote(&self, proposal_id: String, vote: bool, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn create_sct_protocol_deployment(&self, protocol_data: Vec<u8>, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn create_sct_token(&self, protocol_id: String, token_data: HashMap<String, SCTFieldValue>, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn create_sct_transfer(&self, token_id: String, to: Address, amount: u64, nonce: u64) -> Result<Transaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     fn calculate_fee(&self, tx_type: TransactionType, data: Option<&[u8]>) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn add_transaction(&mut self, transaction: WalletTransaction) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn update_balance(&mut self, balance: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn update_staked_amount(&mut self, amount: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub fn add_sct_token(&mut self, token_balance: SCTTokenBalance) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     pub fn update_sct_token_balance(&mut self, token_id: &str, balance: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn add_governance_vote(&mut self, proposal_id: String, vote: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_transaction_history(&self) -> &[WalletTransaction] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn get_sct_tokens(&self) -> &HashMap<String, SCTTokenBalance> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn get_governance_votes(&self) -> &HashMap<String, bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn get_available_balance(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn can_stake(&self, amount: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn can_unstake(&self, amount: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 346 |     pub fn has_voted_on_proposal(&self, proposal_id: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WalletManager` is never constructed
[INFO] [stdout]    --> src/wallet.rs:352:12
[INFO] [stdout]     |
[INFO] [stdout] 352 | pub struct WalletManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/wallet.rs:358:12
[INFO] [stdout]     |
[INFO] [stdout] 357 | impl WalletManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 358 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub fn create_wallet(&mut self) -> Address {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     pub fn import_wallet(&mut self, wallet: Wallet) -> Address {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 388 |     pub fn get_wallet(&self, address: &Address) -> Option<&Wallet> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub fn get_wallet_mut(&mut self, address: &Address) -> Option<&mut Wallet> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub fn get_default_wallet(&self) -> Option<&Wallet> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     pub fn get_default_wallet_mut(&mut self) -> Option<&mut Wallet> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 405 |     pub fn set_default_wallet(&mut self, address: Address) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 414 |     pub fn list_wallets(&self) -> Vec<Address> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub fn remove_wallet(&mut self, address: &Address) -> Option<Wallet> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn save_all_wallets(&self, directory: &Path) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 448 |     pub fn load_all_wallets(&mut self, directory: &Path) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/multinode.rs:374:13
[INFO] [stdout]     |
[INFO] [stdout] 374 |             blockchain.add_pending_transaction(transaction.clone()).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 374 |             let _ = blockchain.add_pending_transaction(transaction.clone()).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/multinode.rs:544:13
[INFO] [stdout]     |
[INFO] [stdout] 544 |             blockchain.add_pending_transaction(transaction.clone()).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 544 |             let _ = blockchain.add_pending_transaction(transaction.clone()).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 47s
[INFO] running `Command { std: "docker" "inspect" "ab2d5917994aad65443b3d4471d7fcf6fb08219566dea1e8d55e1240e656a4b9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ab2d5917994aad65443b3d4471d7fcf6fb08219566dea1e8d55e1240e656a4b9", kill_on_drop: false }`
[INFO] [stdout] ab2d5917994aad65443b3d4471d7fcf6fb08219566dea1e8d55e1240e656a4b9
