mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-22 09:08:06 +00:00
b5209a162e
* WIP using frame-decode for core extrinsic decode logic * fmt * Fix dependabot config * clippy * tidy some imports * Fix a couple of tests * Update to frame-decode 0.0.7 * fix docs * Decode exts earlier to avoid doing it every iter/find step * frame-decode to 0.1.0 * fmt * clippy * fix wasm example * doc test fixes * Fix test * Fix a couple of subxt_core tests
44 lines
1.7 KiB
Rust
44 lines
1.7 KiB
Rust
#![allow(missing_docs)]
|
|
use subxt::{OnlineClient, PolkadotConfig};
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
// Create a client that subscribes to blocks of the Polkadot network.
|
|
let api = OnlineClient::<PolkadotConfig>::from_url("wss://rpc.polkadot.io:443").await?;
|
|
|
|
// Subscribe to all finalized blocks:
|
|
let mut blocks_sub = api.blocks().subscribe_finalized().await?;
|
|
while let Some(block) = blocks_sub.next().await {
|
|
let block = block?;
|
|
let block_number = block.header().number;
|
|
let block_hash = block.hash();
|
|
println!("Block #{block_number} ({block_hash})");
|
|
|
|
// Decode each signed extrinsic in the block dynamically
|
|
let extrinsics = block.extrinsics().await?;
|
|
for ext in extrinsics.iter() {
|
|
let Some(signed_extensions) = ext.signed_extensions() else {
|
|
continue; // we do not look at inherents in this example
|
|
};
|
|
|
|
let meta = ext.extrinsic_metadata()?;
|
|
let fields = ext.field_values()?;
|
|
|
|
println!(" {}/{}", meta.pallet.name(), meta.variant.name);
|
|
println!(" Signed Extensions:");
|
|
for signed_ext in signed_extensions.iter() {
|
|
// We only want to take a look at these 3 signed extensions, because the others all just have unit fields.
|
|
if ["CheckMortality", "CheckNonce", "ChargeTransactionPayment"]
|
|
.contains(&signed_ext.name())
|
|
{
|
|
println!(" {}: {}", signed_ext.name(), signed_ext.value()?);
|
|
}
|
|
}
|
|
println!(" Fields:");
|
|
println!(" {}\n", fields);
|
|
}
|
|
}
|
|
|
|
Ok(())
|
|
}
|