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
Rebuilding receipt interface from tx retrieved from the tx hash
May have to rebuild logs as in eth_getLogs
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.
Removes filter (by ID)
Same as #47 but block number instead of hash
CLI cobra commands to be added to the CLI defined outside of the SDK module
Returning txs in tx pool based on the address of the accounts/wallets this node/daemon manages
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
Get nonce at address, which the equivalent in CosmosSDK is sequence
Same as #40 but By number instead of hash
Includes setting up the AppModule implementation and AppModuleBasic implementation. Generic Cosmos SDK interface implementations (functions to be implemented can be seen here.
Uncles per block referenced by hash
Are we mapping gas cost to the ethermint equivalent of photons?
Same as #43 But instead of block hash, block number
Same as #32 but referencing block by number instead of hash
Returns block data given hash, can retrieve with blockchain context
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
Address that previously mining rewards get sent to
TBD: ignore or keep to send staking rewards to?
Can probably just keep defaulting as 0?
Are we just going to return the Tendermint equivalent of height? If so, that will be an easy implementation
To watch for new pending transactions
Can we watch for pending txs?
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
Should be able to be easily queried through StateDB committed to KV store with GetStorageAt(...)
Gets # transactions in a block referenced by hash
ModuleBasicManager requires these function implementations when starting, stopping, or exporting the chain.
file should be located at x/evm/genesis.go
Daemon command for block production node running in background to handle txs
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
TBD: Uncles in the context of tendermint?
Maybe we will need to replay them but we will never encounter them?
Ethereum RPC to run implementations of the web3 protocol
Will be a more extensive issue to monitor and handle the contract execution
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.
List accounts available to node.
Logic should be setup already in module to be able to query the Accounts Keeper ?
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
Move logic from sending Eth Transaction currently in app/ante.go
to handle transactions through API
Gets # txs in a block referenced by hash, same as #30 but by block number/height
cliCtx.GetNode()
client.Status()
Reading tx from raw db from raw hash, using backend as context and hash to reference
Same as #36 but RLP decode before sending tx
Note: Ethereum encoded bytes, not an encoded Cosmos tx
Sign calculates an ECDSA signature for:
keccack256("\x19Ethereum Signed Message:\n" + len(message) + message)
TBD: Is this needed for ethermint?
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
.
Can get balance through StateDB.GetBalance ? Will this be a different balance than the photons stored within the Supply Keeper?
To watch for new blocks
Returns all changes since last filter read
For pending transaction and block filters the result is []common.Hash. Else returns logs
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?
Filter to query logs based on block number, address and/or topics
CLI commands to run commands to setup the daemon and run transactions
Reference tx from block pulled from mem referenced by hash
TBD: How to get block data by hash/ number
Is already setup with the Ethereum codec in crypto/codec.go
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.