Files
pezkuwi-sdk/vendor/pezkuwi-subxt/subxt/examples/tx_partial.rs
T
pezkuwichain 5113cd4264 fix: CI failures - EVM tests and metadata artifacts
- tests-evm.yml: use pezkuwichain/revive-differential-tests fork with
  pez-revive-dev-node platform aliases
- .gitignore: allow vendor/pezkuwi-subxt/artifacts/ to be tracked
- Add metadata .scale files for compile-time macro expansion
- Rename polkadot_metadata_* references to pezkuwi_metadata_*
2026-01-27 15:20:03 +03:00

53 lines
1.7 KiB
Rust

#![allow(missing_docs)]
use pezkuwi_subxt::{OnlineClient, PezkuwiConfig};
use pezkuwi_subxt_signer::sr25519::dev;
type BoxedError = Box<dyn std::error::Error + Send + Sync + 'static>;
#[pezkuwi_subxt::subxt(runtime_metadata_path = "../artifacts/pezkuwi_metadata_small.scale")]
pub mod pezkuwi {}
#[tokio::main]
async fn main() -> Result<(), BoxedError> {
// Spawned tasks require things held across await points to impl Send,
// so we use one to demonstrate that this is possible with `PartialTransaction`
tokio::spawn(signing_example()).await??;
Ok(())
}
async fn signing_example() -> Result<(), BoxedError> {
let api = OnlineClient::<PezkuwiConfig>::new().await?;
// Build a balance transfer extrinsic.
let dest = pezkuwi::runtime_types::sp_runtime::multiaddress::MultiAddress::Id(
pezkuwi::runtime_types::sp_core::crypto::AccountId32(dev::bob().public_key().0),
);
let balance_transfer_tx = pezkuwi::tx().balances().transfer_allow_death(dest, 10_000);
let alice = dev::alice();
// Create partial tx, ready to be signed.
let mut partial_tx = api
.tx()
.create_partial(
&balance_transfer_tx,
&alice.public_key().to_account_id(),
Default::default(),
)
.await?;
// Simulate taking some time to get a signature back, in part to
// show that the `PartialTransaction` can be held across await points.
tokio::time::sleep(tokio::time::Duration::from_millis(100)).await;
let signature = alice.sign(&partial_tx.signer_payload());
// Sign the transaction.
let tx = partial_tx
.sign_with_account_and_signature(&alice.public_key().to_account_id(), &signature.into());
// Submit it.
tx.submit_and_watch().await?.wait_for_finalized_success().await?;
Ok(())
}