From 6fc046a2ad99cbe425e0b7e76e3269ab6c604f86 Mon Sep 17 00:00:00 2001 From: Valentin <77051586+vkgnosis@users.noreply.github.com> Date: Mon, 10 Jul 2023 17:07:59 +0200 Subject: [PATCH] Update dependencies (#934) Went through all outdated dependencies and updated them. --- ethcontract-common/Cargo.toml | 4 ++-- ethcontract-derive/Cargo.toml | 2 +- ethcontract-derive/src/lib.rs | 15 +++++++-------- ethcontract-generate/Cargo.toml | 2 +- ethcontract-mock/Cargo.toml | 2 +- ethcontract/Cargo.toml | 8 ++++---- ethcontract/src/contract/method.rs | 4 ++-- ethcontract/src/errors/revert.rs | 2 +- ethcontract/src/log.rs | 19 ++++++++++++++++++- ethcontract/src/secret.rs | 11 ++++++++--- 10 files changed, 45 insertions(+), 24 deletions(-) diff --git a/ethcontract-common/Cargo.toml b/ethcontract-common/Cargo.toml index 91374bce..8b24f434 100644 --- a/ethcontract-common/Cargo.toml +++ b/ethcontract-common/Cargo.toml @@ -12,11 +12,11 @@ Common types for ethcontract-rs runtime and proc macro. """ [dependencies] -ethabi = "16.0" +ethabi = "18.0" hex = "0.4" serde = "1.0" serde_derive = "1.0" serde_json = "1.0" thiserror = "1.0" tiny-keccak = { version = "2.0", features = ["keccak"] } -web3 = { version = "0.18", default-features = false } +web3 = { version = "0.19", default-features = false } diff --git a/ethcontract-derive/Cargo.toml b/ethcontract-derive/Cargo.toml index 7867db38..2ba53982 100644 --- a/ethcontract-derive/Cargo.toml +++ b/ethcontract-derive/Cargo.toml @@ -24,4 +24,4 @@ ethcontract-common = { version = "0.24.0", path = "../ethcontract-common" } ethcontract-generate = { version = "0.24.0", path = "../ethcontract-generate", default-features = false } proc-macro2 = "1.0" quote = "1.0" -syn = "1.0.12" +syn = "2.0" diff --git a/ethcontract-derive/src/lib.rs b/ethcontract-derive/src/lib.rs index e69b26bb..ff6d6a88 100644 --- a/ethcontract-derive/src/lib.rs +++ b/ethcontract-derive/src/lib.rs @@ -324,7 +324,7 @@ impl ParseInner for ContractArgs { input.parse::()?; } let parameters = input - .parse_terminated::<_, Token![,]>(Parameter::parse)? + .parse_terminated(Parameter::parse, Token![,])? .into_iter() .collect(); @@ -404,7 +404,7 @@ impl Parse for Parameter { braced!(content in input); let deployments = { let parsed = - content.parse_terminated::<_, Token![,]>(Spanned::::parse)?; + content.parse_terminated(Spanned::::parse, Token![,])?; let mut deployments = Vec::with_capacity(parsed.len()); let mut networks = HashSet::new(); @@ -427,8 +427,7 @@ impl Parse for Parameter { let content; braced!(content in input); let methods = { - let parsed = - content.parse_terminated::<_, Token![;]>(Spanned::::parse)?; + let parsed = content.parse_terminated(Spanned::::parse, Token![;])?; let mut methods = Vec::with_capacity(parsed.len()); let mut signatures = HashSet::new(); @@ -458,7 +457,7 @@ impl Parse for Parameter { let content; parenthesized!(content in input); let derives = content - .parse_terminated::<_, Token![,]>(Path::parse)? + .parse_terminated(Path::parse, Token![,])? .into_iter() .map(|path| path.to_token_stream().to_string()) .collect(); @@ -514,7 +513,7 @@ impl Parse for Method { let content; parenthesized!(content in input); let inputs = content - .parse_terminated::<_, Token![,]>(Ident::parse)? + .parse_terminated(Ident::parse, Token![,])? .iter() .map(|ident| { let kind = ParamType::from_str(&ident.to_string()) @@ -535,7 +534,7 @@ impl Parse for Method { // NOTE: The output types and const-ness of the function do not // affect its signature. outputs: vec![], - constant: false, + constant: None, state_mutability: Default::default(), } }; @@ -728,7 +727,7 @@ mod tests { contract_args_err!( "artifact.json", methods { - myMethod(invalid) as my_method; + myMethod(invalid invalid) as my_method; } ); } diff --git a/ethcontract-generate/Cargo.toml b/ethcontract-generate/Cargo.toml index 7a25ddd5..b9b273a3 100644 --- a/ethcontract-generate/Cargo.toml +++ b/ethcontract-generate/Cargo.toml @@ -22,5 +22,5 @@ ethcontract-common = { version = "0.24.0", path = "../ethcontract-common" } Inflector = "0.11" proc-macro2 = "1.0" quote = "1.0" -syn = "1.0.12" +syn = "2.0" url = "2.1" diff --git a/ethcontract-mock/Cargo.toml b/ethcontract-mock/Cargo.toml index 2eeb4e5f..206f6037 100644 --- a/ethcontract-mock/Cargo.toml +++ b/ethcontract-mock/Cargo.toml @@ -16,7 +16,7 @@ ethcontract = { version = "0.24.0", path = "../ethcontract", default-features = hex = "0.4" mockall = "0.11" rlp = "0.5" -predicates = "2.0" +predicates = "3.0" [dev-dependencies] tokio = { version = "1.6", features = ["macros", "rt"] } diff --git a/ethcontract/Cargo.toml b/ethcontract/Cargo.toml index 6d8af8c4..fc6f37e4 100644 --- a/ethcontract/Cargo.toml +++ b/ethcontract/Cargo.toml @@ -42,16 +42,16 @@ futures-timer = "3.0" hex = "0.4" jsonrpc-core = "18.0" lazy_static = "1.4" -primitive-types = { version = "0.10", features = ["fp-conversion"] } +primitive-types = { version = "0.12", features = ["fp-conversion"] } rlp = { version = "0.5", default-features = false, optional = true } -secp256k1 = { version = "0.21", features = ["recovery"] } +secp256k1 = { version = "0.27", features = ["recovery"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" thiserror = "1.0" uint = "0.9" -web3 = { version = "0.18", default-features = false, features = ["signing"] } +web3 = { version = "0.19", default-features = false, features = ["signing"] } zeroize = "1.1" [dev-dependencies] -hex-literal = "0.3" +hex-literal = "0.4" tokio = { version = "1.6", features = ["macros"] } diff --git a/ethcontract/src/contract/method.rs b/ethcontract/src/contract/method.rs index 7baad30f..141551e9 100644 --- a/ethcontract/src/contract/method.rs +++ b/ethcontract/src/contract/method.rs @@ -45,7 +45,7 @@ impl MethodBuilder { name: "fallback".into(), inputs: vec![], outputs: vec![], - constant: false, + constant: None, state_mutability: Default::default(), }; MethodBuilder::new(web3, function, address, data) @@ -313,7 +313,7 @@ mod tests { kind: ParamType::Uint(256), internal_type: None, }], - constant: false, + constant: None, state_mutability: Default::default(), }; let data = function diff --git a/ethcontract/src/errors/revert.rs b/ethcontract/src/errors/revert.rs index 2c905b5c..3312b97f 100644 --- a/ethcontract/src/errors/revert.rs +++ b/ethcontract/src/errors/revert.rs @@ -49,7 +49,7 @@ mod tests { internal_type: None, }], outputs: Vec::new(), - constant: true, + constant: None, state_mutability: Default::default(), }; revert diff --git a/ethcontract/src/log.rs b/ethcontract/src/log.rs index 1b5646d2..30798952 100644 --- a/ethcontract/src/log.rs +++ b/ethcontract/src/log.rs @@ -8,7 +8,8 @@ use futures::stream::{self, Stream, TryStreamExt}; use std::num::NonZeroU64; use std::time::Duration; use web3::api::Web3; -use web3::types::{Address, BlockNumber, Filter, FilterBuilder, Log, H256}; +use web3::error::Error as Web3Error; +use web3::types::{Address, BlockId, BlockNumber, Filter, FilterBuilder, Log, H256}; use web3::Transport; /// The default poll interval to use for polling logs from the block chain. @@ -246,6 +247,20 @@ enum PastLogsStream { Querying(Web3, Filter), } +async fn block_number( + web3: &Web3, + block: BlockNumber, +) -> Result, Web3Error> { + if let BlockNumber::Number(number) = block { + return Ok(Some(number.as_u64())); + } + let block_ = web3.eth().block(BlockId::Number(block)).await?; + let Some(block_) = block_ else { + return Err(Web3Error::InvalidResponse(format!("block {block:?} does not exist"))); + }; + Ok(block_.number.map(|n| n.as_u64())) +} + impl PastLogsStream { async fn next(mut self) -> Result, Self)>, ExecutionError> { loop { @@ -286,6 +301,7 @@ impl PastLogsStream { BlockNumber::Earliest => Some(0), BlockNumber::Number(value) => Some(value.as_u64()), BlockNumber::Latest | BlockNumber::Pending => None, + BlockNumber::Safe | BlockNumber::Finalized => block_number(&web3, from_block).await?, }; let end_block = match to_block { BlockNumber::Earliest => None, @@ -294,6 +310,7 @@ impl PastLogsStream { let latest_block = web3.eth().block_number().await?; Some(latest_block.as_u64()) } + BlockNumber::Safe | BlockNumber::Finalized => block_number(&web3, to_block).await?, }; let next = match (start_block, end_block) { diff --git a/ethcontract/src/secret.rs b/ethcontract/src/secret.rs index b3919b90..3876319c 100644 --- a/ethcontract/src/secret.rs +++ b/ethcontract/src/secret.rs @@ -2,7 +2,7 @@ use crate::errors::InvalidPrivateKey; use ethcontract_common::hash; -use secp256k1::{Message, PublicKey, Secp256k1, SecretKey, ONE_KEY}; +use secp256k1::{Message, PublicKey, Secp256k1, SecretKey}; use std::fmt::{self, Debug, Formatter}; use std::ops::Deref; use std::str::FromStr; @@ -131,7 +131,9 @@ impl From for ZeroizeableSecretKey { impl Default for ZeroizeableSecretKey { fn default() -> Self { - ONE_KEY.into() + SecretKey::from_str("0000000000000000000000000000000000000000000000000000000000000001") + .unwrap() + .into() } } @@ -199,7 +201,10 @@ mod tests { fn drop_private_key() { let mut key = key!("0x0102030405060708091011121314151617181920212223242526272829303132"); key.0.zeroize(); - assert_eq!(*key, ONE_KEY); + let one_key = + SecretKey::from_str("0000000000000000000000000000000000000000000000000000000000000001") + .unwrap(); + assert_eq!(*key, one_key); } #[test]