5

I want to monitor the mempool for my pending transactions. I understand one can monitor pending transactions by eth_subscribe (e.g. answered here). But some of my transactions have been stuck in the txpool, and they don't seem to show up in the result ofeth_subscribe`.

I'm confused by the difference between mempool, txpool, and pending transactions returned from eth_subscribe.

  1. how to retrieve transactions that are already in txpool?
  2. eth_subscribe only returns txid. Some of them can't be found by eth.getTransaction. What does that mean?
  3. Transactions returned from eth_subscribe are different from what are in txpool. It's unclear whether they form a superset of txpool or not.
1
  • have you ever got a good explanation about the differences? it will help me too. thanks
    – T.Todua
    Dec 2, 2021 at 12:08

2 Answers 2

1

Actually Web3 does have a method to return what you looking for you can find the details here: https://web3py.readthedocs.io/en/fix_docs_build/web3.txpool.html#web3.txpool.TxPool.content

A simple call would be as follows:

w3 = Web3(HTTPProvider("http://provider.com"))
w3.geth.txpool.content()

This gets you nicely all the data of the pending transactions in a dict that looks like this:

{
'pending': {
    '0x0216d5032f356960cd3749c31ab34eeff21b3395': {
    806: [{
        'blockHash': "0x0000000000000000000000000000000000000000000000000000000000000000",
        'blockNumber': None,
        'from': "0x0216d5032f356960cd3749c31ab34eeff21b3395",
        'gas': "0x5208",
        'gasPrice': "0xba43b7400",
        'hash': "0xaf953a2d01f55cfe080c0c94150a60105e8ac3d51153058a1f03dd239dd08586",
        'input': "0x",
        'nonce': "0x326",
        'to': "0x7f69a91a3cf4be60020fb58b893b7cbb65376db8",
        'transactionIndex': None,
        'value': "0x19a99f0cf456000"
    }]
    },
    '0x24d407e5a0b506e1cb2fae163100b5de01f5193c': {
    34: [{
        'blockHash': "0x0000000000000000000000000000000000000000000000000000000000000000",
        'blockNumber': None,
        'from': "0x24d407e5a0b506e1cb2fae163100b5de01f5193c",
        'gas': "0x44c72",
        'gasPrice': "0x4a817c800",
        'hash': "0xb5b8b853af32226755a65ba0602f7ed0e8be2211516153b75e9ed640a7d359fe",
        'input': "0xb61d27f600000000000000000000000024d407e5a0b506e1cb2fae163100b5de01f5193c00000000000000000000000000000000000000000000000053444835ec580000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        'nonce': "0x22",
        'to': "0x7320785200f74861b69c49e4ab32399a71b34f1a",
        'transactionIndex': None,
        'value': "0x0"
    }]
    }
},
'queued': {
    '0x976a3fc5d6f7d259ebfb4cc2ae75115475e9867c': {
    3: [{
        'blockHash': "0x0000000000000000000000000000000000000000000000000000000000000000",
        'blockNumber': None,
        'from': "0x976a3fc5d6f7d259ebfb4cc2ae75115475e9867c",
        'gas': "0x15f90",
        'gasPrice': "0x4a817c800",
        'hash': "0x57b30c59fc39a50e1cba90e3099286dfa5aaf60294a629240b5bbec6e2e66576",
        'input': "0x",
        'nonce': "0x3",
        'to': "0x346fb27de7e7370008f5da379f74dd49f5f2f80f",
        'transactionIndex': None,
        'value': "0x1f161421c8e0000"
    }]
    },
    '0x9b11bf0459b0c4b2f87f8cebca4cfc26f294b63a': {
    2: [{
        'blockHash': "0x0000000000000000000000000000000000000000000000000000000000000000",
        'blockNumber': None,
        'from': "0x9b11bf0459b0c4b2f87f8cebca4cfc26f294b63a",
        'gas': "0x15f90",
        'gasPrice': "0xba43b7400",
        'hash': "0x3a3c0698552eec2455ed3190eac3996feccc806970a4a056106deaf6ceb1e5e3",
        'input': "0x",
        'nonce': "0x2",
        'to': "0x24a461f25ee6a318bdef7f33de634a67bb67ac9d",
        'transactionIndex': None,
        'value': "0xebec21ee1da40000"
    }],
    6: [{
        'blockHash': "0x0000000000000000000000000000000000000000000000000000000000000000",
        'blockNumber': None,
        'from': "0x9b11bf0459b0c4b2f87f8cebca4cfc26f294b63a",
        'gas': "0x15f90",
        'gasPrice': "0x4a817c800",
        'hash': "0xbbcd1e45eae3b859203a04be7d6e1d7b03b222ec1d66dfcc8011dd39794b147e",
        'input': "0x",
        'nonce': "0x6",
        'to': "0x6368f3f8c2b42435d6c136757382e4a59436a681",
        'transactionIndex': None,
        'value': "0xf9a951af55470000"
    }, {
        'blockHash': "0x0000000000000000000000000000000000000000000000000000000000000000",
        'blockNumber': None,
        'from': "0x9b11bf0459b0c4b2f87f8cebca4cfc26f294b63a",
        'gas': "0x15f90",
        'gasPrice': "0x4a817c800",
        'hash': "0x60803251d43f072904dc3a2d6a084701cd35b4985790baaf8a8f76696041b272",
        'input': "0x",
        'nonce': "0x6",
        'to': "0x8db7b4e0ecb095fbd01dffa62010801296a9ac78",
        'transactionIndex': None,
        'value': "0xebe866f5f0a06000"
    }],
    }
}
}

I provided the example in Python, since you didnt specify any language you working on.

-1

If you are getting confused, I suggest you use JSON-RPC

curl -X POST -d '{"jsonrpc":"2.0","method":"txpool_status","params":[],"id":1}' http://ip:port
curl -X POST -d '{"jsonrpc":"2.0","method":"txpool_content","params":[],"id":1}' http://ip:port
curl -X POST -d '{"jsonrpc":"2.0","method":"txpool_inspect","params":[],"id":1}' http://ip:port

If you are familiar with creating POST requests in the language you are using, change the above curl commands to them and use.

1
  • I'm not confused about the tools. I'm curious about the difference between txpool and transactions filtered by eth_subscribe('pending').
    – qweruiop
    Nov 1, 2018 at 4:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.