debug_getModifiedAccountsByHash
curl --request POST \
--url https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154 \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_getModifiedAccountsByHash",
"params": [
"0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758"
]
}
'import requests
url = "https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_getModifiedAccountsByHash",
"params": ["0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758"]
}
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({
id: 1,
jsonrpc: '2.0',
method: 'debug_getModifiedAccountsByHash',
params: ['0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758']
})
};
fetch('https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154', 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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154",
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([
'id' => 1,
'jsonrpc' => '2.0',
'method' => 'debug_getModifiedAccountsByHash',
'params' => [
'0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758'
]
]),
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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getModifiedAccountsByHash\",\n \"params\": [\n \"0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758\"\n ]\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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getModifiedAccountsByHash\",\n \"params\": [\n \"0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
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 \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getModifiedAccountsByHash\",\n \"params\": [\n \"0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": [
"<string>"
]
}Arbitrum node API
debug_getModifiedAccountsByHash | Arbitrum
Arbitrum API method that retrieves a list of accounts that were modified in a specific block, identified by the block’s hash. On Arbitrum.
POST
/
66f812de2a6724a75a51f60dd6f2a154
debug_getModifiedAccountsByHash
curl --request POST \
--url https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154 \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_getModifiedAccountsByHash",
"params": [
"0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758"
]
}
'import requests
url = "https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_getModifiedAccountsByHash",
"params": ["0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758"]
}
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({
id: 1,
jsonrpc: '2.0',
method: 'debug_getModifiedAccountsByHash',
params: ['0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758']
})
};
fetch('https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154', 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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154",
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([
'id' => 1,
'jsonrpc' => '2.0',
'method' => 'debug_getModifiedAccountsByHash',
'params' => [
'0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758'
]
]),
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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getModifiedAccountsByHash\",\n \"params\": [\n \"0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758\"\n ]\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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getModifiedAccountsByHash\",\n \"params\": [\n \"0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
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 \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getModifiedAccountsByHash\",\n \"params\": [\n \"0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": [
"<string>"
]
}Arbitrum API method that retrieves a list of accounts that were modified in a specific block, identified by the block’s hash. This method compares the state tries between the specified block and its parent to find all accounts with changed state.
Learn how to deploy a node with the debug and trace API methods enabled.
This method is available for post-Nitro blocks only (block 22,207,815 and later). For pre-Nitro blocks, use the
arbtrace_* methods instead.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
startHash— the hash of the block for which to retrieve modified accounts. When only this parameter is provided, the method returns accounts modified in this single block (compared to its parent).endHash— (optional) the hash of the end block. When provided, the method returns accounts modified between thestartHashblock and theendHashblock.
Response
result— an array of account addresses that were modified in the specified block or range.
debug_getModifiedAccountsByHash code examples
const ethers = require('ethers');
const NODE_URL = "YOUR_CHAINSTACK_ENDPOINT";
const provider = new ethers.JsonRpcProvider(NODE_URL);
const getModifiedAccounts = async (blockHash) => {
const result = await provider.send("debug_getModifiedAccountsByHash", [blockHash]);
console.log(result);
};
getModifiedAccounts("0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758");
from web3 import Web3
node_url = "YOUR_CHAINSTACK_ENDPOINT"
web3 = Web3(Web3.HTTPProvider(node_url))
block_hash = "0x5765eab677d93b81a1c29de804e115d0e4db8dd40e0deabcf187e4e0d047c758"
result = web3.provider.make_request('debug_getModifiedAccountsByHash', [block_hash])
print(result)
Use case
Thedebug_getModifiedAccountsByHash method is useful for tracking state changes at the account level. Developers debugging contract interactions can identify exactly which accounts were affected by transactions in a specific block. This is also valuable for building state change monitoring tools, forensic analysis, and audit systems that need to track account modifications.Last modified on June 22, 2026
Was this page helpful?