> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chainstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# eth_getBlockByHash | Polygon

> Polygon API method that returns information about the block matching the given block hash. eth_getBlockByHash on Polygon via Chainstack.

Polygon API method that returns information about the block matching the given block hash. This method can be useful for analyzing a block and its transactions.

## Parameters

* `hash` — the hash of the block
* `boolean` — if `true`, it returns the detail of each transaction. If `false`, only the hashes of the transactions.

## Response

* `object` — block object, or `null` when no block was found.
  * `number` — the block number of the requested block, encoded as hexadecimal. `null` if the block is pending.
  * `hash` — the block hash of the requested block. `null` if the block pending.
  * `parenthash` — the hash of the previous block that was used to generate the current block. Also known as the 'parent block'.
  * `nonce` — the hash used to demonstrate proof-of-work. `null` if the block pending. It returns `0x0000000000000000` when the consensus is proof-of-stake.
  * `sha3uncles` — the hash of the list of uncles included in the block. It is used to identify the block uniquely and to verify the integrity of the block's data.
  * `logsbloom` — the bloom filter for the logs of the block, a data structure that allows for efficient membership testing of elements in a set, in this case, the logs included in the block. `null` if pending.
  * `transactionsroot` — the root of the transaction trie of the block. The `transactionsRoot` field allows Ethereum nodes to verify the integrity of the transactions in a block.
  * `stateroot` — the root of the final state trie of the block. The `stateroot` field is included in the block header and is used to verify the integrity of the state at the time the block was processed
  * `receiptsroot` — the root of the receipts trie of the block. A 32-byte hash of the root node of the receipts trie of all transactions in the block. It is used to verify the integrity of the receipts data for all transactions in the block.
  * `miner` — the address of the miner receiving the reward.
  * `difficulty` — a measure of how hard it is to find a valid block for the Ethereum blockchain. It is a number that increases as more miners join the network and more blocks are added to the chain. Encoded as hexadecimal.
  * `totaldifficulty` — `null`. This field is obsolete as it was used during Ethereum's Proof of Work (PoW) era. Polygon PoS chain uses Proof of Stake consensus and this value is not relevant.
  * `extradata` — the extra data included in a block by the miner who mined it. It often includes messages or other information related to the block.
  * `size` — the size of this block in bytes as an integer value, encoded as hexadecimal.
  * `gaslimit` — the maximum gas allowed in this block, encoded as hexadecimal.
  * `gasused` — the total used gas by all transactions in this block, encoded as hexadecimal.
  * `timestamp` — the Unix timestamp for when the block was collated.
  * `transactions` — array of transaction objects. See [eth\_getTransactionByHash](/reference/ethereum-gettransactionbyhash) for the exact shape.
  * `uncles` — the array of uncle hashes.

## `eth_getBlockByHash` code examples

<CodeGroup>
  ```javascript ethers.js theme={"system"}
  const ethers = require('ethers');
  const NODE_URL = "CHAINSTACK_NODE_URL";
  const provider = new ethers.JsonRpcProvider(NODE_URL);

  const eth_getBlockByHash = async () => {
      const blockByNumber = await provider.send("eth_getBlockByHash", ["0xdfa56bbff2aafaf7b0ac33ca0fd1393ca15830a608763680a563d0a7b4c083ff",false]);
       console.log(blockByNumber);
     };

  eth_getBlockByHash();
  ```

  ```python web3.py theme={"system"}
  # Polygon is a Proof of Authority (POA) chain. Web3.py requires the use of the POA compatibility middleware.
  from web3 import Web3
  from web3.middleware import geth_poa_middleware

  node_url = "CHAINSTACK_NODE_URL"
  web3 = Web3(Web3.HTTPProvider(node_url))

  # Inject the POA compatibility middleware to the innermost layer.
  web3.middleware_onion.inject(geth_poa_middleware, layer=0)

  print(web3.eth.get_block("0x7709b7cacb9a3d647afe557d51891c00ad0c00e01d5bffdbcfe6c1730d36290c", False))
  ```
</CodeGroup>

## Use case

The `eth_getBlockByHash` is excellent for analytics purposes. For example, it can be used to quickly find out the hashes of transactions that create new smart contracts. The `transactions` field, an array of all the transactions within the block, is returned in the response. By iterating through this array and examining each transaction's `to` field, a user can determine which transactions in the block are creating new smart contracts.

The following example uses the web3.js library to create a function to extract this data:

The previous example shows how the `eth_getBlockByHash` method might be used to know which transactions create a smart contract. When a new smart contract is created, the `to` field will be `null`. Running this function on a block hash with the transactions detail field set to `true` will inspect each transaction's `to` field. If the field is `null`, the transaction creates a smart contract, printing the transaction hash, which can then be used for further analysis.


## OpenAPI

````yaml openapi/polygon_node_api/blocks_info/eth_getBlockByHash.json POST /a9bca2f0f84b54086ceebe590316fff3
openapi: 3.0.0
info:
  title: eth_getBlockByHash
  version: 1.0.0
  description: This is an API example for eth_getBlockByHash.
servers:
  - url: https://nd-828-700-214.p2pify.com
security: []
paths:
  /a9bca2f0f84b54086ceebe590316fff3:
    post:
      tags:
        - upload
      summary: eth_getBlockByHash
      operationId: getBlockByHash
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  default: 1
                jsonrpc:
                  type: string
                  default: '2.0'
                method:
                  type: string
                  default: eth_getBlockByHash
                params:
                  type: array
                  items:
                    anyOf:
                      - type: string
                        default: >-
                          0x633a90413361fe1889d1e5ab4cb222608d224c458b30289b8390496a3fab29d8
                      - type: boolean
                        default: false
                  default:
                    - >-
                      0xdfa56bbff2aafaf7b0ac33ca0fd1393ca15830a608763680a563d0a7b4c083ff
                    - false
      responses:
        '200':
          description: The block information
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                  id:
                    type: integer
                  result:
                    type: object

````