eth_getBlockTransactionCountByHash
curl --request POST \
--url https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "eth_getBlockTransactionCountByHash",
"params": [
"0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a"
],
"id": 1
}
'import requests
url = "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm"
payload = {
"jsonrpc": "2.0",
"method": "eth_getBlockTransactionCountByHash",
"params": ["0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a"],
"id": 1
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
jsonrpc: '2.0',
method: 'eth_getBlockTransactionCountByHash',
params: ['0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a'],
id: 1
})
};
fetch('https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'method' => 'eth_getBlockTransactionCountByHash',
'params' => [
'0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a'
],
'id' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getBlockTransactionCountByHash\",\n \"params\": [\n \"0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a\"\n ],\n \"id\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getBlockTransactionCountByHash\",\n \"params\": [\n \"0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a\"\n ],\n \"id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getBlockTransactionCountByHash\",\n \"params\": [\n \"0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a\"\n ],\n \"id\": 1\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 1,
"result": "0x5"
}Hyperliquid node API
eth_getBlockTransactionCountByHash | Hyperliquid EVM
The eth_getBlockTransactionCountByHash JSON-RPC method returns the number of transactions in a block by its hash. On Hyperliquid EVM.
POST
/
evm
eth_getBlockTransactionCountByHash
curl --request POST \
--url https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "eth_getBlockTransactionCountByHash",
"params": [
"0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a"
],
"id": 1
}
'import requests
url = "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm"
payload = {
"jsonrpc": "2.0",
"method": "eth_getBlockTransactionCountByHash",
"params": ["0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a"],
"id": 1
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
jsonrpc: '2.0',
method: 'eth_getBlockTransactionCountByHash',
params: ['0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a'],
id: 1
})
};
fetch('https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'method' => 'eth_getBlockTransactionCountByHash',
'params' => [
'0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a'
],
'id' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getBlockTransactionCountByHash\",\n \"params\": [\n \"0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a\"\n ],\n \"id\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getBlockTransactionCountByHash\",\n \"params\": [\n \"0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a\"\n ],\n \"id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getBlockTransactionCountByHash\",\n \"params\": [\n \"0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a\"\n ],\n \"id\": 1\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 1,
"result": "0x5"
}This method is available on Chainstack. Not all Hyperliquid methods are available on Chainstack, as the open-source node implementation does not support them yet — see Hyperliquid methods for the full availability breakdown.
eth_getBlockTransactionCountByHash JSON-RPC method returns the number of transactions in a block by its hash. This method provides a lightweight way to get transaction count information without retrieving the full block data, making it efficient for block analysis and statistics.
Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
Parameters
The method takes one parameter:- Block hash - The hash of the block to get the transaction count for
Parameter details
blockHash(string, required) — The 32-byte hash of the block
Response
The method returns the number of transactions in the specified block as a hexadecimal string, ornull if the block is not found.
Response structure
Transaction count:result— The number of transactions in the block as a hexadecimal string
Data interpretation
Count format:- Returned as hexadecimal string with
0xprefix - Convert to decimal for numerical operations
0x0indicates an empty block (no transactions)nullindicates the block hash doesn’t exist
// Convert hex count to decimal
const txCount = parseInt("0x5", 16); // 5 transactions
Usage example
Basic implementation
// Get transaction count for a block by hash on Hyperliquid
const getBlockTransactionCountByHash = async (blockHash) => {
const response = await fetch('https://hyperliquid-mainnet.core.chainstack.com/YOUR_ENDPOINT/evm', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
jsonrpc: '2.0',
method: 'eth_getBlockTransactionCountByHash',
params: [blockHash],
id: 1
})
});
const data = await response.json();
if (data.result === null) {
throw new Error('Block not found');
}
return {
hex: data.result,
decimal: parseInt(data.result, 16)
};
};
// Analyze multiple blocks for activity patterns
const analyzeBlockActivity = async (blockHashes) => {
const results = [];
for (const hash of blockHashes) {
try {
const count = await getBlockTransactionCountByHash(hash);
results.push({
blockHash: hash,
transactionCount: count.decimal
});
} catch (error) {
console.error(`Error processing block ${hash}:`, error);
results.push({
blockHash: hash,
transactionCount: null,
error: error.message
});
}
}
// Calculate statistics
const validCounts = results
.filter(r => r.transactionCount !== null)
.map(r => r.transactionCount);
if (validCounts.length === 0) {
return { results, statistics: null };
}
const statistics = {
totalBlocks: validCounts.length,
totalTransactions: validCounts.reduce((sum, count) => sum + count, 0),
averageTransactions: validCounts.reduce((sum, count) => sum + count, 0) / validCounts.length,
maxTransactions: Math.max(...validCounts),
minTransactions: Math.min(...validCounts),
emptyBlocks: validCounts.filter(count => count === 0).length
};
return { results, statistics };
};
// Usage examples
const blockHash = "0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a";
getBlockTransactionCountByHash(blockHash)
.then(count => console.log(`Block has ${count.decimal} transactions`))
.catch(error => console.error('Error:', error));
// Analyze multiple blocks
const blockHashes = [
"0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a",
"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
];
analyzeBlockActivity(blockHashes)
.then(analysis => console.log('Block Activity Analysis:', analysis))
.catch(error => console.error('Error:', error));
Efficiency benefits
Lightweight queries
Minimal data transfer:- Returns only the transaction count, not full block data
- Significantly smaller response than
eth_getBlockByHash - Faster response times for count-only queries
- Ideal for preliminary block analysis and statistics
Performance optimization
Conditional processing:- Check transaction count before deciding to process full block
- Skip empty blocks in analysis workflows
- Optimize processing based on block activity levels
- Implement efficient batch processing strategies
Example request
curl -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a"],"id":1}' \
https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm
from web3 import Web3
w3 = Web3(Web3.HTTPProvider("YOUR_CHAINSTACK_ENDPOINT"))
block_hash = "0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a"
# Passing a block hash routes to eth_getBlockTransactionCountByHash
count = w3.eth.get_block_transaction_count(block_hash)
print(count)
import { JsonRpcProvider } from "ethers";
const provider = new JsonRpcProvider("YOUR_CHAINSTACK_ENDPOINT");
const blockHash =
"0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a";
// ethers v6 has no dedicated helper, so call the method directly
const count = await provider.send("eth_getBlockTransactionCountByHash", [
blockHash,
]);
console.log(parseInt(count, 16));
import { createPublicClient, http } from "viem";
const client = createPublicClient({
transport: http("YOUR_CHAINSTACK_ENDPOINT"),
});
const blockHash =
"0x53e84f299e6893680383c6a53329574122a7292e5bb9397bb6a0b51b4db5957a";
// Passing blockHash routes to eth_getBlockTransactionCountByHash
const count = await client.getBlockTransactionCount({ blockHash });
console.log(count);
Use your own endpoint in your code. The code examples use a placeholder Chainstack endpoint (YOUR_CHAINSTACK_ENDPOINT) — replace it with your own Hyperliquid node endpoint from the Chainstack console. The curl above uses a shared public endpoint for quick checks only; do not use it in production.
Use cases
Theeth_getBlockTransactionCountByHash method is essential for applications that need to:
- Block statistics: Generate transaction count statistics and metrics
- Network analysis: Analyze blockchain activity patterns and trends
- Performance optimization: Optimize block processing based on transaction counts
- Block explorers: Display transaction counts in block listings efficiently
- Analytics platforms: Collect block activity data for analysis
- Monitoring systems: Track network activity and usage patterns
- Development tools: Optimize applications based on block activity levels
- Data visualization: Create charts and graphs of block activity over time
This method returns only the transaction count, including both regular transactions and system transactions from HyperCore. The count represents the total number of all transactions in the block. Use
eth_getBlockByHash if you need the full block data including transaction details.Body
application/json
JSON-RPC version
Available options:
2.0 The RPC method name
Available options:
eth_getBlockTransactionCountByHash Parameters: [blockHash]
Request identifier
Last modified on June 24, 2026
Was this page helpful?