4

I found that Substrate has a limit of 64 pallets that can be added to the runtime. Adding more causes the following (very unobvious) error:

error[E0599]: the function or associated item `execute_block` exists for struct `Executive<Runtime, Block<Header<u32, BlakeTwo256>, ...>, ..., ..., ..., ...>`, but its trait bounds were not satisfied

enter image description here

I'm using this runtime as a template.

Is there a way to extend this limitation?

1 Answer 1

7

I think you are the first one to hit that limit 😂. The compile error comes directly from Rust. Not sure how much we can do to have a nicer print.

frame-support exposes multiple features like tuples-96 which should enable support for runtimes with more pallets. In your Cargo.toml you would additionally enable frame-support/tuples-96.

4
  • Thanks, works perfectly after adding tuples-96 feature like this: frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36", features = ["tuples-96"] }
    – Filk
    Feb 15, 2023 at 14:44
  • Limit has been increased on master branch: github.com/paritytech/substrate/pull/13760
    – Bruno
    Apr 7, 2023 at 11:42
  • That was done only for the kitchensink runtime - other projects will still need to change their code to avoid it. Apr 7, 2023 at 14:14
  • 1
    We have also improved the error message that's thrown by construct_runtime!: github.com/paritytech/substrate/pull/13763. It shouldn't be confusing anymore, once the tuple limit needs to be bumped - this should inform us properly from now on.
    – Lazycoder
    Apr 7, 2023 at 16:25

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.