mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-19 14:41:02 +00:00
Support unsigned extrinsics. (#130)
This commit is contained in:
+22
-5
@@ -308,10 +308,10 @@ impl<T: Runtime> Client<T> {
|
|||||||
.and_then(|module| module.call(C::FUNCTION, call))?)
|
.and_then(|module| module.call(C::FUNCTION, call))?)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates an unsigned extrinsic.
|
/// Creates an payload for an extrinsic.
|
||||||
///
|
///
|
||||||
/// If `nonce` is `None` the nonce will be fetched from the chain.
|
/// If `nonce` is `None` the nonce will be fetched from the chain.
|
||||||
pub async fn create_unsigned<C: Call<T>>(
|
pub async fn create_payload<C: Call<T>>(
|
||||||
&self,
|
&self,
|
||||||
call: C,
|
call: C,
|
||||||
account_id: &<T as System>::AccountId,
|
account_id: &<T as System>::AccountId,
|
||||||
@@ -336,6 +336,23 @@ impl<T: Runtime> Client<T> {
|
|||||||
Ok(raw_payload)
|
Ok(raw_payload)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates an unsigned extrinsic.
|
||||||
|
pub async fn create_unsigned<C: Call<T> + Send + Sync>(
|
||||||
|
&self,
|
||||||
|
call: C,
|
||||||
|
account_id: &<T as System>::AccountId,
|
||||||
|
nonce: Option<T::Index>,
|
||||||
|
) -> Result<UncheckedExtrinsic<T>, Error>
|
||||||
|
where
|
||||||
|
<<T::Extra as SignedExtra<T>>::Extra as SignedExtension>::AdditionalSigned:
|
||||||
|
Send + Sync,
|
||||||
|
{
|
||||||
|
let payload = self.create_payload(call, account_id, nonce).await?;
|
||||||
|
let (call, _, _) = payload.deconstruct();
|
||||||
|
let unsigned = UncheckedExtrinsic::<T>::new_unsigned(call);
|
||||||
|
Ok(unsigned)
|
||||||
|
}
|
||||||
|
|
||||||
/// Creates a signed extrinsic.
|
/// Creates a signed extrinsic.
|
||||||
pub async fn create_signed<C: Call<T> + Send + Sync>(
|
pub async fn create_signed<C: Call<T> + Send + Sync>(
|
||||||
&self,
|
&self,
|
||||||
@@ -346,10 +363,10 @@ impl<T: Runtime> Client<T> {
|
|||||||
<<T::Extra as SignedExtra<T>>::Extra as SignedExtension>::AdditionalSigned:
|
<<T::Extra as SignedExtra<T>>::Extra as SignedExtension>::AdditionalSigned:
|
||||||
Send + Sync,
|
Send + Sync,
|
||||||
{
|
{
|
||||||
let unsigned = self
|
let payload = self
|
||||||
.create_unsigned(call, signer.account_id(), signer.nonce())
|
.create_payload(call, signer.account_id(), signer.nonce())
|
||||||
.await?;
|
.await?;
|
||||||
let signed = signer.sign(unsigned).await?;
|
let signed = signer.sign(payload).await?;
|
||||||
Ok(signed)
|
Ok(signed)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user