71090323c0
* gas docs * add period * pending state docs * format * fix links * add more to pendingstate docs * add more to gas docs * add hardspoon doc * minor fix to pendingstate doc * note on rlp encoding * usecase doc * update encoding doc * gas docs * hard spoon and reorder * fix links * encoding * pending state * final touches * update intro * use cases and resources * typo Co-authored-by: Federico Kunze <federico.kunze94@gmail.com> Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
50 lines
2.7 KiB
Markdown
50 lines
2.7 KiB
Markdown
<!--
|
|
order: 2
|
|
-->
|
|
|
|
# Pending State
|
|
|
|
Learn how Ethermint handles pending state queries. {synopsis}
|
|
|
|
## Pre-requisite Readings
|
|
|
|
- [Tendermint Mempool](https://docs.tendermint.com/master/tendermint-core/mempool.htm) {prereq}
|
|
|
|
## Ethermint vs Ethereum
|
|
|
|
In Ethereum, pending blocks are generated as they are queued for production by miners. These pending
|
|
blocks include pending transactions that are picked out by miners, based on the highest reward paid
|
|
in gas. This mechanism exists as block finality is not possible on the Ethereum network. Blocks are
|
|
committed with probabilistic finality, which means that transactions and blocks become less likely
|
|
to become reverted as more time (and blocks) passes.
|
|
|
|
Ethermint is designed quite differently on this front as there is no concept of a "pending state".
|
|
Ethermint uses [Tendermint Core](https://docs.tendermint.com/) BFT consensus which provides instant
|
|
finality for transaction. For this reason, Etheremint does not require a pending state mechanism, as
|
|
all (if not most) of the transactions will be committed to the next block (avg. block time on Cosmos chains is ~8s). However, this causes a
|
|
few hiccups in terms of the Ethereum Web3-compatible queries that can be made to pending state.
|
|
|
|
Another significant difference with Ethereum, is that blocks are produced by validators or block producers, who include transactions from their local mempool into blocks in a
|
|
first-in-first-out (FIFO) fashion. Transactions on Ethermint cannot be ordered or cherry picked out from the Tendermint node [mempool](https://docs.tendermint.com/master/tendermint-core/mempool.html#transaction-ordering).
|
|
|
|
## Pending State Queries
|
|
|
|
Ethermint will make queries which will account for any unconfirmed transactions present in a node's
|
|
transaction mempool. A pending state query made will be subjective and the query will be made on the
|
|
target node's mempool. Thus, the pending state will not be the same for the same query to two
|
|
different nodes.
|
|
|
|
### RPC Calls on Pending Transactions
|
|
|
|
- [`eth_getBalance`](./../basics/json_rpc.md#eth_getbalance)
|
|
- [`eth_getTransactionCount`](./../basics/json_rpc.md#eth-gettransactioncount)
|
|
- [`eth_getBlockTransactionCountByNumber`](./../basics/json_rpc.md#eth-getblocktransactioncountbynumber)
|
|
- [`eth_getBlockByNumber`](./../basics/json_rpc.md#eth-getblockbynumber)
|
|
- [`eth_getTransactionByHash`](./../basics/json_rpc.md#eth-gettransactionbyhash)
|
|
- [`eth_getTransactionByBlockNumberAndIndex`](./../basics/json_rpc.html#eth-gettransactionbyblockhashandindex)
|
|
- [`eth_sendTransaction`](./../basics/json_rpc.md#eth-sendtransaction)
|
|
|
|
## Next {hide}
|
|
|
|
Learn how to deploy a Solidity smart contract on Ethermint using [Truffle](./../guides/truffle.md) {hide}
|