Transaction - 1.1
Here you can find additional examples on how to correctly construct the payload.
use avail_rust::{account::account_id_from_str, error::ClientError};
#[tokio::main]
async fn main() -> Result<(), ClientError> {
data_availability_create_key().await?;
balances_transfer_keep_alive().await?;
identity_set_identity().await?;
// Payload
Ok(())
}
async fn data_availability_create_key() -> Result<(), ClientError> {
use avail_rust::{
avail::runtime_types::bounded_collections::bounded_vec::BoundedVec,
subxt::{blocks::StaticExtrinsic, ext::subxt_core::tx::payload::StaticPayload},
};
use avail_rust::avail::data_availability::calls::types::CreateApplicationKey;
let pallet_name = CreateApplicationKey::PALLET;
let call_name = CreateApplicationKey::CALL;
let key = String::from("My Data").into_bytes();
let key = BoundedVec(key);
let call_data = CreateApplicationKey { key };
let _payload = StaticPayload::new(pallet_name, call_name, call_data);
Ok(())
}
async fn balances_transfer_keep_alive() -> Result<(), ClientError> {
use avail_rust::{
subxt::{blocks::StaticExtrinsic, ext::subxt_core::tx::payload::StaticPayload},
SDK,
};
use avail_rust::avail::balances::calls::types::TransferKeepAlive;
let pallet_name = TransferKeepAlive::PALLET;
let call_name = TransferKeepAlive::CALL;
let dest = account_id_from_str("5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty")?; // Bob
let value = SDK::one_avail();
let call_data = TransferKeepAlive {
dest: dest.into(),
value,
};
let _payload = StaticPayload::new(pallet_name, call_name, call_data);
Ok(())
}
async fn identity_set_identity() -> Result<(), ClientError> {
use avail_rust::subxt::{blocks::StaticExtrinsic, ext::subxt_core::tx::payload::StaticPayload};
use avail_rust::avail::{
identity::calls::types::{set_identity::Info, SetIdentity},
runtime_types::{
bounded_collections::bounded_vec::BoundedVec, pallet_identity::types::Data,
},
};
let pallet_name = SetIdentity::PALLET;
let call_name = SetIdentity::CALL;
let display_name: [u8; 7] = String::from("My Name").into_bytes().try_into().unwrap();
let info = Info {
additional: BoundedVec(vec![(Data::None, Data::None)]),
display: Data::Raw7(display_name),
legal: Data::None,
web: Data::None,
riot: Data::None,
email: Data::None,
pgp_fingerprint: None,
image: Data::None,
twitter: Data::None,
};
let call_data = SetIdentity {
info: Box::new(info),
};
let _payload = StaticPayload::new(pallet_name, call_name, call_data);
Ok(())
}