Boundaries of smart contract platforms


I wonder about the theoretical boundaries of blockchains.

Is it possible to specify the boundaries of applications build on smart-contract platforms like Ethereum, Cardano, Solana, Hyperledger Fabric, etc.?

I understand that Turing completeness allows for all kinds of computations. But besides computation, there are different limitations.

For Ethereum, the boundaries are: block size limit, execution time, memory size limit, supported languages etc.

To overcome those limitations, we can use different platforms or start our own blockchain (e.g., using Substrate).

Then how about platforms like Hyperledger Fabric, it seems to be something between the smart-contract platform and Substrate-based blockchains. It runs smart contracts within a Docker container, so theoretically it supports any (deterministic) execution environment.

The only fundamental difference I see is that Substrate allows for changing consensus layer, which is not possible in Hyperledger Fabric as far as I know. Is it the only difference?

I have a few questions that have been bothering me for some time:

  • How does Substrate differ from Hyperledger Fabric? Is it only about the different runtime?

  • Are there some applications that can not be built on Ethereum or Fabric Hyper ledger, but can with Substrate? Like some features that can not be implemented on Ethereum and other smart-contract platforms.

  • Are there dapps that can not be built on smart-contract platforms, but can be on custom blockchains? Not because of the arbitrary constrains like block size, stack size, execution time, etc. but other limitations, like access to randomness, access to I/O, communication outside the realm of the blockchain, and others.

  • In theory, is it possible to implement any other blockchain using Substrate? ZCash/Filecoin/Chainlink?