Ethereum wiki introduced many different ethereum clients. https://github.com/ethereum/wiki/wiki/Ethereum-Virtual-Machine-(EVM)-Awesome-List
- go-ethereum A popular Ethereum client with its own EVM implementation (core/vm directory)
- Parity in Rust Another popular Ethereum client with its own EVM implementation (ethcore directory)
The questions:
Do different ethereum client have their own EVM?
1.1 If every client has its own EVM, how to make sure the smart contract has same result when it is executed by different client?
1.2 If they use the same EVM, what specification does they follow? How can users know they do follow the specitication?(or how do clients make users trust them?)
If there a bug (or update) in ethereum, how to update the clients?