mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 22:11:06 +00:00
Configurable Config and Extra types (#373)
* WIP config * WIP separate default config * Separate trait impls on client * WIP introduce new ApiConfig (to be renamed) trait * Update generated polkadot codegen * Allow configuring Config and Extra types independently * Add extra default configuration * Revert ir parsing of config attr * Add default-features = false to substrate deps * Revert "Add default-features = false to substrate deps" This reverts commit 099d20cd4cbf8000ff938d1dc090ecbc28a5e788.
This commit is contained in:
+14
-16
@@ -29,6 +29,7 @@ pub use self::{
|
||||
CheckTxVersion,
|
||||
CheckWeight,
|
||||
DefaultExtra,
|
||||
DefaultExtraWithTxPayment,
|
||||
SignedExtra,
|
||||
},
|
||||
signer::{
|
||||
@@ -44,47 +45,44 @@ use crate::{
|
||||
Config,
|
||||
Encoded,
|
||||
Error,
|
||||
ExtrinsicExtraData,
|
||||
};
|
||||
|
||||
/// UncheckedExtrinsic type.
|
||||
pub type UncheckedExtrinsic<T> = sp_runtime::generic::UncheckedExtrinsic<
|
||||
pub type UncheckedExtrinsic<T, E> = sp_runtime::generic::UncheckedExtrinsic<
|
||||
<T as Config>::Address,
|
||||
Encoded,
|
||||
<T as Config>::Signature,
|
||||
<<T as ExtrinsicExtraData<T>>::Extra as SignedExtra<T>>::Extra,
|
||||
<E as SignedExtra<T>>::Extra,
|
||||
>;
|
||||
|
||||
/// SignedPayload type.
|
||||
pub type SignedPayload<T> = sp_runtime::generic::SignedPayload<
|
||||
Encoded,
|
||||
<<T as ExtrinsicExtraData<T>>::Extra as SignedExtra<T>>::Extra,
|
||||
>;
|
||||
pub type SignedPayload<T, E> =
|
||||
sp_runtime::generic::SignedPayload<Encoded, <E as SignedExtra<T>>::Extra>;
|
||||
|
||||
/// Creates a signed extrinsic
|
||||
pub async fn create_signed<T>(
|
||||
pub async fn create_signed<T, E>(
|
||||
runtime_version: &RuntimeVersion,
|
||||
genesis_hash: T::Hash,
|
||||
nonce: T::Index,
|
||||
call: Encoded,
|
||||
signer: &(dyn Signer<T> + Send + Sync),
|
||||
additional_params: <T::Extra as SignedExtra<T>>::Parameters,
|
||||
) -> Result<UncheckedExtrinsic<T>, Error>
|
||||
signer: &(dyn Signer<T, E> + Send + Sync),
|
||||
additional_params: E::Parameters,
|
||||
) -> Result<UncheckedExtrinsic<T, E>, Error>
|
||||
where
|
||||
T: Config + ExtrinsicExtraData<T>,
|
||||
<<<T as ExtrinsicExtraData<T>>::Extra as SignedExtra<T>>::Extra as SignedExtension>::AdditionalSigned:
|
||||
Send + Sync,
|
||||
T: Config,
|
||||
E: SignedExtra<T>,
|
||||
<E::Extra as SignedExtension>::AdditionalSigned: Send + Sync,
|
||||
{
|
||||
let spec_version = runtime_version.spec_version;
|
||||
let tx_version = runtime_version.transaction_version;
|
||||
let extra = <T as ExtrinsicExtraData<T>>::Extra::new(
|
||||
let extra = E::new(
|
||||
spec_version,
|
||||
tx_version,
|
||||
nonce,
|
||||
genesis_hash,
|
||||
additional_params,
|
||||
);
|
||||
let payload = SignedPayload::<T>::new(call, extra.extra())?;
|
||||
let payload = SignedPayload::<T, E>::new(call, extra.extra())?;
|
||||
let signed = signer.sign(payload).await?;
|
||||
Ok(signed)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user