[INFO] cloning repository https://github.com/Wasongiwi/BlockChain_in_Rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Wasongiwi/BlockChain_in_Rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWasongiwi%2FBlockChain_in_Rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWasongiwi%2FBlockChain_in_Rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b238db64a4ec678f19d65ccd39d4034f49940c61 [INFO] checking Wasongiwi/BlockChain_in_Rust against try#0de49ae9e81f9a1e7df6f0783824ce94ed18e8a9 for pr-147185 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWasongiwi%2FBlockChain_in_Rust" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Wasongiwi/BlockChain_in_Rust [INFO] finished tweaking git repo https://github.com/Wasongiwi/BlockChain_in_Rust [INFO] tweaked toml for git repo https://github.com/Wasongiwi/BlockChain_in_Rust written to /workspace/builds/worker-6-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Wasongiwi/BlockChain_in_Rust on toolchain 0de49ae9e81f9a1e7df6f0783824ce94ed18e8a9 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0de49ae9e81f9a1e7df6f0783824ce94ed18e8a9" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/Wasongiwi/BlockChain_in_Rust 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" "+0de49ae9e81f9a1e7df6f0783824ce94ed18e8a9" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded keccak v0.1.5 [INFO] [stderr] Downloaded fs2 v0.4.3 [INFO] [stderr] Downloaded proc-macro2 v1.0.87 [INFO] [stderr] Downloaded num-iter v0.1.45 [INFO] [stderr] Downloaded num v0.4.3 [INFO] [stderr] Downloaded ripemd v0.1.3 [INFO] [stderr] Downloaded bs58 v0.5.1 [INFO] [stderr] Downloaded clap_derive v4.5.18 [INFO] [stderr] Downloaded serde_derive v1.0.210 [INFO] [stderr] Downloaded rust-base58 v0.0.4 [INFO] [stderr] Downloaded serde v1.0.210 [INFO] [stderr] Downloaded clap_builder v4.5.20 [INFO] [stderr] Downloaded cc v1.1.30 [INFO] [stderr] Downloaded syn v2.0.79 [INFO] [stderr] Downloaded sled v0.34.7 [INFO] [stderr] Downloaded libc v0.2.159 [INFO] [stderr] Downloaded sha3 v0.10.8 [INFO] [stderr] Downloaded clap v4.5.20 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+0de49ae9e81f9a1e7df6f0783824ce94ed18e8a9" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f13bf34f044e1433d44c31c2458426c3dcac4bd5b3c19dffe56defaf09a292fb [INFO] running `Command { std: "docker" "start" "-a" "f13bf34f044e1433d44c31c2458426c3dcac4bd5b3c19dffe56defaf09a292fb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f13bf34f044e1433d44c31c2458426c3dcac4bd5b3c19dffe56defaf09a292fb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f13bf34f044e1433d44c31c2458426c3dcac4bd5b3c19dffe56defaf09a292fb", kill_on_drop: false }` [INFO] [stdout] f13bf34f044e1433d44c31c2458426c3dcac4bd5b3c19dffe56defaf09a292fb [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+0de49ae9e81f9a1e7df6f0783824ce94ed18e8a9" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 369d5c9abc3c7f81f2da6c3caae5bd5087d9f1d0bb0c0922e5006878de93670d [INFO] running `Command { std: "docker" "start" "-a" "369d5c9abc3c7f81f2da6c3caae5bd5087d9f1d0bb0c0922e5006878de93670d", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.4.0 [INFO] [stderr] Compiling proc-macro2 v1.0.87 [INFO] [stderr] Compiling unicode-ident v1.0.13 [INFO] [stderr] Compiling libc v0.2.159 [INFO] [stderr] Compiling typenum v1.17.0 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Compiling crossbeam-utils v0.8.20 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Checking utf8parse v0.2.2 [INFO] [stderr] Compiling parking_lot_core v0.8.6 [INFO] [stderr] Checking instant v0.1.13 [INFO] [stderr] Checking anstyle-query v1.1.1 [INFO] [stderr] Checking is_terminal_polyfill v1.70.1 [INFO] [stderr] Compiling serde v1.0.210 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Checking scopeguard v1.2.0 [INFO] [stderr] Checking anstyle v1.0.8 [INFO] [stderr] Checking colorchoice v1.0.2 [INFO] [stderr] Checking anstyle-parse v0.2.5 [INFO] [stderr] Checking strsim v0.11.1 [INFO] [stderr] Checking clap_lex v0.7.2 [INFO] [stderr] Compiling cc v1.1.30 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Checking crc32fast v1.4.2 [INFO] [stderr] Checking untrusted v0.7.1 [INFO] [stderr] Checking keccak v0.1.5 [INFO] [stderr] Checking fxhash v0.2.1 [INFO] [stderr] Checking anstream v0.6.15 [INFO] [stderr] Checking spin v0.5.2 [INFO] [stderr] Checking once_cell v1.20.2 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Checking bs58 v0.5.1 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Checking hex v0.4.3 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Checking clap_builder v4.5.20 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Compiling syn v2.0.79 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking fs2 v0.4.3 [INFO] [stderr] Compiling ring v0.16.20 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking parking_lot v0.11.2 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking sled v0.34.7 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking sha3 v0.10.8 [INFO] [stderr] Checking ripemd v0.1.3 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking num v0.4.3 [INFO] [stderr] Checking rust-base58 v0.0.4 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling serde_derive v1.0.210 [INFO] [stderr] Compiling clap_derive v4.5.18 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking ppv-lite86 v0.2.20 [INFO] [stderr] Checking clap v4.5.20 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking Blockchain_in_Rust v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `Sha3_256` [INFO] [stdout] --> src/block.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | use sha3::{Sha3_256, Digest}; [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: `sled::transaction` [INFO] [stdout] --> src/block.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use sled::transaction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `result` [INFO] [stdout] --> src/block.rs:3:11 [INFO] [stdout] | [INFO] [stdout] 3 | use std::{result, time::{SystemTime, UNIX_EPOCH}}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::functions` [INFO] [stdout] --> src/block_chain.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::functions; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::clone` [INFO] [stdout] --> src/block_chain.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::clone; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TXOutput` [INFO] [stdout] --> src/block_chain.rs:6:40 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::transactions::{Transaction, TXOutput, TXOutputs}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `IVec` and `transaction` [INFO] [stdout] --> src/block_chain.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | use sled::{transaction, Db, IVec}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Deserialize` [INFO] [stdout] --> src/block_chain.rs:9:24 [INFO] [stdout] | [INFO] [stdout] 9 | use serde::{Serialize, Deserialize}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `num_traits::Zero` [INFO] [stdout] --> src/proof_of_work.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use num_traits::Zero; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `deserialize` and `serialize` [INFO] [stdout] --> src/proof_of_work.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | use bincode::{serialize, deserialize}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/proof_of_work.rs:21:20 [INFO] [stdout] | [INFO] [stdout] 21 | target <<= (256 - TARGET_BITS); // 左移以设置目标 [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 21 - target <<= (256 - TARGET_BITS); // 左移以设置目标 [INFO] [stdout] 21 + target <<= 256 - TARGET_BITS ; // 左移以设置目标 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::block::Block` [INFO] [stdout] --> src/Interface.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::block::Block; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Wallet` and `self` [INFO] [stdout] --> src/Interface.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::wallet::{self, Wallet, Wallets}; [INFO] [stdout] | ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::DB_FILE` [INFO] [stdout] --> src/Interface.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::DB_FILE; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sled::Db` [INFO] [stdout] --> src/Interface.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use sled::Db; // 引入 sled 数据库 [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Debug` and `self` [INFO] [stdout] --> src/Interface.rs:9:16 [INFO] [stdout] | [INFO] [stdout] 9 | use std::fmt::{self, Debug}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self` [INFO] [stdout] --> src/Interface.rs:13:24 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::functions::{self, validate_address}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Signature` and `self` [INFO] [stdout] --> src/transactions.rs:6:43 [INFO] [stdout] | [INFO] [stdout] 6 | use ring::{rand as ring_rand, signature::{self, EcdsaKeyPair, UnparsedPublicKey, Signature, ECDSA_P256_SHA256_ASN1}}; [INFO] [stdout] | ^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde::ser::SerializeTuple` [INFO] [stdout] --> src/transactions.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use serde::ser::SerializeTuple; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FromBase58`, `ToBase58`, and `base58` [INFO] [stdout] --> src/transactions.rs:12:19 [INFO] [stdout] | [INFO] [stdout] 12 | use rust_base58::{base58, ToBase58, FromBase58}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `EcdsaSigningAlgorithm`, `agreement::PublicKey`, and `self` [INFO] [stdout] --> src/wallet.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | use ring::{agreement::PublicKey, rand as ring_rand, signature::{self, EcdsaKeyPair, EcdsaSigningAlgorithm, KeyPair}}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `File` and `self` [INFO] [stdout] --> src/wallet.rs:2:15 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fs::{self, File}; [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Read`, `Write`, and `self` [INFO] [stdout] --> src/wallet.rs:3:15 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::{self, Write, Read}; [INFO] [stdout] | ^^^^ ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/wallet.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize` [INFO] [stdout] --> src/wallet.rs:5:13 [INFO] [stdout] | [INFO] [stdout] 5 | use serde::{Serialize, Deserialize}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FromBase58` and `base58` [INFO] [stdout] --> src/wallet.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | use rust_base58::{base58, ToBase58, FromBase58}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `clone` [INFO] [stdout] --> src/wallet.rs:9:11 [INFO] [stdout] | [INFO] [stdout] 9 | use std::{clone, collections::HashMap}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::DB_FILE` [INFO] [stdout] --> src/wallet.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::DB_FILE; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ToBase58` and `base58` [INFO] [stdout] --> src/functions.rs:3:19 [INFO] [stdout] | [INFO] [stdout] 3 | use rust_base58::{base58, ToBase58, FromBase58}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::functions` [INFO] [stdout] --> src/functions.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::functions; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sled::Db` [INFO] [stdout] --> src/UTXOset.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sled::Db; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::DB_FILE` [INFO] [stdout] --> src/UTXOset.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::DB_FILE; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/UTXOset.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `hex` [INFO] [stdout] --> src/UTXOset.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use hex; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TXInput` [INFO] [stdout] --> src/UTXOset.rs:10:27 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::transactions::{TXInput, TXOutput, TXOutputs}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Sha3_256` [INFO] [stdout] --> src/block.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | use sha3::{Sha3_256, Digest}; [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: `sled::transaction` [INFO] [stdout] --> src/block.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use sled::transaction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `result` [INFO] [stdout] --> src/block.rs:3:11 [INFO] [stdout] | [INFO] [stdout] 3 | use std::{result, time::{SystemTime, UNIX_EPOCH}}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::functions` [INFO] [stdout] --> src/block_chain.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::functions; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::clone` [INFO] [stdout] --> src/block_chain.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::clone; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TXOutput` [INFO] [stdout] --> src/block_chain.rs:6:40 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::transactions::{Transaction, TXOutput, TXOutputs}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `IVec` and `transaction` [INFO] [stdout] --> src/block_chain.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | use sled::{transaction, Db, IVec}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Deserialize` [INFO] [stdout] --> src/block_chain.rs:9:24 [INFO] [stdout] | [INFO] [stdout] 9 | use serde::{Serialize, Deserialize}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `num_traits::Zero` [INFO] [stdout] --> src/proof_of_work.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use num_traits::Zero; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `deserialize` and `serialize` [INFO] [stdout] --> src/proof_of_work.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | use bincode::{serialize, deserialize}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/proof_of_work.rs:21:20 [INFO] [stdout] | [INFO] [stdout] 21 | target <<= (256 - TARGET_BITS); // 左移以设置目标 [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 21 - target <<= (256 - TARGET_BITS); // 左移以设置目标 [INFO] [stdout] 21 + target <<= 256 - TARGET_BITS ; // 左移以设置目标 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::block::Block` [INFO] [stdout] --> src/Interface.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::block::Block; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Wallet` and `self` [INFO] [stdout] --> src/Interface.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::wallet::{self, Wallet, Wallets}; [INFO] [stdout] | ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::DB_FILE` [INFO] [stdout] --> src/Interface.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::DB_FILE; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sled::Db` [INFO] [stdout] --> src/Interface.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use sled::Db; // 引入 sled 数据库 [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Debug` and `self` [INFO] [stdout] --> src/Interface.rs:9:16 [INFO] [stdout] | [INFO] [stdout] 9 | use std::fmt::{self, Debug}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self` [INFO] [stdout] --> src/Interface.rs:13:24 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::functions::{self, validate_address}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Signature` and `self` [INFO] [stdout] --> src/transactions.rs:6:43 [INFO] [stdout] | [INFO] [stdout] 6 | use ring::{rand as ring_rand, signature::{self, EcdsaKeyPair, UnparsedPublicKey, Signature, ECDSA_P256_SHA256_ASN1}}; [INFO] [stdout] | ^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde::ser::SerializeTuple` [INFO] [stdout] --> src/transactions.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use serde::ser::SerializeTuple; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FromBase58`, `ToBase58`, and `base58` [INFO] [stdout] --> src/transactions.rs:12:19 [INFO] [stdout] | [INFO] [stdout] 12 | use rust_base58::{base58, ToBase58, FromBase58}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `EcdsaSigningAlgorithm`, `agreement::PublicKey`, and `self` [INFO] [stdout] --> src/wallet.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | use ring::{agreement::PublicKey, rand as ring_rand, signature::{self, EcdsaKeyPair, EcdsaSigningAlgorithm, KeyPair}}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `File` and `self` [INFO] [stdout] --> src/wallet.rs:2:15 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fs::{self, File}; [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Read`, `Write`, and `self` [INFO] [stdout] --> src/wallet.rs:3:15 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::{self, Write, Read}; [INFO] [stdout] | ^^^^ ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/wallet.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize` [INFO] [stdout] --> src/wallet.rs:5:13 [INFO] [stdout] | [INFO] [stdout] 5 | use serde::{Serialize, Deserialize}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FromBase58` and `base58` [INFO] [stdout] --> src/wallet.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | use rust_base58::{base58, ToBase58, FromBase58}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `clone` [INFO] [stdout] --> src/wallet.rs:9:11 [INFO] [stdout] | [INFO] [stdout] 9 | use std::{clone, collections::HashMap}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::DB_FILE` [INFO] [stdout] --> src/wallet.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::DB_FILE; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ToBase58` and `base58` [INFO] [stdout] --> src/functions.rs:3:19 [INFO] [stdout] | [INFO] [stdout] 3 | use rust_base58::{base58, ToBase58, FromBase58}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::functions` [INFO] [stdout] --> src/functions.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::functions; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sled::Db` [INFO] [stdout] --> src/UTXOset.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sled::Db; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::DB_FILE` [INFO] [stdout] --> src/UTXOset.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::DB_FILE; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/UTXOset.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `hex` [INFO] [stdout] --> src/UTXOset.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use hex; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TXInput` [INFO] [stdout] --> src/UTXOset.rs:10:27 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::transactions::{TXInput, TXOutput, TXOutputs}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Digest` [INFO] [stdout] --> src/block.rs:1:22 [INFO] [stdout] | [INFO] [stdout] 1 | use sha3::{Sha3_256, Digest}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/block_chain.rs:9:13 [INFO] [stdout] | [INFO] [stdout] 9 | use serde::{Serialize, Deserialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tip` is never read [INFO] [stdout] --> src/block_chain.rs:22:17 [INFO] [stdout] | [INFO] [stdout] 22 | let mut tip = vec![]; [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `hash_int` is never read [INFO] [stdout] --> src/proof_of_work.rs:38:17 [INFO] [stdout] | [INFO] [stdout] 38 | let mut hash_int = BigUint::default(); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `hash_int` is never read [INFO] [stdout] --> src/proof_of_work.rs:63:17 [INFO] [stdout] | [INFO] [stdout] 63 | let mut hash_int = BigUint::default(); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Digest` [INFO] [stdout] --> src/block.rs:1:22 [INFO] [stdout] | [INFO] [stdout] 1 | use sha3::{Sha3_256, Digest}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/block_chain.rs:9:13 [INFO] [stdout] | [INFO] [stdout] 9 | use serde::{Serialize, Deserialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/UTXOset.rs:31:37 [INFO] [stdout] | [INFO] [stdout] 31 | ... Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/UTXOset.rs:66:24 [INFO] [stdout] | [INFO] [stdout] 66 | if let Ok((key, value)) = result { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tip` is never read [INFO] [stdout] --> src/block_chain.rs:22:17 [INFO] [stdout] | [INFO] [stdout] 22 | let mut tip = vec![]; [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VERSION` is never used [INFO] [stdout] --> src/lib.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const VERSION: u8 = 0; // 假设版本号为 0 [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `hash_transactions` is never used [INFO] [stdout] --> src/block.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 20 | impl Block { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] 21 | fn hash_transactions(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `version`, `prev_block_hash`, `merkle_root`, `timestamp`, `bits`, and `nonce` are never read [INFO] [stdout] --> src/block_header.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub struct BlockHeader { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 3 | // Version of the block (4 bytes) [INFO] [stdout] 4 | version: u32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 5 | // Hash of the previous block (32 bytes) [INFO] [stdout] 6 | prev_block_hash: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 7 | // Merkle root (32 bytes) [INFO] [stdout] 8 | merkle_root: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 9 | // Timestamp of the block (8 bytes) [INFO] [stdout] 10 | timestamp: u64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 11 | // Difficulty target (4 bytes) [INFO] [stdout] 12 | bits: u32, [INFO] [stdout] | ^^^^ [INFO] [stdout] 13 | // Nonce (8 bytes) [INFO] [stdout] 14 | nonce: u64, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BlockHeader` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_outputs` is never used [INFO] [stdout] --> src/transactions.rs:295:4 [INFO] [stdout] | [INFO] [stdout] 295 | fn deserialize_outputs(data: &[u8]) -> TXOutputs { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ADDRESS_CHECKSUM_LEN` is never used [INFO] [stdout] --> src/wallet.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const ADDRESS_CHECKSUM_LEN: usize = 4; // 假设地址校验和的长度为 4 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `Interface` should have a snake case name [INFO] [stdout] --> src/lib.rs:6:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub mod Interface; [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `interface` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `UTXOset` should have a snake case name [INFO] [stdout] --> src/lib.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub mod UTXOset; [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `utxoset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `NewGenesisBlock` should have a snake case name [INFO] [stdout] --> src/block_chain.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn NewGenesisBlock(coinbase: Transaction) -> Block { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `new_genesis_block` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `MineBlock` should have a snake case name [INFO] [stdout] --> src/block_chain.rs:45:12 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn MineBlock(&mut self, transactions: Vec) -> Block { [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `mine_block` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/block_chain.rs:78:21 [INFO] [stdout] | [INFO] [stdout] 78 | pub fn iterator(&self) -> BlockchainIterator { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 78 | pub fn iterator(&self) -> BlockchainIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `cbTX` should have a snake case name [INFO] [stdout] --> src/Interface.rs:155:17 [INFO] [stdout] | [INFO] [stdout] 155 | let cbTX = Transaction::new_coinbase_transcation(from, &String::from("Reward")); [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `cb_tx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `Signature` should have a snake case name [INFO] [stdout] --> src/transactions.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | pub Signature: Vec, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `signature` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `PubKey` should have a snake case name [INFO] [stdout] --> src/transactions.rs:31:6 [INFO] [stdout] | [INFO] [stdout] 31 | pub PubKey: Vec, [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `pub_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `PubKeyHash` should have a snake case name [INFO] [stdout] --> src/transactions.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | pub PubKeyHash:Vec, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `pub_key_hash` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `hash_int` is never read [INFO] [stdout] --> src/proof_of_work.rs:38:17 [INFO] [stdout] | [INFO] [stdout] 38 | let mut hash_int = BigUint::default(); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `newTXOutput` should have a snake case name [INFO] [stdout] --> src/transactions.rs:75:12 [INFO] [stdout] | [INFO] [stdout] 75 | pub fn newTXOutput(value: i32, address: &String) -> TXOutput { [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `new_txoutput` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `UTXOSet` should have a snake case name [INFO] [stdout] --> src/transactions.rs:138:13 [INFO] [stdout] | [INFO] [stdout] 138 | UTXOSet: &UTXOSet [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `utxoset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publicKey_to_hash` should have a snake case name [INFO] [stdout] --> src/functions.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn publicKey_to_hash(public_key: &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `public_key_to_hash` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `queryPubHash_from_address` should have a snake case name [INFO] [stdout] --> src/UTXOset.rs:62:13 [INFO] [stdout] | [INFO] [stdout] 62 | let queryPubHash_from_address = functions::address_to_pubkeyhash(address); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `query_pub_hash_from_address` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `hash_int` is never read [INFO] [stdout] --> src/proof_of_work.rs:63:17 [INFO] [stdout] | [INFO] [stdout] 63 | let mut hash_int = BigUint::default(); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/UTXOset.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | db.drop_tree(bucket_name); [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] 126 | let _ = db.drop_tree(bucket_name); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/UTXOset.rs:31:37 [INFO] [stdout] | [INFO] [stdout] 31 | ... Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/UTXOset.rs:66:24 [INFO] [stdout] | [INFO] [stdout] 66 | if let Ok((key, value)) = result { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VERSION` is never used [INFO] [stdout] --> src/lib.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const VERSION: u8 = 0; // 假设版本号为 0 [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `hash_transactions` is never used [INFO] [stdout] --> src/block.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 20 | impl Block { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] 21 | fn hash_transactions(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `version`, `prev_block_hash`, `merkle_root`, `timestamp`, `bits`, and `nonce` are never read [INFO] [stdout] --> src/block_header.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub struct BlockHeader { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 3 | // Version of the block (4 bytes) [INFO] [stdout] 4 | version: u32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 5 | // Hash of the previous block (32 bytes) [INFO] [stdout] 6 | prev_block_hash: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 7 | // Merkle root (32 bytes) [INFO] [stdout] 8 | merkle_root: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 9 | // Timestamp of the block (8 bytes) [INFO] [stdout] 10 | timestamp: u64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 11 | // Difficulty target (4 bytes) [INFO] [stdout] 12 | bits: u32, [INFO] [stdout] | ^^^^ [INFO] [stdout] 13 | // Nonce (8 bytes) [INFO] [stdout] 14 | nonce: u64, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BlockHeader` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_outputs` is never used [INFO] [stdout] --> src/transactions.rs:295:4 [INFO] [stdout] | [INFO] [stdout] 295 | fn deserialize_outputs(data: &[u8]) -> TXOutputs { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ADDRESS_CHECKSUM_LEN` is never used [INFO] [stdout] --> src/wallet.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const ADDRESS_CHECKSUM_LEN: usize = 4; // 假设地址校验和的长度为 4 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: crate `Blockchain_in_Rust` should have a snake case name [INFO] [stdout] | [INFO] [stdout] = help: convert the identifier to snake case: `blockchain_in_rust` [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `Interface` should have a snake case name [INFO] [stdout] --> src/lib.rs:6:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub mod Interface; [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `interface` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `UTXOset` should have a snake case name [INFO] [stdout] --> src/lib.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub mod UTXOset; [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `utxoset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `NewGenesisBlock` should have a snake case name [INFO] [stdout] --> src/block_chain.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn NewGenesisBlock(coinbase: Transaction) -> Block { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `new_genesis_block` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `MineBlock` should have a snake case name [INFO] [stdout] --> src/block_chain.rs:45:12 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn MineBlock(&mut self, transactions: Vec) -> Block { [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `mine_block` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/block_chain.rs:78:21 [INFO] [stdout] | [INFO] [stdout] 78 | pub fn iterator(&self) -> BlockchainIterator { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 78 | pub fn iterator(&self) -> BlockchainIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `cbTX` should have a snake case name [INFO] [stdout] --> src/Interface.rs:155:17 [INFO] [stdout] | [INFO] [stdout] 155 | let cbTX = Transaction::new_coinbase_transcation(from, &String::from("Reward")); [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `cb_tx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `Signature` should have a snake case name [INFO] [stdout] --> src/transactions.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | pub Signature: Vec, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `signature` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `PubKey` should have a snake case name [INFO] [stdout] --> src/transactions.rs:31:6 [INFO] [stdout] | [INFO] [stdout] 31 | pub PubKey: Vec, [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `pub_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `PubKeyHash` should have a snake case name [INFO] [stdout] --> src/transactions.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | pub PubKeyHash:Vec, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `pub_key_hash` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `newTXOutput` should have a snake case name [INFO] [stdout] --> src/transactions.rs:75:12 [INFO] [stdout] | [INFO] [stdout] 75 | pub fn newTXOutput(value: i32, address: &String) -> TXOutput { [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `new_txoutput` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `UTXOSet` should have a snake case name [INFO] [stdout] --> src/transactions.rs:138:13 [INFO] [stdout] | [INFO] [stdout] 138 | UTXOSet: &UTXOSet [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `utxoset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publicKey_to_hash` should have a snake case name [INFO] [stdout] --> src/functions.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn publicKey_to_hash(public_key: &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `public_key_to_hash` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `queryPubHash_from_address` should have a snake case name [INFO] [stdout] --> src/UTXOset.rs:62:13 [INFO] [stdout] | [INFO] [stdout] 62 | let queryPubHash_from_address = functions::address_to_pubkeyhash(address); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `query_pub_hash_from_address` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/UTXOset.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | db.drop_tree(bucket_name); [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] 126 | let _ = db.drop_tree(bucket_name); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sled::Db` [INFO] [stdout] --> src/main.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sled::Db; // 引入 sled 数据库 [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: `Blockchain_in_Rust::DB_FILE` [INFO] [stdout] --> src/main.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use Blockchain_in_Rust::DB_FILE; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `block_chain::BlockChain` [INFO] [stdout] --> src/main.rs:3:42 [INFO] [stdout] | [INFO] [stdout] 3 | use Blockchain_in_Rust::{Interface::CLI, block_chain::BlockChain,block::Block}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_database_contents` is never used [INFO] [stdout] --> src/main.rs:5:4 [INFO] [stdout] | [INFO] [stdout] 5 | fn print_database_contents(file_db: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sled::Db` [INFO] [stdout] --> src/main.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sled::Db; // 引入 sled 数据库 [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.54s [INFO] [stdout] warning: unused import: `Blockchain_in_Rust::DB_FILE` [INFO] [stdout] --> src/main.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use Blockchain_in_Rust::DB_FILE; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `block_chain::BlockChain` [INFO] [stdout] --> src/main.rs:3:42 [INFO] [stdout] | [INFO] [stdout] 3 | use Blockchain_in_Rust::{Interface::CLI, block_chain::BlockChain,block::Block}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_database_contents` is never used [INFO] [stdout] --> src/main.rs:5:4 [INFO] [stdout] | [INFO] [stdout] 5 | fn print_database_contents(file_db: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "369d5c9abc3c7f81f2da6c3caae5bd5087d9f1d0bb0c0922e5006878de93670d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "369d5c9abc3c7f81f2da6c3caae5bd5087d9f1d0bb0c0922e5006878de93670d", kill_on_drop: false }` [INFO] [stdout] 369d5c9abc3c7f81f2da6c3caae5bd5087d9f1d0bb0c0922e5006878de93670d