Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 2841 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

GitHub sync

Loading...

GETTING STARTED

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

GUIDES

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

ADD-ONS

Loading...

Loading...

Loading...

API REFERENCE

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Using Web3 libraries

Learn how to interact with blockchain networks through GetBlock’s node infrastructure using popular web3 libraries.

Here you'll find step-by-step instructions on how to integrate popular developer libraries like Web3.js, Ethers.js, and others with GetBlock API.

These libraries allow developers to interact with Ethereum and other EVM-compatible blockchains to read data, send transactions, and deploy smart contracts.

The guide covers setting up your connection to GetBlock and performing basic operations.

Testing RPC connection

This section provides simple examples to help you test your connection to the blockchain, using Ethereum API as a reference.

Plans and limits

GetBlock offers scalable plans tailored to developers and businesses, providing flexible solutions for both small projects and high-traffic platforms.

GetBlock offers flexible plans and features to support developers and businesses at any stage, from small projects to high-traffic platforms. This section covers available plans, scaling features, and managing subscriptions and payments.


How to set up an account

To start using GetBlock's services, you need to register an account. You’ll be ready to go in just a few clicks!

1

Go to GetBlock

Visit the homepage and click on the 'Dashboard' button in the upper-right corner, or use this direct link.

2

Choose the sign-up method

  • Register with Email

    Enter your name and email address, then verify your email to activate the account.

  • Sign in via Google

    Google will share your name, email, language preferences, and profile picture with GetBlock.

  • Connect with MetaMask

    Use a MetaMask wallet browser extension to sign up – no email or password required. If you don’t have a wallet extension installed, you’ll be prompted to add one.

  • Sign up with GitHub

    Use your GitHub credentials to set up an account.

3

Review and accept policies

During registration, you will be asked to accept our Terms of Service and Privacy Policy.

GetBlock's Sign-Up page, where users can register to access blockchain services

Access the dashboard

Once you've created an account and signed in, you'll be directed to the GetBlock Dashboard. Here, you can create endpoints, monitor your usage plan, and access statistics.

GetBlock user Dashboard

Check your User ID

Find your user ID located in the ‘Account Settings’ section or simply click your account icon to view it. Please use it when contacting GetBlock’s team so we can identify your account and help you faster.

Find the user ID

Top up CUs and boost limits

GetBlock users can top up their CU balance or upgrade to higher limits directly from their Dashboard, with a few click.

The current CU balance for Shared Node users is displayed on the Dashboard. This shows how many Compute Units (CUs) are left before running out.

With the "Top Up" feature, users can add more Compute Units to their account or upgrade to higher monthly limits.


Add Compute Units: Paid plan users

Starter, Pro & Enterprise users can refill their CU balance or switch to another plan for increased limits:

  1. Click the "Top Up" button on the Dashboard.

  2. Select the number of CUs you’d like to add or choose the recommended plan (if prompted) based on your usage needs.

  3. Confirm and finalize your purchase.

Your account balance will be updated immediately upon successful payment.


Increase CU limits: Free plan users

Free plan users cannot top up their Compute Units directly. Instead, you have the option to upgrade to one of our monthly paid plans, providing significantly higher limits and extra features.


Boost CU, RPS, and Access Token limits

If you're on the Enterprise plan (our customizable Shared Node plan), you can additionally request higher RPS and Access Token limits. Here’s how:

  1. Click "Change" on the Dashboard next to the Rate Limit section.

  1. Fill out and submit a request form, choosing your desired RPS limit, CU amount, and number of Access Tokens.

  1. Our team will review your request and reach out to you with next steps shortly.

This feature is perfect for users who need higher transaction throughput without changing their plan. For more demanding needs, consider .

Welcome

Welcome to GetBlock.io! We make it easy for developers and businesses to connect to 50+ blockchain networks.

With our tools and services, you can focus on building your Web3 project without worrying about the technical details of setting up and managing blockchain nodes.

From DeFi apps and NFT platforms to analytics tools, AppChains, and more, GetBlock provides the infrastructure to help you build, test, and scale your blockchain-powered solutions.


Core GetBlock features

  • Plug-and-Play access

    Our ready-to-use blockchain nodes and APIs help you get started immediately.

  • 99.9% uptime Reliable 24/7 connection to multiple blockchain networks.

  • Multi-chain support

    Connect to Bitcoin, Ethereum, BNB Chain, Polygon, Solana, TON, and 50+ other networks. (And we support new protocols before anyone else!)

  • Flexible plans

    From free access to enterprise-grade solutions, we’ve got options for every stage of your project.

  • Custom solutions

    Need something unique? We can build tailored solutions for your specific blockchain needs.

  • 24/7 Expert support

    Our team is here to help with integrations, troubleshooting, and scaling.



Discover GetBlock


Popular chains

Get started with our most in-demand blockchain networks.


GetBlock Product Demo

Access token management

GetBlock uses a secure authentication method based on access tokens to ensure that only authorized users can interact with blockchain nodes.

Every you create is assigned a unique access token:

The <ACCESS_TOKEN> authenticates requests directly through the endpoint URL.


Making an authenticated request

To make a request, include your full endpoint URL with the access token in the path.

Access tokens cannot be sent in headers.

For example, here’s how to fetch the latest Ethereum block number:

Response:


Access Token security

Always store your access tokens securely. Avoid exposing them in publicly accessible code repositories or logs.

If a token is compromised, you can quickly roll or delete it without disrupting other endpoints:

  1. Go to your GetBlock Dashboard.

  2. Locate the endpoint associated with the token.

  3. Click the three-dot icon () next to the endpoint.

  4. Select the option to either roll (regenerate) or delete the token.

This authentication method ensures that all your interactions with GetBlock’s services remain secure, reliable, and easy to manage.

eth_blockNumber - Arbitrum

Example code for the eth_blockNumber json-rpc method. Сomplete guide on how to use eth_blockNumber json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

Response

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": "getblock.io"}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x5bc406c"
}
Dedicated Nodes
managing GetBlock CU balance
How to add CU to your GetBlock RPC node package balance
Switching from free GetBlock free plan to higher limit plans
Increasing RPC node limits
Customizing GetBlock's Enterprise plan usage limits
https://go.getblock.io/<ACCESS_TOKEN>/
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>/' \
--header 'Content-Type: application/json' \
--data-raw '{
    "jsonrpc": "2.0",
    "method": "eth_blockNumber",
    "params": [],
    "id": "getblock.io"
}'
{"jsonrpc":"2.0","id":"getblock.io","result":"0x1449641"}
endpoint
How to manage GetBlock access tokens
Regenerate or delete your access token
How to create an account on GetBlock
GetBlock user dashboard for managing blockchain node access
How to find GetBlock user ID

Using cURL for testing

These examples provide a starting point for testing your connection and querying blockchain data using cURL commands.

Before you start:

  1. Create a JSON-RPC endpoint for the Ethereum blockchain from your GetBlock account.

  2. Replace <ACCESS_TOKEN> in the examples below with your actual Access Token.

Fetch the current block number

Run the following command to retrieve the latest block number:

curl --location --request POST 'https://go.getblock.io/<ACCESS_TOKEN>/' \
--header 'Content-Type: application/json' \
--data-raw '{
    "jsonrpc": "2.0",
    "method": "eth_blockNumber",
    "params": [],
    "id": "getblock.io"
}'

If successful, the response will include the current block number in hexadecimal value:

{
    "jsonrpc": "2.0",
    "id": "getblock.io",
    "result": "0x1449641"
}

Get the chain ID

Identify the blockchain network with the eth_chainId method:

curl --location --request POST 'https://go.getblock.io/<ACCESS_TOKEN>/' \
--header 'Content-Type: application/json' \
--data-raw '{
    "jsonrpc": "2.0",
    "method": "eth_chainId",
    "params": [],
    "id": "getblock.io"
}'

Response example:

{
  "jsonrpc": "2.0",
  "id": "getblock.io",
  "result": "0x1"
}

In this example, 0x1 indicates the Ethereum Mainnet. The chain ID helps confirm which blockchain network you are interacting with.

Check account balance by address

Retrieve the balance of an Ethereum address using eth_getBalance. Replace <ACCOUNT_ADDRESS> with the target wallet address:

curl --location --request POST 'https://go.getblock.io/<ACCESS_TOKEN>/' \
--header 'Content-Type: application/json' \
--data-raw '{
    "jsonrpc": "2.0",
    "method": "eth_getBalance",
    "params": ["<ACCOUNT_ADDRESS>", "latest"],
    "id": "getblock.io"
}'

Example response:

{
    "jsonrpc": "2.0",
    "id": "getblock.io",
    "result": "0x5a70dac3910910"
}

The result field shows the account balance in wei (1 ether = 10¹⁸ wei).

For a list of supported RPC methods with examples, navigate to API Reference.

Ethers.js integration

Set up GetBlock as a provider using Ethers.js library to interact with the blockchain and streamline your dApp development process.

Ethers.js is a lightweight JavaScript library for interacting with Ethereum and other EVM-compatible blockchains. It is commonly used by developers to build decentralized applications (dApps) and manage Ethereum-based operations like deploying smart contracts, interacting with them, and managing user wallets.

Install Ethers.js

Add Ethers.js to your project using your preferred package manager:

  • npm

npm install ethers
  • yarn

yarn add ethers

Set GetBlock as a provider

// Import the Ethers library
const { ethers } = require('ethers');

// Set up the provider (replace ACCESS_TOKEN with your actual token)
const provider = new ethers.JsonRpcProvider('https://go.getblock.io/ACCESS_TOKEN');

//Call a method using the provider
const main = async () => {
  const blockNumber = await provider.getBlockNumber();
  console.log("Latest Block Number:", blockNumber);
};

// Call the main function
main();

For further details and advanced usage, explore the Ethers.js documentation.

eth_accounts - Arbitrum

Example code for the eth_accounts json-rpc method. Сomplete guide on how to use eth_accounts json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>/' 
--header 'Content-Type: application/json' 
--data-raw '{"jsonrpc": "2.0", "method": "eth_accounts", "params": [], "id": "getblock.io"}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": []
}

eth_getStorageAt - Arbitrum

Example code for the eth_getStorageAt json-rpc method. Сomplete guide on how to use eth_getStorageAt json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

address to check for balance.

QUANTITY - integer

Position in the storage.

QUANTITY|TAG - integer or string

block number or "latest", "earliest" or "pending"

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getStorageAt", "params": ["0x9b956e3d318625be2686ae7268d81777c462d41f", "0x0", "latest"], "id": "getblock.io"}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

net_listening {disallowed} - Arbitrum

Example code for the net_listening {disallowed} json-rpc method. Сomplete guide on how to use net_listening {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "net_listening",
  "params": [],
  "id": "getblock.io"
}'

Response

{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}

eth_getBlockTransactionCountByHash - Arbitrum

Example code for the eth_getBlockTransactionCountByHash json-rpc method. Сomplete guide on how to use eth_getBlockTransactionCountByHash json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

hash of the block.

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getBlockTransactionCountByHash", "params": ["0xf5524f0cf99ac6bc5905e95294ebed9007e2d978155f3457118eb7a26d97503a"], "id": "getblock.io"}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x5"
}

eth_newFilter - Arbitrum

Example code for the eth_newFilter json-rpc method. Сomplete guide on how to use eth_newFilter json-rpc in GetBlock.io Web3 documentation.

Parameters

Object - object

Filter options

Request

curl --location --request POST 'https://go.getblock.io/YOUR-ACCESS-TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_newFilter", "params": [{"fromBlock": "earliest", "toBlock": "latest", "topics": []}], "id": "getblock.io"}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x7a624b4e4688bb09c14e858427d9ede5"
}

eth_getUncleCountByBlockNumber - Arbitrum

Example code for the eth_getUncleCountByBlockNumber json-rpc method. Сomplete guide on how to use eth_getUncleCountByBlockNumber json-rpc in GetBlock.io Web3 documentation.

Parameters

QUANTITY|TAG - integer or string

block number or "latest", "earliest" or "pending"

Request

curl --location --request POST 'https://go.getblock.io/YOUR-ACCESS-TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getUncleCountByBlockNumber", "params": ["latest"], "id": "getblock.io"}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x0"
}

db_getHex {disallowed} - Arbitrum

Example code for the db_getHex {disallowed} json-rpc method. Сomplete guide on how to use db_getHex {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

database - string

Database name

key - string

key name

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>/' 
--header 'Content-Type: application/json' 
--data-raw '{"jsonrpc": "2.0", "method": "db_getHex", "params": [null, null], "id": "getblock.io"}'

Response

{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}

Arbitrum (ARB)

Arbitrum Network API Reference for efficient interaction with ARB nodes, enabling fast, low-cost Layer 2 scaling solutions for Ethereum with high throughput and secure smart contracts.

db_putString {disallowed} - Arbitrum

Example code for the db_putString {disallowed} json-rpc method. Сomplete guide on how to use db_putString {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

database - string

database name

key - string

key name

string - string

string to store.

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>/' 
--header 'Content-Type: application/json' 
--data-raw '{"jsonrpc": "2.0", "method": "db_putString", "params": [null, null, null], "id": "getblock.io"}'

Response

{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}

eth_getUncleByBlockNumberAndIndex - Arbitrum

Example code for the eth_getUncleByBlockNumberAndIndex json-rpc method. Сomplete guide on how to use eth_getUncleByBlockNumberAndIndex json-rpc in GetBlock.io Web3 documentation.

Parameters

QUANTITY|TAG - integer or string

block number or "latest", "earliest" or "pending"

QUANTITY - string

the uncle’s index position.

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getUncleByBlockNumberAndIndex", "params": ["latest", "0x0"], "id": "getblock.io"}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": null
}

rpc_modules - Arbitrum

Example code for the rpc_modules json-rpc method. Сomplete guide on how to use rpc_modules json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "rpc_modules",
  "params": [],
  "id": "getblock.io"
}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": {
        "arb": "1.0",
        "debug": "1.0",
        "eth": "1.0",
        "net": "1.0",
        "rpc": "1.0",
        "txpool": "1.0",
        "web3": "1.0"
    }
}

eth_getUncleByBlockHashAndIndex - Arbitrum

Example code for the eth_getUncleByBlockHashAndIndex json-rpc method. Сomplete guide on how to use eth_getUncleByBlockHashAndIndex json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

Hash of a block.

QUANTITY - string

the uncle’s index position.

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getUncleByBlockHashAndIndex", "params": ["0xf5524f0cf99ac6bc5905e95294ebed9007e2d978155f3457118eb7a26d97503a", "0x0"], "id": "getblock.io"}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": null
}

shh_newFilter {disallowed} - Arbitrum

Example code for the shh_newFilter {disallowed} json-rpc method. Сomplete guide on how to use shh_newFilter {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

filters - json object

filter object: { "to": "address" (string, optional) - Identity of the receiver. When present it will try to decrypt any incoming message if the client holds the private key to this identity. "topics": ["topic"] (array of string) - Array of topics which the incoming message’s topics should match. }

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "shh_newFilter",
  "params": [null],
  "id": "getblock.io"
}'

Response

{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}

shh_hasIdentity {disallowed} - Arbitrum

Example code for the shh_hasIdentity {disallowed} json-rpc method. Сomplete guide on how to use shh_hasIdentity {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

address - data

the address of the new identiy.

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "shh_hasIdentity",
  "params": [null],
  "id": "getblock.io"
}'

Response

{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}

eth_getBlockTransactionCountByNumber - Arbitrum

Example code for the eth_getBlockTransactionCountByNumber json-rpc method. Сomplete guide on how to use eth_getBlockTransactionCountByNumber json-rpc in GetBlock.io Web3 documentation.

Parameters

QUANTITY|TAG - integer or string

block number or "latest", "earliest" or "pending"

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getBlockTransactionCountByNumber", "params": ["latest"], "id": "getblock.io"}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x5"
}

Ethereum

Tron

Arbitrum

BNB Smart Chain

Solana

Optimism

Polygon

Avalanche

Base

Cover

Getting Started

Create your account, explore plans & features, and make your first API call

Cover

Guides

Set up endpoints, manage access tokens, and integrate GetBlock APIs step-by-step

Cover

API Reference

View supported networks, available endpoints, and full API specifications

Cover

Explorer API

Track transactions and monitor network activity with real-time blockchain data

Errors and troubleshooting

This page provides a guide to common JSON-RPC and HTTP errors when testing your connection with GetBlock's API.

Connection issues

Code
Error message
Solution

401

Access denied

Double-check that <ACCESS_TOKEN> is correctly replaced with your actual token. Ensure there are no trailing spaces.

404

Could not resolve host

Verify that the URL https://go.getblock.io/<ACCESS_TOKEN>/ is correct.

429

Too many requests

Check your GetBlock account for usage limits. Upgrade your plan if necessary.

JSON-RPC errors

Code
Error message
Solution

32601

The method does not exist/is not available

Verify the method name (eth_blockNumber, eth_getBalance, etc.) against the blockchain's JSON-RPC .

32602

Invalid argument

Ensure the parameters in the params array match the expected format for the method.

32700

Parse error

Double-check your JSON syntax. Ensure your request is properly formatted.

Postman Collection

Download the Postman GetBlock’s collection to test our service. It includes all the accessible endpoints of our nodes and ready-to-go examples.

Import the collection into your Postman workspace: https://documenter.getpostman.com/view/28751185/2s9YRDzqcX.

  1. Once the page loads, you'll find a 'Run in Postman' button in the top-right corner. Click this button to open the collection directly in your Postman application.

  2. Select the desired network from the drop-down list on the sidebar.

  3. Paste the access token copied from your account instead of {YOUR_ACCESS_TOKEN}.

Using Postman to send a JSON-RPC request to an Ethereum node via GetBlock

This token will grant you the necessary permissions to explore our node functionalities.

Using GetBlock configuration files

GetBlock’s configuration file provides a more organized and flexible way to interact with blockchain nodes and networks without exposing sensitive API keys or credentials in the code.

How to make HTTP requests with curl using JSON config file

Using GetBlock’s JSON configuration file with curl is particularly helpful when you need to access various node endpoints without hardcoding API keys in the code:

  1. Download the getblock.config.json file from your GetBlock account;

  2. Make sure you have installed. jq is a versatile command-line tool that enables extracting values from JSON files;

  3. Navigate to your workspace or directory where you have imported the getblock.config.json file and open a terminal;

  4. Now, you can make a GET request to a selected node endpoint using the curl command:

How to use GetBlock’s JavaScript config with Web3.js

Connect to Ethereum nodes and other EVM-compatible networks using web3.js and GetBlock’s JS configuration file.

  1. Make sure the web3.js library is added to your project. In order to do that, use one of the following methods:

  • Npm: npm install web3

  • Yarn: yarn add web3

  • Pure js link: dist/web3.min.js

  1. Download the getblock.config.js file from your GetBlock account. Add this file to your project directory.

  2. Import the getblock module to a .js file that configures a new Web3 instance:

  1. Connect to an Ethereum node and start sending API calls using web3.js over HTTP or WebSocket in the format below:

Use go() method to access an entire endpoint or token() to fetch the token.

How to use the JS config with Hardhat

Set up GetBlock’s JS config file in Hardhat following the steps below:

  1. Ensure you have Hardhat installed as a dependency in your Node.js project or run the following command to do so:

  1. Navigate to your GetBlock account and install the getblock.config.js file. Copy and paste it into your working directory;

  2. Open the hardhat.config.js file from your project directory and import the getblock module:

  1. To set up GetBlock as a provider, modify the Hardhat configuration file with the credentials as shown below. Use go() method to access an entire endpoint or token() to fetch the token only.

How to generate accounts and send transactions

This guide explains how GetBlock users can connect to blockchain nodes to create accounts and send transactions.

In blockchains, ‘account’ should be referred to as a pair of private and public keys. Blockchains ‘recognize’ their users and balances by these keypairs.

Unlike login/password pairs in traditional computational solutions, in modern blockchains, every account can be restored with a private key only.

So, to broadcast transactions to a decentralized network, we need first to create (or restore) our account. The whole set of interactions is organized via Web3.js library.

Creating accounts

First, initialize the Web3.js library and set up the connection to a blockchain node:

Next, we can create an account on the testnet:

We can also restore an account from an existing private key:

You may ask what does ‘eth’ mean when we’re interacting with BNB Chain? No mistake, it reflects the fact that BNB Smart Chain is fully compatible with Ethereum Virtual Machine.

Sending transactions

In blockchains, transactions should be signed (authorized) to be ‘included’ into blockchains (confirmed by its consensus of miners or validators).

Here’s how our transactions are created. 0.01 ETH is used for demo.

That’s how the transaction looks before being included in the blockchain. Once signed, it can be sent to the network of nodes.

That’s it: your account is good to go and its transaction is submitted successfully!

eth_getBalance - Arbitrum

Example code for the eth_getBalance json-rpc method. Сomplete guide on how to use eth_getBalance json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

address to check for balance.

QUANTITY|TAG - integer or string

block number or "latest", "earliest" or "pending"

Request

Response

db_putHex {disallowed} - Arbitrum

Example code for the db_putHex {disallowed} json-rpc method. Сomplete guide on how to use db_putHex {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

database - string

database name

key - string

key name

data - data

data to store.

Request

Response

Monitoring and analytics

Track and manage your usage and node service subscriptions with GetBlock.

These tools help ensure optimal use of GetBlock’s services and keep you informed of key metrics and events related to your account.

Dashboard

The Dashboard provides a quick snapshot of key metrics:

  • Your current plan details

  • Remaining CU balance

  • Rate limit based on your plan

  • Total requests made in the last 24 hours


Detailed statistics

For more detailed analysis, visit the Statistics tab in the ‘Endpoints’ section.

Customize the data view by parameters or by access tokens using the dropdown menu.

Select the time period, protocol name, networks (mainnet/testnet), region, and API interfaces to analyze the data by parameters.

All data is displayed through infographics, including:

  • Number of requests and CUs

  • Response statuses

  • Method call distribution

  • Rate limit rejections


Notifications

GetBlock provides a notification system to help you monitor your usage and subscription status.

You can set up alerts for both CU balance and subscription expirations.

Alert types:

  • Run out of CU: Notifies you when your CU balance reaches zero.

  • CU balance alerts: Warns when remaining CUs drop below specified limits.

  • Subscription expiration alerts: Help you renew your dedicated node plans on time.

Set up email, Telegram, or Webhook alerts to monitor your usage and subscription status from Settings → Notification Settings.

eth_estimateGas - Arbitrum

Example code for the eth_estimateGas json-rpc method. Сomplete guide on how to use eth_estimateGas json-rpc in GetBlock.io Web3 documentation.

Parameters

object - json object

The transacion call object in format: { "from": "address" (optional, string) - The address the transaction is sent from. "to": "address" (optional, string) - The address the transaction is directed to. "gas": "quantity" (optional, string) - Integer of the gas provided for the transaction execution. eth_call consumes zero gas, but this parameter may be needed by some executions. "gasPrice": "quantity" (optional, string) - Integer of the gasPrice used for each paid gas "value": "quantity" (optional, string) - Integer of the value sent with this transaction "data": "data" (optional, string) - Hash of the method signature and encoded parameters. }

QUANTITY|TAG - string

Optional.

integer block number, or the string "latest", "earliest" or "pending".

Request

Response

eth_getTransactionByHash - Arbitrum

Example code for the eth_getTransactionByHash json-rpc method. Сomplete guide on how to use eth_getTransactionByHash json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

Hash of a transaction.

Request

Response

eth_getBlockByHash - Arbitrum

Example code for the eth_getBlockByHash json-rpc method. Сomplete guide on how to use eth_getBlockByHash json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

Hash of a block.

Boolean - Boolean

If true it returns the full transaction objects, if false only the hashes of the transactions.

Request

Response

eth_gasPrice - Arbitrum

Example code for the eth_gasPrice json-rpc method. Сomplete guide on how to use eth_gasPrice json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

Response

eth_getTransactionCount - Arbitrum

Example code for the eth_getTransactionCount json-rpc method. Сomplete guide on how to use eth_getTransactionCount json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

address.

QUANTITY|TAG - integer or string

block number or "latest", "earliest" or "pending"

Request

Response

eth_getTransactionByBlockNumberAndIndex - Arbitrum

Example code for the eth_getTransactionByBlockNumberAndIndex json-rpc method. Сomplete guide on how to use eth_getTransactionByBlockNumberAndIndex json-rpc in GetBlock.io Web3 documentation.

Parameters

QUANTITY|TAG - integer or string

block number or "latest", "earliest" or "pending"

QUANTITY - integer

Transaction index position.

Request

Response

Configuring dedicated nodes

Configure dedicated nodes in your GetBlock Dashboard. This guide covers customizing your node settings and completing the setup process.

To create a endpoint, switch over to the ‘Dedicated Nodes’ tab in the Dashboard.

Select a blockchain protocol you wish to deploy and the network type. Click Get to begin the setup process.

In the setup window:

  1. Review and confirm your selected protocol and network.

  2. Customize your dedicated node with the following options:

    1. Region of deployment: Germany (Frankfurt), USA (New York), Singapore.

    2. Select a subscription plan (available discounts are applied automatically)

    3. Node type: Choose between Full Node or Archive Node.

    4. Node client: Specify your preferred node implementation.

    5. Performance : Choose between High (premium specs, max throughput) and Standard (enterprise specs, optimized pricing for moderate-high loads).

    6. API interface: Select API options and add-ons if applicable.

  3. Verify all selected configurations in the summary section and proceed to checkout.

Pay for your dedicated nodes via your GetBlock account. If additional support is required during setup, you can contact the GetBlock support team directly.

You can add more dedicated nodes following these steps. Once deployed, add as many access tokens for each dedicated node as you need.

eth_subscribe - Arbitrum

Example code for the eth_subscribe json-rpc method. Сomplete guide on how to use eth_subscribe json-rpc in GetBlock.io Web3 documentation.

Parameters

type - string

A subscription type, such as newHeads (new headers appended to the chain, including chain reorganizations), logs (logs that are included in new imported blocks and match the given filter criteria) or newPendingTransactions (hashes for all transactions that are added to the pending state and are signed with a key that is available in the node).

objects - hex string

Optional arguments such as an address, multiple addresses, and topics.

Request

Response

eth_getTransactionByBlockHashAndIndex - Arbitrum

Example code for the eth_getTransactionByBlockHashAndIndex json-rpc method. Сomplete guide on how to use eth_getTransactionByBlockHashAndIndex json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

Hash of a block.

QUANTITY - integer

Transaction index position.

Request

Response

eth_coinbase {disallowed} - Arbitrum

Example code for the eth_coinbase {disallowed} json-rpc method. Сomplete guide on how to use eth_coinbase {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

Response

net_peerCount {disallowed} - Arbitrum

Example code for the net_peerCount {disallowed} json-rpc method. Сomplete guide on how to use net_peerCount {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

Response

shh_addToGroup {disallowed} - Arbitrum

Example code for the shh_addToGroup {disallowed} json-rpc method. Сomplete guide on how to use shh_addToGroup {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

address - data

The identity address to add to a group

Request

Response

eth_syncing - Arbitrum

Example code for the eth_syncing json-rpc method. Сomplete guide on how to use eth_syncing json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

Response

db_getString {disallowed} - Arbitrum

Example code for the db_getString {disallowed} json-rpc method. Сomplete guide on how to use db_getString {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

database - string

database name

key - string

key name

Request

Response

eth_sendRawTransaction - Arbitrum

Example code for the eth_sendRawTransaction json-rpc method. Сomplete guide on how to use eth_sendRawTransaction json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

The signed transaction data.

Request

Response

eth_getUncleCountByBlockHash - Arbitrum

Example code for the eth_getUncleCountByBlockHash json-rpc method. Сomplete guide on how to use eth_getUncleCountByBlockHash json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

hash of the block.

Request

Response

eth_mining {disallowed} - Arbitrum

Example code for the eth_mining {disallowed} json-rpc method. Сomplete guide on how to use eth_mining {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

Response

eth_getCode - Arbitrum

Example code for the eth_getCode json-rpc method. Сomplete guide on how to use eth_getCode json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

address.

QUANTITY|TAG - integer or string

block number or "latest", "earliest" or "pending"

Request

Response

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getBalance", "params": ["0xb8b2522480f850eb198ada5c3f31ac528538d2f5", "latest"], "id": "getblock.io"}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x153b785d20e80ac"
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>/' 
--header 'Content-Type: application/json' 
--data-raw '{"jsonrpc": "2.0", "method": "db_putHex", "params": [null, null, null], "id": "getblock.io"}'
{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_estimateGas", "params": [{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155", "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567", "gas": "0x76c0", "gasPrice": "0x9184e72a000", "value": "0x9184e72a", "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}], "id": "getblock.io"}'
{
    "error": {
        "code": -32000,
        "message": "insufficient funds for transfer"
    },
    "id": "getblock.io",
    "jsonrpc": "2.0"
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getTransactionByHash", "params": ["0xfd11ef35c7179439723e026cb7857ea5a2e48a19257bec00b0ed26672f632181"], "id": "getblock.io"}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": {
        "blockHash": "0xd8fe755134d44967f0c919084d3e0ec9b875c476c924f37bff17e5ef37d10d47",
        "blockNumber": "0x5911313",
        "chainId": "0xa4b1",
        "from": "0xe911f7f98ac57cf0c1cc71519d3ba720089381c4",
        "gas": "0x1a02b0",
        "gasPrice": "0x1dcd6500",
        "hash": "0xfd11ef35c7179439723e026cb7857ea5a2e48a19257bec00b0ed26672f632181",
        "input": "0x1801fbe5d5843b1d8c7345812c7ba7257e927b0c5e000000a6ca46b71aa1cdb6545660ad000000004f62e6aa5433274e333035ca261c12397df9febee0782f42749b8e0b",
        "nonce": "0x3c",
        "r": "0x87ac24f33be39a0bd27fe84a8934aa957610872606e5dbc46d296843a57930df",
        "s": "0x6ad9aba71382c20a528f3310c369b095e15991b352aea3261e2683c2b1288964",
        "to": "0xae56c981f9bb8b07e380b209fcd1498c5876fd4c",
        "transactionIndex": "0x1",
        "type": "0x0",
        "v": "0x14986",
        "value": "0x0"
    }
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getBlockByHash", "params": ["0xf5524f0cf99ac6bc5905e95294ebed9007e2d978155f3457118eb7a26d97503a", false], "id": "getblock.io"}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": {
        "baseFeePerGas": "0x5f5e100",
        "difficulty": "0x1",
        "extraData": "0xe31298ca6df96cb00d355ca9554878c19d39292b6a26eb9fc54b5df482851ef7",
        "gasLimit": "0x4000000000000",
        "gasUsed": "0x229dd8",
        "hash": "0xf5524f0cf99ac6bc5905e95294ebed9007e2d978155f3457118eb7a26d97503a",
        "l1BlockNumber": "0x105e046",
        "logsBloom": "0x00000100000000020000100000000000080000000000000000000000001000001000000000000000000000000101000000000000000000000001010000000000000010000000000000001008000120000100000000001000800100008000000000000000000000000000000000000000021000200000400000000010000000001000000000000000000000000008000000000001000000000008000000000010000000000000000000000000000000000000000000000000000000000000000000008002000048000000000000000000200800000000000010000000000000000000000040000000000000008000000010000000004010400000000000000040",
        "miner": "0xa4b000000000000000000073657175656e636572",
        "mixHash": "0x0000000000012069000000000105e046000000000000000a0000000000000000",
        "nonce": "0x00000000000c7662",
        "number": "0x5206d53",
        "parentHash": "0xb458d44871af788992e51a89661eb28a6539cf9f33c0e9a30d0aab5f2e50e974",
        "receiptsRoot": "0x184ea05480454e4c4fcf6406106a4cb13477af97d45752a126ee84de88695c7c",
        "sendCount": "0x12069",
        "sendRoot": "0xe31298ca6df96cb00d355ca9554878c19d39292b6a26eb9fc54b5df482851ef7",
        "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
        "size": "0x579",
        "stateRoot": "0xea41be04084dc613cfbf8d1fef75d9a097fad2b222373669e42e2aa173175649",
        "timestamp": "0x644f0242",
        "totalDifficulty": "0x3cd900b",
        "transactions": [
            "0xaf256a9ce8839489dcaa4f9a2740bcd5865b3db34a15434cce29e6bdcf043bc7",
            "0xfd7e27e19777598be2536bc6e4a5e89cc8a386eca46374333b1fba22641ed255",
            "0x98b2f04b2eb747e685c7db6f97ef2aaca236e146afb310ed039d56ab8599eb0e",
            "0x23c566cf1c2f208a74ef2e585b5bfe7fcffab6445027f06b4207ec43968cf71e",
            "0x9febdfb50d48f1891b6660379dcea3d0060808538a102d589e7ea3b7aa6d787d"
        ],
        "transactionsRoot": "0x22ef4159c9394a555af55a3ae5719bf15c1ff296838dd920f1566eeecb15aa1f",
        "uncles": []
    }
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_gasPrice", "params": [], "id": "getblock.io"}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x5f5e100"
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getTransactionCount", "params": ["0xb8b2522480f850eb198ada5c3f31ac528538d2f5", "latest"], "id": "getblock.io"}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x48"
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getTransactionByBlockNumberAndIndex", "params": ["latest", "0x0"], "id": "getblock.io"}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": {
        "blockHash": "0x187ccf13bc440afc7fb146abf0642d4d6c02c438ea067f49f133566eef8627eb",
        "blockNumber": "0x5bc407a",
        "chainId": "0xa4b1",
        "from": "0x00000000000000000000000000000000000a4b05",
        "gas": "0x0",
        "gasPrice": "0x0",
        "hash": "0x7144169eeaff9b4b9d0a1948fa6149784710e3f55da837f93201fcfb0a6c2450",
        "input": "0x6bf6a42d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010924a40000000000000000000000000000000000000000000000000000000005bc407a0000000000000000000000000000000000000000000000000000000000000001",
        "nonce": "0x0",
        "r": "0x0",
        "s": "0x0",
        "to": "0x00000000000000000000000000000000000a4b05",
        "transactionIndex": "0x0",
        "type": "0x6a",
        "v": "0x0",
        "value": "0x0"
    }
}
wscat -c wss://go.getblock.io/ACCESS-TOKEN/ -x '{
  "jsonrpc": "2.0",
  "method": "eth_subscribe",
  "params": ["newHeads", null],
  "id": "getblock.io"
}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0xe5af64ddfd365b4632988c5935cfedb7"
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getTransactionByBlockHashAndIndex", "params": ["0xf5524f0cf99ac6bc5905e95294ebed9007e2d978155f3457118eb7a26d97503a", "0x0"], "id": "getblock.io"}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": {
        "blockHash": "0xf5524f0cf99ac6bc5905e95294ebed9007e2d978155f3457118eb7a26d97503a",
        "blockNumber": "0x5206d53",
        "chainId": "0xa4b1",
        "from": "0x00000000000000000000000000000000000a4b05",
        "gas": "0x0",
        "gasPrice": "0x0",
        "hash": "0xaf256a9ce8839489dcaa4f9a2740bcd5865b3db34a15434cce29e6bdcf043bc7",
        "input": "0x6bf6a42d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105e0460000000000000000000000000000000000000000000000000000000005206d530000000000000000000000000000000000000000000000000000000000000000",
        "nonce": "0x0",
        "r": "0x0",
        "s": "0x0",
        "to": "0x00000000000000000000000000000000000a4b05",
        "transactionIndex": "0x0",
        "type": "0x6a",
        "v": "0x0",
        "value": "0x0"
    }
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>/' 
--header 'Content-Type: application/json' 
--data-raw '{"jsonrpc": "2.0", "method": "eth_coinbase", "params": [], "id": "getblock.io"}'
{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "net_peerCount",
  "params": [],
  "id": "getblock.io"
}'
{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "shh_addToGroup",
  "params": [null],
  "id": "getblock.io"
}'
{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "eth_syncing",
  "params": [],
  "id": "getblock.io"
}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": false
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>/' 
--header 'Content-Type: application/json' 
--data-raw '{"jsonrpc": "2.0", "method": "db_getString", "params": [null, null], "id": "getblock.io"}'
{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}
curl --location --request POST 'https://go.getblock.io/YOUR-ACCESS-TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_sendRawTransaction", "params": ["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"], "id": "getblock.io"}'
{
    "error": {
        "code": -32000,
        "message": "rlp: element is larger than containing list"
    },
    "id": "getblock.io",
    "jsonrpc": "2.0"
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getUncleCountByBlockHash", "params": ["0xf5524f0cf99ac6bc5905e95294ebed9007e2d978155f3457118eb7a26d97503a"], "id": "getblock.io"}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x0"
}
curl --location --request POST 'https://go.getblock.io/YOUR-ACCESS-TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_mining", "params": [], "id": "getblock.io"}'
{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getCode", "params": ["0x9b956e3d318625be2686ae7268d81777c462d41f", "latest"], "id": "getblock.io"}'
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x"
}
specifications
curl -X GET https://go.getblock.io/"$(jq -r '.shared.btc.mainnet.rest[0]' getblock.config.json)"/rest/chaininfo.json
const { getblock } = require('./getblock.config.js');
const { getblock } = require('./getblock.config.js');
var Web3 = require('web3');

// Create the JSON-RPC provider
var web3Rpc = new Web3(new Web3.providers.HttpProvider(
        getblock.shared.eth.mainnet.rpc[0].go()
));

// Create the WebSocket provider
var web3Ws = new Web3.providers.WebsocketProvider(
        `wss://go.getblock.io/${getblock.shared.eth.mainnet.ws[0].token()}`
));
npm install --save-dev hardhat
const { getblock } = require('./getblock.config.js');
const { getblock } = require('./getblock.config.js'); 

module.exports = {
  defaultNetwork: "sepolia",
  networks: {
    hardhat: {
    },
    sepolia: {
      url: getblock.shared.eth.sepolia.rpc[0].go() // https://go.getblock.io/<ACCESS-TOKEN>/
    },
    goerli: {
      url: `https://go.getblock.io/${getblock.shared.eth.goerli.rpc[0].token()}` // <ACCESS-TOKEN>
    },
  },
  solidity: {
    version: "0.8.19",
    settings: {
      optimizer: {
        enabled: true,
        runs: 200
      }
    }
  },
  paths: {
    sources: "./contracts",
    tests: "./test",
    cache: "./cache",
    artifacts: "./artifacts"
  },
  mocha: {
    timeout: 40000
  }
}
jq
const Web3 = require('web3');

//Set up the provider (replace ACCESS-TOKEN with your actual token)
const web3 = new Web3('https://go.getblock.io/<ACCESS-TOKEN>/');
// Generate new address and private key
const accountTo = web3.eth.accounts.create();
console.log('Generated account:', accountTo);
// Restore account from private key
const privateKey = process.env['privateKey'];
const accountFrom = web3.eth.accounts.privateKeyToAccount(privateKey);
const createSignedTx = async (rawTx) => {
rawTx.gas = await web3.eth.estimateGas(rawTx);
return await accountFrom.signTransaction(rawTx);
}

const sendSignedTx = async (signedTx) => {
// You can use signedTx.rawTransaction as params for
// calling eth_sendRawTransaction JSON-RPC method
web3.eth.sendSignedTransaction(signedTx.rawTransaction).then(
console.log
);
}

const amountTo = "0.01" // ether
const rawTx = {
to: accountTo.address,
value: web3.utils.toWei(amountTo, 'ether'),
chainId: chainId
};

createSignedTx(rawTx).then(sendSignedTx)
BNB Smart Chain
How to track your blockchain node service usage statistics
How to track your blokchain API usage
The Statistics tab shows more in-depth and customizable data analysis for your endpoints
The charts visualizing blockchain API usage trends
Visual analytics
Managing your blockchain RPC node usage with notifications
dedicated node
tier
How to set up a private blockchain node
Switching to Dedicated nodes setup
GetBlock dedicated node deployment tool
Configuring your private blockchain node server
Configuring your private node
Using Postman Collection for Ethereum JSON-RPC request

eth_getBlockByNumber - Arbitrum

Example code for the eth_getBlockByNumber json-rpc method. Сomplete guide on how to use eth_getBlockByNumber json-rpc in GetBlock.io Web3 documentation.

Parameters

QUANTITY|TAG - integer or string

block number or "latest", "earliest" or "pending"

Boolean - Boolean

If true it returns the full transaction objects, if false only the hashes of the transactions.

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getBlockByNumber", "params": ["latest", false], "id": "getblock.io"}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": {
        "baseFeePerGas": "0x5f5e100",
        "difficulty": "0x1",
        "extraData": "0xd79c44e4c3397b74b78db0ea2d34c1106d8bae0752d6e352a859ae27185dec62",
        "gasLimit": "0x4000000000000",
        "gasUsed": "0x9b0c67",
        "hash": "0x9a682d3983aa3c86a32cc87ca21ae5f5eb7b5d175155ed941238e60b681ad280",
        "l1BlockNumber": "0x10924a4",
        "logsBloom": "0x0808000400200000c0040000000000840000000100040200400000000000000c010002000000000006204000012000080000008000100000000040000000000000102021000000008000006800000000000000000002010010004001048004000000000003000000000100200000080000000000800080000000201004000000000000000000800000000000000008088002000400002000000000400800000002000001008000000008000000000080000020020000004000020000001000000000800200000800060820000081000209000c000084020400010100008020010000001400400002000000080000400040001024016004000000000000000000",
        "miner": "0xa4b000000000000000000073657175656e636572",
        "mixHash": "0x000000000001310800000000010924a4000000000000000a0000000000000000",
        "nonce": "0x00000000000d7b9a",
        "number": "0x5bc4077",
        "parentHash": "0x6becdeda3dd59cbd1d5a459407ba3ffc298a1c64c7af27756f43d0db21144a92",
        "receiptsRoot": "0x18dd23ed85557f5ddf1075d35012611580401daf7ecb8a906915ef2036e9425c",
        "sendCount": "0x13108",
        "sendRoot": "0xd79c44e4c3397b74b78db0ea2d34c1106d8bae0752d6e352a859ae27185dec62",
        "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
        "size": "0x2d3a",
        "stateRoot": "0xb7845bcebb2a06b61b66e468c4f28ffa73e281101113b32bb49f1fb445d6eb8f",
        "timestamp": "0x6476c9df",
        "totalDifficulty": "0x469632f",
        "transactions": [
            "0x44613c8636c24b26ef754c899cb5f48600ccfe13a0ee697b40a9e92a0cb25a72",
            "0x0543ea3f502977d188eff073db26a325c0dec7f72f7a5033e65b6728964e2231"
        ],
        "transactionsRoot": "0x7989d9339de2ea4c5434ab01c0d5aff3853d6a0d746f306562ebe7ecb49e2c74",
        "uncles": []
    }
}

net_version - Arbitrum

Example code for the net_version json-rpc method. Сomplete guide on how to use net_version json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "net_version",
  "params": [],
  "id": "getblock.io"
}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "42161"
}

eth_signTransaction - Arbitrum

Example code for the eth_signTransaction json-rpc method. Сomplete guide on how to use eth_signTransaction json-rpc in GetBlock.io Web3 documentation.

Parameters

object - json object

The transacion call object in format: { "from": "address" (optional, string) - The address the transaction is sent from. "to": "address" (optional, string) - The address the transaction is directed to. "gas": "quantity" (optional, string) - Integer of the gas provided for the transaction execution. eth_call consumes zero gas, but this parameter may be needed by some executions. "gasPrice": "quantity" (optional, string) - Integer of the gasPrice used for each paid gas "value": "quantity" (optional, string) - Integer of the value sent with this transaction "data": "data" (optional, string) - Hash of the method signature and encoded parameters. "nonce": "quantity" (optional, string) - Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce. }

Request

curl --location --request POST 'https://go.getblock.io/YOUR-ACCESS-TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_signTransaction", "params": [{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155", "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567", "gas": "0x76c0", "gasPrice": "0x9184e72a000", "value": "0x9184e72a", "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}], "id": "getblock.io"}'

Response

{
    "error": {
        "code": -32000,
        "message": "nonce not specified"
    },
    "id": "getblock.io",
    "jsonrpc": "2.0"
}

shh_getFilterChanges {disallowed} - Arbitrum

Example code for the shh_getFilterChanges {disallowed} json-rpc method. Сomplete guide on how to use shh_getFilterChanges {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

id - string

the filter id.

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "shh_getFilterChanges",
  "params": [null],
  "id": "getblock.io"
}'

Response

{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}

eth_sign - Arbitrum

Example code for the eth_sign json-rpc method. Сomplete guide on how to use eth_sign json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

address.

DATA - string

message to sign.

Request

curl --location --request POST 'https://go.getblock.io/YOUR-ACCESS-TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_sign", "params": ["0x9b956e3d318625be2686ae7268d81777c462d41f", "0xdeadbeaf"], "id": "getblock.io"}'

Response

{
    "error": {
        "code": -32000,
        "message": "unknown account"
    },
    "id": "getblock.io",
    "jsonrpc": "2.0"
}

TronWeb integration

In this guide, we will show you how to get started with TronWeb to connect to GetBlock.

TronWeb is a JavaScript library of TRON full node’s API functions that is used to deploy smart contracts, query blockchain and contract information, trade on the decentralized exchanges and change the blockchain state.

Firstly, you will need to add the TronWeb library to your project.

  • Npm:

npm install tronweb
  • Yarn:

yarn add tronweb

In your javascript file, define TronWeb:

const TronWeb = require('tronweb');

When you instantiate TronWeb you can define:

  • fullNode

  • solidityNode

  • eventServer

  • privateKey

you can also set a

  • fullHost

Which works as a jolly. If you do so, though, the more precise specification has priority. Supposing you are using a server which provides everything, like TronGrid, you can instantiate TronWeb as:

const tronWeb = new TronWeb({
fullHost: "https://go.getblock.io/<ACCESS-TOKEN>/"
})

For retro-compatibility, though, you can continue to use the old approach, where any parameter is passed separately (using the GetBlock node as an example here):

const fullNode = new TronWeb.providers.HttpProvider("https://go.getblock.io/<ACCESS-TOKEN>/")
const solidityNode = new TronWeb.providers.HttpProvider("https://go.getblock.io/<ACCESS-TOKEN>/")
const eventServer = new TronWeb.providers.HttpProvider("https://go.getblock.io/<ACCESS-TOKEN>/")
const tronWeb = new TronWeb(fullNode, solidityNode, eventServer)

After this you can call any TronWeb method:

tronWeb.trx.getBlock('latest').then(result => {console.log(result)});

All API references can be found in the project documentation at https://developers.tron.network/reference

Method response:

tronWeb.trx.getBlock(blockNumberOrBlockId) method response

Connect to GetBlock with MetaMask

Learn how to set up custom RPC URL on MetaMask for faster, more reliable, and secure blockchain interactions.

MetaMask is a blockchain wallet available as a mobile application and a browser extension. It allows you to interact with Ethereum-based decentralized applications (dApps) directly from your browser.

Using GetBlock nodes with MetaMask makes your blockchain experience faster and more reliable than using default RPCs:

  • Connect directly to trusted nodes for secure transactions.

  • Enjoy quicker transactions and smoother dApp interactions.

  • Experience less downtime, even during busy network periods

This step-by-step tutorial will guide you through connecting GetBlock’s powerful nodes to your MetaMask wallet.


Before you start

Set up your wallet

If you don’t already have MetaMask, download and install it from the official website: .

MetaMask extension is officially supported on Chrome, Brave, Firefox, Microsoft Edge, and Opera browsers.

Get a custom RPC URL

Generate a JSON-RPC URL for the selected network from your GetBlock and copy it.

Rename your endpoints to clearly indicate their purpose.


Add GetBlock RPC to an existing network

If the network is already in your list but uses a default RPC provider, you can switch to GetBlock by following these steps:

  1. Click on the current network name in MetaMask to open the dropdown of networks.

  2. Find the network you want to edit and click the settings menunext to it. Select 'Edit'.

  1. Open the ‘Default RPC URL’ dropdown and select 'Add RPC URL'.

  2. Paste the JSON-RPC endpoint URL from your GetBlock account (https://go.getblock.io/<ACCESS_TOKEN>/).

  3. Name the new RPC URL for easier identification.

  1. Click 'Add URL', then 'Save' to confirm.

You can now switch between RPC URLs for that network as needed.


Add a new network to MetaMask

If the network isn’t in your list, you can add it as a custom network. For this example, we will add the Polygon zkEVM to MetaMask.

  1. Click on the current network name.

  2. Select 'Add a custom network'.

  1. Fill in the required fields:

Field
Description
Example
  1. Click 'Save', and the custom network will be added and selected as default.

You can get the Chain ID of an EVM-compatible network (e.g. Polygon zkEVM) sending a request to your endpoint with this curl command:

Choosing your plan

Compare GetBlock's subscription options to find the one that fits your project.

GetBlock offers three main service options—Shared Nodes, Dedicated Nodes, and Enterprise Solutions. This page provides a high-level overview of these services.

You can explore detailed pricing and plans from your dashboard in the “Pricing” section or via .


Shared nodes

Shared nodes operate on a resource-sharing model, where multiple clients access the same underlying node infrastructure maintained by GetBlock.

Our Shared Nodes deliver the perfect balance between affordability and performance:

  • Cost efficiency: Benefit from our pricing model based on , so you only pay for the resources needed for your current workload.

  • Flexible pricing: Options range from a free to high-volume plans — accessible for individual developers and smaller teams while supporting the scaling needs of growing dApps.

  • Consistent performance: Each plan enforces a Requests Per Second (RPS) limit, preventing individual spikes from impacting overall quality.

  • Multi-chain accessibility: Prototype, test, and deploy applications across different networks without the complexities of deploying infrastructure for each blockchain individually.

  • Regional endpoints: Connect to the nearest datacenter — Frankfurt (EU), New York (US), Singapore (APAC) — to minimize network latency.

  • Archive data access: Run full historical blockchain queries.

  • Tiered support levels: Support options adapt to your requirements, from basic help to priority support when you need it most.

This option is ideal for developers and teams looking for reliable connectivity to various blockchain networks without the higher costs of dedicated server resources.


Dedicated nodes

A Dedicated Node is a private RPC server deployed solely for your use case. That means consistent throughput, no API rate throttling due to other users, and better uptime guarantees.

If your project demands the fastest, most reliable blockchain infrastructure, a Dedicated Node from GetBlock is a perfect choice.

This option is ideal for users that require high performance, full control over node configuration, and a flawless connection to the blockchain without any limitations:

  • Mission-critical reliability: Maximized uptime and robust failover mechanisms for even more reliable service.

  • Unlimited usage: No per-second request caps or CU tracking.

  • Low latency: With servers available in Europe, Asia, and the USA, choose the optimal server location to minimize latency and enhance performance for your users.

  • Fully customizable: Complete control over your node configurations, including access to archive data.

  • Predictable pricing:

    • Full Node: from $1,000/month;

    • Archive Node: from $1,500/ month.

  • Expert support: 24/7 coverage and immediate issue resolution.

A few high-resource blockchain settings (e.g., Solana mainnet, Arbitrum mainnet, NEAR mainnet) may come with custom pricing due to their intense infrastructure requirements.


Enterprise solutions

This option is designed to meet the needs of organizations operating at scale or applications that require extra resources, features, and dedicated support.

What’s included:

  • 99.9% uptime guarantee

  • Customizable node configurations and integrations

  • Performance optimization via load balancers

  • Advanced analytics and alert systems

  • Priority assistance from GetBlock experts

Visit the to learn more about how we tailor services to fit complex, high-demand environments.

Payment methods

GetBlock supports both fiat and crypto payments.

Fiat payments

Users can pay for subscriptions using traditional fiat currency via Paddle.

How it works:

  • Recurring payments enabled by default: Payment is automatically deducted on the billing date.

  • Fees: VAT is applied to Paddle payments and varies depending on your region

  • If the card balance is insufficient: GetBlock will retry the payment after three days. If the retry fails, the plan will be frozen until the payment is resolved.

Please, account for VAT when planning your payments.


Updating your payment details

To update your payment information while you have an active subscription:

  1. Go to Pricing → Manage Plans.

  2. Click ‘Edit Payment Method’.

  3. Enter your updated payment details and save the changes.


Crypto payments

Users can top up their accounts with cryptocurrency through NOWPayments.

How it works:

  • Payments are processed as one-time transactions: add funds as needed.

  • Supported cryptocurrencies: any token on any network available through NOWPayments at the time of payment.

  • Fees: blockchain network fees apply.

If the network fees are insufficient or the transaction fails, the payment will not be processed and the subscription plan will not be activated. Please, include enough gas fees to ensure the transaction processes successfully.

eth_unsubscribe - Arbitrum

Example code for the eth_unsubscribe json-rpc method. Сomplete guide on how to use eth_unsubscribe json-rpc in GetBlock.io Web3 documentation.

Parameters

data - hex string

A subscription ID previously generated with eth_subscribe method.

Request

Response

https://getblock.io/pricing/
Compute Units (CU)
Enterprise Solutions page
GetBlock shared RPC node pricing options
GetBlock shared node service options
What does it cost to deploy a private blockchain node
GetBlock private node features and pricing
How to pay with fiat on GetBlock
Selecting fiat as a payment method
changing billing data in GetBlock accounts
How to pay for RPC nodes with crypto
Crypto payments

RPC URL

The network's JSON-RPC URL from your GetBlock account

https://go.getblock.io/<ACCESS_TOKEN>/

Chain ID

The ID of the network

1101

Network name

Fetched automatically based on Chain ID

Polygon zkEVM

Currency symbol

Suggested automatically based on Chain ID

ETH

Block explorer URL

Optional field

https://zkevm.polygonscan.com/

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>/' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "jsonrpc": "2.0",
    "method": "eth_chainId",
    "params": [],
    "id": "getblock.io"
  }'
https://metamask.io/download
account
How to get a custom RPC URL for MetaMask
Generate an RPC URL for MetaMask
How to set up the custom RPC URL on MetaMask
How to change the RPC URL on MetaMask
Adding a new network to MetaMask using custom RPC URL
{
    "jsonrpc":"2.0",
    "id":"getblock.io",
    "result":true
}
wscat -c wss://go.getblock.io/<ACCESS-TOKEN>/ -x '{ 
  "jsonrpc": "2.0", 
  "id": "getblock.io", 
  "method": "eth_unsubscribe", 
  "params": ["<SUBSCRIPTION_ID>"] 
}'
curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "eth_unsubscribe",
  "params": ["0xe5af64ddfd365b4632988c5935cfedb7"],
  "id": "getblock.io"
}'

