Coder Social home page Coder Social logo

cosmos / ethermint Goto Github PK

View Code? Open in Web Editor NEW
404.0 36.0 159.0 30.74 MB

Ethermint is a scalable and interoperable Ethereum, built on Proof-of-Stake with fast-finality using the Cosmos SDK.

Home Page: https://ethermint.dev/

License: Apache License 2.0

Dockerfile 0.18% Makefile 1.99% Go 68.28% Shell 2.28% Solidity 15.92% JavaScript 11.34%
ethereum cosmos-sdk tendermint blockchain cosmos ethermint

ethermint's Introduction

Ethermint

IMPORTANT The ongoing development of this project has migrated to the Tharsis organization. Please use tharsis/ethermint instead of this repository.

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

ethermint's People

Contributors

aaronzgl avatar adityasripal avatar adrianscott avatar ajoydas avatar alexanderbez avatar alexeyakhunov avatar ansermino avatar araskachoi avatar austinabell avatar dependabot-preview[bot] avatar dependabot[bot] avatar dutterbutter avatar edgelang avatar fedekunze avatar freddyli7 avatar helder-moreira avatar j-thompson12 avatar jackzampolin avatar kamid avatar letterj avatar louisliu2048 avatar lovincyrus avatar mhxw avatar mslipper avatar noot avatar okwme avatar revelationofturing avatar sohkai avatar summerpro avatar thomasmodeneis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ethermint's Issues

Implement evm module Keeper

to ./x/evm/<Keeper?>.go ? Also may need to change logic of the keepers to make it compliant with the evm execution. Function implementations of the keeper are to be determined, as well as the exact fields needed from the Keeper struct.

Implement eth_getCode

Access code through StateDB at a given block number. Should be easy when given StateDB as context.

TBD: This can take an optional block number/tag to retieve the code at that block. How do access state from previous blocks?

Add Query types and querier

To handle queries to get data persisted to store. May not be absolutely necessary in our case, but I assume we will at least need a basic implementation for getting wallets/accounts that were set up through ethermint

Implement eth_coinbase

Address that previously mining rewards get sent to

TBD: ignore or keep to send staking rewards to?

Implement eth_newBlockFilter

To watch for new blocks

  1. Does a method exist on the daemon to make this query?
  2. Expose the method to the http server
  3. Enable http server to make a query to the daemon

Implement eth_sign

Sign calculates an ECDSA signature for:

keccack256("\x19Ethereum Signed Message:\n" + len(message) + message)

TBD: Is this needed for ethermint?

Implement GenesisState implementations

ModuleBasicManager requires these function implementations when starting, stopping, or exporting the chain.

file should be located at x/evm/genesis.go

Implement eth_call

Will be a more extensive issue to monitor and handle the contract execution

Set up emintd

Daemon command for block production node running in background to handle txs

Implement eth_blockNumber

Are we just going to return the Tendermint equivalent of height? If so, that will be an easy implementation

Implement eth_accounts

List accounts available to node.

Logic should be setup already in module to be able to query the Accounts Keeper ?

Set up entry into SDK module

Setting up CLI and daemon locations and module NewBasicManager.

Should be as easy as:

// default home directories for the application CLI
	DefaultCLIHome = os.ExpandEnv("$HOME/.nscli")

	// DefaultNodeHome sets the folder where the applcation data and configuration will be stored
	DefaultNodeHome = os.ExpandEnv("$HOME/.nsd")

	// ModuleBasicManager is in charge of setting up basic module elemnets
	ModuleBasics = module.NewBasicManager(
		genaccounts.AppModuleBasic{},
		genutil.AppModuleBasic{},
		auth.AppModuleBasic{},
		bank.AppModuleBasic{},
		params.AppModuleBasic{},
		evm.AppModule{},
		staking.AppModuleBasic{},
		distr.AppModuleBasic{},
		slashing.AppModuleBasic{},
	)

With changing the other SDK to custom variants generated if needed through our implementation

Implement eth_getFilterChanges

Returns all changes since last filter read

For pending transaction and block filters the result is []common.Hash. Else returns logs

Implement eth_protocolVersion

Not sure if this will be necessary to be compliant, but the protocol version is currently defaulted to 63, but there is a version 62 in ethereum as well.

Setup AppModule Interface

Includes setting up the AppModule implementation and AppModuleBasic implementation. Generic Cosmos SDK interface implementations (functions to be implemented can be seen here.

Implement Handler Framework

Handlers define logic that happens when msgs are received. Msgs are implemented in module under x/evm/types/msg.go.

Will most likely just be moving the logic from app/ante.go which includes NewAnteHandler() which handles the different types of txs (ethereum and sdk txs), but there may be more to be built out

See NewHandler() in tutorial's x/nameservice/handler.go.

Implement eth_getBalance

Can get balance through StateDB.GetBalance ? Will this be a different balance than the photons stored within the Supply Keeper?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.