Ethrex design principles:

- Ensure effortless setup and execution across all target environments.

- Be vertically integrated. Have the minimal amount of dependencies.

- Be structured in a way that makes it easy to build on top of it, i.e rollups, vms, etc.

- Have a simple type system. Avoid having generics leaking all over the codebase.

- Have few abstractions. Do not generalize until you absolutely need it. Repeating code two or three times can be fine.

- Prioritize code readability and maintainability over premature optimizations.

- Avoid concurrency split all over the codebase.

- Concurrency adds complexity. Only use where strictly necessary.