fix: use correct model for txpool_content endpoint (#1501)
* fix: use correct model for txpool_content endpoint * chore: update CHANGELOG * update failing tests * Update ethers-providers/tests/txpool.rs Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
This commit is contained in:
parent
cf2aa07eb5
commit
a5c326162a
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
### Unreleased
|
### Unreleased
|
||||||
|
|
||||||
|
- Use correct, new transaction type for `typool_content` RPC endpoint [#1501](https://github.com/gakonst/ethers-rs/pull/1501)
|
||||||
- Fix the default config for generated `BuildInfo` [#1458](https://github.com/gakonst/ethers-rs/pull/1458)
|
- Fix the default config for generated `BuildInfo` [#1458](https://github.com/gakonst/ethers-rs/pull/1458)
|
||||||
- Allow configuration of the output directory of the generated `BuildInfo` [#1433](https://github.com/gakonst/ethers-rs/pull/1433)
|
- Allow configuration of the output directory of the generated `BuildInfo` [#1433](https://github.com/gakonst/ethers-rs/pull/1433)
|
||||||
- capture unknown fields in `Block` and `Transaction` type via new `OtherFields` type [#1423](https://github.com/gakonst/ethers-rs/pull/1423)
|
- capture unknown fields in `Block` and `Transaction` type via new `OtherFields` type [#1423](https://github.com/gakonst/ethers-rs/pull/1423)
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
use crate::types::{Address, TransactionRequest as TxpoolTransaction, U256, U64};
|
use crate::types::{Address, Bytes, H256, U256, U64};
|
||||||
|
|
||||||
use serde::{
|
use serde::{
|
||||||
de::{self, Deserializer, Visitor},
|
de::{self, Deserializer, Visitor},
|
||||||
Deserialize, Serialize,
|
Deserialize, Serialize,
|
||||||
|
@ -108,7 +107,7 @@ impl Serialize for TxpoolInspectSummary {
|
||||||
/// as the ones that are being scheduled for future execution only.
|
/// as the ones that are being scheduled for future execution only.
|
||||||
///
|
///
|
||||||
/// See [here](https://geth.ethereum.org/docs/rpc/ns-txpool#txpool_content) for more details
|
/// See [here](https://geth.ethereum.org/docs/rpc/ns-txpool#txpool_content) for more details
|
||||||
#[derive(Debug, Default, Clone, PartialEq, Eq, Deserialize, Serialize)]
|
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
pub struct TxpoolContent {
|
pub struct TxpoolContent {
|
||||||
/// pending tx
|
/// pending tx
|
||||||
pub pending: BTreeMap<Address, BTreeMap<String, TxpoolTransaction>>,
|
pub pending: BTreeMap<Address, BTreeMap<String, TxpoolTransaction>>,
|
||||||
|
@ -116,6 +115,23 @@ pub struct TxpoolContent {
|
||||||
pub queued: BTreeMap<Address, BTreeMap<String, TxpoolTransaction>>,
|
pub queued: BTreeMap<Address, BTreeMap<String, TxpoolTransaction>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Represents the Transaction object as returned by `txpool_content`
|
||||||
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct TxpoolTransaction {
|
||||||
|
pub block_hash: Option<H256>,
|
||||||
|
pub block_number: Option<U64>,
|
||||||
|
pub from: Option<Address>,
|
||||||
|
pub gas: Option<U256>,
|
||||||
|
pub gas_price: Option<U256>,
|
||||||
|
pub hash: H256,
|
||||||
|
pub input: Bytes,
|
||||||
|
pub nonce: U256,
|
||||||
|
pub to: Option<Address>,
|
||||||
|
pub transaction_index: Option<U64>,
|
||||||
|
pub value: U256,
|
||||||
|
}
|
||||||
|
|
||||||
/// Transaction Pool Inspect
|
/// Transaction Pool Inspect
|
||||||
///
|
///
|
||||||
/// The inspect inspection property can be queried to list a textual summary
|
/// The inspect inspection property can be queried to list a textual summary
|
||||||
|
@ -261,7 +277,11 @@ mod tests {
|
||||||
}
|
}
|
||||||
}"#;
|
}"#;
|
||||||
let deserialized: TxpoolContent = serde_json::from_str(txpool_content_json).unwrap();
|
let deserialized: TxpoolContent = serde_json::from_str(txpool_content_json).unwrap();
|
||||||
let serialized: String = serde_json::to_string(&deserialized).unwrap();
|
let serialized: String = serde_json::to_string_pretty(&deserialized).unwrap();
|
||||||
|
|
||||||
|
let origin: serde_json::Value = serde_json::from_str(txpool_content_json).unwrap();
|
||||||
|
let serialized_value = serde_json::to_value(deserialized.clone()).unwrap();
|
||||||
|
assert_eq!(origin, serialized_value);
|
||||||
assert_eq!(deserialized, serde_json::from_str::<TxpoolContent>(&serialized).unwrap());
|
assert_eq!(deserialized, serde_json::from_str::<TxpoolContent>(&serialized).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue