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...
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...
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.
This section provides simple examples to help you test your connection to the blockchain, using Ethereum API as a reference.
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.
To start using GetBlock's services, you need to register an account. You’ll be ready to go in just a few clicks!
Visit the homepage and click on the 'Dashboard' button in the upper-right corner, or use this direct link.
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.
During registration, you will be asked to accept our Terms of Service and Privacy Policy.
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.
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.
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.
Starter, Pro & Enterprise users can refill their CU balance or switch to another plan for increased limits:
Click the "Top Up" button on the Dashboard.
Select the number of CUs you’d like to add or choose the recommended plan (if prompted) based on your usage needs.
Confirm and finalize your purchase.
Your account balance will be updated immediately upon successful payment.
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.
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:
Click "Change" on the Dashboard next to the Rate Limit section.
Fill out and submit a request form, choosing your desired RPS limit, CU amount, and number of Access Tokens.
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 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.
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.
Get started with our most in-demand blockchain networks.
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.
To make a request, include your full endpoint URL with the access token in the path.
For example, here’s how to fetch the latest Ethereum block number:
Response:
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:
Go to your GetBlock Dashboard.
Locate the endpoint associated with the token.
Click the three-dot icon () next to the endpoint.
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.
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"
}
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"}These examples provide a starting point for testing your connection and querying blockchain data using cURL commands.
Before you start:
Create a JSON-RPC endpoint for the Ethereum blockchain from your GetBlock account.
Replace <ACCESS_TOKEN> in the examples below with your actual Access Token.
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"
}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.
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).
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.
Add Ethers.js to your project using your preferred package manager:
npm
npm install ethersyarn
yarn add ethers// 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.
Example code for the eth_accounts json-rpc method. Сomplete guide on how to use eth_accounts json-rpc in GetBlock.io Web3 documentation.
Example code for the eth_getStorageAt json-rpc method. Сomplete guide on how to use eth_getStorageAt json-rpc in GetBlock.io Web3 documentation.
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"
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"}'{
"id": "getblock.io",
"jsonrpc": "2.0",
"result": "0x0000000000000000000000000000000000000000000000000000000000000000"
}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.
-
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"
}'{
"result": "null",
"id": "getblock.io",
"status_code": 405,
"message": "Method not allowed"
}Example code for the eth_getBlockTransactionCountByHash json-rpc method. Сomplete guide on how to use eth_getBlockTransactionCountByHash json-rpc in GetBlock.io Web3 documentation.
DATA - string
hash of the block.
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"}'{
"id": "getblock.io",
"jsonrpc": "2.0",
"result": "0x5"
}Example code for the eth_newFilter json-rpc method. Сomplete guide on how to use eth_newFilter json-rpc in GetBlock.io Web3 documentation.
Object - object
Filter options
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"}'{
"id": "getblock.io",
"jsonrpc": "2.0",
"result": "0x7a624b4e4688bb09c14e858427d9ede5"
}Example code for the eth_getUncleCountByBlockNumber json-rpc method. Сomplete guide on how to use eth_getUncleCountByBlockNumber json-rpc in GetBlock.io Web3 documentation.
QUANTITY|TAG - integer or string
block number or "latest", "earliest" or "pending"
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"}'{
"id": "getblock.io",
"jsonrpc": "2.0",
"result": "0x0"
}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.
database - string
Database name
key - string
key name
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"}'{
"result": "null",
"id": "getblock.io",
"status_code": 405,
"message": "Method not allowed"
}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.
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.
database - string
database name
key - string
key name
string - string
string to store.
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"}'{
"result": "null",
"id": "getblock.io",
"status_code": 405,
"message": "Method not allowed"
}Example code for the eth_getUncleByBlockNumberAndIndex json-rpc method. Сomplete guide on how to use eth_getUncleByBlockNumberAndIndex json-rpc in GetBlock.io Web3 documentation.
QUANTITY|TAG - integer or string
block number or "latest", "earliest" or "pending"
QUANTITY - string
the uncle’s index position.
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"}'{
"id": "getblock.io",
"jsonrpc": "2.0",
"result": null
}Example code for the rpc_modules json-rpc method. Сomplete guide on how to use rpc_modules json-rpc in GetBlock.io Web3 documentation.
-
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"
}'{
"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"
}
}Example code for the eth_getUncleByBlockHashAndIndex json-rpc method. Сomplete guide on how to use eth_getUncleByBlockHashAndIndex json-rpc in GetBlock.io Web3 documentation.
DATA - string
Hash of a block.
QUANTITY - string
the uncle’s index position.
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"}'{
"id": "getblock.io",
"jsonrpc": "2.0",
"result": null
}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.
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. }
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"
}'{
"result": "null",
"id": "getblock.io",
"status_code": 405,
"message": "Method not allowed"
}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.
address - data
the address of the new identiy.
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"
}'{
"result": "null",
"id": "getblock.io",
"status_code": 405,
"message": "Method not allowed"
}Example code for the eth_getBlockTransactionCountByNumber json-rpc method. Сomplete guide on how to use eth_getBlockTransactionCountByNumber json-rpc in GetBlock.io Web3 documentation.
QUANTITY|TAG - integer or string
block number or "latest", "earliest" or "pending"
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"}'{
"id": "getblock.io",
"jsonrpc": "2.0",
"result": "0x5"
}

