Certain principles that are followed as the design principles of Ethereum. These are as follows.
- Simplicity:
- ethereum protocol should be as simple as possible even at the cost of some data storage and time inefficiency ( note: in case of complex scenarios, documentation should be clear, concise and up-to-date )
- the protocol should be easy to implement for an average developer
- any optimization should be avoided unless it adds substantial benefits
- Universality:
- there are no features to ethereum's design
- it allows an internal scripting language to allow development of any smart contract or transaction type that can be mathematically defined
- one can
- invent own financial derivative
- make own currency
- Modularity:
- parts of the ethereum protocol should be as modular as possible
- any future development causing modification to the protocol, should not impact the application stack example Ethash, modified Patricia Trees, RLP
- the development should be helpful for entire ecosystem not just individual or itself
- Agility:
- the ethereum protocol are not stoned, there may be a need to modify architecture to allow better scalabilty or security
- Non-descrimination:
- the protocol should not be restricted or prevent specific categories of usage
- a programmer can even run an infinite loop script on ethereum to keep paying per-computational-step transaction fee