/v1/estimate_gas_price - Aptos

Example code for the /v1/estimate_gas_price json-rpc method. Сomplete guide on how to use /v1/estimate_gas_price json-rpc in GetBlock.io Web3 documentation.

This endpoint gets the estimated gas price for executing a transaction in the Aptos blockchain network.

Supported Network

  • Mainnet

Parameter

None

Request

Base URL

https://go.getblock.io/<ACCESS_TOKEN>

Example(cURL)*

curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/estimate_gas_price'

Response Example

{
    "deprioritized_gas_estimate": 100,
    "gas_estimate": 100,
    "prioritized_gas_estimate": 150
}

Response parameter definition

Field

Type

Description

deprioritized_gas_estimate

String

Lower gas price estimate — slower inclusion, suitable for non-urgent txns.

gas_estimate

String

Standard recommended gas price (balanced option).

prioritized_gas_estimate

String

Higher gas price estimate — ensures faster transaction processing.

Use Cases

This method can be used for:

  • Wallets can auto-suggest gas fees based on the user's urgency.

  • dApps can provide a “fast/normal/slow” fee slider to users.

  • Developers can programmatically ensure transactions won’t fail due to low gas.

  • Cost optimisation for batch transactions.

Code example

Node(axios)

const axios = require('axios');

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/estimate_gas_price',
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Python(Request)

import requests

url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/estimate_gas_price"
response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

Error handling

Status Code

Error Message

Cause

403

Forbidden

Missing or invalid <ACCESS_TOKEN>.

500

Internal server error

Node or network failure when estimating gas.

Integration with Web3

By integrating /v1/estimate_gas_price into dApp, developers can:

  • Provide real-time fee estimation inside wallets and dApps.

  • Improve transaction confirmation rates by suggesting optimal gas.

  • Enhance user experience with clear trade-offs (fast vs cheap).

  • Avoid failed transactions due to underpriced gas.

Overview

Yellowstone gRPC is a Solana Geyser plugin developed by Triton One that feeds your application a continuous, low-latency stream of on-chain data

Solana applications often need live, high-throughput access to on-chain events. Solana gRPC plugin solves this core problem of real-time blockchain data access.

What is Yellowstone gRPC?

Yellowstone gRPC is the name given to the Dragon’s Mouth Geyser plugin’s gRPC interface in Triton One’s “Yellowstone” suite for Solana. It allows opening streams and subscribing to native Solana on-chain events, receiving every new update in real time, with millisecond-level latency.

By plugging directly into validators, it pushes new blocks, transactions, and account updates to your backend the moment they occur.

How Yellowstone gRPC Geyser works

The Geyser Plugin hooks into validator callbacks for ledger events and publishes those events to its own internal queues. A gRPC server then streams the queued events over the network to subscribed clients.

Supported data streams & subscriptions

Geyser gRPC supports streaming the full range of common Solana events:

  • Account updates (writes): Every time an account’s data changes, a notification is emitted.

  • Transactions: Each transaction processed by the leader generates a stream event with all associated account changes.

  • Ledger entries: Low‑level entry/shred events (raw blocks of ledger data) can also be streamed.

  • Block notifications: Clients can subscribe to be notified when a new block is completed.

  • Slot notifications: New slot boundaries (leaders or votes) can trigger slot events.

Every update stream can include full transaction metadata, instruction details, and parsed logs – essentially everything you’d see in a getTransaction or getProgramAccounts call, but pushed in real time.

In addition to streaming methods, Dragon’s Mouth also exposes several unary RPCs via the same gRPC interface for quick queries about:

  • The Slot;

  • Block height;

  • Latest blockhash;

  • Valid blockhash.

Together, this provides a way to both fetch state on demand and receive updates in real time.


Yellowstone gRPC API features

  • Near-zero latency: By streaming directly from leaders, Dragon’s Mouth delivers updates often hundreds of milliseconds faster than standard RPC/WebSocket APIs.

  • High throughput: The plugin can handle millions of events per minute under load, built for Solana’s high transaction volume. Optional compression can be applied for even more efficiency.

  • Built-in support for bi-directional streaming: Keep-alives, ping/pong frames help maintain long-lived connections.

  • Comprehensive streaming: Clients can monitor virtually anything: token mints, program interactions, votes, etc.

  • Protobuf/binary encoding: Each message arrives parsed and typed, not raw base64. Clients get structured fields (account diffs, token balance changes, parsed logs, etc.) instead of raw blobs.

  • Rich filtering: You can apply filters (by account key, owner program, data patterns, commitment level, etc.) so only matching updates are streamed.

Overall, applications can keep pace with Solana’s peak TPS without data loss, receive only relevant updates, save bandwidth, and react faster.


Solana Geyser gRPC plugin use cases

Solana gRPC streaming capabilities are crucial for time-sensitive applications, apps that need to react the moment on-chain state changes without manual refreshes.

gRPC API ideal use cases include:

  • High-frequency trading or arbitrage systems (e.g. MEV bots);

  • On-chain indexers & archives;

  • Live analytics;

  • Real-time monitors for DEXes, NFTs, wallets, etc.;

  • Alerting & notification systems;

  • DeFi strategy engines;

  • ..and any app that needs push‑style updates.

Note that gRPC is not supported in browsers, so Yellowstone is intended for backend services.


Why use Yellowstone gRPC API?

Using Yellowstone gRPC for your Solana data means you get a high-throughput, low-latency, bidirectional streaming channel.

Instead of polling REST endpoints every few seconds or using Solana’s WebSocket API (which typically only updates after a block finalizes), the gRPC interface allows tracking every new event down the wire as it happens.

Overall, it removes much of the boilerplate: your backend code subscribes once, then simply reacts to incoming messages

/v1 - Aptos

Example code for the /v1 JSON-RPC method. Сomplete guide on how to use /v1 json-rpc in GetBlock.io Web3 documentation.

This endpoint retrieves the latest information from the Aptos blockchain ledger, such as current chain ID, node role, latest and oldest ledger versions, epoch, block height, and more. In short, it provides an overview of Aptos and its health status.

Supported Network

  • Mainnet


Parameters

  • None

Request

URL (endpoint)

https://go.getblock.io/

Example (cURL)

curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/info'

Response

{
  "block_height": "58851650",
  "chain_id": 1,
  "epoch": "2796",
  "git_hash": "6568c5ee6a58b4f96c0780d4f66d7e573e61c418",
  "ledger_timestamp": "1685696086534090",
  "ledger_version": "152087593",
  "node_role": "full_node",
  "oldest_block_height": "1101178",
  "oldest_ledger_version": "2287593"
}

Response Definition

Value
Data type
Description

chain_id

integer

ID of the blockchain

epoch

string

Current epoch number

ledger_version

string

The latest version of the ledger

oldest_ledger_version

string

The earliest version of the ledger

ledger_timestamp

string

Timestamp of the latest ledger version in microseconds

node_role

string

Role of this node in the network

oldest_block_height

string

Lowest block height available

block_height

string

Current block height

git_hash

string

Git hash of the node build

Use Case

The /v1/info endpoint is useful for checking if a node is online and responding. For example:

  • Developers can verify the latest block or ledger version to ensure the node is up-to-date.

  • Applications can notify users about the health of the blockchain, such as showing a modal alerting them to the current state when they log in to a dApp.

Code Example (Axios)

import axios from 'axios'

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/info',
  headers: {}
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Replace <ACCESS_TOKEN> with your actual access token from GetBlock.

Error Handling

When using this endpoint, you may encounter:

  • 404 → Incorrect or incomplete access token.

  • 500 → Network issues.

How to fix:

  • Use a stable and strong network connection.

  • Check or re-copy your access token.

  • Verify the URL to ensure it is correct and complete.

Integration

It is recommended to use this endpoint first to check the current status of the blockchain before integrating other endpoints into your application.

eth_call - Arbitrum

Example code for the eth_call json-rpc method. Сomplete guide on how to use eth_call json-rpc in GetBlock.io Web3 documentation.

Parameters

object - json object

The transacion call object in format: { "from": "address" (optional, string) - The address the transaction is sent from. "to": "address" (optional, string) - The address the transaction is directed to. "gas": "quantity" (optional, string) - Integer of the gas provided for the transaction execution. eth_call consumes zero gas, but this parameter may be needed by some executions. "gasPrice": "quantity" (optional, string) - Integer of the gasPrice used for each paid gas "value": "quantity" (optional, string) - Integer of the value sent with this transaction "data": "data" (optional, string) - Hash of the method signature and encoded parameters. }

QUANTITY|TAG - string

integer block number, or the string "latest", "earliest" or "pending".

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_call", "params": [{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155", "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567", "gas": "0x76c0", "gasPrice": "0x9184e72a000", "value": "0x9184e72a", "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}, "latest"], "id": "getblock.io"}'

Response

{
    "error": {
        "code": -32000,
        "message": "err: insufficient funds for gas * price + value: address 0xb60E8dD61C5d32be8058BB8eb970870F07233155 have 0 want 304000002441406250 (supplied gas 30400)"
    },
    "id": "getblock.io",
    "jsonrpc": "2.0"
}

eth_hashrate {disallowed} - Arbitrum

