diff --git a/examples/examples/chainhead_subscription.rs b/examples/examples/chainhead_subscription.rs new file mode 100644 index 0000000000..1dd8889854 --- /dev/null +++ b/examples/examples/chainhead_subscription.rs @@ -0,0 +1,44 @@ +// Copyright 2019-2022 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +//! To run this example, a local polkadot node should be running. Example verified against polkadot v0.9.28-9ffe6e9e3da. +//! +//! E.g. +//! ```bash +//! curl "https://github.com/paritytech/polkadot/releases/download/v0.9.28/polkadot" --output /usr/local/bin/polkadot --location +//! polkadot --dev --tmp +//! ``` + +use sp_keyring::AccountKeyring; +use subxt::{ + tx::PairSigner, + OnlineClient, + PolkadotConfig, +}; + +#[subxt::subxt(runtime_metadata_path = "../artifacts/polkadot_metadata.scale")] +pub mod polkadot {} + +#[tokio::main] +async fn main() -> Result<(), Box> { + tracing_subscriber::fmt::init(); + + let signer = PairSigner::new(AccountKeyring::Alice.pair()); + let dest = AccountKeyring::Bob.to_account_id().into(); + + // Create a client to use: + let api = OnlineClient::::new().await?; + + // Subscribe to the `chainHead_follow` method. + let mut follow_sub = api.rpc().subscribe_chainhead_follow(false).await?; + + // Handle all subscriptions from the `chainHead_follow`. + while let Some(event) = follow_sub.next().await { + let event = event?; + + println!("event: {:?}", event); + } + + Ok(()) +}