hypersign-protocol / whitepaper

2 stars 0 forks source link

Research on ethermint/EVMOS #5

Open Vishwas1 opened 2 years ago

Vishwas1 commented 2 years ago

Ethermint: EVM Compatible, Tendermint PoS

the perfect fusion between Ethereum and Cosmos

Ethermint is a scalable, high-throughput Proof-of-Stake blockchain that is fully compatible and interoperable with Ethereum. It's built using the Cosmos SDK which runs on top of Tendermint Core consensus engine.

Ethermint allows for running vanilla Ethereum as a Cosmos application-specific blockchain. This allows developers to have all the desired features of Ethereum, while at the same time, benefit from Tendermint’s PoS implementation.

Also, because it is built on top of the Cosmos SDK, it will be able to exchange value with the rest of the Cosmos Ecosystem through the Inter Blockchain Communication Protocol (IBC).

Components of Ethermint

  1. Ethereum Virtual Machine: EVM is the leading standard for smart-contract development. With EVM compatibility, developers can build the same way that they would do on Ethereum, and benefit from the same tools and applications.
  2. Cosmos SDK: The Cosmos SDK is an open-source framework for building multi-asset public PoS blockchains interoperable with the Cosmos ecosystem and notably the Cosmos Hub. #9
  3. Tendermint's Core BFT POS consensus engine: Tendermint Core is the consensus system of the Tendermint platform that additionally consists of a generic application interface. #6

Features

  1. full Web3 compatibility
  2. fully compatible with Ethereum’s Web3 interface and the existing tooling around Ethereum clients via RPC
  3. Built on Tendermint, it is faster and cheaper to execute smart contract s
  4. unlimited horizontal scalability:
    • By itself, Ethermint can process around 200 TPS (transactions per second).
    • But with the Cosmos Hub, you can increase that number significantly.
    • it is possible to create a second, third, etc. Ethermint zone, increasing the TPS with every Ethermint zone that is added.
    • This method of achieving horizontal scalability is unique to the Cosmos network. And it’s infinitely scalable.
  5. Instant transaction finality: where blocks are finalized in around 1 second on average
  6. offer built-in interoperability functionalities with other Cosmos and BFT chains by using IBC
  7. Developers can also benefit from using a bridge network (like Chainbridge, or a Peg Zone) to enable interoperability between mainnet Ethereum and Ethermint.

Why etheremint ?


The sum of these features allows developers to leverage existing Ethereum ecosystem tooling and software to seamlessly deploy smart contracts which interact with the rest of the Cosmos ecosystem!

Tendermint

image

Ethereum

image

Etheremint

image

image

Tendermint Core would be responsible for

- Sharing blocks and transactions between nodes
- Establishing a canonical/immutable order of transactions (the blockchain)

The EVM module (x/evm) packaged inside Ethermint can be used separately as its own standalone module.

Interoperability

References

arnabghose997 commented 2 years ago

Following are the steps for setting up a 2 node cluster in EVMOS

> git clone https://github.com/tharsis/evmos.git
> cd evmos
> make install
> evmosd testnet init-files --v 2 --output-dir ~/multi-node

--v- Number of validator nodes

--output-dir - Directory to store the nodes related info

├── gentxs
│   ├── node0.json
│   └── node1.json
├── node0
│   └── evmosd
│       ├── config
│       │   ├── app.toml
│       │   ├── config.toml
│       │   ├── genesis.json
│       │   ├── node_key.json
│       │   └── priv_validator_key.json
│       ├── data
│       │   └── priv_validator_state.json
│       └── key_seed.json
└── node1
    └── evmosd
        ├── config
        │   ├── app.toml
        │   ├── config.toml
        │   ├── genesis.json
        │   ├── node_key.json
        │   └── priv_validator_key.json
        ├── data
        │   └── priv_validator_state.json
        └── key_seed.json

We now have to make port changes for some parameters, because at this moment, both nodes have same port configuration for the most params

The following parameters of node1/evmosd/config/app.toml should have the values set as follows:

The following parameters of node1/evmosd/config/config.toml should have the values set as follows:

The following parameters of node0/evmosd/config/config.toml should have the values set as follows:

Save the files and exit

# Node0
> evmosd start --home ~/multi-node/node0/evmosd

# Node1 (In another terminal window)
> evmosd start --home ~/multi-node/node1/evmosd
Vishwas1 commented 2 years ago

image

image

arnabghose997 commented 2 years ago

Unified portal of Evmos: https://evmos.me/

Blog on this: https://evmos.blog/featuring-evmos-me-an-all-in-one-evmos-portal-da0676f32f28