Example code for the eth_hashrate {disallowed} json-rpc method. Сomplete guide on how to use eth_hashrate {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

curl --location --request POST 'https://go.getblock.io/YOUR-ACCESS-TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_hashrate", "params": [], "id": "getblock.io"}'

Response

{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}
GetBlock Product Demo

Creating node endpoints

Follow the steps below to set up an endpoint and generate access tokens for your project.

This short guide shows you how to create an RPC endpoint (an RPC URL) for any supported protocol in your GetBlock Shared Node dashboard to connect it to your app, script, or wallet.

In GetBlock, an endpoint URL includes your unique Access Token — the credential that authenticates RPC requests. GetBlock’s UI sometimes labels the whole endpoint provisioning flow “Get Access Token” because a new RPC URL is created together with the token.

Related:

  • Access token management

  • GetBlock Deploys Major Security Upgrade: Introducing Access Tokens


The steps below cover how to generate a new endpoint URL with an Access Token:

1

Log in to your GetBlock account and navigate to the Dashboard

2

Find the Endpoints section on the Dashboard

3

Click Get endpoint to open the endpoint setup menu

4

In the modal that opens, select:

  • The desired blockchain protocol (Ethereum, BNB Chain, Polygon, etc.)

  • The network you want to interact with: mainnet or testnet

  • Node mode: full (default) or archive

  • The API interface that you need (JSON-RPC, WebSockets, GraphQL, etc.)

  • One of the available server locations (Frankfurt, New York, or Singapore)

5

Click 'Get' and have the endpoint URL with an access token generated.

Generate and add as many access tokens as required for this protocol. Each token is a unique endpoint for you and your application to interact with the blockchain.

All GetBlock endpoints follow a predictable format. The visible difference is the hostname reflecting the region selected during the setup.

Endpoint examples:

EU (Frankfurt):   https://go.getblock.io/<ACCESS_TOKEN>/
US (New York):    https://go.getblock.us/<ACCESS_TOKEN>/
Asia (Singapore): https://go.getblock.asia/<ACCESS_TOKEN>/

The token encodes the protocol, networks, and routing on the server — clients don’t need to specify a chain in the URL.


Full vs Archive mode

When creating an endpoint in your GetBlock Dashboard, for select protocols, you can choose between two node access modes – Full and Archive. This selection determines how much historical blockchain data your endpoint can access.

  • Full mode: Standard full (pruned) node behavior — current state lookups, sending transactions, reading blocks, etc.

  • Archive mode: Enables access to the historical chain state. Useful for querying balances, contract storage, UTXO sets, executing historical calls, simulating transactions at a past block, or reconstructing chain state for analytics and audits.

Selecting the Archive mode for an endpoint changes how requests are billed in Compute Units (CU). Learn more in the Archive mode guide.


Viewing and managing endpoints

The created URL is shown on the endpoints list so you can copy it and start calling the node. Use the right-side menu () to roll (regenerate) or delete the endpoint from the list.

Because the Access Token is embedded, the URL is the credential. Keep it secret and store securely. If the URL is exposed, regenerate or revoke it from your GetBlock account.

CU and rate limits

GetBlock provides access to over 50 blockchains. CU and rate limits depend on the selected plan.

This guide explains how limits work across all available plans, helping you understand what’s included and how to choose the option that best fits your current workload and future growth.

  • Shared Nodes operate on a system of limits defined by Compute Units (CUs) and Requests Per Second (RPS). Each plan also determines how many access tokens you can generate.

  • With Dedicated Nodes, you’re not limited by CUs or RPS.


Shared node limits

GetBlock’s shared node service is subject to several usage limits. These are the key limits that directly affect costs and performance:

  • : Measures the computational effort required to process requests. Different shared node plans include a varying number of CUs that you can use in a month.

  • RPS (Requests Per Second): Each plan enforces a maximum number of requests you can send every second. While you’re not billed per request, staying within this limit is critical to maintaining optimal service quality.

  • : Access tokens are unique identifiers used to authenticate your connection to GetBlock’s node infrastructure, generated when you create an endpoint. The limitation on your plan determines how many of these access tokens (and therefore endpoints) you can create.

Plan
Free
Starter
Advanced
Pro
Enterprise

To see the full comparison table, navigate to .

Your balance of CUs for Shared Nodes is distributed on all endpoints added under the ‘Shared nodes’ tab.

The plan is ideal if you’re just starting out and do not have complex calls or large request volumes.

  • CU: 50,000/day

  • Throughput: 20 requests per second (RPS)

  • Access Tokens: 2

Compute Units are renewed daily, but unused CUs cannot be transferred to the next day.

Clients who want to increase their usage limits can choose between the higher-tier options.

This is a monthly subscription designed for use cases that are growing beyond the free tier. It offers a significant increase in CU compared to the Free plan.

  • CU: 50M per month (~1.6M/day)

  • Throughput: 100 requests per second (RPS)

  • Access Tokens: 10

  • Additional CU packages can be purchased as needed.

The Advanced Plan is a mid-to-upper tier, production-ready plan, suitable for moderate-to-high traffic applications.

  • CU: 220M per month (~7.2M/day)

  • Throughput: 300 requests per second (RPS)

  • Access Tokens: 25

  • Add extra compute units (CU) to your account balance when needed without switching plans

The Pro Plan is built for applications that need significantly higher throughput and increased resource availability compared to lower tier plans.

  • CU: 600M per month (~20M/day)

  • Throughput: 500 requests per second (RPS)

  • Access Tokens: 50

  • Purchase additional CU packages when required

The Enterprise plan is fully customizable with tailored CU allocations, rate limits, and access tokens to meet exceptionally high call volumes and performance requirements.

  • CU: Custom monthly allocation based on your demands

  • Throughput: Custom

  • Access Tokens: Custom

  • Additional CU packages can be purchased on demand


Managing unused & extra CUs

If you don’t use all your allocated CUs within a month, the unused amount will carry over to the next month as long as your subscription is active and renewed. If your subscription expires or is not renewed on time, the remaining CUs will be lost.

If your demand exceeds the included limits, you can purchase extra CU packages. This means that even within a given plan, there’s room for scaling without an immediate need to move to a higher tier.


Dedicated node limits

Our Dedicated Node service is perfect for teams and projects that demand absolute freedom from rate limits and CU monitoring.

  • CU: Unlimited

  • Rate: Unlimited


If you’re unsure which plan best fits your needs, our team is ready to help! or visit our page for more information.

Yellowstone gRPC API

Power your Solana dApps and backends with the fastest, most reliable streaming data available. Yellowstone gRPC add-on is for apps that need every live event as fast as the network can deliver.

Overview

Yellowstone gRPC is a high-performance Solana Geyser plugin that provides real-time streaming access to on-chain data. Built by Triton One, it delivers blocks, transactions, and account updates with millisecond-level latency directly from Solana validators.

GetBlock offers managed Yellowstone gRPC endpoints as an add-on to Dedicated Solana Node subscriptions, eliminating the need for infrastructure setup and maintenance.


Key Features

  • Near-zero latency: Streams data directly from validators, often hundreds of milliseconds faster than standard RPC/WebSocket APIs

  • High throughput: Handles millions of events per minute under load

  • Comprehensive streaming: Monitor accounts, transactions, blocks, slots, and program interactions in real-time

  • Rich filtering: Subscribe only to relevant updates using account keys, owner programs, or commitment levels

  • Protobuf encoding: Receive parsed, typed messages instead of raw base64 data

  • Bidirectional streaming: Maintain long-lived connections with built-in keep-alives


Supported Data Streams

Yellowstone gRPC supports streaming the full range of Solana events:

Stream Type
Description

Use Cases

Yellowstone gRPC is ideal for time-sensitive applications that need to react instantly to on-chain state changes:

  • High-frequency trading and MEV bots

  • On-chain indexers and data archives

  • Real-time analytics dashboards

  • DEX monitors and price feeds

  • DeFi strategy engines

  • Alerting and notification systems

  • NFT marketplace trackers

  • Wallet activity monitors

Note: gRPC is not supported in browsers. Yellowstone is designed for backend services and server-side applications.


Getting Started


Prerequisites

To use Yellowstone gRPC on GetBlock:

  • A GetBlock account (sign up at )

  • A subscription

  • Yellowstone gRPC add-on enabled (included at no extra cost with Dedicated Nodes)


Quick Example

Here's a minimal TypeScript example to start streaming account updates:


Additional Resources


Need Help?

Our support team is available 24/7 to assist with:

  • Add-on activation and endpoint setup

  • Integration guidance and troubleshooting

  • Performance optimization

  • Custom solutions for enterprise needs

Contact us through the or visit our .

Enabling archive mode

Enable Archive Mode on your GetBlock Shared Node API to access the full blockchain history and run historical queries

GetBlock provides direct access to blockchain historical states through both the Dedicated Nodes service and archive-enabled Shared RPC endpoints.

This page covers Archive Mode – a setting that turns on archive-node access within GetBlock’s Shared Nodes subscription.

Common RPC use cases enabled by Archive Mode:

  • Read contract/account state at any past block, not just latest , using methods like (address, blockNumber), (contract, slot, blockNumber), (address, blockNumber), etc.

  • Call view functions against historical state: e.g. (..., blockNumber).

  • Run historical queries and debugging that rely on old state: forensics, audits, explorers, indexing, and retroactive analytics.

  • Support tracing and higher-fidelity debugging that may require historical state.

This feature removes the need to run a dedicated archive infrastructure for some use cases, letting developers perform on-demand historical queries via GetBlock RPC API.


Archive mode availability & coverage

Archive functionality is included with all Shared Node subscriptions, excluding the Free plan. No additional fee required.

Archive support is provided for a set of popular protocol mainnets, including Ethereum, BSC, Polygon, Base, Arbitrum, TRON, Sui, Cardano, etc.

Look for the small history icon ( ) when picking a protocol during the . It indicates that Archive mode is available for that blockchain.

If you need an archive data for a chain not covered by shared Archive mode, request a . Dedicated Nodes can be deployed in archive mode for any supported blockchain and come with additional benefits like:

  1. Full blockchain history at the highest throughput

  2. Unlimited query capacity

  3. Custom node builds & tooling


How to enable the Archive mode

  1. Sign in to your GetBlock dashboard and make sure you’re on the Shared Node tab.

  2. Click Get endpoint and choose a required blockchain protocol.

  1. Find the Mode toggle and switch the Archive mode on.

  1. Finish configuring endpoint details by choosing the API interface and server location as usual.

After clicking Get, the new Archive endpoint appears in your Endpoints list. The endpoint URLs will follow the existing GetBlock format but point to archive nodes.


CU billing for Shared Archive endpoints

Archive endpoints usage remains subject to your plan’s .

However, serving requests from archive infrastructure involves heavier storage and compute power compared to regular full nodes.

Therefore, enabling the Archive mode affects how CU usage is calculated:

  • GetBlock applies a 2× Compute Unit (CU) multiplier to all requests made through the Archive endpoint.

  • The multiplier is applied to all requests made to an archive endpoint, even if the invoked RPC call does not require a historical state.

You can review the per-chain CU values for each method on our page.

Example:

If eth_getBalance costs 20 CU on a standard shared endpoint for a given chain, the same call to an Archive-enabled shared endpoint will cost 40 CU.

Plan accordingly and consider using standard Full mode endpoints for non-archive traffic to avoid unnecessary CU consumption.


Best practices

  • Use archive endpoints only for workloads that require a historical state. For transactions or current state queries, use a standard Full mode to save CU.

  • Monitor CU consumption on the dashboard and set alerts for spikes or when usage nears your plan limit.

  • If you run sustained, high-volume archive queries, consider using a Dedicated Node.


💬 Need help with archive blockchain data?

what you’re building — our team can guide you to the most efficient archive node setup.

/v1/accounts/{account_hash} - Aptos

Example code for the /v1/accounts/{account_hash} json-rpc method. Сomplete guide on how to use /v1/accounts/{account_hash} json-rpc in GetBlock.io Web3 documentation.

This endpoint retrieves account details, such as the number of transactions submitted by an account and its authentication key.

Supported Networks

  • Mainnet

Parameters

Parameter
Data type
Description
Required
In

Request Example

URL

Example

Response

Response Definition

Value
Type
Description

Use Cases

This method can be used for:

  • Wallets to fetch sequence numbers before sending transactions (to prevent replay attacks).

  • Creating an account overview page or profile in a dApp.

  • Validating if an account exists on-chain to avoid sending assets to the wrong account.

Code Examples

Python (requests)

Node.js (Axios)

Replace <ACCESS_TOKEN> with your actual access token from GetBlock.

Error Handling

You may encounter responses like:

This means the account hash is incorrect or the account does not exist on-chain at the current ledger state.

  • 403 → Access token is missing.

Integration with Web3

By integrating /v1/accounts/{account_hash}, developers can:

  • Fetch sequence numbers for transaction signing.

  • Validate account existence and state (useful for onboarding users).

  • Support wallet and dApp account management.

  • Enable reliable transaction pipelines.

Team accounts setup

Set up your team account on GetBlock, invite and onboard team members with this step-by-step guide.

A team account is a shared workspace where multiple users can collaborate. This setup is ideal for companies and teams using GetBlock services.

Key benefits:

  • Organized collaboration: Work together on company resources.

  • Enhanced security: Role-based access limits each member to only the features they need.

  • Efficient management: Easily switch between personal and team accounts.

A team account user is a regular GetBlock user. When invited to a team, they can work on company resources, manage service plans or team settings—provided the corresponding permissions are granted.


Creating a team account on GetBlock

This part covers a step-by-step guide to setting up your team workspace.

  1. Sign in to your GetBlock account. If you don’t have a user account yet, create one following .

  2. Click on the profile icon in the bottom-left corner of the sidebar. Select "Create new team" from the dropdown menu.

  1. A popup window will appear. Assign a team name and click the "Create team" button.

  1. Once the space is created, navigate to Account Settings > Team to manage team settings or add teammates.


Adding teammates

The creator of the team account controls who gets invited and manages user roles.

Limits on GetBlock team accounts:

  • Each user can create up to 3 teams.

  • A user can be invited to an unlimited number of teams.

  • One team can have a maximum of 30 users.

You can invite team members to join your team account using either their email address or GetBlock User ID.

  • If the teammate has a GetBlock account: You can invite them using their ID. Since they are already registered, they just need to accept the invitation.

  • If the teammate is not registered on GetBlock: Invite them via email so they can first create an account before joining the team.

  1. Go to Account Settings > Team.

  2. Click "Add team member" in the top-right corner.

  3. Request the User ID from the teammate (they can find it under Account Settings > General).

  4. Enter the name, User ID, and send the invite.

The user gets a notification and can accept the invite.

  1. Go to Account Settings > My Team.

  2. Click "Add team member" in the top-right corner.

  3. Enter the teammate's name and email address.

  4. Send the invite.

The invite link is valid for 30 minutes. If it expires, please resend an invitation.

The user will receive an invitation email with a link to sign up and join the team.

A team member is marked as when they have successfully accepted the invitation and joined the team.

If the invitation has been sent but not yet accepted, their status remains .


Managing roles & permissions

Once the user has joined, the team owner or an admin can update their permissions:

  1. Go to My Team in Account Settings.

  2. Click the three-dot menu (⋮) next to a team member.

  3. Select "Edit access level".

  4. Assign permissions:

    • Endpoints: Create and manage node endpoints, access tokens, and view statistics.

    • Subscriptions & payments: Handle payments and plans.

    • Admin: Includes all the above permissions, plus the access to manage team settings and member roles.

  5. Save changes.

If a Member has no permissions assigned, they will have View-Only access by default.

Roles-based permissions

This table provides a breakdown of actions team account users can perform based on their role.

Action
Owner
Admin
Member

If you need someone to help manage other team members, be sure to give them Admin status.


Revoking team access

To remove a user from your team account:

  1. Navigate to Team in the Account Settings.

  2. Click the three-dot menu (⋮) next to the team member name.

  3. Select "Remove" from the dropdown menu.

When removed from a team, users lose access to that team workspace but keep their personal account.


How to join a team account

If you’ve been invited to a team on GetBlock, follow these steps to accept the invitation and join the team.

When you have a pending team invitation, a notification badge appears on your account icon .

  1. Click your account icon to view an invitation.

  2. Click "Accept" if you're ready to join.

  1. After accepting the invitation, you are given access to your team’s workspace. Your will be determined by the team owner or admin.

When someone who is not yet registered on GetBlock receives a team invitation, they must first sign up for an account:

  1. Check your inbox for an email invitation from GetBlock.

  2. Clicking the invitation link redirects you to the sign-up page.

  3. Create a secure password for your new account.

  4. Check the boxes to agree to the Terms of Service and Privacy Policy and complete the registration.

The invite link is valid for 30 minutes. If it expires, ask the team owner or admin to send a new invitation.

Once registered, you’ll have your personal GetBlock account. Additionally, you gain access to the team’s dashboard and resources based on given by the team owner or admin.

Next steps: Explore GetBlock

Now that you’ve joined a team, here are a few useful resources to help you get started:

  • – Learn more about GetBlock.

  • – How to create and manage node endpoints.

  • – Understanding plans and payments.


Switching between personal & team accounts

A team user does not lose access to their personal account. They can still use and manage their own endpoints and subscriptions.

To switch between your personal account and any team accounts you are part of:

  • Click the account icon in the left panel.

  • A dropdown will show all teams & personal accounts.

  • Switch between them as needed.

The teams list is sorted by recent activity, with the most recently accessed accounts at the top.


Best practices for team security

  • Regularly review and audit permissions. Revoke access for users who are no longer active.

  • Grant admin privileges only to trusted team members.

  • Give Members only the necessary permissions (e.g., endpoints access or subscriptions management).

  • Never share login credentials—use team accounts instead.


Need help?

If you run into any issues or have questions, please check out our or visit our . You can also use the Help button within your GetBlock dashboard to access support or submit a request.

Web3.js integration

Learn how to use Web3.js, a widely-used JavaScript library for connecting to GetBlock nodes.

Web3.js is a JavaScript library built for interacting with the Ethereum blockchain and other EVM-compatible chains. It is used to send JSON-RPC calls to the Ethereum node via HTTP, IPC, or WebSocket connection to read data from the blockchain, make transactions, or deploy smart contracts.

Install Web3.js

Use your preferred package manager:

  • npm:

  • yarn:

  • Pure js link:

Set up your connection to GetBlock

For additional methods and options, refer to the official .

account_hash

string

Aptos account address

Yes

Path

https://go.getblock.io/<ACCESS-TOKEN>/
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f'
{
  "sequence_number": "234541",
  "authentication_key": "0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f"
}

sequence_number

string

The number of transactions that have been submitted and committed from the account.

authentication_key

string

The authentication key associated with the account, in hex-encoded format.

import requests

url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f"

response = requests.get(url)

print(response.text)
import axios from 'axios';

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f',
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});
{
  "sequence_number": "0",
  "authentication_key": "0x00000000000000000000000bf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f"
}
npm install web3
yarn add web3
dist/web3.min.js
// Import the Web3 library
const Web3 = require('web3');

// Set GetBlock as the provider (replace ACCESS_TOKEN with your actual token)
var web3 = new Web3('https://go.getblock.io/ACCESS_TOKEN');

// Initialize web3 method
web3.eth.getBlockNumber().then(console.log);
Web3.js documentation

$0

$49

$199

$499

from $999

CU Allocation

50k/day

50M/month

220M/month

600M/month

Custom

RPS Limit

20 RPS

100 RPS

300 RPS

500 RPS

Custom

Access Tokens

2

10

25

50

Custom

Extra CU Purchase

❌

✅

✅

✅

✅

CU (Compute Units)
Access Tokens
https://getblock.io/pricing/
Top up CUs and boost limits
Contact our support team
Choosing your plan
GetBlock's free RPC node plan limits
Starter plan limits for Shared RPC nodes by GetBlock
RPC node with higher-limit access
GetBlock's Enterprise plan with custom usage limit settings
Dedicated node for scalable and unlimited RPC node access

Accounts

Real-time account updates including lamports, owner, and data

Transactions

Full transaction data with metadata and instruction details

Blocks

Block metadata including slot, parent slot, and timestamp

Slots

Slot notifications as they're processed by the leader

Block Meta

Block metadata with transaction counts and execution status

import Client, {
  SubscribeRequest,
  CommitmentLevel
} from "@triton-one/yellowstone-grpc";

const client = new Client("https://go.getblock.io/", "YOUR_ACCESS_TOKEN");
const stream = await client.subscribe();

stream.write({
  accounts: ["YourWalletPubkeyHere"],
  commitment: CommitmentLevel.PROCESSED,
} as SubscribeRequest);

stream.on("data", (msg) => {
  if (msg.accountChange) {
    console.log(`Account updated: ${msg.accountChange.pubkey}`);
  }
});
getblock.io
Dedicated Solana Node
Yellowstone gRPC GitHub Repository
GetBlock Solana Nodes
GetBlock Support
GetBlock dashboard
support page

Overview

Learn how Yellowstone gRPC works and why it's essential for real-time Solana applications

Quickstart Guide

Enable the add-on and start streaming data with code examples in TypeScript, Python, Go, and Rust

eth_getBalance
eth_getStorageAt
eth_getCode
eth_call
endpoint setup
Dedicated Node
CU limits and performance characteristics
Compute Units
Tell us
Archive blockchain data access via GetBlock RPC endpoints
Get RPC endpoint button on GetBlock's dashboard
history/clock icon

Create & manage access tokens

✅

✅

Manage subscriptions & payments

✅

✅

Add & remove team members

✅

✅

❌

Edit access levels

✅

✅

❌

Promote to Admin

✅

❌

❌

this guide
role and permissions
permissions
Getting Started
Managing Endpoints
Plans & Limits
FAQ
Contact Center
How to create a team account on GetBlock
Creating an enterprise account with RPC node provider GetBlock
Collaboration feature for GetBlock enterprise users
Adding users to the team account on GetBlock
Inviting teammates to GetBlock's team account
Managing team account user permissions and roles
Instructions to remove a team user from the GetBlock team account
How to join a team account on GetBlock
Viewing permissions for team account users
GetBlock sign-up page
Using GetBlock's personal and team accounts
Active
Pending
GetBlock RPC endpoint setup interface
How to create a node endpoint for blockchain API access
Blockchain RPC nodes list within the GetBlock account

Overview

GetBlock API docs: RPC endpoints, SDK guides, and developer tools. Everything you need to connect and build on 70+ blockchain networks

Getting Started with GetBlock

To get started, follow these steps:

  1. Sign up: Create an account to access your Access Token.

  2. Generate access token: Navigate to the dashboard, and generate your first access token for API authentication.

  3. Choose the blockchain name and type: Select the blockchain network you want to interact with, set up testnet/mainnet, and choose the interface you’re going to use.

  4. Send your first request:

import requests
url = "https://go.getblock.io/<ACCESS-TOKEN>/"
headers = { "Content-Type": "application/json" }
payload = { "jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": "getblock.io" }
response = requests.post(url, headers=headers, json=payload)
print(response.json())

Key Features of GetBlock

GetBlock is offering one of the most comprehensive APIs toolkits in the segment supporting hundreds of dApps with fast and reliable connection to blockchain nodes.

70+ blockchains in store

  • Seamless connection to full and archive nodes

  • Shared and dedicated nodes: Tailored for your dApp’s needs.

  • Programmable and non-programmable blockchains

  • L1 and L2 protocols

  • EVM and non-EVM networks

See full list: https://getblock.io/nodes/ All mainstream RPC interfaces

  • WebSockets

  • JSON RPC

  • GraphQL

  • REST API

  • And more

Add them in Lego-like manner: https://account.getblock.io/

Industry-leading suite of add-ons and ready-made APIs

  • DAS API

  • Firehose

  • Blockbook

  • Yellowstone Geyser

Need more? Don’t hesitate to contact sales: https://getblock.io/contact/

Examples for Console REST API Requests

cURL

Most *nix-based systems come with cURL pre-installed. cURL is a command-line tool and library for transferring data with URLs. To check if cURL is installed, run the following command:

curl -h

Example of requesting the latest block number using the GetBlock API and cURL:

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>/' \
--header 'Content-Type: application/json' \
--data-raw '{
    "jsonrpc": "2.0",
    "method": "eth_blockNumber",
    "params": [],
    "id": "getblock.io"
}'

Python

To run Python examples, ensure Python is installed along with the requests package. You can install the package using the following command:

python -m pip install requests

Example:

import requests
url = "https://go.getblock.io/<ACCESS-TOKEN>/"
headers = { "Content-Type": "application/json" }
payload = { "jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": "getblock.io" }
response = requests.post(url, headers=headers, json=payload)
print(response.json())

JavaScript

For JavaScript examples, you'll need Node.js version 18 or later. Follow the official documentation to install the latest stable version globally. Verify your installation by running:

node -v

Ruby

To execute Ruby examples, install Ruby on your machine. Refer to the official installation guide for details. Confirm installation by running:

ruby -v

Supported networks

We provide APIs for a wide range of networks, including:

Aptos (APT)

Arbitrum (ARB)

Avalanche (AVAX)

Bitcoin Cash (BCH)

BNB Smart Chain (BSC)

Bitcoin-SV (BSV)

Bitcoin (BTC)

Bitcoin Gold (BTG)

Cronos (CRO)

Dash (DASH)

DigiByte (DGB)

Dogeсoin (DOGE)

Polkadot (DOT)

Ethereum Classic (ETC)

Ethereum (ETH)

Fantom (FTM)

Fuse.io (FUSE)

Moonbeam (GLMR)

Gnosis Chain (GNO)

Huobi ECO Chain (HECO)

KuCoin Community Chain (KCC)

Kusama (KSM)

Polygon (MATIC)

Moonriver (MOVR)

Near Protocol (NEAR)

Harmony (ONE)

Ontology (ONT)

Optimism (OP)

Rootstock (RSK)

Solana (SOL)

Theta (THETA)

TON (TON)

Tron (TRX)

NEM (XEM)

Monero (XMR)

ZCash (ZEC)

Endpoint setup

Configure and manage blockchain node endpoints through GetBlock, offering easy creation of shared nodes

Set up and manage blockchain node endpoints with GetBlock. This section covers creating shared node endpoints, generating access tokens, and configuring dedicated nodes with customizable settings.

shh_getMessages {disallowed} - Arbitrum

Example code for the shh_getMessages {disallowed} json-rpc method. Сomplete guide on how to use shh_getMessages {disallowed} json-rpc in GetBlock.io Web3 documentation.

Parameters

id - string

the filter id.

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "shh_getMessages",
  "params": [null],
  "id": "getblock.io"
}'

Response

{
    "result": "null",
    "id": "getblock.io",
    "status_code": 405,
    "message": "Method not allowed"
}

/v1/accounts/{account_hash}/events/{event_handle}/{field_name} - Aptos

Example code for the /v1/accounts/{account_hash}/events/{event_handle}/{field_name} JSON-RPC method. Сomplete guide on how to use /v1/accounts/{account_hash}/events/{event_handle}/{field_name} json-rp

This endpoint retrieves events for a given account using an event handle struct and a field name within that struct. It allows more precise event queries compared to using only the creation number.

Supported Network

Parameters

Parameter
Data type
Description
Required
In

Request Example

Base URL

Example (cURL)

Response Example

Response Parameters

Field
Type
Description

Use Cases

This endpoint can be used to:

  • Query specific event handles such as deposit_events or withdraw_events.

  • Display transaction logs tied to particular smart contracts or account resources.

  • Track contract-specific activity within dApps for analytics or notifications.

Code Examples

Python (requests)

Node.js (Axios)

Replace <ACCESS_TOKEN> with your actual GetBlock API token.

Error Handling

Status Code
Error Message
Cause

Integration with Web3

By integrating /v1/accounts/{account_hash}/events/{event_handle}/{field_name}, developers can:

  • Track token-specific events like deposits, withdrawals, mints, or burns.

  • Enable in-wallet notifications (e.g., “You received 250 APT”).

  • Monitor DeFi or NFT protocol activity by subscribing to contract events.

  • Enhance analytics dashboards by focusing on targeted on-chain event streams.

What counts as a CU

Learn what Compute Units (CUs) are and how GetBlock calculates them to track and price API calls

In our Shared Node plans, we use CU-based pricing. CUs, Compute Units, is a way to measure the computational resources that each API request consumes.

Request vs CU

Requests are the raw number of calls (e.g., an RPC method call) you make to the node, while Compute Units show how much computing power each call uses.

Instead of charging a fixed fee for every call, GetBlock calculates the “cost” of processing a request based on the actual computational work involved – such as CPU & memory usage, and disk I/O.

Here's how it works:

  • Different shared node plans include different allocations of Compute Units (CUs).

  • Each API call deducts an amount based on the resources it consumes.

  • Users can track their remaining CUs in real time on the dashboard.

This model ensures costs are aligned with actual infrastructure usage.

Learn More

  • — Check how many CUs are included in each plan.


How CUs are calculated

Every API call "spends" a number of Compute Units. The total value is determined by two main factors:

  1. A base CU cost (chain multiplier) reflecting the network's resource intensity.

  2. A method-specific multiplier which varies by API method.

The total Compute Units for an API call are calculated using the following formula:


1. Chain-based multipliers

Not all blockchains are built or operate the same way. GetBlock accounts for inherent differences between networks by assigning chain multipliers based on factors such as:

  • Node infrastructure costs;

  • Protocol complexity and the size of the blockchain data;

  • Operational overhead.

Here’s how blockchains are grouped based on their average resource intensity:

Chains
Multiplier
Explanation

2. Method-specific multipliers

Different API methods put different loads on backend nodes. For example:

  • eth_blockNumber is lightweight since it just returns the latest block number.

  • trace_replayBlockTransactions executes a full replay of all txs in a block and can be extremely heavy.

Therefore, individual blockchain methods have their own multipliers, depending on how computationally demanding each particular operation is.

The example table below shows some Ethereum blockchain methods with their associated multipliers and total CU calculated.

Ethereum RPC Method
Method Multiplier
Base Chain Multiplier
Total CU

Some "heavy" calls (e.g. archive calls) may have special adjustments or additional weighting to more accurately reflect their extra computational demands

Calculation example for debug_traceTransaction:

For full details on all methods—including exact multipliers and total CU values for each protocol—please refer to our.


Why we use the CU system at GetBlock?

🛡️ It helps keep infrastructure stable

Tracking and pricing requests based on how “heavy” they are:

  • Discourages abuse (like hammering archive calls) and protects node performance & uptime.

  • Makes it easier for GetBlock to scale and optimize resources behind the scenes.

💰 Compute Units provide a fair, usage-based billing model

A simple per-request pricing model would charge the same for all methods, which isn’t scalable or logical. The CU model fixes this imbalance.

⚙️ To help developers build smarter

Because each API call has a clear CU cost, you can spot inefficiencies quickly (e.g. which parts of your dApp consume the most), making it easier to fine-tune performance.

/v1/accounts/{account_hash}/resources - Aptos

Example code for the /v1/accounts/{account_hash}/resources JSON-RPC method. Сomplete guide on how to use /v1/accounts/{account_hash}/resources json-rpc in GetBlock.io Web3 documentation.

This endpoint retrieves all resources linked to a specific account at the latest ledger version. These resources include on-chain data such as the authentication key, sequence number, GUIDs, smart contract states, and tokens.

Supported Networks

  • Mainnet

Parameters

Parameter
Data type
Description
Required
In

Request Example

URL

Example

Response

Response Definition

Value
Data type
Description

Use Cases

This method can be used for:

  • Checking on-chain state of tokens or smart contracts.

  • Tracking smart contract event counters for deposits/withdrawals.

  • Powering portfolio trackers or explorers that display account assets.

  • Supporting conditional logic in dApps (e.g., only allow staking if a required resource exists).

Code Examples

Python (requests)

Node.js (Axios)

Replace <ACCESS_TOKEN> with your actual access token from GetBlock.

Error Handling

  • Missing or invalid account hash → Empty or malformed response.

  • 403 → Access token is missing or invalid.

Integration with Web3

By integrating /v1/accounts/{account_hash}/resources, developers can:

  • Read smart contract resources tied to an account (for DeFi, staking, etc.).

  • Power explorers or portfolio trackers to show account assets.

  • Support reliable transaction pipelines and conditional dApp logic.

/v1/blocks/by_height/{block_height} - Aptos

Example code for the /v1/blocks/by_height/{block_height} json-rpc method. Сomplete guide on how to use /v1/blocks/by_height/{block_height} json-rpc in GetBlock.io Web3 documentation.

This endpoint gets a specific block's information from the Aptos blockchain network, given its height.

Supported Networks

  • Mainnet

Parameter

Request

Base URL

Example(cURL)

Response Example

Response Parameter Definition

Use Cases

