eth_createAccessList
curl --request POST \
--url https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14 \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "eth_createAccessList",
"id": 1,
"params": [
{
"from": "0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63",
"data": "0x608060806080608155"
},
"pending"
]
}
'import requests
url = "https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14"
payload = {
"jsonrpc": "2.0",
"method": "eth_createAccessList",
"id": 1,
"params": [
{
"from": "0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63",
"data": "0x608060806080608155"
},
"pending"
]
}
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_createAccessList',
id: 1,
params: [
{
from: '0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63',
data: '0x608060806080608155'
},
'pending'
]
})
};
fetch('https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14', 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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14",
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_createAccessList',
'id' => 1,
'params' => [
[
'from' => '0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63',
'data' => '0x608060806080608155'
],
'pending'
]
]),
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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_createAccessList\",\n \"id\": 1,\n \"params\": [\n {\n \"from\": \"0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63\",\n \"data\": \"0x608060806080608155\"\n },\n \"pending\"\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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_createAccessList\",\n \"id\": 1,\n \"params\": [\n {\n \"from\": \"0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63\",\n \"data\": \"0x608060806080608155\"\n },\n \"pending\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14")
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_createAccessList\",\n \"id\": 1,\n \"params\": [\n {\n \"from\": \"0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63\",\n \"data\": \"0x608060806080608155\"\n },\n \"pending\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": {
"accessList": [
{
"address": "<string>",
"storageKeys": [
"<string>"
]
}
],
"gasUsed": "<string>"
}
}Base node API
eth_createAccessList | Base
Base API method eth_createAccessList generates an access list for a transaction based on specific default values. Base via Chainstack.
POST
/
2fc1de7f08c0465f6a28e3c355e0cb14
eth_createAccessList
curl --request POST \
--url https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14 \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "eth_createAccessList",
"id": 1,
"params": [
{
"from": "0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63",
"data": "0x608060806080608155"
},
"pending"
]
}
'import requests
url = "https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14"
payload = {
"jsonrpc": "2.0",
"method": "eth_createAccessList",
"id": 1,
"params": [
{
"from": "0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63",
"data": "0x608060806080608155"
},
"pending"
]
}
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_createAccessList',
id: 1,
params: [
{
from: '0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63',
data: '0x608060806080608155'
},
'pending'
]
})
};
fetch('https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14', 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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14",
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_createAccessList',
'id' => 1,
'params' => [
[
'from' => '0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63',
'data' => '0x608060806080608155'
],
'pending'
]
]),
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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_createAccessList\",\n \"id\": 1,\n \"params\": [\n {\n \"from\": \"0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63\",\n \"data\": \"0x608060806080608155\"\n },\n \"pending\"\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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_createAccessList\",\n \"id\": 1,\n \"params\": [\n {\n \"from\": \"0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63\",\n \"data\": \"0x608060806080608155\"\n },\n \"pending\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14")
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_createAccessList\",\n \"id\": 1,\n \"params\": [\n {\n \"from\": \"0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63\",\n \"data\": \"0x608060806080608155\"\n },\n \"pending\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": {
"accessList": [
{
"address": "<string>",
"storageKeys": [
"<string>"
]
}
],
"gasUsed": "<string>"
}
}Base API method
eth_createAccessList generates an access list for a transaction based on specific default values. An access list includes addresses and storage keys the transaction intends to access, facilitating more efficient gas usage.
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
transactionObject— an object containing transaction parameters with default values:from— the address of the sender.data— the data being sent with the transaction.
blockParameter— specifies the blockchain state to use for generating the access list, with a default value of"pending".
Response
result— an object containing:accessList— the generated access list, detailing addresses and storage keys the transaction will access.gasUsed— the estimated gas used to execute the transaction with the generated access list.
Use case
Theeth_createAccessList method is crucial for:
- Preparing transactions that optimize gas usage by explicitly stating which addresses and storage keys will be accessed.
- Developers aiming to reduce transaction costs and improve efficiency on the Base network.
- Transactions that comply with EIP-2930, which introduces access lists as a transaction type to specify state access.
Last modified on June 22, 2026
Was this page helpful?