Do Ethereum clients have a memory pool which keeps transactions like Bitcoin's mempool? If so, what is the name for it in Ethereum?
It's called the Transaction Pool, or TxPool in the code.
From go-ethereum - tx_pool.go, lines 35 to 62:
var (
// Transaction Pool Errors
...
)
const (
maxQueued = 64 // max limit of queued txs per address
)
...
// TxPool contains all currently known transactions. Transactions
// enter the pool when they are received from the network or submitted
// locally. They exit the pool when they are included in the blockchain.
//
// The pool separates processable transactions (which can be applied to the
// current state) and future transactions. Transactions move between those
// two states over time as they are received and processed.
type TxPool struct {
quit chan bool // Quiting channel
...
In the Go Ethereum client implementation geth
, you can type the following command to display a count of transactions in your pool:
> txpool.status
{
pending: 0,
queued: 1
}
The pending result shows the number of transactions ready to be "executed" (included in the next mined block). The Ethereum transaction pool also has a queue to hold transactions that are not quite ready to process, e.g. when the transaction nonce is too high. See What happens when a transaction nonce is too high?.
And for comparison, here is Bitcoin's txmempool.cpp.