This method can be used for:

  • Get a specific block by its height.

  • Explore transactions inside a given block.

  • Build block explorers or monitoring dashboards.

Code Example

Python(Request)

Node(Axios)

Error Handling

Integration with Web3

By integrating /v1/blocks/by_height/{block_height}, developers can:

  • Synchronise chain data by fetching blocks sequentially.

  • Monitor on-chain activity at the block level.

  • Enable dApps to verify inclusion of transactions at a given height.

eth_sendTransaction - Arbitrum

Example code for the eth_sendTransaction json-rpc method. Сomplete guide on how to use eth_sendTransaction json-rpc in GetBlock.io Web3 documentation.

Parameters

object - json object

The transacion call object in format: { "from": "address" (optional, string) - The address the transaction is sent from. "to": "address" (optional, string) - The address the transaction is directed to. "gas": "quantity" (optional, string) - Integer of the gas provided for the transaction execution. eth_call consumes zero gas, but this parameter may be needed by some executions. "gasPrice": "quantity" (optional, string) - Integer of the gasPrice used for each paid gas "value": "quantity" (optional, string) - Integer of the value sent with this transaction "data": "data" (optional, string) - Hash of the method signature and encoded parameters. "nonce": "quantity" (optional, string) - Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce. }

Request

Response

- Mainnet

account_hash

string

Aptos account address

Yes

Path

event_handle

string

Struct type name that contains the event handle.

Yes

Path

field_name

string

Field name within the struct that holds the event handle.

Yes

Path

start

string

Starting point or offset for retrieving events. Defaults to latest if not provided.

No

Query

limit

integer

Maximum number of events to retrieve per request. Defaults to standard page size if unspecified.

No

Query

https://go.getblock.io/<ACCESS\_TOKEN>/
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f/events/0x1::account::Account/coin_register_events'
    [
      {
        "version": "2304959",
        "guid": {
          "creation_number": "0",
          "account_address": "0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12"
        },
        "sequence_number": "0",
        "type": "0x1::account::CoinRegisterEvent",
        "data": {
          "type_info": {
            "account_address": "0x1",
            "module_name": "0x6170746f735f636f696e",
            "struct_name": "0x4170746f73436f696e"
          }
        }
      },
      {
        "version": "2665347733",
        "guid": {
          "creation_number": "0",
          "account_address": "0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12"
        },
        "sequence_number": "1",
        "type": "0x1::account::CoinRegisterEvent",
        "data": {
          "type_info": {
            "account_address": "0xec42a352cc65eca17a9fa85d0fc602295897ed6b8b8af6a6c79ef490eb8f9eba",
            "module_name": "0x616d6d5f73776170",
            "struct_name": "0x506f6f6c4c6971756964697479436f696e3c3078313a3a6170746f735f636f696e3a3a4170746f73436f696e2c203078663232626564653233376130376531323162353664393161343931656237626364666431663539303739323661396535383333386639363461303162313766613a3a61737365743a3a555344543e"
          }
        }
      }
    ]

guid.creation_number

string

Unique identifier for this event stream under the given account.

guid.account_address

string

Account address that owns this event handle.

sequence_number

string

Number of transactions submitted and committed on-chain by the account.

type

string

Type of event emitted.

    import requests
    
    url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f/events/0x1::account::Account/coin_register_events"
    
    response = requests.get(url)
    
    print(response.text)
    import axios from 'axios';
    
    let config = {
      method: 'get',
      maxBodyLength: Infinity,
      url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f/events/0x1::account::Account/coin_register_events'
    };
    
    axios.request(config)
    .then((response) => {
      console.log(JSON.stringify(response.data));
    })
    .catch((error) => {
      console.log(error);
    });
    

403

Forbidden

Missing or invalid ACCESS_TOKEN.

404

Resource not found

Invalid event_handle or field_name.

500

Internal server error

Node or network issue — retry the request later.

account_hash

string

Aptos account address

Yes

Path

ledger_version

string

The ledger version to get the account state

No

Query

start

string

The starting point for retrieving resources

No

Query

limit

integer

The maximum number of resources per request

No

Query

https://go.getblock.io//

curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f/resources?ledger_version=3357308041&limit=10'
[
  {
    "type": "0x1::account::Account",
    "data": {
      "authentication_key": "0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f",
      "coin_register_events": {
        "counter": "0",
        "guid": {
          "id": {
            "addr": "0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f",
            "creation_num": "0"
          }
        }
      },
      "guid_creation_num": "2",
      "key_rotation_events": {
        "counter": "0",
        "guid": {
          "id": {
            "addr": "0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f",
            "creation_num": "1"
          }
        }
      },
      "rotation_capability_offer": {
        "for": { "vec": [] }
      },
      "sequence_number": "234285",
      "signer_capability_offer": {
        "for": { "vec": [] }
      }
    }
  }
]

type

string

The type format of the account resource.

data

object

The additional data or information related to the account resource.

authentication_key

string

The authentication key used to verify the identity of the account owner.

coin_register_events

object

Events associated with coin registration for the account.

counter

string

The counter value associated with a particular operation.

guid

object

Unique identifier (GUID) of the resource.

id

object

The resource identifier.

addr

string

The address associated with the resource.

creation_num

string

The creation number of the resource.

sequence_number

string

Tracks the order of transactions initiated by the account.

import requests

url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f/resources?ledger_version=3357308041&limit=10"

response = requests.get(url)

print(response.text)
import axios from 'axios';

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f/resources?ledger_version=3357308041&limit=10',
  headers: {}
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Parameter

Type

In

Required

Description

block_height

Integer

Path

Yes

Height (number) of the block to fetch.

with_transactions

Boolean

Query

No

If true, returns full transactions inside the block. Default: false.

https://go.getblock.io/<ACCESS_TOKEN>
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/blocks/by_height/425737645?with_transactions=false'

{
    "block_height": "445814139",
    "block_hash": "0x0ac6b36f89b6a3fc9b7c2cabcb1f29cc624e609ed0978dd2a757b048196cb3bc",
    "block_timestamp": "1759349325550593",
    "first_version": "3492983944",
    "last_version": "3492983948",
    "transactions": null
}

Field

Description

block_height

The height of the block

block_hash

The hash of the block at the specified height

block_timestamp

The time at which the block was created/added to the chain

first_version

The version number of the first transaction in the block

last_version

The version number of the last transaction in the block

transactions

An array containing the details of the transactions included in the block

type (transaction)

The type of the change

hash

The hash of the transaction

sender

The account from which the transaction was sent

sequence_number

The sequence of a transaction sent by the specific sender

max_gas_amount

The maximum amount of gas allocated for the execution of a transaction

gas_unit_price

The cost per unit of gas (determines the transaction fee)

expiration_timestamp_secs

The timestamp until which the transaction can be included in a block

payload

The data carried by a transaction

type (payload)

The type of payload indicates the purpose of the data contained

function

The function associated with the payload

type_arguments

An array specifying the types of arguments provided to the function

arguments

An array containing the actual arguments passed to the function

signature

An array with signature details

type (signature)

The type of signature used to verify authenticity

public_key

The public key of the account that generated the signature

signature (value)

The actual signature generated with the private key

import requests

url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/blocks/by_height/425737645?with_transactions=false"
response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
import axios from ‘axios’

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: "https://go.getblock.io/<ACCESS_TOKEN>/v1/blocks/by_height/425737645?with_transactions=false"
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Status Code

Error Message

Cause

403

Forbidden

Invalid or missing ACCESS_TOKEN.

410

Block has been pruned

No block exists for the specified height or pruned.

500

Internal server error

Node or network issue; retry later.

curl --location --request POST 'https://go.getblock.io/YOUR-ACCESS-TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_sendTransaction", "params": [{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155", "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567", "gas": "0x76c0", "gasPrice": "0x9184e72a000", "value": "0x9184e72a", "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}], "id": "getblock.io"}'
{
    "error": {
        "code": -32000,
        "message": "unknown account"
    },
    "id": "getblock.io",
    "jsonrpc": "2.0"
}
Total CU=Chain Multiplier×Method Multiplier\text{Total CU} = \text{Chain Multiplier} \times \text{Method Multiplier}Total CU=Chain Multiplier×Method Multiplier

Algorand, Bitcoin, Bitcoin Cash, Dash, Dogecoin, Ethereum Classic, Kusama, Litecoin, Near, OKB, Polkadot, Rootstock, Scroll, Shiba Inu, Sonic, Syscoin, Telos, Zcash, others

10

These chains typically have low write/read complexity and use fewer resources per request

Aptos, Arbitrum, Avalanche, BNB Smart Chain, Base, Blast, Cardano, Cosmos, Cronos, Ethereum, Filecoin, Flow, Gnosis, Harmony, Kaia, Linea, Moonbeam, OKT, Optimism, Polygon, Polygon zkEVM, StarkNet, Tezos, Tron, XRP, opBNB, Cronos zkEVM, ZKsync

20

Requests on these blockchains are more resource-intensive

Solana, Sui, TON

50

These chains require significantly more computational resources per request

eth_blockNumber

1

20

20

eth_getTransactionByHash

1

20

20

debug_traceTransaction

2

20

40

debug_traceBlock

2

20

40

trace_call

2

20

40

trace_transaction

2

20

40

txpool_status

2

20

40

trace_replayTransaction

4

20

80

20 (Ethereum base multiplier)×2 (method multiplier)=40 CU20\ (\text{Ethereum base multiplier}) \times 2\ (\text{method multiplier}) = \mathbf{40\ CU}20 (Ethereum base multiplier)×2 (method multiplier)=40 CU
CU and rate limits
Compute Units page
How to check your CU balance in GetBlock accounts

/v1/accounts/{account_hash}/events/{creation_number} - Aptos

Example code for the /v1/accounts/{account_hash}/events/{creation_number} JSON-RPC method. Сomplete guide on how to use /v1/accounts/{account_hash}/events/{creation_number} json-rpc in GetBlock.io Web

This endpoint retrieves events for a given account based on the creation number of the event handle. Events are emitted during transactions and serve as logs of on-chain actions such as token transfers, deposits, or contract interactions.

Supported Network

  • Mainnet


Parameters

Parameter
Data type
Description
Required
In

account_hash

string

Aptos account address.

Yes

Path

creation_number

integer

The creation number of the event handle to be retrieved.

Yes

Path

start

string

Starting point or offset for retrieving events. Defaults to showing the latest transactions if omitted.

No

Query

limit

integer

Maximum number of events to retrieve per request. Defaults to the standard page size if not provided.

No

Query


Request

Base URL

https://go.getblock.io/
<ACCESS_TOKEN>

Request Example (cURL)

curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f/events/0'

Response

[
  {
    "version": "2665347733",
    "guid": {
      "creation_number": "0",
      "account_address": "0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12"
    },
    "sequence_number": "1",
    "type": "0x1::account::CoinRegisterEvent",
    "data": {
      "type_info": {
        "account_address": "0xec42a352cc65eca17a9fa85d0fc602295897ed6b8b8af6a6c79ef490eb8f9eba",
        "module_name": "0x616d6d5f73776170",
        "struct_name": "0x506f6f6c4c6971756964697479436f696e3c3078313a3a6170746f735f636f696e3a3a4170746f73436f696e2c203078663232626564653233376130376531323162353664393161343931656237626364666431663539303739323661396535383333386639363461303162313766613a3a61737365743a3a555344543e"
      }
    }
  }
]

Response Parameter Definition

Field
Type
Description

version

string

Ledger version number at which the event was recorded.

guid

object

Globally unique identifier (GUID) for the event.

guid.creation_number

string

Creation number assigned to this event stream within the account.

guid.account_address

string

Address of the account that owns this event handle.

sequence_number

string

Sequential index of this event in the event stream.

type

string

Fully qualified event type (e.g., 0x1::account::WithdrawEvent).

data

object

Additional data payload associated with the event (depends on event type).

Use Cases

This method can be used for:

  • Tracking account-level activity logs such as deposits, withdrawals, and transfers.

  • Building blockchain explorers that display historical event data.

  • Monitoring DeFi or NFT protocols that emit custom contract events.

  • Triggering real-time alerts when specific on-chain events occur.


Code Examples

Node.js (Axios)

import axios from 'axios';

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xc32f662cd9718f02d8a8e5628f8f642fa27cd9b5f457b406ed734901a4939e34/events/0?limit=1&start=1'
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Python (Request)

import requests

url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xc32f662cd9718f02d8a8e5628f8f642fa27cd9b5f457b406ed734901a4939e34/events/0?limit=1&start=1"

response = requests.get(url)

print(response.text)

Replace <ACCESS_TOKEN> with your actual GetBlock access token.


Error Handling

Status Code
Error Message
Cause

400

Invalid account address

The provided account_hash is invalid.

401

Unauthorized

Missing or invalid <ACCESS_TOKEN>.

404

Event stream not found

No event stream exists for the given creation_number.

422

Invalid creation number

Malformed or unsupported creation number format.

500

Internal server error

Node or network failure while retrieving events.


Integration with Web3

By integrating /v1/accounts/{account_hash}/events/{creation_number}, developers can:

  • Optimise event tracking for NFT, DeFi, and gaming applications.

  • Build real-time activity feeds from on-chain actions.

  • Map blockchain transactions into user-friendly notifications.

  • Support advanced analytics for blockchain event visualisation.

/v1/transactions/by_version/{version} - Aptos

Example code for the /v1/transactions/by_version/{version} json-rpc method. Сomplete guide on how to use /v1/transactions/by_version/{version} json-rpc in GetBlock.io Web3 documentation.

This endpoint gets a transaction by its ledger version number from Aptos blockchain.

supported Network

  • Mainnet

Parameter

Parameter

Data type

Description

Required

In

version

integer

The ledger version

Yes

Path

Request

Base URL

https://go.getblock.io/<ACCESS_TOKEN>

Example(cURL)

curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions/by_version/3363904007'

Response Example

{
    "version": "3363904007",
    "hash": "0xd797b944ed8657406a1b09a5928048093399fc0a2f576d3e57c0f9cedbf95c4a",
    "state_change_hash": "0xafb6e14fe47d850fd0a7395bcfb997ffacf4715e0f895cc162c218e4a7564bc6",
    "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000",
    "state_checkpoint_hash": "0xbf257d934f991d1e7d74079cc9060d3ac005aaa208d93a1fd4928dfc224bba53",
    "gas_used": "0",
    "success": true,
    "vm_status": "Executed successfully",
    "accumulator_root_hash": "0xc985314d5c118899c649b772c237178c63f328e7d286aceea01a30373d491d95",
    "changes": [],
    "timestamp": "1757261767411156",
    "block_end_info": {
        "block_gas_limit_reached": false,
        "block_output_limit_reached": false,
        "block_effective_block_gas_units": 500,
        "block_approx_output_size": 21541
    },
    "type": "block_epilogue_transaction"
}

Response Parameter Definition

Field

Type

Description

version

String

Global transaction version number.

hash

String

Hash of the transaction.

state_change_hash

String

Hash of all state changes from this txn.

event_root_hash

String

Merkle root hash of all events.

state_checkpoint_hash

String

Hash of the state checkpoint.

gas_used

String

Amount of gas consumed.

success

Boolean

Whether transaction executed successfully.

vm_status

String

Result status from Aptos VM.

accumulator_root_hash

String

Global accumulator root hash.

changes

Array

State changes applied (empty for system txns).

timestamp

String

Unix timestamp in microseconds.

block_end_info

Object

Metadata about block execution.

block_end_info.block_gas_limit_reached

Booleab

Block’s gas limit was reached.

block_end_info.block_output_limit_reached

Boolean

Block’s output size limit was hit.

block_end_info.block_effective_block_gas_units

Integer

Effective gas used in this block.

block_end_info.block_approx_output_size

Interger

Approximate output size of block in bytes.

type

String

Transaction type (e.g., user_transaction, block_epilogue_transaction).

Use cases

This method is used for:

  • Retrieve details of a specific transaction by its version.

  • Debug failed transactions by checking vm_status.

  • Build explorers that let users search transactions by version.

  • Track system-level transactions like block epilogues.

Code Example

Node(axios)

const axios = require('axios');

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions/by_version/3541136893',
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Python(Request)

import requests

url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions/by_version/3541136893"

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

Error handling

Status Code

Error Message

Cause

403

forbidden

Missing or invalid <ACCESS_TOKEN>.

410

Ledger version has been pruned

Incorrect version number or being pruned

500

Internal server error

Node or network issue; retry later.

Integration with Web3

By integrating /v1/transactions/by_version/{version}, developers can:

  • Trace exact transactions for auditing or compliance.

  • Debug dApps by fetching execution results and state changes.

  • Enable explorers to link transactions with block details. Monitor validators/system txns like block prologues and epilogues.

/v1/accounts/{account_hash}/module/{module_name} - Aptos

Example code for the /v1/accounts/{account_hash}/module/{module_name} JSON-RPC method. Сomplete guide on how to use /v1/accounts/{account_hash}/module/{module_name}json-rpc in GetBlock.io Web3 documen

This endpoint fetches detailed information about a single smart contract (module) deployed under a specific Aptos account. The response contains the module's bytecode and ABI, providing a complete description of its functions, structs, and on-chain logic.


Supported Network

  • Mainnet


Parameters

Parameter
Data type
Description
Required
In

account_hash

string

Aptos account address.

Yes

Path

module_name

string

The name of the smart contract module.

Yes

Path

ledger_version

string

The ledger version to retrieve the module state. Optional parameter.

No

Query


Request

Base URL

https://go.getblock.io/<ACCESS_TOKEN>/

Example (cURL)

curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12/module/curves'

Response

{
  "bytecode": "0xa11ceb0b050000000b01000402040c03101e042e0c053a0f07497e08c701400687020a109102300ac1020a0ccb023e00000101000200000003000001090700000400000100000500010100000600010100000700010100010a000301000302040204040405020201020001010109000108020108000108010663757276657309747970655f696e666f06537461626c650c556e636f7272656c61746564126173736572745f76616c69645f63757276650969735f737461626c650f69735f756e636f7272656c617465640e69735f76616c69645f63757276650b64756d6d795f6669656c640854797065496e666f07747970655f6f66190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12000000000000000000000000000000000000000000000000000000000000000103081127000000000000126170746f733a3a6d657461646174615f76301c011127000000000000114552525f494e56414c49445f43555256450000020108010102010801000100000005380003040700270201010000000438013802210202010000000438013803210203010000010a380403030506080c00050838050c000b000200",
  "abi": {
    "address": "0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12",
    "name": "curves",
    "friends": [],
    "exposed_functions": [
      {
        "name": "assert_valid_curve",
        "visibility": "public",
        "is_entry": false,
        "is_view": false,
        "generic_type_params": [{ "constraints": [] }],
        "params": [],
        "return": []
      },
      {
        "name": "is_stable",
        "visibility": "public",
        "is_entry": false,
        "is_view": false,
        "generic_type_params": [{ "constraints": [] }],
        "params": [],
        "return": ["bool"]
      },
      {
        "name": "is_uncorrelated",
        "visibility": "public",
        "is_entry": false,
        "is_view": false,
        "generic_type_params": [{ "constraints": [] }],
        "params": [],
        "return": ["bool"]
      },
      {
        "name": "is_valid_curve",
        "visibility": "public",
        "is_entry": false,
        "is_view": false,
        "generic_type_params": [{ "constraints": [] }],
        "params": [],
        "return": ["bool"]
      }
    ],
    "structs": [
      {
        "name": "Stable",
        "is_native": false,
        "is_event": false,
        "abilities": [],
        "generic_type_params": [],
        "fields": [{ "name": "dummy_field", "type": "bool" }]
      },
      {
        "name": "Uncorrelated",
        "is_native": false,
        "is_event": false,
        "abilities": [],
        "generic_type_params": [],
        "fields": [{ "name": "dummy_field", "type": "bool" }]
      }
    ]
  }
}

Response Parameter Definition

Field
Type
Description

bytecode

string

Hex-encoded bytecode of the deployed module.

abi

object

ABI (Application Binary Interface) containing metadata for module interaction.

abi.address

string

Account address where the module is deployed.

abi.name

string

Name of the module.

abi.exposed_functions

array

List of public functions, including parameters, return types, and visibility.

abi.structs

array

Struct definitions with fields and type information.


Use Cases

This endpoint can be used to:

  • Retrieve module ABIs for building smart contract interaction interfaces.

  • Fetch module bytecode for on-chain security analysis and verification.

  • Display contract details in analytics dashboards or blockchain explorers.

  • Enable dApps to validate if a specific module exists before user interaction.

Code Examples

Python (requests)

import requests

url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12/module/curves"

response = requests.get(url)

print(response.text)

Node(Axios)

import axios from 'axios';

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12/module/curves'
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Error Handling

Status Code
Error Message
Cause

403

Forbidden

Missing or invalid <ACCESS_TOKEN>.

404

Resource not found

The specified module does not exist.

500

Internal server error

Node or network issue. Retry the request later.


Integration with Web3

By integrating /v1/accounts/{account_hash}/module/{module_name}, developers can:

  • Retrieve module ABIs to construct transactions for smart contracts dynamically.

  • Validate wallet or dApp interactions by confirming module existence.

  • Fetch module bytecode for security inspection or automated audits.

  • Allow services or other contracts to interpret available structs and functions dynamically.

Dedicated nodes: Manage & extend subscriptions

Track and extend your dedicated node subscriptions on GetBlock.

This page explains how to manage your dedicated node subscriptions, including checking their status and extending the service duration—all from your user account.


Tracking subscription status

You can monitor the status of your dedicated node subscriptions in three different ways.

1. Dashboard

The widget on your dashboard alerts you when your subscription is about to expire or is in a grace period. Click the widget to open a pop-up that lists all nodes that require renewal.

2. Plan manager

The Manage Plans section can be found by navigating to the “Pricing” option in the left-side menu. You'll see three tabs: click on “Manage Plans” to view all your subscriptions in one place.

3. "Endpoints" list

Each endpoint in “My endpoints” list shows its current subscription status.


Subscription status breakdown

Status
Dashboard View
Manage Plans View

(Recurring Payment)

(One-Time Payment)

(One-Time Payment)

(Recurring /One-Time)


Changing the subscription period

You can modify your subscription period at any time if you’re on a one-time payment plan paid with:

  • Cryptocurrency;

  • Credit card.

Note on Recurring Payments

Users cannot manually extend a plan when using recurring payments. These subscriptions renew automatically at the end of a billing cycle.

However, if a payment fails (e.g., due to an expired card or insufficient funds), your subscription will enter a 3-day grace period. During this time, your node remains active, allowing you to update your payment details and retry the renewal before the service is interrupted.

Available options

You can extend your subscription to one of the following periods:

  • 1 month

  • 6 months

  • 12 months


How to extend your Dedicated Node plan

There are three ways to extend your subscription.

Option 1: The Dedicated Nodes dashboard

  1. Go to Dedicated Nodes tab from your dashboard. Look for the subscription alert widget.

  1. Click the widget to see a list of nodes needing renewal and choose one. A pop-up will show extension options (1, 6, or 12 months).

  1. Choose a new period and review details. Proceed to checkout.

  2. Complete the payment by following the instructions provided.

  3. Check the "Payment History" under the Pricing tab to track the progress.

Video guide

For fiat (credit card) payments:

  • Payments are processed via Paddle.

  • VAT may apply depending on the user's location.

  • The extension is applied instantly once the payment is completed.

For crypto payments:

  • Payments are processed via NOWPayments.

  • Make sure to account for network fees to avoid payment issues.

  • The extension is applied after blockchain confirmation, which may take a few minutes.

Option 2: From “Endpoints” list

  1. Navigate to your main dashboard and switch to the Dedicated Nodes tab.

  2. Choose a node to extend. Expand the node’s details and click "Extend" to begin the process.

  3. Follow the pop-up instructions to select the new subscription period and finalize the process.

Option 3: Via the "Manage Plans" menu

  1. Navigate to Pricing > Manage Plans.

  2. Review all subscriptions. Subscriptions nearing expiration are listed at the top.

  3. Follow the same steps: Select your node, choose a new period, and confirm your payment.


How to keep your Dedicated Node running smoothly

