mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-22 04:28:00 +00:00
runtime API: Substitute UncheckedExtrinsic with custom encoding (#1076)
* codegen: Add uncheckedExtrinsic substitute Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * subxt: Add uncheckedExtrinsic replacement Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * testing: Test uncheckedExtrinsic encoding Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * testing: Apply clippy Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * subxt: Implement encode_to instead of encode for uncheckedExtrinsic Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * subxt: Remove encode_as_fields from uncheckedExtrinsic Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * utils: Extend the UncheckedExtrinsic interface Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * utils: Use Static<Encoded> for uncheckedExtrinsic Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * utils: Remove extra impl on the uncheckedExtrinsic Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * utils: Add back the EncodeAsType Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * utils: Simplify the decode_as_type Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * utils: Use encode_as_type Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * utils: impl Decode for UncheckedExtrinsic Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * Update subxt/src/utils/unchecked_extrinsic.rs Co-authored-by: James Wilson <james@jsdw.me> * utils: Apply cargo fmt Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * utils: Check encoding / decoding of uncheckedExtrinsic Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * utils/tests: Use an already encoded tx bytes to start with Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> --------- Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> Co-authored-by: James Wilson <james@jsdw.me>
This commit is contained in:
@@ -99,6 +99,14 @@ impl TypeSubstitutes {
|
||||
parse_quote!(#crate_path::utils::KeyedVec),
|
||||
),
|
||||
(path_segments!(BTreeSet), parse_quote!(::std::vec::Vec)),
|
||||
// The `UncheckedExtrinsic(pub Vec<u8>)` is part of the runtime API calls.
|
||||
// The inner bytes represent the encoded extrinsic, however when deriving the
|
||||
// `EncodeAsType` the bytes would be re-encoded. This leads to the bytes
|
||||
// being altered by adding the length prefix in front of them.
|
||||
(
|
||||
path_segments!(sp_runtime::generic::unchecked_extrinsic::UncheckedExtrinsic),
|
||||
parse_quote!(#crate_path::utils::UncheckedExtrinsic),
|
||||
),
|
||||
];
|
||||
|
||||
let default_substitutes = defaults
|
||||
@@ -339,7 +347,7 @@ impl<T: scale_info::form::Form> From<&scale_info::Path<T>> for PathSegments {
|
||||
/// to = ::subxt::utils::Static<::sp_runtime::MultiAddress<A, B>>
|
||||
/// ```
|
||||
///
|
||||
/// And we encounter a `sp_runtime::MultiAddress<Foo, bar>`, then we will pass the `::sp_runtime::MultiAddress<A, B>`
|
||||
/// And we encounter a `sp_runtime::MultiAddress<Foo, Bar>`, then we will pass the `::sp_runtime::MultiAddress<A, B>`
|
||||
/// type param value into this call to turn it into `::sp_runtime::MultiAddress<Foo, Bar>`.
|
||||
fn replace_path_params_recursively<I: Borrow<syn::Ident>, P: Borrow<TypePath>>(
|
||||
path: &mut syn::Path,
|
||||
|
||||
Reference in New Issue
Block a user