Context
pallet-revive's exec stack currently blocks Origin::Root from instantiating
contracts:
if entry_point == ExportedFunction::Constructor {
// Root origin can't be used to instantiate a contract.
ensure!(matches!(self.origin, Origin::Signed(_)), DispatchError::RootNotAllowed);
...
}
This forbids any call path that enters revive under bare_call(RuntimeOrigin::root(), ...)
from reaching a CREATE opcode, even when the inner contract semantically wants to
deploy a sub-contrac.
Context
pallet-revive's exec stack currently blocksOrigin::Rootfrom instantiatingcontracts: