cosmos / ethermint Goto Github PK
View Code? Open in Web Editor NEWEthermint 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
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
Gets # transactions in a block referenced by hash
Uncles per block referenced by hash
TBD: Uncles in the context of tendermint?
Maybe we will need to replay them but we will never encounter them?
ModuleBasicManager requires these function implementations when starting, stopping, or exporting the chain.
file should be located at x/evm/genesis.go
CLI cobra commands to be added to the CLI defined outside of the SDK module
Are we mapping gas cost to the ethermint equivalent of photons?
Same as #36 but RLP decode before sending tx
Note: Ethereum encoded bytes, not an encoded Cosmos tx
CLI is set up outside of the module, but the cobra commands for the queries are defined within the SDK module. Should run logic done in #9
Can get balance through StateDB.GetBalance ? Will this be a different balance than the photons stored within the Supply Keeper?
Sign calculates an ECDSA signature for:
keccack256("\x19Ethereum Signed Message:\n" + len(message) + message)
TBD: Is this needed for ethermint?
List accounts available to node.
Logic should be setup already in module to be able to query the Accounts Keeper ?
Same as #43 But instead of block hash, block number
Should be able to be easily queried through StateDB committed to KV store with GetStorageAt(...)
Returning txs in tx pool based on the address of the accounts/wallets this node/daemon manages
Can probably just keep defaulting as 0?
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
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
.
CLI commands to run commands to setup the daemon and run transactions
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.
Ethereum RPC to run implementations of the web3 protocol
Are we just going to return the Tendermint equivalent of height? If so, that will be an easy implementation
Same as #32 but referencing block by number instead of hash
Will rely on other issues to know which Keepers and modules are required for the app, but this will need to be updated to have a functioning implementation of the module
Returns all changes since last filter read
For pending transaction and block filters the result is []common.Hash. Else returns logs
cliCtx.GetNode()
client.Status()
For consistency, a standard function codec generation with modules for the application should be set up to be used within the CLI and daemon of the application
Filter to query logs based on block number, address and/or topics
Reference tx from block pulled from mem referenced by hash
TBD: How to get block data by hash/ number
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
Get nonce at address, which the equivalent in CosmosSDK is sequence
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.
Removes filter (by ID)
Gets # txs in a block referenced by hash, same as #30 but by block number/height
Address that previously mining rewards get sent to
TBD: ignore or keep to send staking rewards to?
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?
Reading tx from raw db from raw hash, using backend as context and hash to reference
Daemon command for block production node running in background to handle txs
To watch for new pending transactions
Can we watch for pending txs?
Includes setting up the AppModule implementation and AppModuleBasic implementation. Generic Cosmos SDK interface implementations (functions to be implemented can be seen here.
Rebuilding receipt interface from tx retrieved from the tx hash
May have to rebuild logs as in eth_getLogs
Same as #40 but By number instead of hash
Returns block data given hash, can retrieve with blockchain context
Move logic from sending Eth Transaction currently in app/ante.go
to handle transactions through API
Is already setup with the Ethereum codec in crypto/codec.go
To watch for new blocks
Will be a more extensive issue to monitor and handle the contract execution
Same as #47 but block number instead of hash
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.