Support of Execution Environments on Serverless

What is the Execution Environment?

Enclaves, that are being used as executors, can use varied enclave images based on following parameters:

  1. Hosting OS
  2. Sand-boxing utility
  3. Runtime environments
  4. Networking mechanism

Why is it needed?

Varied requirements from users. Each kind of workload works best with a suitable environment. Cost also varies for different environments. Users can balance between usability, cost and performance.

What are the various environments available?

  1. Workerd runtime for JS and WASM programs
  2. EVM based runtime for Solidity compiled programs
  3. Docker environment for running containerized applications

How to manage multiple environments?

  1. Environment should be verifiable on-chain
  2. User is able to choose the environment for the job
  3. Job should be only assigned to those executors providing the required environment
  4. Pricing would be different depending upon the environment, hence the USDC deposits would be according to that
  5. One executor can only support one environment
  6. Executor environment should be verified upon getting the response (separate verifying contracts for different environments)

There’s no differentiation between Host OS currently right?

Here hosting OS means the OS packaged inside the EIF. For JS/WASM loads, ubuntu is used and for containerized load, mostly NIX will be used. Hence the differentiation.