mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-22 21:58:00 +00:00
05825bed49
* asset hub example and book adjustment * formatting * recursive derives * polkadot monitor example and book adjustments * formatting * adjust docs and examples, add dynamic example * james suggestions * fmt * chore(subxt/src): typo fix (#1370) * rpcmethods * followstr * mod and else * Weekly Cronjob fetching artifacts and generating polkadot.rs file. (#1352) * github CI action cronjob * add commit message * fix the CI yml files * binary crate for CI script with substrate-runner * update the CI script * correct the artifacts script * remove bash script --------- Co-authored-by: James Wilson <james@jsdw.me> Co-authored-by: Pan chao <152830401+Pan-chao@users.noreply.github.com>
55 lines
2.0 KiB
Rust
55 lines
2.0 KiB
Rust
#![allow(missing_docs)]
|
|
use subxt::config::{
|
|
Config, DefaultExtrinsicParams, DefaultExtrinsicParamsBuilder, PolkadotConfig, SubstrateConfig,
|
|
};
|
|
use subxt_signer::sr25519::dev;
|
|
|
|
#[subxt::subxt(
|
|
runtime_metadata_path = "../artifacts/polkadot_metadata_full.scale",
|
|
derive_for_type(
|
|
path = "xcm::v2::multilocation::MultiLocation",
|
|
derive = "Clone",
|
|
recursive
|
|
)
|
|
)]
|
|
pub mod runtime {}
|
|
use runtime::runtime_types::xcm::v2::multilocation::{Junctions, MultiLocation};
|
|
|
|
// We don't need to construct this at runtime, so an empty enum is appropriate.
|
|
pub enum AssetHubConfig {}
|
|
|
|
impl Config for AssetHubConfig {
|
|
type Hash = <SubstrateConfig as Config>::Hash;
|
|
type AccountId = <SubstrateConfig as Config>::AccountId;
|
|
type Address = <PolkadotConfig as Config>::Address;
|
|
type Signature = <SubstrateConfig as Config>::Signature;
|
|
type Hasher = <SubstrateConfig as Config>::Hasher;
|
|
type Header = <SubstrateConfig as Config>::Header;
|
|
type ExtrinsicParams = DefaultExtrinsicParams<AssetHubConfig>;
|
|
// Here we use the MultiLocation from the metadata as a part of the config:
|
|
// The `ChargeAssetTxPayment` signed extension that is part of the ExtrinsicParams above, now uses the type:
|
|
type AssetId = MultiLocation;
|
|
}
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
// With the config defined, we can create an extrinsic with subxt:
|
|
let client = subxt::OnlineClient::<AssetHubConfig>::new().await.unwrap();
|
|
let tx_payload = runtime::tx().system().remark(b"Hello".to_vec());
|
|
|
|
// Build extrinsic params using an asset at this location as a tip:
|
|
let location: MultiLocation = MultiLocation {
|
|
parents: 3,
|
|
interior: Junctions::Here,
|
|
};
|
|
let tx_config = DefaultExtrinsicParamsBuilder::<AssetHubConfig>::new()
|
|
.tip_of(1234, location)
|
|
.build();
|
|
|
|
// And provide the extrinsic params including the tip when submitting a transaction:
|
|
let _ = client
|
|
.tx()
|
|
.sign_and_submit_then_watch(&tx_payload, &dev::alice(), tx_config)
|
|
.await;
|
|
}
|