Long story short, after a 15h+ debug session I've found that a new module I added would exceed construct_runtime!'s maximum module count. I base this assumption on the fact that removing my (or any other) module from the macro call would make the problem go away. The issue was particularly hard to debug because I would only get messages about missing trait bounds for Executor.
Our decision to try Substrate has come from the scaling limitations of Ethereum (contract size limits, unreasonable transaction costs, etc.). I bumped into this at our 28th module and to be honest there's likely many more modules left to implement. I feel it would be best if we could avoid having to merge unrelated logic from different modules into bigger ones to deal with this.
Hey, I think you probably hit the maximum tuple limit we implement traits for. That is definitely solvable and on my list of things to do :)
As we currently don't support more, you still should be able to use more with a trick:
(Module, Module, Module, Module) can be split into ((Module, Module), (Module, Module)).
(Module, Module, Module, Module)can be split into((Module, Module), (Module, Module)).
I couldn't get this to work. Do you have an example code for this?
This is fixed with: https://github.com/paritytech/substrate/pull/3598
@maxsam4 just use latest Master.
Most helpful comment
Hey, I think you probably hit the maximum tuple limit we implement traits for. That is definitely solvable and on my list of things to do :)