diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 000000000..a8ff4a406 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.73.0" +components = ["rustfmt"] diff --git a/rustfmt.toml b/rustfmt.toml index 753065179..ad6e7bbde 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -1 +1,20 @@ +# Put a trailing comma after a block based match arm (non-block arms are not affected) +# https://github.com/rust-lang/rustfmt/blob/master/Configurations.md#match_block_trailing_comma +match_block_trailing_comma = true + +# Maximum width of each line. +# Default: 100 +# https://github.com/rust-lang/rustfmt/blob/master/Configurations.md#max_width max_width = 120 + +# Unix or Windows line endings +# https://github.com/rust-lang/rustfmt/blob/master/Configurations.md#newline_style +newline_style = "Auto" + +# Number of spaces per tab +# https://github.com/rust-lang/rustfmt/blob/master/Configurations.md#tab_spaces +tab_spaces = 4 + +# Use field initialize shorthand if possible. +# https://github.com/rust-lang/rustfmt/blob/master/Configurations.md#use_field_init_shorthand +use_field_init_shorthand = true diff --git a/src/api/accounts.rs b/src/api/accounts.rs index c4ee65718..80da8b870 100644 --- a/src/api/accounts.rs +++ b/src/api/accounts.rs @@ -86,7 +86,7 @@ mod accounts_signing { let gas_price = match tx.transaction_type { Some(tx_type) if tx_type == U64::from(EIP1559_TX_ID) && tx.max_fee_per_gas.is_some() => { tx.max_fee_per_gas - } + }, _ => tx.gas_price, }; @@ -101,7 +101,7 @@ mod accounts_signing { let max_priority_fee_per_gas = match tx.transaction_type { Some(tx_type) if tx_type == U64::from(EIP1559_TX_ID) => { tx.max_priority_fee_per_gas.unwrap_or(gas_price) - } + }, _ => gas_price, }; @@ -301,23 +301,23 @@ mod accounts_signing { Some(LEGACY_TX_ID) | None => { let stream = self.encode_legacy(chain_id, signature); stream.out().to_vec() - } + }, Some(ACCESSLISTS_TX_ID) => { let tx_id: u8 = ACCESSLISTS_TX_ID as u8; let stream = self.encode_access_list_payload(chain_id, signature); [&[tx_id], stream.as_raw()].concat() - } + }, Some(EIP1559_TX_ID) => { let tx_id: u8 = EIP1559_TX_ID as u8; let stream = self.encode_eip1559_payload(chain_id, signature); [&[tx_id], stream.as_raw()].concat() - } + }, _ => { panic!("Unsupported transaction type"); - } + }, } } diff --git a/src/api/eth.rs b/src/api/eth.rs index 7ff0f9884..a7b8b1f76 100644 --- a/src/api/eth.rs +++ b/src/api/eth.rs @@ -129,11 +129,11 @@ impl Eth { BlockId::Hash(hash) => { let hash = helpers::serialize(&hash); self.transport.execute("eth_getBlockByHash", vec![hash, include_txs]) - } + }, BlockId::Number(num) => { let num = helpers::serialize(&num); self.transport.execute("eth_getBlockByNumber", vec![num, include_txs]) - } + }, }; CallFuture::new(result) @@ -147,11 +147,11 @@ impl Eth { BlockId::Hash(hash) => { let hash = helpers::serialize(&hash); self.transport.execute("eth_getBlockByHash", vec![hash, include_txs]) - } + }, BlockId::Number(num) => { let num = helpers::serialize(&num); self.transport.execute("eth_getBlockByNumber", vec![num, include_txs]) - } + }, }; CallFuture::new(result) @@ -163,12 +163,12 @@ impl Eth { BlockId::Hash(hash) => { let hash = helpers::serialize(&hash); self.transport.execute("eth_getBlockTransactionCountByHash", vec![hash]) - } + }, BlockId::Number(num) => { let num = helpers::serialize(&num); self.transport .execute("eth_getBlockTransactionCountByNumber", vec![num]) - } + }, }; CallFuture::new(result) @@ -222,19 +222,19 @@ impl Eth { TransactionId::Hash(hash) => { let hash = helpers::serialize(&hash); self.transport.execute("eth_getTransactionByHash", vec![hash]) - } + }, TransactionId::Block(BlockId::Hash(hash), index) => { let hash = helpers::serialize(&hash); let idx = helpers::serialize(&index); self.transport .execute("eth_getTransactionByBlockHashAndIndex", vec![hash, idx]) - } + }, TransactionId::Block(BlockId::Number(number), index) => { let number = helpers::serialize(&number); let idx = helpers::serialize(&index); self.transport .execute("eth_getTransactionByBlockNumberAndIndex", vec![number, idx]) - } + }, }; CallFuture::new(result) @@ -268,12 +268,12 @@ impl Eth { let hash = helpers::serialize(&hash); self.transport .execute("eth_getUncleByBlockHashAndIndex", vec![hash, index]) - } + }, BlockId::Number(num) => { let num = helpers::serialize(&num); self.transport .execute("eth_getUncleByBlockNumberAndIndex", vec![num, index]) - } + }, }; CallFuture::new(result) @@ -285,11 +285,11 @@ impl Eth { BlockId::Hash(hash) => { let hash = helpers::serialize(&hash); self.transport.execute("eth_getUncleCountByBlockHash", vec![hash]) - } + }, BlockId::Number(num) => { let num = helpers::serialize(&num); self.transport.execute("eth_getUncleCountByBlockNumber", vec![num]) - } + }, }; CallFuture::new(result) diff --git a/src/api/parity.rs b/src/api/parity.rs index d8d5a2983..839e29fd5 100644 --- a/src/api/parity.rs +++ b/src/api/parity.rs @@ -74,7 +74,7 @@ mod tests { "condition": { "block": 1 }, - "chainId": 1, + "chainId": "0x1", "nonce": "0x5", "publicKey": "0x96157302dade55a1178581333e57d60ffe6fdf5a99607890456a578b4e6b60e335037d61ed58aa4180f9fd747dc50d44a7924aa026acbfb988b5062b629d6c36", "r": "0x92e8beb19af2bad0511d516a86e77fa73004c0811b2173657a55797bdf8558e1", diff --git a/src/contract/deploy.rs b/src/contract/deploy.rs index 6e4dbd9da..062c91440 100644 --- a/src/contract/deploy.rs +++ b/src/contract/deploy.rs @@ -184,7 +184,7 @@ impl Builder { let address: String = hex::encode(address); code_hex = code_hex.replacen(&replace, &address, 1); } - code_hex = code_hex.replace("\"", "").replace("0x", ""); // This is to fix truffle + serde_json redundant `"` and `0x` + code_hex = code_hex.replace('\"', "").replace("0x", ""); // This is to fix truffle + serde_json redundant `"` and `0x` let code = hex::decode(&code_hex).map_err(|e| ethabi::Error::InvalidName(format!("hex decode error: {}", e)))?; @@ -194,7 +194,7 @@ impl Builder { return Err(Error::Abi(ethabi::Error::InvalidName( "Constructor is not defined in the ABI.".into(), ))); - } + }, (None, true) => code, (Some(constructor), _) => constructor.encode_input(code, ¶ms)?, }; diff --git a/src/contract/tokens.rs b/src/contract/tokens.rs index af5174499..43bcfd6db 100644 --- a/src/contract/tokens.rs +++ b/src/contract/tokens.rs @@ -183,7 +183,7 @@ impl Tokenizable for H256 { data[idx] = val; } Ok(data.into()) - } + }, other => Err(Error::InvalidOutputType(format!("Expected `H256`, got {:?}", other))), } } @@ -306,7 +306,7 @@ impl Tokenizable for BytesArray { .map(Tokenizable::from_token) .collect::, Error>>()?; Ok(Self(bytes)) - } + }, other => Err(Error::InvalidOutputType(format!("Expected `Array`, got {:?}", other))), } } @@ -334,7 +334,7 @@ impl Tokenizable for Vec { match token { Token::FixedArray(tokens) | Token::Array(tokens) => { tokens.into_iter().map(Tokenizable::from_token).collect() - } + }, other => Err(Error::InvalidOutputType(format!("Expected `Array`, got {:?}", other))), } } @@ -363,7 +363,7 @@ macro_rules! impl_fixed_types { let mut arr = [0; $num]; arr.copy_from_slice(&bytes); Ok(arr) - } + }, other => Err( Error::InvalidOutputType(format!("Expected `FixedBytes({})`, got {:?}", $num, other)).into(), ), @@ -399,7 +399,7 @@ macro_rules! impl_fixed_types { Ok(arr) => Ok(arr), Err(_) => panic!("All elements inserted so the array is full; qed"), } - } + }, other => Err( Error::InvalidOutputType(format!("Expected `FixedArray({})`, got {:?}", $num, other)).into(), ), diff --git a/src/transports/eip_1193.rs b/src/transports/eip_1193.rs index 8d4ad0d19..01ab32880 100644 --- a/src/transports/eip_1193.rs +++ b/src/transports/eip_1193.rs @@ -52,10 +52,10 @@ impl Eip1193 { if let Err(err) = sink.unbounded_send(evt.data.result) { log::error!("Error sending notification: {}", err) } - } + }, None => log::warn!("Got message for non-existent subscription {}", evt.data.subscription), } - } + }, other => log::warn!("Got unknown notification type: {}", other), } }) as Box); @@ -187,7 +187,7 @@ impl Transport for Eip1193 { }) .await }) - } + }, _ => panic!("Can't send JSON-RPC requests other than method calls with EIP-1193 transport!"), } } diff --git a/src/transports/ipc.rs b/src/transports/ipc.rs index 866cd13f4..d002d77a4 100644 --- a/src/transports/ipc.rs +++ b/src/transports/ipc.rs @@ -125,7 +125,7 @@ impl futures::Future for SingleResponse { Ok(ref mut rx) => { let output = ready!(futures::Future::poll(Pin::new(rx), cx))?; Poll::Ready(helpers::to_result_from_output(output)) - } + }, } } } @@ -147,7 +147,7 @@ impl futures::Future for BatchResponse { .collect(); Poll::Ready(Ok(values)) - } + }, } } } @@ -313,7 +313,7 @@ fn respond_output( _ => { log::warn!("Got unsupported response (id: {:?})", id); return Err(()); - } + }, }; let response_tx = pending_response_txs.remove(&id).ok_or_else(|| { diff --git a/src/transports/test.rs b/src/transports/test.rs index ec0ce6f4c..e16979804 100644 --- a/src/transports/test.rs +++ b/src/transports/test.rs @@ -32,7 +32,7 @@ impl Transport for TestTransport { None => { println!("Unexpected request (id: {:?}): {:?}", id, request); Err(Error::Unreachable) - } + }, }) .boxed() } diff --git a/src/transports/ws.rs b/src/transports/ws.rs index 429bdfb8e..d629ceb7c 100644 --- a/src/transports/ws.rs +++ b/src/transports/ws.rs @@ -109,7 +109,7 @@ impl WsServerTask { "Wrong scheme: {}", s )))) - } + }, }; let host = match url.host_str() { @@ -118,7 +118,7 @@ impl WsServerTask { return Err(error::Error::Transport(TransportError::Message( "Wrong host name".to_string(), ))) - } + }, }; let port = url.port().unwrap_or(if scheme == "ws" { 80 } else { 443 }); @@ -176,10 +176,10 @@ impl WsServerTask { ServerResponse::Accepted { .. } => client.into_builder().finish(), ServerResponse::Redirect { status_code, .. } => { return Err(error::Error::Transport(TransportError::Code(status_code))) - } + }, ServerResponse::Rejected { status_code } => { return Err(error::Error::Transport(TransportError::Code(status_code))) - } + }, }; Ok(Self { @@ -418,11 +418,11 @@ where ResponseState::Receiver(ref mut res) => { let receiver = res.take().expect("Receiver state is active only once; qed")?; self.state = ResponseState::Waiting(receiver) - } + }, ResponseState::Waiting(ref mut future) => { let response = ready!(future.poll_unpin(cx)).map_err(dropped_err)?; return Poll::Ready((self.extract)(response)); - } + }, } } } @@ -518,7 +518,7 @@ pub mod compat { /// Create new TcpStream object. pub async fn raw_tcp_stream(addrs: String) -> io::Result { - Ok(tokio::net::TcpStream::connect(addrs).await?) + tokio::net::TcpStream::connect(addrs).await } /// Wrap given argument into compatibility layer. @@ -591,7 +591,7 @@ mod tests { .await .unwrap(); sender.flush().await.unwrap(); - } + }, Err(soketto::connection::Error::Closed) => break, e => panic!("Unexpected data: {:?}", e), } diff --git a/src/types/block.rs b/src/types/block.rs index f67f7266b..a440e23ad 100644 --- a/src/types/block.rs +++ b/src/types/block.rs @@ -195,7 +195,7 @@ impl Serialize for BlockId { let mut s = serializer.serialize_struct("BlockIdEip1898", 1)?; s.serialize_field("blockHash", &format!("{:?}", x))?; s.end() - } + }, BlockId::Number(ref num) => num.serialize(serializer), } } diff --git a/src/types/log.rs b/src/types/log.rs index 9a1f50878..96ac91e6e 100644 --- a/src/types/log.rs +++ b/src/types/log.rs @@ -47,7 +47,7 @@ impl Log { if val_log_type == "removed" { return true; } - } + }, None => (), } false diff --git a/src/types/sync_state.rs b/src/types/sync_state.rs index 33b0df939..54199f20f 100644 --- a/src/types/sync_state.rs +++ b/src/types/sync_state.rs @@ -91,7 +91,7 @@ impl<'de> Deserialize<'de> for SyncState { } else { Err(D::Error::custom("expected object or `false`, got `true`")) } - } + }, } } } diff --git a/src/types/transaction.rs b/src/types/transaction.rs index 9e7a3c702..0dc39eeca 100644 --- a/src/types/transaction.rs +++ b/src/types/transaction.rs @@ -4,6 +4,9 @@ use serde::{Deserialize, Serialize}; /// Description of a Transaction, pending or in the chain. #[derive(Debug, Default, Clone, PartialEq, Deserialize, Serialize)] pub struct Transaction { + /// Chain Id. None for legacy tx + #[serde(rename = "chainId")] + pub chain_id: Option, /// Hash pub hash: H256, /// Nonce diff --git a/src/types/txpool.rs b/src/types/txpool.rs index 649ba5f49..d0ae28f8e 100644 --- a/src/types/txpool.rs +++ b/src/types/txpool.rs @@ -63,6 +63,7 @@ mod tests { "pending": { "0x0513dc7403e074f5c77368ee2819fa3a65b5cf80": { "6712": { + "chainId": null, "hash": "0xc463c2dcab885136f76d093357f62b0541d1bfa4e96f27f413a7191cc625e105", "nonce": "0x1a38", "blockHash": null, @@ -78,6 +79,7 @@ mod tests { }, "0x07e80128c7a35d0d43ddcc67fa8b1495871e08bf": { "41588": { + "chainId": null, "hash": "0x73057ec83d040f5d3be8afae35b447d7996472b5dedf2e727c8f4a2e1bedca14", "nonce": "0xa274", "blockHash": null, @@ -91,6 +93,7 @@ mod tests { "input": "0x608060405234801561001057600080fd5b50604051610d54380380610d548339818101604052602081101561003357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610c7f806100d56000396000f3fe6080604052600436106100705760003560e01c80638feb1b8b1161004e5780638feb1b8b146101fd578063d4ee1d901461024e578063e45bf7a6146102a5578063f2fde38b146102fc57610070565b806359a006801461013e57806379ba50971461018f5780638da5cb5b146101a6575b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100d8573d6000803e3d6000fd5b507f0fe4cb1d003e6b2859d9f82ed185534d04565d376652186cbd07c0105fdcc5d830604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1005b34801561014a57600080fd5b5061018d6004803603602081101561016157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061034d565b005b34801561019b57600080fd5b506101a4610664565b005b3480156101b257600080fd5b506101bb610801565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020957600080fd5b5061024c6004803603602081101561022057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610826565b005b34801561025a57600080fd5b50610263610b61565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102b157600080fd5b506102ba610b87565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561030857600080fd5b5061034b6004803603602081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bad565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a657600080fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561042a57600080fd5b505afa15801561043e573d6000803e3d6000fd5b505050506040513d602081101561045457600080fd5b81019080805190602001909291905050509050600081116104dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f62616c616e6365206d7573742062652067726561746572207468616e2030000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561058657600080fd5b505af115801561059a573d6000803e3d6000fd5b505050507f8664be48506bd501d568d732361f45a27336ed6ea23c69c994d33e971ff7f40130600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106be57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461087f57600080fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561090357600080fd5b505afa158015610917573d6000803e3d6000fd5b505050506040513d602081101561092d57600080fd5b81019080805190602001909291905050509050600081116109b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f62616c616e6365206d7573742062652067726561746572207468616e2030000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b505050506040513d6020811015610a8957600080fd5b8101908080519060200190929190505050507f8664be48506bd501d568d732361f45a27336ed6ea23c69c994d33e971ff7f40130600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c0657600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea265627a7a7231582001543b5939e998cc829c177eb8dd2927268ba9f47e41ce006f6276379d324b6f64736f6c634300050c0032000000000000000000000000e8bb7d0000e0b8f7114863d7fee666b5270111b8" }, "41589": { + "chainId": null, "hash": "0xc67949dfcf2e5cbb054f0711d5dbf1789801303773c85b7d0b3a8108832b99b0", "nonce": "0xa275", "blockHash": null, @@ -104,6 +107,7 @@ mod tests { "input": "0x608060405234801561001057600080fd5b50604051610d54380380610d548339818101604052602081101561003357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610c7f806100d56000396000f3fe6080604052600436106100705760003560e01c80638feb1b8b1161004e5780638feb1b8b146101fd578063d4ee1d901461024e578063e45bf7a6146102a5578063f2fde38b146102fc57610070565b806359a006801461013e57806379ba50971461018f5780638da5cb5b146101a6575b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100d8573d6000803e3d6000fd5b507f0fe4cb1d003e6b2859d9f82ed185534d04565d376652186cbd07c0105fdcc5d830604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1005b34801561014a57600080fd5b5061018d6004803603602081101561016157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061034d565b005b34801561019b57600080fd5b506101a4610664565b005b3480156101b257600080fd5b506101bb610801565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020957600080fd5b5061024c6004803603602081101561022057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610826565b005b34801561025a57600080fd5b50610263610b61565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102b157600080fd5b506102ba610b87565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561030857600080fd5b5061034b6004803603602081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bad565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a657600080fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561042a57600080fd5b505afa15801561043e573d6000803e3d6000fd5b505050506040513d602081101561045457600080fd5b81019080805190602001909291905050509050600081116104dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f62616c616e6365206d7573742062652067726561746572207468616e2030000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561058657600080fd5b505af115801561059a573d6000803e3d6000fd5b505050507f8664be48506bd501d568d732361f45a27336ed6ea23c69c994d33e971ff7f40130600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106be57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461087f57600080fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561090357600080fd5b505afa158015610917573d6000803e3d6000fd5b505050506040513d602081101561092d57600080fd5b81019080805190602001909291905050509050600081116109b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f62616c616e6365206d7573742062652067726561746572207468616e2030000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b505050506040513d6020811015610a8957600080fd5b8101908080519060200190929190505050507f8664be48506bd501d568d732361f45a27336ed6ea23c69c994d33e971ff7f40130600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c0657600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea265627a7a7231582001543b5939e998cc829c177eb8dd2927268ba9f47e41ce006f6276379d324b6f64736f6c634300050c0032000000000000000000000000e8bb7d0000e0b8f7114863d7fee666b5270111b8" }, "41590": { + "chainId": null, "hash": "0x87f1eca993dd77d4fcf34aaa078f555dde68d478c7fcc75afefbc06553bde807", "nonce": "0xa276", "blockHash": null, @@ -121,6 +125,7 @@ mod tests { "queued": { "0x0f87ffcd71859233eb259f42b236c8e9873444e3": { "7": { + "chainId": null, "hash": "0x5c2cc0e17ea6c48489fddd2a64975791e0d4a7cc0ae4a81613682fd134be1baa", "nonce": "0x7", "blockHash": null, @@ -134,6 +139,7 @@ mod tests { "input": "0x" }, "8": { + "chainId": null, "hash": "0x8755fadda87e9fd2e66c0bfa542baa9f552cddda334f673e272f3aa686efb5e4", "nonce": "0x8", "blockHash": null, @@ -149,6 +155,7 @@ mod tests { }, "0x307e8f249bcccfa5b245449256c5d7e6e079943e": { "3": { + "chainId": null, "hash": "0x54ea4d4905bf74b687ccc73e8a1fb9615357e5e82d3f716e7ab10cd8460a3221", "nonce": "0x3", "blockHash": null,