If you face any issues with renewal or extensions, feel free to reach out to GetBlock support—we’re happy to assist.

/v1/blocks/by_version/{version} - Aptos

Example code for the /v1/blocks/by_version/{version} JSON-RPC method. Сomplete guide on how to use /v1/blocks/by_version/{version} json-rpc in GetBlock.io Web3 documentation.

This endpoint gets a transaction by its ledger version number from Aptos blockchain.

Supported Network

  • Mainnet

Parameter

Request

Base URL

Example(cURL)

Response Example

Response Parameter Definition

Field
Type
Description

Use cases

This method is used for:

  • Retrieve details of a specific transaction by its version.

  • Debug failed transactions by checking vm_status.

  • Build explorers that let users search transactions by version.

  • Track system-level transactions like block epilogues.

Code Example

Node(Axios)

Python(Request)

Error handling

Integration with Web3

By integrating /v1/transactions/by_version/{version}, developers can:

  • Trace exact transactions for auditing or compliance.

  • Debug dApps by fetching execution results and state changes.

  • Enable explorers to link transactions with block details. Monitor validators/system txns like block prologues and epilogues.

/v1/transactions - Aptos

Example code for the /v1/transactions json-rpc method. Сomplete guide on how to use /v1/transactions json-rpc in GetBlock.io Web3 documentation.

This endpoint gets the list of recent transactions from the Aptos blockchain.

Supported Network

  • Mainnet

Parameter

Request

Base URL

Example(cURL)

Response Example

Response Parameter Definition

Use Cases

This method is used for:

  • Display a feed of recent blockchain activity.

  • Monitor all user-submitted transactions in real time.

  • Build analytics dashboards for transaction patterns.

Code Example

Node(Axios)

Python(Request)

Error handling

Integration with Web3

By integrating /v1/transactions, developers can:

  • Stream blockchain activity into wallets and dApps.

  • Enable dashboards showing the latest transfers, mints, or contract calls.

  • Support DeFi/NFT protocols by tracking relevant transactions.

  • Provide analytics & insights on transaction frequency, volume, and patterns.

/v1/accounts/{account_hash}/resource/{resource_type} - Aptos

Example code for the /v1/accounts/{account_hash}/resource/{resource_type} JSON-RPC method. Сomplete guide on how to use /v1/accounts/{account_hash}/resource/{resource_type} json-rpc in GetBlock.io Web

This endpoint gets an individual resource from a given account and at a specific ledger version. This is more specific than /resources since it targets one resource type directly.

Supported Networks

  • Mainnet

Parameters

Request Example

Base URL

Example(cURL)

Response

Response Parameter Definition

Value
Data type
Description

Use Cases

This method can be used to:

  • Fetch a specific token balance without retrieving all account resources.

  • Query a single resource type (like a staking pool or NFT ownership).

  • Used in wallets and DeFi apps where targeted resource data is required.

Code Examples

Python (Requests)

Node(Axios)

Error handling

The possible error you may experience includes the following:

Integration with Web3

By integrating /v1/accounts/{account_hash}/resource/{resource_type, developers can:

  • Query a single CoinStore to show token balances in wallets.

  • Validate a user’s participation in staking, liquidity pools, or governance.

  • Reduce bandwidth by fetching only the resource you need, instead of all resources.

  • Pull targeted NFT or token data for user profiles or marketplaces.

Connect Brave Wallet to GetBlock

Explore how to add custom GetBlock RPC endpoints to Brave Wallet for greater security, transaction speed, and reliability

Brave Wallet supports many networks and offers extensive customization options. However, each of its chains uses a public RPC API endpoint, which is very bad for privacy and efficiency.

GetBlock’s private RPC nodes can solve this problem. After downloading the Brave browser and setting up the wallet, visit and get one of the 60+ available chain endpoints.

Using custom GetBlock nodes improves the Web3 experience in many ways:

  • Secure connections without privacy breaches

  • Lower latency and higher transaction speed

  • No overloads even during high chain activities

Every wallet’s network can be modified this way, and this step-by-step guide shows how to do that.


Before you start

You need to set up the Brave wallet and prepare the GetBlock API endpoints.

Download Brave and set up the wallet

Brave Wallet is inseparable from the Brave browser. So, download and install the browser from the . It’s available for desktop, Android, and iOS.

After opening the browser, look at the wallet icon in the upper right corner. Click on it to open the Brave Wallet. Import the account using a seed phrase or create a new one.

Now, it’s time to prepare the working part: the GetBlock node.

Get a custom RPC API endpoint

  1. Proceed to the GetBlock dashboard and create an account or log in.

  2. Click on the Get button to add a new RPC endpoint, and select the Ethereum mainnet.

  3. Pick the endpoint location. Currently, the Frankfurt and New York regions are available for a free node. Selecting the physically closest one is usually the best option.

  4. Click Get, and the endpoint is ready.

It’s now available via the access token URL and can be used to perform transactions, deploy smart contracts, and much more.

Without a subscription, you may have only 2 endpoints simultaneously. If you need more, consider deleting those you don’t need at the given moment.

Free node endpoints offer a generous 50,000 free compute units per day with a 5 RPS limit. It’s more than enough for single-person activities.


Modify an existing EVM network

Brave Wallet supports a wide range of EVM and non-EVM networks. Let’s modify an Ethereum account.

1

Go to Brave Wallet settings

In the upper right corner of the wallet interface, click on the three-dot options () button and select Settings. Here, a list of supported networks can be found.

2

Locate the network in the list

If the network of interest is already present, such as with Ethereum, click on the three-dot options () button right of Ethereum and then select Edit to open the account settings.

Look at the RPC URLs settings fro Ethereum: usually, a default Brave Wallet endpoint is present here. As every wallet user connects to it by default, it’s overloaded and insecure. That’s why a custom RPC URL is essential for Web3 activities.

3

Add a custom API URL to the network

Go to the GetBlock dashboard and copy the newly obtained Ethereum RPC access token. Add it under RPC URLs as shown below.

Go to the wallet, and try to perform some actions with the Ethereum account:

  • Check the balance

  • Connect to dApps

  • Execute smart contracts

  • Make a transaction

In the GetBlock dashboard, track the remaining balance.


Add a new EVM network

If a network of interest isn’t included in the network list, it can be added manually. Let’s add the Polygon zkEVM network, a zero-knowledge L2.

Brave Wallet is very convenient for managing blockchain networks, with hundreds of EVM protocols available. GetBlock almost certainly has a node endpoint for active and popular ones.

If you genuinely believe that a network is unfairly missing, you may and suggest it.

1

Search the network ID in Brave settings

Return to the Wallet Networks menu. Instead of selecting existing networks, click on the Add button. Start typing “polygon zkevm” to locate the network quickly.

After clicking on it, Brave fills all required fields automatically.

2

Get a network’s RPC URL at GetBlock

Return to the GetBlock dashboard, click Get again, and select Polygon zkEVM mainnet this time. Currently, only the Frankfurt region is available for zkEVM nodes.

Voila—the free and highly secure Polygon zkEVM node endpoint is ready.

3

Add a custom API URL to the new network

Copy the access token and go to the Brave settings. Add the new RPC URLs field and paste the access token.

It’s recommended to assign a custom account name, such as “Polygon zkEVM GetBlock,” to distinguish the dedicated account.

Then, return to the wallet and locate a new Polygon zkEVM account with the ETH native token and a custom name.

As with GetBlock’s Ethereum node, track the compute units usage at the GetBlock dashboard.

Parameter

Data type

Description

Required

In

version

integer

The ledger version

Yes

Path

with_transactions

boolean

To contain transactions' details or not

no

Query

https://go.getblock.io/<ACCESS_TOKEN>
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions/by_version/3556737308?with_transactions=false'
{
    "block_height": "456015808",
    "block_hash": "0xdbe2cbd48ec3b897fa5f6b1ff51bd8eef280e300e12b6ff153b3959a7440a268",
    "block_timestamp": "1760341227055115",
    "first_version": "3556737303",
    "last_version": "3556737309",
    "transactions": null
}

block_height

string

Height of the block in the blockchain.

block_hash

string

Unique hash identifying the block.

block_timestamp

string

Timestamp (in microseconds) when the block was created.

first_version

string

First transaction version included in this block.

last_version

string

Last transaction version included in this block.

transactions

objects

List of transactions contained in this block.

transactions.type

string

Type of the transaction (e.g., user_transaction, block_metadata_transaction).

transactions.hash

string

Unique hash identifying the transaction.

transactions.sender

string

Account address that initiated the transaction.

transactions.sequence_number

string

The sender’s sequence number for this transaction.

transactions.max_gas_amount

string

Maximum gas units the sender is willing to spend.

transactions.gas_unit_price

string

Gas price per unit.

transactions.expiration_timestamp_secs

string

Expiration timestamp (in seconds) after which the transaction becomes invalid.

transactions.payload

object

Payload object describing the action being executed.

transactions.payload.type

string

Type of payload (e.g., entry_function_payload).

transactions.payload.function

string

Function name being called (e.g., 0x1::coin::transfer).

transactions.payload.type_arguments

array

Type arguments for the function (e.g., token types).

transactions.payload.arguments

array

Arguments passed to the function (e.g., recipient address, amount).

transactions.signature

object

Signature object verifying the transaction.

transactions.signature.type

string

Type of cryptographic signature (e.g., ed25519_signature).

transactions.signature.public_key

string

Public key of the sender.

transactions.signature.signature

string

Cryptographic signature validating the transaction.

const axios = require('axios');

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions/by_version/3363904007',
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});
import requests

url = 'https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions/by_version/3363904007'

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

Status Code

Error Message

Cause

403

forbidden

Missing or invalid <ACCESS_TOKEN>.

410

Ledger version has been pruned

Incorrect version number or being pruned

500

Internal server error

Node or network issue; retry later.

Parameter

Type

In

Required

Description

start

Integer

Query

No

Starting transaction version for pagination.

limit

Integer

Query

No

Number of transactions to return. Default: 25. Maximum: 100.

https://go.getblock.io/<ACCESS_TOKEN>
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions?limit=1'
[
    {
        "version": "3556744764",
        "hash": "0x1cd28f386d48edfaf30c822117bd0b971e349c59f5fdd08f284558b33ac1715f",
        "state_change_hash": "0xafb6e14fe47d850fd0a7395bcfb997ffacf4715e0f895cc162c218e4a7564bc6",
        "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000",
        "state_checkpoint_hash": "0xe8daf9e9f3986dc69e0247b5638af4f55a6e5912da8a2c71e1fa537009a59964",
        "gas_used": "0",
        "success": true,
        "vm_status": "Executed successfully",
        "accumulator_root_hash": "0x6a006a1a2d4d22b7fdf4ca27a31aac610c3911429d8e5f925e31016738b225e2",
        "changes": [],
        "timestamp": "1760341338522220",
        "block_end_info": {
            "block_gas_limit_reached": false,
            "block_output_limit_reached": false,
            "block_effective_block_gas_units": 71,
            "block_approx_output_size": 7846
        },
        "type": "block_epilogue_transaction"
    }
]

Field

Type

Description

version

String

Global transaction version (unique ID in Aptos ledger).

hash

String

Transaction hash.

state_change_hash

String

Hash of all state changes caused by this transaction.

event_root_hash

String

Merkle root hash of all events emitted.

state_checkpoint_hash

String

Hash of the state checkpoint for this transaction.

gas_used

String

Amount of gas consumed (0 here, since it’s a system txn).

success

Boolean

Whether the transaction executed successfully.

vm_status

String

VM execution result.

accumulator_root_hash

String

Ledger’s global accumulator root after applying this transaction.

changes

Array

State changes caused (empty here).

timestamp

String

Unix timestamp in microseconds.

block_end_info

Object

Metadata about block execution limits.

block_end_info.block_gas_limit_reached

Boolean

Whether the block’s gas limit was hit.

block_end_info.block_output_limit_reached

Boolean

Whether block output size was exceeded.

block_end_info.block_effective_block_gas_units

Interger

Total effective gas used in the block.

block_end_info.block_approx_output_size

Integer

Approximate output size of the block in bytes.

type

String

Transaction type → here it’s block_epilogue_transaction (special system txn marking block end).

const axios = require('axios');

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions?limit=1',
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

import requests

url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions?limit=1"

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

Status Code

Error Message

Cause

403

Forbidden

Missing or invalid ACCESS_TOKEN.

500

Internal server error

Node or network issue; retry later.

Parameter

Data type

Description

Required

In

account_hash

string

Aptos account address

Yes

Path

resource_type

string

The type format of the account address to retrieve

Yes

path

ledger_version

string

The ledger version to get the account state

No

query

https://go.getblock.io/<ACCESS-TOKEN>/
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f/resource/0x1::account::Account'
{
    "type": "0x1::account::Account",
    "data": {
        "authentication_key": "0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f",
        "coin_register_events": {
            "counter": "0",
            "guid": {
                "id": {
                    "addr": "0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f",
                    "creation_num": "0"
                }
            }
        },
        "guid_creation_num": "2",
        "key_rotation_events": {
            "counter": "0",
            "guid": {
                "id": {
                    "addr": "0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f",
                    "creation_num": "1"
                }
            }
        },
        "rotation_capability_offer": {
            "for": {
                "vec": []
            }
        },
        "sequence_number": "250163",
        "signer_capability_offer": {
            "for": {
                "vec": []
            }
        }
    }
}

type

string

The type format of the account address

data

object

The additional data or information related to the account resource

authentication_key

string

The authentication key associated with the account to verify the identity of account owner

coin_register_events

object

The events associated with coin registration for the specified response

counter

string

The counter value associated with a particular operation

guid

object

the unique identifier (GUID) of the resource

id

objecct

The resource identifier

addr

string

The address associated with the resource

creation_num

string

The creation number of the resource

sequence_number

string

The sequence number tracks the order of transactions initiated by the account

import requests

url = "https://go.getblock.io/b293629b1b3a4e188efb3c4e94d133b6/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f/resource/0x1::account::Account"
response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
import axios from 'axios'

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/b293629b1b3a4e188efb3c4e94d133b6/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f/resource/0x1::account::Account',
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Status Code

Error Message

Cause

403

Forbidden

Missing or invalid ACCESS_TOKEN.

404

Resource not found

The given resource type does not exist for this account.

500

Internal server error

Node or network issue. Retry later.

https://account.getblock.io/
official website
compute unit
contact us
Downloading Brave browser with integrated wallet
How to start using a Brave browser wallet
Creating Ethereum access token in GetBlock
Getting an ETH RPC URL for Brave wallet
Exploring Brave Wallet network accounts
Adding GetBlock Ethereum endpoint to Brave Wallet
Adding Polygon to Brave
Creating zkEVM access token in GetBlock
Adding GetBlock zkEVM endpoint to Brave Wallet’
New Polygon zkEVM account with GetBlock endpoint
three-dot menu

Aptos (APT)

Aptos Network API Reference for seamless interaction with APT nodes, enabling fast, secure, and scalable transactions on a next-generation Layer 1 blockchain.

Overview of Aptos Network Methods

Aptos is a Layer 1 blockchain built with the Move programming language, designed to deliver a fast, secure, scalable, and upgradeable ecosystem. With its modular architecture, Aptos enables frequent upgrades, rapid adoption of new technologies, and strong support for emerging use cases. The Aptos API provides developers with the ability to interact with the blockchain seamlessly and possibly. You can do the following with the Aptos API:

  1. Query real-time blockchain data

  2. Manage and monitor accounts and balances

  3. Interact with smart contracts

  4. Submit and track transactions

  5. Monitor network activity in real-time

Each method will provide you with the following:

  1. Clear description of functionality and use cases

  2. Required input parameters

  3. Sample requests and responses

  4. Supported network

  5. Code example

  6. Integration

Note: This API is compatible only with Aptos Mainnet.

Quickstart

In this section, you will learn how to make your first call with either:

  • Axios

  • Python

Quickstart with Axios

Before you begin, you must have already installed npm or yarn on your local machine. If not, check out npm or yarn.

  1. Set up your project using this command:

    For npm:

    mkdir aptos-api-quickstart
    cd aptos-api-quickstart
    npm init --yes

Or yarn:

mkdir aptos-api-quickstart
cd aptos-api-quickstart
yarn init --yes

This creates a project directory named aptos-api-quickstart and initialises a Node.js project within it.

  1. Install Axios using this command: Using npm:

    npm install axios

    Using yarn:

    yarn add axios
  2. Create a new file and name it index.js. This is where you will make your first call.

  3. Set ES module "type": "module" in your package.json.

  4. Add the following code to the file (index.js):

    import axios from 'axios'
    
    let account = {
      method: 'get',
      url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f',
    };
     
    axios.request(account)
    .then((response) => {
      console.log(JSON.stringify(response.data));
    })
    .catch((error) => {
      console.log(error);
    });

    Replace <ACCESS_TOKEN> with your actual access token from GetBlock.

  5. Run the script:

    node index.js

    The sequence number and authentication key log in your console like this:

    {
      "Sequence_number": "219241",
      "Authentication_key": "0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f"
    }

Quickstart with Python and Requests

Before you begin, you must have installed Python and Pip on your local machine.

  1. Set up your project using this command:

    mkdir aptos-api-quickstart
    cd aptos-api-quickstart
  2. Set up a virtual environment to isolate dependencies:

    python -m venv venv
    source venv/bin/activate  
    # On Windows, use venv\Scripts\activate
  3. Install the requests library:

    pip install requests
  4. Create a new file called main.py and insert the following code:

    import requests
    
    url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f"
    
    response = requests.get(url)
    
    print(response.text)

    Replace <ACCESS_TOKEN> with your actual access token from GetBlock.

  5. Run the script:

    python main.py

Endpoint Grouping

  1. Blockchain Information

    • /v1

  2. Account-Related

    • /v1/accounts/{account_hash}

    • /v1/accounts/{account_hash}/resources

    • /v1/accounts/{account_hash}/resource/{resource_type}

    • /v1/accounts/{account_hash}/modules

    • /v1/accounts/{account_hash}/module/{module_name}

    • /v1/accounts/{account_hash}/transactions

  3. Events

    • /v1/accounts/{account_hash}/events/{creation_number}

    • /v1/accounts/{account_hash}/events/{event_handle}/{field_name}

  4. Blocks

    • /v1/blocks/by_height/{block_height}

    • /v1/blocks/by_version/{version}

  5. Transactions

    • /v1/transactions

    • /v1/transactions/by_hash/{transaction_hash}

    • /v1/transactions/by_version/{version}

  6. Additional Utility

    • /v1/estimate_gas_price

eth_newBlockFilter - Arbitrum

Example code for the eth_newBlockFilter json-rpc method. Сomplete guide on how to use eth_newBlockFilter json-rpc in GetBlock.io Web3 documentation.

Parameters

-

Request

curl --location --request POST 'https://go.getblock.io/YOUR-ACCESS-TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_newBlockFilter", "params": [], "id": "getblock.io"}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": "0x6aacc1719383adeb356a720506fd2064"
}
tracking the status of dedicated blockchain node subscriptions from GetBlock account
How to manage dedicated node plans and subsciriptions from GetBlock's user account
Checking the status of dedicated node subscriptions from the main GetBlock user dashboard
How to manage node subscriptions from the GetBlock dashboard
How to extend dedicated node plan using GetBlock
Managing RPC node subscriptions from the main dashboard's endpoints list
Flexible dedicated RPC node plan subscription

/v1/accounts/{account_hash}/transactions - Aptos

Example code for the /v1/accounts/{account_hash}/transactions json-rpc method. Сomplete guide on how to use /v1/accounts/{account_hash}/transactions json-rpc in GetBlock.io Web3 documentation.

This endpoint gets the on-chain committed transactions associated with a specific account. This includes submitted, executed, or pending transactions where the account is the sender.

Supported Network

  • Mainnet

Parameters

Request

Base URL

Example(cURl)

Response

Response Parameter Definition

Use Cases

This method can be used for:

  • Get an account’s transaction history.

  • Build wallet activity feeds (incoming/outgoing transfers).

  • Build block explorers that show user-specific transactions.

  • Track failed vs successful transactions.

Code Example

Python Request

Node(axios)

Error handling

Integration with Web3

By integrating /v1/accounts/{account_hash}/transactions into developers can:

  • Build transaction history dashboards to show a user’s past on-chain actions.

  • Track when a user’s transaction is confirmed or fails.

  • dApps can fetch all transactions from an account for financial or legal reporting.

  • analyse user behaviour, token transfers, and contract interactions for dApps.

Parameter

Data type

Description

Required

In

account_hash

string

Aptos account address

Yes

Path

start

string

The starting point or offset for retrieving resources. If not provided, defaults to showing the latest transactions

No

query

limit

integer

The maximum number of resources to retrieve per request. If not provided, defaults to default page size

No

query

