0

I was trying adding Frontier as a dependency to my parachain project...

After fixing a few errors and adding UncheckedExtrinsic & CheckedExtrinsic:

pub type UncheckedExtrinsic =
    fp_self_contained::UncheckedExtrinsic<Address, Call, Signature, SignedExtra>;
pub type CheckedExtrinsic = fp_self_contained::CheckedExtrinsic<AccountId, Call, SignedExtra, H160>;

I got this error during compilation:

➜  substrate-parachain-template-evm git:(polkadot-v0.9.25) ✗ cargo build -r
   Compiling parachain-template-runtime v0.1.0 (/mnt/sda3/polkadot/substrate-parachain-template-evm/runtime)
   Compiling fp-self-contained v1.0.0-dev (https://github.com/PAIDNetwork/frontier?branch=patch3-polkadot-v0.9.25#2e4daa4e)
   Compiling pallet-transaction-payment v4.0.0-dev (https://github.com/paritytech/substrate?branch=polkadot-v0.9.25#3348e144)
   Compiling frame-election-provider-support v4.0.0-dev (https://github.com/paritytech/substrate?branch=polkadot-v0.9.25#3348e144)
error[E0277]: the trait bound `unchecked_extrinsic::UncheckedExtrinsic<Address, Call, Signature, Extra>: parity_util_mem::malloc_size::MallocSizeOf` is not satisfied
    --> /home/user2038/.cargo/git/checkouts/frontier-b733f450c86c5786/2e4daa4/primitives/self-contained/src/unchecked_extrinsic.rs:71:75
     |
71   | impl<Address, Call: SelfContainedCall, Signature, Extra: SignedExtension> Extrinsic
     |                                                                           ^^^^^^^^^ the trait `parity_util_mem::malloc_size::MallocSizeOf` is not implemented for `unchecked_extrinsic::UncheckedExtrinsic<Address, Call, Signature, Extra>`
     |
     = help: the following other types implement trait `parity_util_mem::malloc_size::MallocSizeOf`:
               &'a T
               ()
               (TupleElement0, TupleElement1)
               (TupleElement0, TupleElement1, TupleElement2)
               (TupleElement0, TupleElement1, TupleElement2, TupleElement3)
               (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4)
               (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5)
               (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6)
             and 113 others
note: required by a bound in `Extrinsic`
    --> /home/user2038/.cargo/git/checkouts/substrate-7e08433d4c370a21/3348e14/primitives/runtime/src/traits.rs:1129:30
     |
1129 | pub trait Extrinsic: Sized + MaybeMallocSizeOf {
     |                              ^^^^^^^^^^^^^^^^^ required by this bound in `Extrinsic`

error[E0277]: the trait bound `unchecked_extrinsic::UncheckedExtrinsic<Address, Call, Signature, Extra>: parity_util_mem::malloc_size::MallocSizeOf` is not satisfied
   --> /home/user2038/.cargo/git/checkouts/frontier-b733f450c86c5786/2e4daa4/primitives/self-contained/src/unchecked_extrinsic.rs:142:58
    |
142 | impl<Address, Call: SelfContainedCall, Signature, Extra> ExtrinsicCall
    |                                                          ^^^^^^^^^^^^^ the trait `parity_util_mem::malloc_size::MallocSizeOf` is not implemented for `unchecked_extrinsic::UncheckedExtrinsic<Address, Call, Signature, Extra>`
    |
    = help: the following other types implement trait `parity_util_mem::malloc_size::MallocSizeOf`:
              &'a T
              ()
              (TupleElement0, TupleElement1)
              (TupleElement0, TupleElement1, TupleElement2)
              (TupleElement0, TupleElement1, TupleElement2, TupleElement3)
              (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4)
              (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5)
              (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6)
            and 113 others
note: required by a bound in `ExtrinsicCall`
   --> /home/user2038/.cargo/git/checkouts/substrate-7e08433d4c370a21/3348e14/frame/support/src/traits/misc.rs:673:26
    |
673 | pub trait ExtrinsicCall: sp_runtime::traits::Extrinsic {
    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `ExtrinsicCall`

I have don't know what is missing in my code. This parity_util_mem::malloc_size::MallocSizeOf has never appeared in my code... any idea?

1 Answer 1

1

It looks like you are using patch.

If the traits' versions mismatch. You will get this error.

For example:

# crate_a Cargo.toml
scale-info = 2.0

// crate_a lib.rs
#[derive(TypeInfo)]
pub struct S;

---

# crate_b Cargo.toml
scale-info = 1.0
// crate_b lib.rs
pub trait T: TypeInfo { fn f(); }

<crate_a::S as T>::f();

The compiler will say S did not implement TypeInfo.

2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.