diff --git a/Cargo.lock b/Cargo.lock index 8d00fe3..2b23860 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -73,11 +73,11 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ - "getrandom 0.2.3", + "cfg-if", "once_cell", "version_check", ] @@ -86,7 +86,7 @@ dependencies = [ name = "alfis" version = "0.8.4" dependencies = [ - "base64 0.20.0", + "base64 0.21.0", "bincode", "blakeout", "byteorder", @@ -113,14 +113,14 @@ dependencies = [ "serde_derive", "serde_json", "sha2 0.10.6", - "signature", + "signature 2.0.0", "simplelog", "spmc", "sqlite", "thread-priority", "time 0.3.14", "tinyfiledialogs", - "toml", + "toml 0.7.2", "ureq", "uuid", "web-view", @@ -164,9 +164,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea22880d78093b0cbe17c89f64a7d457941e65759157ec6cb31a31d652b05e5" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" [[package]] name = "bincode" @@ -470,7 +470,7 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4620d40f6d2601794401d6dd95a5cf69b6c157852539470eeda433a99b3c0efc" dependencies = [ - "signature", + "signature 1.6.0", ] [[package]] @@ -653,6 +653,12 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ "ahash", ] @@ -726,6 +732,16 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + [[package]] name = "itoa" version = "1.0.1" @@ -773,11 +789,11 @@ dependencies = [ [[package]] name = "lru" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" +checksum = "71e7d46de488603ffdd5f30afbc64fbba2378214a2c3a2fb83abf3d33126df17" dependencies = [ - "hashbrown", + "hashbrown 0.13.2", ] [[package]] @@ -786,6 +802,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + [[package]] name = "miniz_oxide" version = "0.4.4" @@ -939,11 +961,11 @@ checksum = "c3ca011bd0129ff4ae15cd04c4eef202cadf6c51c21e47aba319b4e0501db741" [[package]] name = "proc-macro2" -version = "1.0.38" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9027b48e9d4c9175fa2218adf3557f91c1137021739951d4932f5f8268ac48aa" +checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -1086,9 +1108,9 @@ checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" [[package]] name = "serde" -version = "1.0.144" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" dependencies = [ "serde_derive", ] @@ -1114,9 +1136,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.144" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -1134,6 +1156,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" +dependencies = [ + "serde", +] + [[package]] name = "sha2" version = "0.9.8" @@ -1164,6 +1195,12 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0ea32af43239f0d353a7dd75a22d94c329c8cdaafdcb4c1c1335aa10c298a4a" +[[package]] +name = "signature" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fe458c98333f9c8152221191a77e2a44e8325d0193484af2e9421a53019e57d" + [[package]] name = "simplelog" version = "0.12.0" @@ -1258,13 +1295,13 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.93" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04066589568b72ec65f42d65a1a52436e954b168773148893c020269563decf2" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -1290,7 +1327,7 @@ dependencies = [ "strum", "strum_macros", "thiserror", - "toml", + "toml 0.5.9", "version-compare", ] @@ -1398,6 +1435,40 @@ dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7afcae9e3f0fe2c370fd4657108972cbb2fa9db1b9f84849cefd80741b01cb6" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a1eb0622d28f4b9c90adc4ea4b2b46b47663fde9ac5fafcb14a1369d5508825" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + [[package]] name = "typenum" version = "1.14.0" @@ -1410,6 +1481,12 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +[[package]] +name = "unicode-ident" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" + [[package]] name = "unicode-normalization" version = "0.1.19" @@ -1490,9 +1567,9 @@ checksum = "5a1f0175e03a0973cf4afd476bef05c26e228520400eb1fd473ad417b1c00ffb" [[package]] name = "uuid" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb41e78f93363bb2df8b0e86a2ca30eed7806ea16ea0c790d757cf93f79be83" +checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" dependencies = [ "getrandom 0.2.3", "serde", @@ -1506,9 +1583,9 @@ checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasi" @@ -1792,13 +1869,22 @@ version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +[[package]] +name = "winnow" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf09497b8f8b5ac5d3bb4d05c0a99be20f26fd3d5f2db7b0716e946d5103658" +dependencies = [ + "memchr", +] + [[package]] name = "winres" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c" dependencies = [ - "toml", + "toml 0.5.9", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index beabfc7..6e9055c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,14 +14,14 @@ exclude = ["blockchain.db", "alfis.toml"] getopts = "0.2.21" log = "0.4.17" simplelog = "0.12.0" -toml = "0.5.9" +toml = "0.7.2" digest = "0.10.5" sha2 = "0.10.6" ed25519-dalek = "1.0" x25519-dalek = "1.2" ecies-ed25519 = "0.5" chacha20poly1305 = "0.9.1" -signature = "1.6" +signature = "2.0.0" blakeout = "0.3.0" num_cpus = "1.13.1" byteorder = "1.4.3" @@ -29,7 +29,7 @@ serde = { version = "1.0.144", features = ["derive"] } serde_json = "1.0.85" bincode = "1.3.3" serde_cbor = "0.11.2" -base64 = "0.20.0" +base64 = "0.21.0" num-bigint = "0.4.3" num-traits = "0.2.15" chrono = { version = "0.4.20", features = ["serde"] } @@ -37,10 +37,10 @@ time = "0.3.14" rand = { version = "0.8.5", package = "rand" } rand-old = { package = "rand", version = "0.7.0" } # For ed25519-dalek sqlite = "0.26.0" -uuid = { version = "1.2.1", features = ["serde", "v4"] } +uuid = { version = "1.3.0", features = ["serde", "v4"] } mio = { version = "0.8.5", features = ["os-poll", "net"] } ureq = { version = "2.5", optional = true } -lru = "0.8.1" +lru = "0.9.0" derive_more = "0.99.17" lazy_static = "1.4.0" spmc = "0.3.0" diff --git a/src/blockchain/hash_utils.rs b/src/blockchain/hash_utils.rs index 8c73a92..b3f920a 100644 --- a/src/blockchain/hash_utils.rs +++ b/src/blockchain/hash_utils.rs @@ -86,7 +86,7 @@ pub fn key_hash_difficulty(hash: &[u8]) -> u32 { #[inline] pub fn hash_sha256(data: &[u8]) -> Vec { let mut digest = Sha256::default(); - digest.update(data.as_ref()); + digest.update(data); Vec::from(&digest.finalize()[..]) } diff --git a/src/keystore.rs b/src/keystore.rs index 743c49b..cac1678 100644 --- a/src/keystore.rs +++ b/src/keystore.rs @@ -72,7 +72,7 @@ impl Keystore { let path = Path::new(filename); match fs::read(&path) { Ok(key) => { - match toml::from_slice::(key.as_slice()) { + match toml::from_str::(&String::from_utf8(key).unwrap_or_default()) { Ok(keys) => { let secret = SecretKey::from_bytes(&from_hex(&keys.signing.secret).unwrap()).unwrap(); let public = PublicKey::from_bytes(&from_hex(&keys.signing.public).unwrap()).unwrap(); diff --git a/src/p2p/network.rs b/src/p2p/network.rs index 858c6e0..cc34111 100644 --- a/src/p2p/network.rs +++ b/src/p2p/network.rs @@ -431,7 +431,7 @@ impl Network { } State::Idle { from } => { debug!("Odd version of pings for {}", peer.get_addr().ip()); - if from.elapsed().as_secs() >= 30 { + if from.elapsed().as_secs() >= 120 { let data: Vec = { let c = self.context.lock().unwrap(); let message = Message::ping(c.chain.get_height(), c.chain.get_last_hash()); @@ -542,7 +542,7 @@ impl Network { if peer.is_higher(my_height) { let mut context = self.context.lock().unwrap(); context.chain.update_max_height(height); - info!("Peer is higher, requesting block {} from {}", height, peer.get_addr().ip()); + info!("Peer is higher, requesting block {} from {}", my_height + 1, peer.get_addr().ip()); State::message(Message::GetBlock { index: my_height + 1 }) } else if my_height == height && hash.ne(&my_hash) { info!("Hashes are different, requesting block {} from {}", my_height, peer.get_addr().ip()); @@ -563,7 +563,7 @@ impl Network { if peer.is_higher(my_height) { let mut context = self.context.lock().unwrap(); context.chain.update_max_height(height); - info!("Peer is higher, requesting block {} from {}", height, peer.get_addr().ip()); + info!("Peer is higher, requesting block {} from {}", my_height + 1, peer.get_addr().ip()); State::message(Message::GetBlock { index: my_height + 1 }) } else if my_height == height && hash.ne(&my_hash) { info!("Hashes are different, requesting block {} from {}", my_height, peer.get_addr().ip());