https://go.getblock.io/<ACCESS_TOKEN>
curl -X GET "https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f
/transactions?limit=5"
[
    {
        "version": "3574927316",
        "hash": "0x01ef3543f79823b3a9fbc8acac9fba4bb25c7c1abb65f533caff2d9bcc0678f6",
        "state_change_hash": "0x5cfb448ecb226172f3f5279d02658a645afdacf88a1ce308bf5b0717eca0c99e",
        "event_root_hash": "0x63937d2f2e996f5c9e6cd669e518fdf7e474af4902a11501ec15dbb8d53e5ce9",
        "state_checkpoint_hash": null,
        "gas_used": "82",
        "success": true,
        "vm_status": "Executed successfully",
        "accumulator_root_hash": "0x3d25cf24e802a777497da7f76fdeb05a472b30586f2171b82fbb72e1e3504609",
        "changes": [
            {
                "address": "0xa",
                "state_key_hash": "0x1db5441d8fa4229c5844f73fd66da4ad8176cb8793d8b3a7f6ca858722030043",
                "data": {
                    "type": "0x1::coin::PairedCoinType",
                    "data": {
                        "type": {
                            "account_address": "0x1",
                            "module_name": "0x6170746f735f636f696e",
                            "struct_name": "0x4170746f73436f696e"
                        }
                    }
                },
                "type": "write_resource"
            }

        ],
        "sender": "0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f",
        "sequence_number": "871700",
        "max_gas_amount": "200000",
        "gas_unit_price": "100",
        "expiration_timestamp_secs": "1760643271",
        "payload": {
            "function": "0x487e905f899ccb6d46fdaec56ba1e0c4cf119862a16c409904b8c78fab1f5e8a::router::swap",
            "type_arguments": [],
            "arguments": [
                "0x82e0b52f95ae57b35220726a32c3415919389aa5b8baa33a058d7125797535cc01000000000000000000000000000000683e030100000000000000000000000000000000000000000000000000000000d093f60000000000000000000000000000000000000000000000000000000000"
            ],
            "type": "entry_function_payload"
        },
        "signature": {
            "public_key": "0x7df17b23676ef29e040847e64ae2a8351819d4bfaf64f3bfe2124d92156c1c02",
            "signature": "0x8001b27ddb488c1ad5f4f6ed7fe4886b42528b0646a05685469b524b67cc6298192fa42d9af5ff2df1791c88f2f16dfdc22c8c1d5060795c68161a25ef335d01",
            "type": "ed25519_signature"
        },
        "replay_protection_nonce": null,
        "events": [
            {
                "guid": {
                    "creation_number": "0",
                    "account_address": "0x0"
                },
                "sequence_number": "0",
                "type": "0xa611a8ba7261ed1f4d3afe4ac2166fc9f3180103e3296772d593a1e2720c7405::stable::IncentiveSynced",
                "data": {
                    "accumulated_rewards_per_share": "33902212381193",
                    "campaign_idx": "15",
                    "last_accumulation_time": "1760643255",
                    "last_total_shares": "4992836695498717952869616",
                    "pool_addr": "0x82e0b52f95ae57b35220726a32c3415919389aa5b8baa33a058d7125797535cc",
                    "total_distributed": "25151305402",
                    "ts": "1760643255618178"
                }
            },
            {
                "guid": {
                    "creation_number": "0",
                    "account_address": "0x0"
                },
                "sequence_number": "0",
                "type": "0xa611a8ba7261ed1f4d3afe4ac2166fc9f3180103e3296772d593a1e2720c7405::stable::Swapped",
                "data": {
                    "bought_id": "0",
                    "buyer": "0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f",
                    "pool_addr": "0x82e0b52f95ae57b35220726a32c3415919389aa5b8baa33a058d7125797535cc",
                    "sold_id": "1",
                    "stored_balances": [
                        "1990058935750",
                        "3042379974793"
                    ],
                    "tokens_bought": "16980317",
                    "tokens_sold": "16989240",
                    "ts": "1760643255618178"
                }
            },
        "timestamp": "1760643255618178",
        "type": "user_transaction"
    }
]

Field

Type

Description

version

String

The transaction version (ledger sequence number).

hash

String

Unique hash of the transaction.

state_change_hash

String

Hash of all state changes caused by this transaction.

event_root_hash

String

Merkle root of events emitted in this transaction.

gas_used

String

Amount of gas consumed by the transaction.

success

Boolean

Whether the transaction executed successfully.

vm_status

String

Execution status from the Aptos VM.

accumulator_root_hash

String

Root hash of the transaction accumulator after applying this txn.

changes

Array

List of state changes caused by the transaction.

changes.address

String

Address whose resource was modified.

changes.state_key_hash

String

State key hash for the modified resource.

changes.type

String

Type of state change (e.g., write_resource).

changes.data

Object

Modified resource data.

changes.data.type

String

Type of resource (e.g., CoinStore<AptosCoin>).

changes.data.data

Object

Full contents of the updated resource (balance, events, frozen state, etc).

import requests

url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xc20ea5a196c81d8d7aff814aa37f8a5823acffbc4193efd3b2aafc9ef2803255/transactions"

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

import axios from 'axios';

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xc20ea5a196c81d8d7aff814aa37f8a5823acffbc4193efd3b2aafc9ef2803255/transactions',
  headers: { }
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Status Code

Error Message

Cause

403

Forbidden

Missing or invalid ACCESS_TOKEN.

404

Resource not found

The given resource type does not exist for this account.

500

Internal server error

Node or network issue. Retry later.

How to extend your node subscription with a card payment

Dedicated node performance tiers

GetBlock’s Dedicated Nodes are available in two performance tiers – High and Standard. Choose the right balance of performance and cost for your private infrastructure

Dedicated Nodes are fully private blockchain nodes deployed and managed for your team. With two distinct performance presets, you can balance throughput, SLA, and budget to fit your workload.

Available tiers:

  1. High Performance Tier: Designed to provide maximum available resources, throughput, and reliability. It is intended for applications where performance and availability are critical. The focus is on delivering the highest service levels and supporting the most demanding production workloads.

  2. Standard Performance Tier: Designed to offer enterprise-grade performance sufficient for the majority of professional and business use cases, but at a more cost-efficient level. It targets demanding business applications and sustained usage, but without the additional (and sometimes excessive) headroom reserved for High Performance tier.

By providing these options, GetBlock helps you to deploy Dedicated Nodes that are tailored to your application’s technical, operational, and budget requirements.


Dedicated Node tiers overview

When deploying a Dedicated Node, you can choose between High and Standard setups to align with your application’s resource needs and expected workload.

  • Select High if your workload is latency-sensitive, demands very high concurrent throughput, or is critical to business continuity.

  • Select Standard for typical production apps, where workload is within supported performance bounds.

Configuring tiers is available for all supported protocols unless there are specific infrastructure limitations for a given network. In this case, a chain will only support a single tier.

Always check available configurations in your dashboard

High vs Standard tier comparison table

Resource allocation

Maximum hardware and bandwidth

Balanced hardware profile

Throughput

Highest supported

High

SLA

99.9% uptime

99.5% uptime

Recommended for

Applications with high transaction volumes & large user bases, mission-critical systems, and any workflow where latency and throughput are the top priority

Most production dApps, wallets, and enterprise tools or projects that need guaranteed resources but do not require the maximum performance tier


Dedicated Node pricing

Dedicated Nodes are billed at a set monthly rate determined by configured settings:

  1. Performance tier: Total cost scales with the performance tier selected – High tier is priced at a premium relative to the Standard tier.

  2. Blockchain network: Each protocol has different hardware requirements, which impact both High and Standard tier pricing.

  3. Node mode: Full or Archive.

  4. Client parameters.

Refer to your Dashboard for up-to-date pricing details and protocol-specific options.

Monthly costs are always shown during configuration in the Dashboard for each supported network and region.

Dedicated Node pricing in the GetBlock Dashboard

Steps to configure dedicated node tiers

To select a tier during node setup, open the Dedicated Node dashboard:

  1. Select protocol, network, deployment region, node mode, and a preferred client.

  2. As a final step, choose the Performance Tier (High or Standard) and required API interfaces.

  1. Review updated performance and pricing details.

Your dedicated node will be ready for use upon activation. To switch between tiers after deploying, reach out to support.


Need a more customized setup?

For advanced workloads or unique requirements, our engineering team can help craft a custom private node solution beyond the High/Standard presets. Contact us for tailored deployments.

GetBlock private node configuration tool with pricing
Setting up a Dedicated Node performance tier via GetBlock dashboard

/v1/accounts/{account_hash}/modules - Aptos

Example code for the /v1/accounts/{account_hash}/modules JSON-RPC method. Сomplete guide on how to use /v1/accounts/{account_hash}/modules json-rpc in GetBlock.io Web3 documentation.

This endpoint gets all modules(known as smart contracts)’ bytecode deployed under a specific account at a specific ledger version. These modules define smart contract logic and can include structs, resources, and functions.


Supported Network

  • Mainnet

Parameters

Parameter
Data Type
Description
Required
In

account_hash

string

Aptos account address

Yes

Path

ledger_version

string

The ledger version to get the account state

No

Query

start

string

The starting point for getting the resources

No

Query


Request Example

Base URL

https://go.getblock.io/<ACCESS-TOKEN>/

Example(cURL)

curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12/modules?ledger_version=3362752463&limit=2'

Response

[
    {
        "bytecode": "0xa11ceb0b050000000801000203022305251d0742470889012006a9012e10d7014f0ca602c703000000010001000002020100000303010000040004000005050400000606010000070401000203030103030303030304040401040204040102000202030403030404046d617468076d696e5f753634076d756c5f6469760c6d756c5f6469765f753132380b6d756c5f746f5f753132380c6f766572666c6f775f61646406706f775f31300473717274190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e120308d0070000000000000410ffffffffffffffffffffffffffffffff0410ffffffffffffffff0000000000000000126170746f733a3a6d657461646174615f76303b01d007000000000000124552525f4449564944455f42595f5a45524f1e5768656e20747279696e6720746f20646976696465206279207a65726f2e00010000010c0a000a0123030505080b000c02050a0b010c020b02020101000004120a020600000000000000002203060700270b00350b0135180b02351a0c030b03340202010000040f0a0232000000000000000000000000000000002203060700270b000b01180b021a0c030b0334020301000007060b00350b0135180204010000042207010a01170c020a020a00230309050f0b000b02173201000000000000000000000000000000170207010a00170c020a020a01230318051e0b010b0217320100000000000000000000000000000017020b000b0116020501000008150601000000000000000c0231000c01280a010a0023030a05130b02060a00000000000000180c020b013101160c0105040b020206010000092f0a00320400000000000000000000000000000023030505120b00320000000000000000000000000000000021030a050d0600000000000000000c01050f0601000000000000000c010b010c02052d0a000c040a0032020000000000000000000000000000001a3201000000000000000000000000000000160c030a030a0423031f052a0a030c040a000a031a0b031632020000000000000000000000000000001a0c03051a0b04340c020b020200",
        "abi": {
            "address": "0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12",
            "name": "math",
            "friends": [],
            "exposed_functions": [
                {
                    "name": "min_u64",
                    "visibility": "public",
                    "is_entry": false,
                    "is_view": false,
                    "generic_type_params": [],
                    "params": [
                        "u64",
                        "u64"
                    ],
                    "return": [
                        "u64"
                    ]
                },
                {
                    "name": "mul_div",
                    "visibility": "public",
                    "is_entry": false,
                    "is_view": false,
                    "generic_type_params": [],
                    "params": [
                        "u64",
                        "u64",
                        "u64"
                    ],
                    "return": [
                        "u64"
                    ]
                },
                {
                    "name": "mul_div_u128",
                    "visibility": "public",
                    "is_entry": false,
                    "is_view": false,
                    "generic_type_params": [],
                    "params": [
                        "u128",
                        "u128",
                        "u128"
                    ],
                    "return": [
                        "u64"
                    ]
                },
                {
                    "name": "mul_to_u128",
                    "visibility": "public",
                    "is_entry": false,
                    "is_view": false,
                    "generic_type_params": [],
                    "params": [
                        "u64",
                        "u64"
                    ],
                    "return": [
                        "u128"
                    ]
                },
                {
                    "name": "overflow_add",
                    "visibility": "public",
                    "is_entry": false,
                    "is_view": false,
                    "generic_type_params": [],
                    "params": [
                        "u128",
                        "u128"
                    ],
                    "return": [
                        "u128"
                    ]
                },
                {
                    "name": "pow_10",
                    "visibility": "public",
                    "is_entry": false,
                    "is_view": false,
                    "generic_type_params": [],
                    "params": [
                        "u8"
                    ],
                    "return": [
                        "u64"
                    ]
                },
                {
                    "name": "sqrt",
                    "visibility": "public",
                    "is_entry": false,
                    "is_view": false,
                    "generic_type_params": [],
                    "params": [
                        "u128"
                    ],
                    "return": [
                        "u64"
                    ]
                }
            ],
            "structs": []
        }
    },
    {
        "bytecode": "0xa11ceb0b050000000b01000402040c03101e042e0c053a0f07497e08c701400687020a109102300ac1020a0ccb023e00000101000200000003000001090700000400000100000500010100000600010100000700010100010a000301000302040204040405020201020001010109000108020108000108010663757276657309747970655f696e666f06537461626c650c556e636f7272656c61746564126173736572745f76616c69645f63757276650969735f737461626c650f69735f756e636f7272656c617465640e69735f76616c69645f63757276650b64756d6d795f6669656c640854797065496e666f07747970655f6f66190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12000000000000000000000000000000000000000000000000000000000000000103081127000000000000126170746f733a3a6d657461646174615f76301c011127000000000000114552525f494e56414c49445f43555256450000020108010102010801000100000005380003040700270201010000000438013802210202010000000438013803210203010000010a380403030506080c00050838050c000b000200",
        "abi": {
            "address": "0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12",
            "name": "curves",
            "friends": [],
            "exposed_functions": [
                {
                    "name": "assert_valid_curve",
                    "visibility": "public",
                    "is_entry": false,
                    "is_view": false,
                    "generic_type_params": [
                        {
                            "constraints": []
                        }
                    ],
                    "params": [],
                    "return": []
                },
                {
                    "name": "is_stable",
                    "visibility": "public",
                    "is_entry": false,
                    "is_view": false,
                    "generic_type_params": [
                        {
                            "constraints": []
                        }
                    ],
                    "params": [],
                    "return": [
                        "bool"
                    ]
                },
                {
                    "name": "is_uncorrelated",
                    "visibility": "public",
                    "is_entry": false,
                    "is_view": false,
                    "generic_type_params": [
                        {
                            "constraints": []
                        }
                    ],
                    "params": [],
                    "return": [
                        "bool"
                    ]
                },
                {
                    "name": "is_valid_curve",
                    "visibility": "public",
                    "is_entry": false,
                    "is_view": false,
                    "generic_type_params": [
                        {
                            "constraints": []
                        }
                    ],
                    "params": [],
                    "return": [
                        "bool"
                    ]
                }
            ],
            "structs": [
                {
                    "name": "Stable",
                    "is_native": false,
                    "is_event": false,
                    "abilities": [],
                    "generic_type_params": [],
                    "fields": [
                        {
                            "name": "dummy_field",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "name": "Uncorrelated",
                    "is_native": false,
                    "is_event": false,
                    "abilities": [],
                    "generic_type_params": [],
                    "fields": [
                        {
                            "name": "dummy_field",
                            "type": "bool"
                        }
                    ]
                }
            ]
        }
    }
]

Response Parameter Definition

Field
Description

bytecode

The bytecode representation of the module

abi

The Application Binary Interface (ABI) of the Move module

address

The address of the Aptos account

name

The name of the smart contract

friends

The module friends

exposed_functions

The public functions of the module

name (function)

The function name

visibility

The visibility of the function (public, private, or friend)

is_entry

Indicates if the function is an entry function

is_view

Indicates if the function is a view function

generic_type_params

The generic type parameters associated with the Move function

constraints

Any constraints associated with the function

params

The parameters associated with the Move function

return

The return type of the function

structs

The list of structs defined within the module

name (struct)

The struct name

is_native

Indicates if the module is native (implemented outside Move)

abilities

The list of abilities or capabilities provided by the module

fields

The list of fields defined within the struct

type

The field type


Use Cases

This endpoint can be used to:

  • Verify what functions and structs are exposed to dApps.

  • Assist in smart contract audits by fetching bytecode and ABIs.

  • Identify available functions, structs, and bytecode before interacting with a contract.


Code Examples

Python (Requests)

import requests

url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12/modules?ledger_version=3362752463&limit=2"
response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

Node(Axios)

import axios from ‘axios’;

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12/modules?ledger_version=3362752463&limit=2',
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Error handling

Some of the errors you may face are:

  • 403, which means your access token is incorrect or does not exist. To resolve this, you need to get a new access token or recheck your access token.

  • 500, which means a Node or network issue. Retry later

  • 404, which means the resources were not found. To resolve this, use the right account_hash, or it is not a smart contract address.


Integration with Web3

By integrating /v1/accounts/{account_hash}/modules, developers can:

  • Build contract explorers that Show deployed modules, their functions, and structs on user-friendly dashboards.

  • Enable smart contract interactions

  • Integrate module inspection for debugging, auditing, and testing workflows.

  • dApps can query other on-chain modules to understand what functions are available for reuse.

Quickstart guide

Follow these steps to activate the Solana Yellowstone gRPC add-on on GetBlock

GetBlock offers with the Solana Geyser gRPC plugin, so you can start using it immediately, without any node setup and maintenance — simply enable the add-on and point your gRPC client at our endpoints.

Prerequisites

  • A GetBlock account with a Dedicated Solana Node subscription

  • Your gRPC endpoint URL with access token (found in GetBlock dashboard)

Enabling the Solana gRPC add-on on GetBlock

The Yellowstone gRPC add-on to Solana currently requires a subscription on GetBlock. Here’s how to set it up with gRPC API:

  1. Sign up / log in: Create an account at GetBlock.io or log in to your existing account.

  2. Deploy a dedicated Solana node:

    1. Go to your user dashboard, switch the tab to “Dedicated nodes”, and scroll down to “My endpoints”

    2. Choose Solana under “Protocol”, set the network to mainnet.

    3. Click on Get.

  1. Enable the gRPC add-on: In Step 3 (Select API and Add‑ons) of your node setup, check Yellowstone gRPC under Add‑ons.

All Dedicated Node plan subscribers receive the Yellowstone gRPC API at no extra cost together with their Solana node.

Once your node is live, you’ll be able to create gRPC endpoints to begin using the add-on.

Get your gRPC endpoint

Return to My endpoints in your Dedicated node dashboard and generate a gRPC .

The dashboard will generate your new HTTPS‐style gRPC endpoint URL.

Endpoint & authentication

The endpoint URL will be used by your gRPC client to authenticate and interact with the Solana network. Regional domain determines which data center you’re talking to (Europe, US, or Asia).

Your node’s region is locked in when you deploy it, during the setup flow. Once the node is provisioned in that region, all your endpoint URLs will correspond to the location you selected.

Example endpoint URLs:

When establishing your gRPC channel, the authentication is handled via an access token:

GetBlock provides a single TLS endpoint – you don’t need to open or configure a different port for gRPC access.


Subscribing to Data Streams: Code examples

Dragon’s Mouth uses gRPC over HTTP/2 for all communication. Its message schemas are defined in Protocol Buffer (.proto) files, included in the , which specify all the RPC methods and data types.

The power of Yellowstone is real‑time streaming: open a single bi‑directional stream, send a SubscribeRequest with your filters, and get back a sequence of SubscribeUpdate messages.

Here are the main subscription targets:

Stream Field
Proto Name
What You Get

All filters can be combined in the same request.

Developers can integrate Yellowstone streams using standard gRPC client libraries. Triton’s Yellowstone repository includes in Rust, Python, Go, and TypeScript.

The part below will show common ways to initialize your connection to the GetBlock gRPC endpoint and open a bidirectional subscription stream (Subscribe) with filters.


1. CLI (using grpcurl)

A generic tool like grpcurl is perfect to just poke at the API and explore method calls:


2. Using a high‑level SDK (Node.js / TypeScript)

The triton-one/yellowstone-grpc repository is the official client toolkit for Solana’s Yellowstone (Geyser) gRPC API.

It wraps the raw gRPC calls in friendly methods, handles reconnects, back‑pressure, and includes TypeScript types out of the box – easiest to get started with minimal boilerplate.

Install the SDK:

Connect to the gRPC endpoint and subscribe to the stream:


3. Python, Rust, and Go streaming examples

Below are minimal examples using Triton's Yellowstone helper libraries to stream real-time data from Solana via gRPC.

Setup & run:

Make sure the following dependencies are installed:

Go Example (go-client/main.go):

Make sure you clone the Yellowstone repo (for the examples.grpc module):

Python Example (python-client/stream.py):

Setup:

Ensure your Cargo.toml includes:

Rust Example (rust-client/src/main.rs):


Unary RPC methods

In addition to streaming subscriptions, the same gRPC interface also provides unary RPCs for quick, one-off queries:

  • getSlot: Returns the current slot number.

  • getBlockHeight: Retrieves the current block height.

  • getLatestBlockhash: Fetches the most recent blockhash.

  • isBlockhashValid: Checks whether a given blockhash is still valid.

  • getVersion: Returns version info for both the gRPC plugin and the connected Solana node

You can call these methods directly on the gRPC client without opening a streaming connection.


Yellowstone gRPC best practices

Before you start streaming data with the Yellowstone Geyser plugin, consider these recommendations:

  • Filtering is crucial: Always narrow your subscription to only the accounts or programs you need. Excessive or empty filters can overwhelm clients and hit rate limits.

  • Combine with JSON‑RPC: Use gRPC for real‑time streaming. Continue to use GetBlock’s JSON‑RPC Solana endpoints for on‑demand calls like , , or historical queries.

  • Keeping your stream alive: gRPC streams may time out if idle. The Yellowstone plugin can handle keep-alive pings. In your SubscribeRequest, you can set ping: true to respond to server pings (or send a minimal ping message periodically) to keep the stream alive.

  • Selecting the right commitment levels: Choose processed, confirmed, or finalized in your SubscribeRequest to balance between lowest latency (processed) and highest certainty (finalized). For most real‑time use cases (dashboards, bots), use processed to see intra‑slot updates.

About commitment levels

In Solana’s commitment hierarchy, you have processed, confirmed, and finalized:

  • Finalized: After full consensus & finalized in the ledger.

  • Confirmed: Once a supermajority of validators have voted.

  • Processed: Means the validator has received and executed the transaction, but it may not yet have enough votes to be considered confirmed/finalized – (“intra-slot”).

Streaming at “processed” gives you every transaction and account write the moment the leader executes it, well before it appears in a confirmed block.


With these examples and notes, you should be able to jump right into using GetBlock’s Yellowstone gRPC API in the language of your choice.

💬 Need help?

Check out the or reach out via .

// Europe (Frankfurt)
https://go.getblock.io/<YOUR_ACCESS_TOKEN>/

// USA (New York)
https://go.getblock.us/<YOUR_ACCESS_TOKEN>/

// Asia (Singapore)
https://go.getblock.asia/<YOUR_ACCESS_TOKEN>/
ENDPOINT = 'https://go.getblock.io';
TOKEN = 'YOUR_GETBLOCK_ACCESS_TOKEN';

slots

slots: SlotsFilter

Slot numbers as they’re processed by leader

blocks

blocks: BlocksFilter

Block metadata (slot, parent slot, timestamp)

blocksMeta

blocksMeta: BlocksFilter

Block metadata + transaction counts + status

accounts

accounts: AccountsFilter

Account lamports, owner, executable flag, rent epoch

accountsDataSlice

accountsDataSlice: AccountsDataSliceFilter

Partial account data blobs

transactions

transactions: TransactionsFilter

Full transaction data + meta

# 1) List services and methods 
grpcurl \
  -insecure \
  -authority go.getblock.io \
  -H "x-access-token: YOUR_ACCESS_TOKEN" \
  go.getblock.io:443 \
  list

# 2) Subscribe to slots
grpcurl \
  -insecure \
  -authority go.getblock.io \
  -H "x-access-token: YOUR_ACCESS_TOKEN" \
  go.getblock.io:443 \
  geyser.Geyser/Subscribe \
  -d '{ "slots": { "slots": []{} } }'
npm install @triton-one/yellowstone-grpc
# or
yarn add @triton-one/yellowstone-grpc
import Client, {
 SubscribeRequest,
 CommitmentLevel,
 SubscribeResponse,
} from "@triton-one/yellowstone-grpc";


async function main() {
 // Initialize
 const ENDPOINT = "https://go.getblock.io/";
 const TOKEN    = "<YOUR_ACCESS_TOKEN>";
 const client   = new Client(ENDPOINT, TOKEN);


  // Open a bidirectional stream
 const stream = await client.subscribe();


 // send a request to start all streams
 stream.write({
   accounts:   ["YourWalletPubkeyHere"],
   programs:   [],
   commitment: CommitmentLevel.PROCESSED,
 } as SubscribeRequest);

 stream.on("data", (msg: SubscribeResponse) => {
   if (msg.accountChange) {
     console.log(
       `▶ Account ${msg.accountChange.pubkey} = ${msg.accountChange.lamports}`
     );
   }
 });


 // End the stream
 stream.end();
 await client.close();
}


main().catch(console.error);
cd go-client
go mod tidy
go run main.go
go get github.com/rpcpool/yellowstone-grpc/examples/golang@latest
go get google.golang.org/grpc@latest
import (
   "context"
   "fmt"
   "log"
   "time"

   ygrpc "github.com/rpcpool/yellowstone-grpc/examples/golang/pkg/grpc"
   pb "github.com/rpcpool/yellowstone-grpc/examples/golang/pkg/proto"
   "google.golang.org/grpc/metadata"
)

func main() {
   endpoint := "go.getblock.io:443"
   token := "YOUR_GETBLOCK_TOKEN"

   client, err := ygrpc.NewGrpcConnection(context.Background(), endpoint)
   if err != nil {
       log.Fatalf("Connection error: %v", err)
   }
   defer client.Close()

   ctx := metadata.AppendToOutgoingContext(context.Background(), "x-token", token)
   stream, err := client.Subscribe(ctx)
   if err != nil {
       log.Fatalf("Subscription error: %v", err)
   }


   req := &pb.SubscribeRequest{
       Accounts: map[string]*pb.SubscribeRequestFilterAccounts{
           "example": {
               Account: []string{"YOUR_WATCHED_ACCOUNT"},
           },
       },
       Commitment: pb.CommitmentLevel_CONFIRMED,
   }


   if err := stream.Send(req); err != nil {
       log.Fatalf("Send error: %v", err)
   }


   fmt.Println("Streaming...")
   for {
       res, err := stream.Recv()
       if err != nil {
           log.Printf("Stream error: %v", err)
           time.Sleep(time.Second)
           continue
       }
       fmt.Printf("Update at slot %d for %s\n", res.GetSlot(), res.GetAccount().GetAccount().GetPubkey())
   }
}
git clone https://github.com/rpcpool/yellowstone-grpc
export PYTHONPATH=$PYTHONPATH:$(pwd)/yellowstone-grpc/examples/python
from examples.grpc import new_client
import time
from google.protobuf.json_format import MessageToDict

endpoint = "go.getblock.io:443"
token = "YOUR_GETBLOCK_TOKEN"

channel, client = new_client(endpoint, token)

req = {
   "accounts": {
       "example": {
           "account": ["YOUR_WATCHED_ACCOUNT"]
       }
   },
   "commitment": "CONFIRMED"
}

stream = client.Subscribe(iter([req]))

for update in stream:
   print("Update:", MessageToDict(update))
   time.sleep(0.5)
cd rust-client
cargo build
cargo run
[dependencies]
yellowstone-grpc = { git = "https://github.com/rpcpool/yellowstone-grpc", branch = "main" }
tonic = "0.9"
tokio = { version = "1", features = ["full"] }
use tonic::metadata::MetadataValue;
use yellowstone_grpc::client::{subscribe_with_token, SubscribeRequest};

#[tokio::main]
async fn main() {
   let endpoint = "https://go.getblock.io";
   let token = "YOUR_GETBLOCK_TOKEN";

   let mut stream = subscribe_with_token(endpoint, token, SubscribeRequest {
       accounts: Some({
           let mut m = std::collections::HashMap::new();
           m.insert("example".to_string(), vec!["YOUR_WATCHED_ACCOUNT".to_string()]);
           m
       }),
       commitment: Some("confirmed".into()),
       ..Default::default()
   }).await.expect("stream failed");

   println!("Streaming...");
   while let Some(Ok(update)) = stream.message().await {
       println!("Update: {:?}", update);
   }
}
SOL nodes
Dedicated Node
Access Token
Yellowstone repository
example clients
getBlock
sendTransaction
Yellowstone gRPC docs
GetBlock support
Deploying a private Solana node with GetBlock RPC provider
Configuring a dedicated SOL node on GetBlock

/v1/transactions/by_hash/{transaction_hash} - Aptos

Example code for the /v1/transactions/by_hash/{transaction_hash} json-rpc method. Сomplete guide on how to use /v1/transactions/by_hash/{transaction_hash} json-rpc in GetBlock.io Web3 documentation.

This endpoint gets a transaction from the Aptos blockchain by its transaction hash. Every transaction has a unique hash that can be used to retrieve full details.

Supported network

  • Mainnet

Parameter

Parameter

Type

In

Required

Description

transaction_hash

String

Path

Yes

Hash of the transaction

Request

Base URL

https://go.getblock.io/<ACCESS_TOKEN>

Example(cURL)

curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions/by_hash/0xd797b944ed8657406a1b09a5928048093399fc0a2f576d3e57c0f9cedbf95c4a'

Response Example

{
    "version": "3556737308",
    "hash": "0x4c3248d4c2f3a5ca1617e43e69332c66586478871ee44634cdb4554fe537dff6",
    "state_change_hash": "0x50148eff819eeb093efbe1cb56936ba02b3169db3343f5df0cb47aba016ea227",
    "event_root_hash": "0x1c432ce28a587287ef8abf14f025b78f5e288e886f16f217919cd2e35274f5f3",
    "state_checkpoint_hash": null,
    "gas_used": "195",
    "success": false,
    "vm_status": "Move abort in 0x31deb490728ae8e1a89675ee4c1877af8e5849c526d2c9a64238c49d8ece08a0::fa: E_NO_PROFIT(0x385): ",
    "accumulator_root_hash": "0xdc354eb8f4a96e9267bab2727240965becd154e35a21fede212af96f56333955",
    "changes": [
        {
            "address": "0xa",
            "state_key_hash": "0x1db5441d8fa4229c5844f73fd66da4ad8176cb8793d8b3a7f6ca858722030043",
            "data": {
                "type": "0x1::coin::PairedCoinType",
                "data": {
                    "type": {
                        "account_address": "0x1",
                        "module_name": "0x6170746f735f636f696e",
                        "struct_name": "0x4170746f73436f696e"
                    }
                }
            },
            "type": "write_resource"
        },
        {
            "address": "0xa",
            "state_key_hash": "0x1db5441d8fa4229c5844f73fd66da4ad8176cb8793d8b3a7f6ca858722030043",
            "data": {
                "type": "0x1::coin::PairedFungibleAssetRefs",
                "data": {
                    "burn_ref_opt": {
                        "vec": [
                            {
                                "metadata": {
                                    "inner": "0xa"
                                }
                            }
                        ]
                    },
                    "mint_ref_opt": {
                        "vec": [
                            {
                                "metadata": {
                                    "inner": "0xa"
                                }
                            }
                        ]
                    },
                    "transfer_ref_opt": {
                        "vec": [
                            {
                                "metadata": {
                                    "inner": "0xa"
                                }
                            }
                        ]
                    }
                }
            },
            "type": "write_resource"
        },
        {
            "address": "0xa",
            "state_key_hash": "0x1db5441d8fa4229c5844f73fd66da4ad8176cb8793d8b3a7f6ca858722030043",
            "data": {
                "type": "0x1::fungible_asset::ConcurrentSupply",
                "data": {
                    "current": {
                        "max_value": "340282366920938463463374607431768211455",
                        "value": "25726501655234340"
                    }
                }
            },
            "type": "write_resource"
        },
        {
            "address": "0xa",
            "state_key_hash": "0x1db5441d8fa4229c5844f73fd66da4ad8176cb8793d8b3a7f6ca858722030043",
            "data": {
                "type": "0x1::fungible_asset::Metadata",
                "data": {
                    "decimals": 8,
                    "icon_uri": "",
                    "name": "Aptos Coin",
                    "project_uri": "",
                    "symbol": "APT"
                }
            },
            "type": "write_resource"
        },
        {
            "address": "0xa",
            "state_key_hash": "0x1db5441d8fa4229c5844f73fd66da4ad8176cb8793d8b3a7f6ca858722030043",
            "data": {
                "type": "0x1::object::ObjectCore",
                "data": {
                    "allow_ungated_transfer": true,
                    "guid_creation_num": "1125899906842625",
                    "owner": "0x1",
                    "transfer_events": {
                        "counter": "0",
                        "guid": {
                            "id": {
                                "addr": "0xa",
                                "creation_num": "1125899906842624"
                            }
                        }
                    }
                }
            },
            "type": "write_resource"
        },
        {
            "address": "0xa",
            "state_key_hash": "0x1db5441d8fa4229c5844f73fd66da4ad8176cb8793d8b3a7f6ca858722030043",
            "data": {
                "type": "0x1::primary_fungible_store::DeriveRefPod",
                "data": {
                    "metadata_derive_ref": {
                        "self": "0xa"
                    }
                }
            },
            "type": "write_resource"
        },
        {
            "address": "0x60d8ef2e962b1d1b4f602c72e23eed6fbba86eefb41853a7688073fc918d912",
            "state_key_hash": "0x222b15ff81f90d75937ef6012807f0de0e0d488ccb5a229e55a954bc7870c75d",
            "data": {
                "type": "0x1::fungible_asset::FungibleStore",
                "data": {
                    "balance": "566263899",
                    "frozen": false,
                    "metadata": {
                        "inner": "0xa"
                    }
                }
            },
            "type": "write_resource"
        },
        {
            "address": "0x60d8ef2e962b1d1b4f602c72e23eed6fbba86eefb41853a7688073fc918d912",
            "state_key_hash": "0x222b15ff81f90d75937ef6012807f0de0e0d488ccb5a229e55a954bc7870c75d",
            "data": {
                "type": "0x1::object::ObjectCore",
                "data": {
                    "allow_ungated_transfer": false,
                    "guid_creation_num": "1125899906842625",
                    "owner": "0x31deb490728ae8e1a89675ee4c1877af8e5849c526d2c9a64238c49d8ece08a0",
                    "transfer_events": {
                        "counter": "0",
                        "guid": {
                            "id": {
                                "addr": "0x60d8ef2e962b1d1b4f602c72e23eed6fbba86eefb41853a7688073fc918d912",
                                "creation_num": "1125899906842624"
                            }
                        }
                    }
                }
            },
            "type": "write_resource"
        },
        {
            "address": "0x95a0fd88b11286d4790c253b39c6678b798c54b54b63bfd2bfe042411ee2e3e8",
            "state_key_hash": "0xf389cd5138744eb2c2c40a6b708ff717cb7a04bec7c9c1b9b8847857eaf617cd",
            "data": {
                "type": "0x1::account::Account",
                "data": {
                    "authentication_key": "0x95a0fd88b11286d4790c253b39c6678b798c54b54b63bfd2bfe042411ee2e3e8",
                    "coin_register_events": {
                        "counter": "0",
                        "guid": {
                            "id": {
                                "addr": "0x95a0fd88b11286d4790c253b39c6678b798c54b54b63bfd2bfe042411ee2e3e8",
                                "creation_num": "0"
                            }
                        }
                    },
                    "guid_creation_num": "2",
                    "key_rotation_events": {
                        "counter": "0",
                        "guid": {
                            "id": {
                                "addr": "0x95a0fd88b11286d4790c253b39c6678b798c54b54b63bfd2bfe042411ee2e3e8",
                                "creation_num": "1"
                            }
                        }
                    },
                    "rotation_capability_offer": {
                        "for": {
                            "vec": []
                        }
                    },
                    "sequence_number": "1680",
                    "signer_capability_offer": {
                        "for": {
                            "vec": []
                        }
                    }
                }
            },
            "type": "write_resource"
        }
    ],
    "sender": "0x95a0fd88b11286d4790c253b39c6678b798c54b54b63bfd2bfe042411ee2e3e8",
    "sequence_number": "1679",
    "max_gas_amount": "5000",
    "gas_unit_price": "100",
    "expiration_timestamp_secs": "1760341246",
    "payload": {
        "function": "0x31deb490728ae8e1a89675ee4c1877af8e5849c526d2c9a64238c49d8ece08a0::lesserafim_3::crazy",
        "type_arguments": [
            "0x1::aptos_coin::AptosCoin",
            "0x111ae3e5bc816a5e63c2da97d0aa3886519e0cd5e4b046659fa35796bd11542a::stapt_token::StakedApt",
            "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDC",
            "0x159df6b7689437016108a019fd5bef736bac692b6d4a1f10c941f6fbb9a74ca6::oft::CakeOFT",
            "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::UsdcCoin",
            "0x1::aptos_coin::AptosCoin",
            "u64",
            "u64",
            "u64",
            "u64",
            "u64"
        ],
        "arguments": [
            "0x010f0a0101",
            "0x01010101010000",
            [
                "25",
                "10",
                "30",
                "25",
                "25"
            ],
            [
                {
                    "inner": "0xa"
                },
                {
                    "inner": "0xa"
                },
                {
                    "inner": "0xa"
                },
                {
                    "inner": "0xa"
                },
                {
                    "inner": "0xa"
                },
                {
                    "inner": "0xa"
                }
            ],
            [
                "0x1",
                "0x5669f388059383ab806e0dfce92196304205059874fd845944137d96bbdfc8de",
                "0x1",
                "0x1",
                "0x1"
            ],
            [
                false,
                true,
                false,
                true,
                false
            ],
            "28452012"
        ],
        "type": "entry_function_payload"
    },
    "signature": {
        "sender": {
            "public_key": "0x1e9d94603ebd6b4a1d38e760be2b0523f09fb1f59e1e43c657f0ab3ef6205427",
            "signature": "0x05f71501658fdc40b6f42f71d6c298a378434a5825af5bc0efcc15aba2aa38625064612139299f43ae40e710bad18ce0b9935dee00b705285a8f73318f06a301",
            "type": "ed25519_signature"
        },
        "secondary_signer_addresses": [],
        "secondary_signers": [],
        "fee_payer_address": "0x31deb490728ae8e1a89675ee4c1877af8e5849c526d2c9a64238c49d8ece08a0",
        "fee_payer_signer": {
            "public_key": "0x17dfb6544cf49621c75af067528755a38061bdd210342f8bdf565bcdf561f056",
            "signature": "0x7866a52d642e7442671d0614cf7b201a29bdbd8b709ea59462d32917c368f596d771ab6592d1659952970cb277a35d536d0966a754c2cd610858f8c04eb93e08",
            "type": "ed25519_signature"
        },
        "type": "fee_payer_signature"
    },
    "replay_protection_nonce": null,
    "events": [
        {
            "guid": {
                "creation_number": "0",
                "account_address": "0x0"
            },
            "sequence_number": "0",
            "type": "0x1::transaction_fee::FeeStatement",
            "data": {
                "execution_gas_units": "130",
                "io_gas_units": "65",
                "storage_fee_octas": "0",
                "storage_fee_refund_octas": "0",
                "total_charge_gas_units": "195"
            }
        }
    ],
    "timestamp": "1760341227055115",
    "type": "user_transaction"
}

Response parameter Definition

Field

Type

Description

version

String

Global transaction version number.

hash

String

Transaction hash used for lookup.

state_change_hash

String

Hash of all state changes from this transaction.

event_root_hash

String

Merkle root hash of emitted events.

state_checkpoint_hash

String

State checkpoint hash for this transaction.

gas_used

String

Amount of gas consumed.

success

Boolean

Whether execution succeeded.

vm_status

String

Aptos VM execution result.

accumulator_root_hash

String

Ledger accumulator root hash.

changes

Array

State changes caused (may be empty).

timestamp

String

Unix timestamp in microseconds.

block_end_info

Object

Block execution metadata.

type

String

Transaction type (e.g., user_transaction, block_epilogue_transaction).

Use cases

This method can be used for:

  • Retrieve any transaction directly by hash (common for explorers and wallets).

  • Debug and verify contract execution results.

  • Cross-reference hash → version → block for indexing.

  • Track system and user transactions separately.

Code example

Node(axios)

const axios = require('axios');

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: 'https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions/by_hash/0xd797b944ed8657406a1b09a5928048093399fc0a2f576d3e57c0f9cedbf95c4a',
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Python(Request)

import requests

url = "https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions/by_hash/0xd797b944ed8657406a1b09a5928048093399fc0a2f576d3e57c0f9cedbf95c4a"
response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

Error handling

Status Code

Error Message

Cause

400

Invalid transaction hash

Hash format is invalid (not hex or malformed).

403

Forbidden

Missing or invalid <ACCESS_TOKEN>.

500

Internal server error

Node or network issue; retry later.

Integration with Web3

By integrating /v1/transactions/by_hash/{txn_hash}, developers can:

  • Fetch transactions directly from wallet or explorer UIs.

  • Debug dApps by verifying hash results against VM status.

  • Enable search bars in explorers where users paste transaction hashes.

  • Support analytics pipelines that track txns by hash across modules.

eth_getTransactionReceipt - Arbitrum

Example code for the eth_getTransactionReceipt json-rpc method. Сomplete guide on how to use eth_getTransactionReceipt json-rpc in GetBlock.io Web3 documentation.

Parameters

DATA - string

Hash of a transaction.

Request

curl --location --request POST 'https://go.getblock.io/<ACCESS-TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "eth_getTransactionReceipt", "params": ["0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c"], "id": "getblock.io"}'

Response

{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": {
        "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
        "blockNumber": "0x5259c43",
        "contractAddress": null,
        "cumulativeGasUsed": "0xc69229",
        "effectiveGasPrice": "0x5f5e100",
        "from": "0xb8b2522480f850eb198ada5c3f31ac528538d2f5",
        "gasUsed": "0x1993d7",
        "gasUsedForL1": "0x113076",
        "l1BlockNumber": "0x105fbf6",
        "logs": [
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x0000000000000000000000000000000000000000000000000000ad0c364098a8",
                "logIndex": "0x16",
                "removed": false,
                "topics": [
                    "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x0000000000000000000000000000000000000000000000000000453815b37042",
                "logIndex": "0x17",
                "removed": false,
                "topics": [
                    "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000000067d4208d2866",
                "logIndex": "0x18",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x0000000000000000000000006a78e84fa0edad4d99eb90edc041cdbf85925961"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x0000000000000000000000000000000000000000000000000000309f7337922a",
                "logIndex": "0x19",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x0000000000000000000000006a78e84fa0edad4d99eb90edc041cdbf85925961",
                    "0x000000000000000000000000a6c5c7d189fa4eb5af8ba34e63dcdd3a635d433f"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x6a78e84fa0edad4d99eb90edc041cdbf85925961",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x0000000000000000000000000000000000000000000000522c821a41ac4e8d26000000000000000000000000000000000000000000000026ace1c2f6b236aed3",
                "logIndex": "0x1a",
                "removed": false,
                "topics": [
                    "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x6a78e84fa0edad4d99eb90edc041cdbf85925961",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000000067d4208d2866000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000309f7337922a",
                "logIndex": "0x1b",
                "removed": false,
                "topics": [
                    "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d",
                    "0x000000000000000000000000a6c5c7d189fa4eb5af8ba34e63dcdd3a635d433f"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x912ce59144191c1204e64559fe8253a0e49e6548",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000001061732add570c2",
                "logIndex": "0x1c",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x000000000000000000000000a6c5c7d189fa4eb5af8ba34e63dcdd3a635d433f",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0xa6c5c7d189fa4eb5af8ba34e63dcdd3a635d433f",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000005a33bb71fb5a286c3c00000000000000000000000000000000000000000001e7ad5aafb7fabb76081a",
                "logIndex": "0x1d",
                "removed": false,
                "topics": [
                    "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0xa6c5c7d189fa4eb5af8ba34e63dcdd3a635d433f",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x0000000000000000000000000000000000000000000000000000309f7337922a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001061732add570c2",
                "logIndex": "0x1e",
                "removed": false,
                "topics": [
                    "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000000000b8958f33d60",
                "logIndex": "0x1f",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000000000000000000000000000000000000000dead"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x0000000000000000000000000000000000000000000000000000229c0ad9b821",
                "logIndex": "0x20",
                "removed": false,
                "topics": [
                    "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000b85edbd54bec6830cb71f565b3d635bce5548b42"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x0000000000000000000000000000000000000000000000000000000000000000",
                "logIndex": "0x21",
                "removed": false,
                "topics": [
                    "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000b85edbd54bec6830cb71f565b3d635bce5548b42"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x0000000000000000000000000000000000000000000000000000229c0ad9b821",
                "logIndex": "0x22",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000b85edbd54bec6830cb71f565b3d635bce5548b42"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x912ce59144191c1204e64559fe8253a0e49e6548",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000001d1f05a1897e4e",
                "logIndex": "0x23",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000a67b4bf837b77da3d11aa1bb0b7bcdde995279d8"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x912ce59144191c1204e64559fe8253a0e49e6548",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000003a3e0b4312fc9c",
                "logIndex": "0x24",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000370849e7693f8b1996fde7875df44c042ccb2754"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x912ce59144191c1204e64559fe8253a0e49e6548",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000000575d10e49c7aeb",
                "logIndex": "0x25",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000a67b4bf837b77da3d11aa1bb0b7bcdde995279d8"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x912ce59144191c1204e64559fe8253a0e49e6548",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000000575d10e49c7aed",
                "logIndex": "0x26",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000a025035ece3034ab5c41c9d5181cf2b3eb909698"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000000039aebcc032e2",
                "logIndex": "0x27",
                "removed": false,
                "topics": [
                    "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000000000b8958f33d60",
                "logIndex": "0x28",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x0000000000000000000000006a78e84fa0edad4d99eb90edc041cdbf85925961"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000000005670cc5b46a",
                "logIndex": "0x29",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x0000000000000000000000006a78e84fa0edad4d99eb90edc041cdbf85925961",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x6a78e84fa0edad4d99eb90edc041cdbf85925961",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x0000000000000000000000000000000000000000000000522c8225cb0541ca86000000000000000000000000000000000000000000000026ace1bd8fa570fa69",
                "logIndex": "0x2a",
                "removed": false,
                "topics": [
                    "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x6a78e84fa0edad4d99eb90edc041cdbf85925961",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000000000b8958f33d6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005670cc5b46a",
                "logIndex": "0x2b",
                "removed": false,
                "topics": [
                    "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000000005670cc5b46a",
                "logIndex": "0x2c",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d",
                    "0x0000000000000000000000000000000000000000000000000000000000000000"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000000000b8958f33d60",
                "logIndex": "0x2d",
                "removed": false,
                "topics": [
                    "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x0000000000000000000000000000000000000000000000000000000ec44748e1",
                "logIndex": "0x2e",
                "removed": false,
                "topics": [
                    "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000000000b7a94abf47f",
                "logIndex": "0x2f",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x00000000000000000000000009e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                    "0x0000000000000000000000006a78e84fa0edad4d99eb90edc041cdbf85925961"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000000005670cc5b46a",
                "logIndex": "0x30",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x0000000000000000000000000000000000000000000000000000000000000000",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000000005670cc5b46a",
                "logIndex": "0x31",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d",
                    "0x0000000000000000000000006a78e84fa0edad4d99eb90edc041cdbf85925961"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x6a78e84fa0edad4d99eb90edc041cdbf85925961",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000000000457a68bbf3",
                "logIndex": "0x32",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x0000000000000000000000000000000000000000000000000000000000000000",
                    "0x0000000000000000000000006a63830e24f9a2f9c295fb2150107d0390ed1448"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x6a78e84fa0edad4d99eb90edc041cdbf85925961",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000000002719aa223a7",
                "logIndex": "0x33",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x0000000000000000000000000000000000000000000000000000000000000000",
                    "0x0000000000000000000000000000000000000000000000000000000000000000"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x6a78e84fa0edad4d99eb90edc041cdbf85925961",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x0000000000000000000000000000000000000000000000522c82314599edbf05000000000000000000000000000000000000000000000026ace1c2f6b236aed3",
                "logIndex": "0x34",
                "removed": false,
                "topics": [
                    "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x6a78e84fa0edad4d99eb90edc041cdbf85925961",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000000000b7a94abf47f000000000000000000000000000000000000000000000000000005670cc5b46a",
                "logIndex": "0x35",
                "removed": false,
                "topics": [
                    "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f",
                    "0x000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000000000b8958f33d60000000000000000000000000000000000000000000000000000005670cc5b46a00000000000000000000000000000000000000000000000000000000645052ac",
                "logIndex": "0x36",
                "removed": false,
                "topics": [
                    "0xf75993dbe1645872cbbea6395e1feebee76b435baf0e4d62d7eac269c6f57b24"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000000000b8958f33d60000000000000000000000000000000000000000000000000001d1f05a1897e4e000000000000000000000000000000000000000000000000003a3e0b4312fc9c00000000000000000000000000000000000000000000000000001712b1e67ac100000000000000000000000000000000000000000000000000575d10e49c7aeb0000000000000000000000000000000000000000000000000000229c0ad9b82100000000000000000000000000000000000000000000000000575d10e49c7aed00000000000000000000000000000000000000000000000000000000645052ac",
                "logIndex": "0x37",
                "removed": false,
                "topics": [
                    "0x310a031bae0df2b1a8ba6de615833770c757a404a7395cc0121c13975e67c0b0"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x00000000000000000000000000000000000000000000000001f3d40421a49612",
                "logIndex": "0x38",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x0000000000000000000000005845696f6031bfd57b32e6ce2ddea19a486fa5e5",
                    "0x000000000000000000000000b8b2522480f850eb198ada5c3f31ac528538d2f5"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            },
            {
                "address": "0x5845696f6031bfd57b32e6ce2ddea19a486fa5e5",
                "blockHash": "0x2caf14773f5c8854de725d9077918a0ec14bd123163d5f9e479b06f201452320",
                "blockNumber": "0x5259c43",
                "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f3d40421a49612",
                "logIndex": "0x39",
                "removed": false,
                "topics": [
                    "0xf279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568",
                    "0x000000000000000000000000b8b2522480f850eb198ada5c3f31ac528538d2f5"
                ],
                "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
                "transactionIndex": "0x7"
            }
        ],
        "logsBloom": "0x00200002000010000048000080010000000000400000000000000000001401001000000000000000000040000100000000084000000000000018000000280000000000010000000002000028000900200000800402000000000000000000000800000408020000000000000400000820020000000008400000000010000018002000000200000000000044000000000000000002000001080000004000000810020002000000000000000000010008008000000000001000000000000000000100000502000000000080000000020000200000020001001000000000000020000430040004000000000000600000000000000000000000000004000000000000",
        "status": "0x1",
        "to": "0x5845696f6031bfd57b32e6ce2ddea19a486fa5e5",
        "transactionHash": "0x21be7a93a4531a76b1e15d14059582e6b6f9e36cbdc7a85c23667808f4c78b2c",
        "transactionIndex": "0x7",
        "type": "0x0"
    }
}