Explorer API
Track transactions and monitor network activity with real-time blockchain data
This page provides a guide to common JSON-RPC and HTTP errors when testing your connection with GetBlock's API.
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.
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.
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.
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.
Select the desired network from the drop-down list on the sidebar.
Paste the access token copied from your account instead of {YOUR_ACCESS_TOKEN}.
This token will grant you the necessary permissions to explore our node functionalities.
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.
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:
Download the getblock.config.json file from your GetBlock account;
Make sure you have installed. jq is a versatile command-line tool that enables extracting values from JSON files;
Navigate to your workspace or directory where you have imported the getblock.config.json file and open a terminal;
Now, you can make a GET request to a selected node endpoint using the curl command:
Connect to Ethereum nodes and other EVM-compatible networks using web3.js and GetBlock’s JS configuration file.
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
Download the getblock.config.js file from your GetBlock account. Add this file to your project directory.
Import the getblock module to a .js file that configures a new Web3 instance:
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.
Set up GetBlock’s JS config file in Hardhat following the steps below:
Ensure you have Hardhat installed as a dependency in your Node.js project or run the following command to do so:
Navigate to your GetBlock account and install the getblock.config.js file. Copy and paste it into your working directory;
Open the hardhat.config.js file from your project directory and import the getblock module:
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.
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.
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.
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!
Example code for the eth_getBalance json-rpc method. Сomplete guide on how to use eth_getBalance json-rpc in GetBlock.io Web3 documentation.
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.
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
For more detailed analysis, visit the Statistics tab in the ‘Endpoints’ section.
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
GetBlock provides a notification system to help you monitor your usage and subscription status.
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.
Example code for the eth_estimateGas json-rpc method. Сomplete guide on how to use eth_estimateGas json-rpc in GetBlock.io Web3 documentation.
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".
Example code for the eth_getBlockByHash json-rpc method. Сomplete guide on how to use eth_getBlockByHash json-rpc in GetBlock.io Web3 documentation.
Example code for the eth_getTransactionCount json-rpc method. Сomplete guide on how to use eth_getTransactionCount json-rpc in GetBlock.io Web3 documentation.
Example code for the eth_getTransactionByBlockNumberAndIndex json-rpc method. Сomplete guide on how to use eth_getTransactionByBlockNumberAndIndex json-rpc in GetBlock.io Web3 documentation.
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:
Review and confirm your selected protocol and network.
Customize your dedicated node with the following options:
Region of deployment: Germany (Frankfurt), USA (New York), Singapore.
Select a subscription plan (available discounts are applied automatically)
Node type: Choose between Full Node or Archive Node.
Node client: Specify your preferred node implementation.
Performance : Choose between High (premium specs, max throughput) and Standard (enterprise specs, optimized pricing for moderate-high loads).
API interface: Select API options and add-ons if applicable.
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.
Example code for the eth_subscribe json-rpc method. Сomplete guide on how to use eth_subscribe json-rpc in GetBlock.io Web3 documentation.
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.
Example code for the eth_getTransactionByBlockHashAndIndex json-rpc method. Сomplete guide on how to use eth_getTransactionByBlockHashAndIndex json-rpc in GetBlock.io Web3 documentation.
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"
}curl -X GET https://go.getblock.io/"$(jq -r '.shared.btc.mainnet.rest[0]' getblock.config.json)"/rest/chaininfo.jsonconst { 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 hardhatconst { 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
}
}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" // etherconst rawTx = {
to: accountTo.address,
value: web3.utils.toWei(amountTo, 'ether'),
chainId: chainId
};
createSignedTx(rawTx).then(sendSignedTx)
Example code for the eth_getBlockByNumber json-rpc method. Сomplete guide on how to use eth_getBlockByNumber json-rpc in GetBlock.io Web3 documentation.
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.
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"}'{
"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": []
}
}Example code for the net_version json-rpc method. Сomplete guide on how to use net_version json-rpc in GetBlock.io Web3 documentation.
Example code for the eth_signTransaction json-rpc method. Сomplete guide on how to use eth_signTransaction json-rpc in GetBlock.io Web3 documentation.
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. }
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"}'
{
"error": {
"code": -32000,
"message": "nonce not specified"
},
"id": "getblock.io",
"jsonrpc": "2.0"
}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.
id - string
the filter id.
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"
}'{
"result": "null",
"id": "getblock.io",
"status_code": 405,
"message": "Method not allowed"
}Example code for the eth_sign json-rpc method. Сomplete guide on how to use eth_sign json-rpc in GetBlock.io Web3 documentation.
DATA - string
address.
DATA - string
message to sign.
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"}'{
"error": {
"code": -32000,
"message": "unknown account"
},
"id": "getblock.io",
"jsonrpc": "2.0"
}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 tronwebYarn:
yarn add tronwebIn 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
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.
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.
Generate a JSON-RPC URL for the selected network from your GetBlock and copy it.
If the network is already in your list but uses a default RPC provider, you can switch to GetBlock by following these steps:
Click on the current network name in MetaMask to open the dropdown of networks.
Find the network you want to edit and click the settings menunext to it. Select 'Edit'.
Open the ‘Default RPC URL’ dropdown and select 'Add RPC URL'.
Paste the JSON-RPC endpoint URL from your GetBlock account (https://go.getblock.io/<ACCESS_TOKEN>/).
Name the new RPC URL for easier identification.
Click 'Add URL', then 'Save' to confirm.
You can now switch between RPC URLs for that network as needed.
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.
Click on the current network name.
Select 'Add a custom network'.
Fill in the required fields:
Click 'Save', and the custom network will be added and selected as default.
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 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.
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.
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.
GetBlock supports both fiat and crypto 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.
To update your payment information while you have an active subscription:
Go to Pricing → Manage Plans.
Click ‘Edit Payment Method’.
Enter your updated payment details and save the changes.
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.
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"
}'{
"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"
}'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.
Mainnet
None
Base URL
https://go.getblock.io/<ACCESS_TOKEN>Example(cURL)*
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/estimate_gas_price'{
"deprioritized_gas_estimate": 100,
"gas_estimate": 100,
"prioritized_gas_estimate": 150
}
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.
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.
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)Status Code
Error Message
Cause
403
Forbidden
Missing or invalid <ACCESS_TOKEN>.
500
Internal server error
Node or network failure when estimating gas.
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.
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.
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.
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.
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.
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 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.
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
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.
Mainnet
None
URL (endpoint)
https://go.getblock.io/Example (cURL)
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/info'{
"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"
}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
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.
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.
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.
It is recommended to use this endpoint first to check the current status of the blockchain before integrating other endpoints into your application.
Example code for the eth_call json-rpc method. Сomplete guide on how to use eth_call json-rpc in GetBlock.io Web3 documentation.
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".
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"}'{
"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"
}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.
-
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"}'{
"result": "null",
"id": "getblock.io",
"status_code": 405,
"message": "Method not allowed"
}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:
The steps below cover how to generate a new endpoint URL with an Access Token:
Log in to your GetBlock account and navigate to the Dashboard
Find the Endpoints section on the Dashboard
Click Get endpoint to open the endpoint setup menu
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)
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.
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.
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.
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.
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.
To see the full comparison table, navigate to .
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
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.
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.
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.
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.
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
Yellowstone gRPC supports streaming the full range of Solana events:
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
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)
Here's a minimal TypeScript example to start streaming account updates:
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 .
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 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:
Full blockchain history at the highest throughput
Unlimited query capacity
Custom node builds & tooling
Sign in to your GetBlock dashboard and make sure you’re on the Shared Node tab.
Click Get endpoint and choose a required blockchain protocol.
Find the Mode toggle and switch the Archive mode on.
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.
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_getBalancecosts 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.
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.
what you’re building — our team can guide you to the most efficient archive node setup.
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.
Mainnet
URL
Example
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.
Replace
<ACCESS_TOKEN>with your actual access token from GetBlock.
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.
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.
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.
This part covers a step-by-step guide to setting up your team workspace.
Sign in to your GetBlock account. If you don’t have a user account yet, create one following .
Click on the profile icon in the bottom-left corner of the sidebar. Select "Create new team" from the dropdown menu.
A popup window will appear. Assign a team name and click the "Create team" button.
Once the space is created, navigate to Account Settings > Team to manage team settings or add 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.
Go to Account Settings > Team.
Click "Add team member" in the top-right corner.
Request the User ID from the teammate (they can find it under Account Settings > General).
Enter the name, User ID, and send the invite.
The user gets a notification and can accept the invite.
Go to Account Settings > My Team.
Click "Add team member" in the top-right corner.
Enter the teammate's name and email address.
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 .
Once the user has joined, the team owner or an admin can update their permissions:
Go to My Team in Account Settings.
Click the three-dot menu (⋮) next to a team member.
Select "Edit access level".
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.
Save changes.
If a Member has no permissions assigned, they will have View-Only access by default.
This table provides a breakdown of actions team account users can perform based on their role.
If you need someone to help manage other team members, be sure to give them Admin status.
To remove a user from your team account:
Navigate to Team in the Account Settings.
Click the three-dot menu (⋮) next to the team member name.
Select "Remove" from the dropdown menu.
When removed from a team, users lose access to that team workspace but keep their personal 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 .
Click your account icon to view an invitation.
Click "Accept" if you're ready to join.
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:
Check your inbox for an email invitation from GetBlock.
Clicking the invitation link redirects you to the sign-up page.
Create a secure password for your new account.
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.
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.
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.
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.
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.
Use your preferred package manager:
npm:
yarn:
Pure js link:
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 web3yarn add web3dist/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);$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
❌
✅
✅
✅
✅
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}`);
}
});Create & manage access tokens
✅
✅
Manage subscriptions & payments
✅
✅
Add & remove team members
✅
✅
❌
Edit access levels
✅
✅
❌
Promote to Admin
✅
❌
❌
GetBlock API docs: RPC endpoints, SDK guides, and developer tools. Everything you need to connect and build on 70+ blockchain networks
To get started, follow these steps:
Sign up: Create an account to access your Access Token.
Generate access token: Navigate to the dashboard, and generate your first access token for API authentication.
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.
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())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.
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/
DAS API
Firehose
Blockbook
Yellowstone Geyser
Need more? Don’t hesitate to contact sales: https://getblock.io/contact/
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 -hExample 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"
}'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 requestsExample:
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())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 -vTo execute Ruby examples, install Ruby on your machine. Refer to the official installation guide for details. Confirm installation by running:
ruby -vWe provide APIs for a wide range of networks, including:
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.
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.
id - string
the filter id.
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"
}'{
"result": "null",
"id": "getblock.io",
"status_code": 405,
"message": "Method not allowed"
}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.
Base URL
Example (cURL)
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.
Replace
<ACCESS_TOKEN>with your actual GetBlock API token.
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.
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.
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.
Every API call "spends" a number of Compute Units. The total value is determined by two main factors:
A base CU cost (chain multiplier) reflecting the network's resource intensity.
A method-specific multiplier which varies by API method.
The total Compute Units for an API call are calculated using the following formula:
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:
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.
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.
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.
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.
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.
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.
Mainnet
URL
Example
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).
Replace
<ACCESS_TOKEN>with your actual access token from GetBlock.
Missing or invalid account hash → Empty or malformed response.
403 → Access token is missing or invalid.
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.
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.
Mainnet
Base URL
Example(cURL)
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.
Python(Request)
Node(Axios)
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.
Example code for the eth_sendTransaction json-rpc method. Сomplete guide on how to use eth_sendTransaction json-rpc in GetBlock.io Web3 documentation.
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. }
- Mainnetaccount_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"
}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

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.
Mainnet
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
Base URL
https://go.getblock.io/
<ACCESS_TOKEN>Request Example (cURL)
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f/events/0'[
{
"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"
}
}
}
]
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).
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.
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);
});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.
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.
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.
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.
Mainnet
Parameter
Data type
Description
Required
In
version
integer
The ledger version
Yes
Path
Base URL
https://go.getblock.io/<ACCESS_TOKEN>Example(cURL)
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions/by_version/3363904007'{
"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"
}
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).
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.
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)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.
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.
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.
Mainnet
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
Base URL
https://go.getblock.io/<ACCESS_TOKEN>/Example (cURL)
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/accounts/0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12/module/curves'{
"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" }]
}
]
}
}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.
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.
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);
});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.
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.
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.
You can monitor the status of your dedicated node subscriptions in three different ways.
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.
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.
Each endpoint in “My endpoints” list shows its current subscription status.
(Recurring Payment)
(One-Time Payment)
(One-Time Payment)
(Recurring /One-Time)
You can modify your subscription period at any time if you’re on a one-time payment plan paid with:
Cryptocurrency;
Credit card.
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.
You can extend your subscription to one of the following periods:
1 month
6 months
12 months
There are three ways to extend your subscription.
Go to Dedicated Nodes tab from your dashboard. Look for the subscription alert widget.
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).
Choose a new period and review details. Proceed to checkout.
Complete the payment by following the instructions provided.
Check the "Payment History" under the Pricing tab to track the progress.
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.
Navigate to your main dashboard and switch to the Dedicated Nodes tab.
Choose a node to extend. Expand the node’s details and click "Extend" to begin the process.
Follow the pop-up instructions to select the new subscription period and finalize the process.
Navigate to Pricing > Manage Plans.
Review all subscriptions. Subscriptions nearing expiration are listed at the top.
Follow the same steps: Select your node, choose a new period, and confirm your payment.
If you face any issues with renewal or extensions, feel free to reach out to GetBlock support—we’re happy to assist.
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.
Mainnet
Base URL
Example(cURL)
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.
Node(Axios)
Python(Request)
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.
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.
Mainnet
Base URL
Example(cURL)
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.
Node(Axios)
Python(Request)
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.
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.
Mainnet
Base URL
Example(cURL)
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.
Python (Requests)
Node(Axios)
The possible error you may experience includes the following:
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.
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.
You need to set up the Brave wallet and prepare the GetBlock API endpoints.
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.
Proceed to the GetBlock dashboard and create an account or log in.
Click on the Get button to add a new RPC endpoint, and select the Ethereum mainnet.
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.
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.
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.
Brave Wallet supports a wide range of EVM and non-EVM networks. Let’s modify an Ethereum account.
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.
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.
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.
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.
Aptos Network API Reference for seamless interaction with APT nodes, enabling fast, secure, and scalable transactions on a next-generation Layer 1 blockchain.
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:
Query real-time blockchain data
Manage and monitor accounts and balances
Interact with smart contracts
Submit and track transactions
Monitor network activity in real-time
Each method will provide you with the following:
Clear description of functionality and use cases
Required input parameters
Sample requests and responses
Supported network
Code example
Integration
Note: This API is compatible only with Aptos Mainnet.
In this section, you will learn how to make your first call with either:
Axios
Python
Before you begin, you must have already installed npm or yarn on your local machine. If not, check out npm or yarn.
Set up your project using this command:
For npm:
mkdir aptos-api-quickstart
cd aptos-api-quickstart
npm init --yesOr yarn:
mkdir aptos-api-quickstart
cd aptos-api-quickstart
yarn init --yesThis creates a project directory named aptos-api-quickstart and initialises a Node.js project within it.
Install Axios using this command: Using npm:
npm install axiosUsing yarn:
yarn add axiosCreate a new file and name it index.js. This is where you will make your first call.
Set ES module "type": "module" in your package.json.
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.
Run the script:
node index.jsThe sequence number and authentication key log in your console like this:
{
"Sequence_number": "219241",
"Authentication_key": "0xbf9239be9eb7e7a3d8e4c1f36083464fd47e6bd1f82a43b7c0f7ee958705a52f"
}Before you begin, you must have installed Python and Pip on your local machine.
Set up your project using this command:
mkdir aptos-api-quickstart
cd aptos-api-quickstartSet up a virtual environment to isolate dependencies:
python -m venv venv
source venv/bin/activate
# On Windows, use venv\Scripts\activateInstall the requests library:
pip install requestsCreate 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.
Run the script:
python main.pyBlockchain Information
/v1
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
Events
/v1/accounts/{account_hash}/events/{creation_number}
/v1/accounts/{account_hash}/events/{event_handle}/{field_name}
Blocks
/v1/blocks/by_height/{block_height}
/v1/blocks/by_version/{version}
Transactions
/v1/transactions
/v1/transactions/by_hash/{transaction_hash}
/v1/transactions/by_version/{version}
Additional Utility
/v1/estimate_gas_price
Example code for the eth_newBlockFilter json-rpc method. Сomplete guide on how to use eth_newBlockFilter json-rpc in GetBlock.io Web3 documentation.
-
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"}'{
"id": "getblock.io",
"jsonrpc": "2.0",
"result": "0x6aacc1719383adeb356a720506fd2064"
}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.
Mainnet
Base URL
Example(cURl)
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.
Python Request
Node(axios)
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.
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:
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.
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.
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
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 Nodes are billed at a set monthly rate determined by configured settings:
Performance tier: Total cost scales with the performance tier selected – High tier is priced at a premium relative to the Standard tier.
Blockchain network: Each protocol has different hardware requirements, which impact both High and Standard tier pricing.
Node mode: Full or Archive.
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.
To select a tier during node setup, open the Dedicated Node dashboard:
Select protocol, network, deployment region, node mode, and a preferred client.
As a final step, choose the Performance Tier (High or Standard) and required API interfaces.
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.
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.
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.
Mainnet
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
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'[
{
"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"
}
]
}
]
}
}
]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
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.
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);
});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.
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.
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.
A GetBlock account with a Dedicated Solana Node subscription
Your gRPC endpoint URL with access token (found in GetBlock dashboard)
The Yellowstone gRPC add-on to Solana currently requires a subscription on GetBlock. Here’s how to set it up with gRPC API:
Sign up / log in: Create an account at GetBlock.io or log in to your existing account.
Deploy a dedicated Solana node:
Go to your user dashboard, switch the tab to “Dedicated nodes”, and scroll down to “My endpoints”
Choose Solana under “Protocol”, set the network to mainnet.
Click on Get.
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.
Return to My endpoints in your Dedicated node dashboard and generate a gRPC .
The dashboard will generate your new HTTPS‐style gRPC endpoint URL.
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).
Example endpoint URLs:
When establishing your gRPC channel, the authentication is handled via an access token:
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:
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.
grpcurl)A generic tool like grpcurl is perfect to just poke at the API and explore method calls:
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:
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):
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.
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.
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.
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-grpcimport 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.gogo get github.com/rpcpool/yellowstone-grpc/examples/golang@latest
go get google.golang.org/grpc@latestimport (
"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/pythonfrom 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);
}
}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.
Mainnet
Parameter
Type
In
Required
Description
transaction_hash
String
Path
Yes
Hash of the transaction
Base URL
https://go.getblock.io/<ACCESS_TOKEN>Example(cURL)
curl --location 'https://go.getblock.io/<ACCESS_TOKEN>/v1/transactions/by_hash/0xd797b944ed8657406a1b09a5928048093399fc0a2f576d3e57c0f9cedbf95c4a'{
"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"
}
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).
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.
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)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.
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.
Example code for the eth_getTransactionReceipt json-rpc method. Сomplete guide on how to use eth_getTransactionReceipt json-rpc in GetBlock.io Web3 documentation.
DATA - string
Hash of a transaction.
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"}'{
"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"
}
}