Compute Units (CUs)
An explanation for Compute Unite and how it works
Compute Unit is a way to measure your RPC request usage on MegaNode. We provide each MegaNode user a monthly quota of usage, and each method will consume a cost based on the resource required for execution. You can think of this as you have a balance in your account and each method has its own price. This will be deducted from your account upon submission of RPC requests. The price of each RPC method is called Compute Unit. Based on this calculation, we enable our users to utilize the monthly request quota more efficiently. In short, you only pay for what you use.
For different subscription tiers, there may have different monthly usage quotas.
CUs of RPC Method
Below are the CUs for each method. We define the CUs based on the resource required for execution.
Supported Method
BSC, Ethereum, Polygon, Optimism & Arbitrum
Method | CUs |
---|---|
eth_accounts | 5 |
eth_blockNumber | 5 |
eth_chainId | 5 |
eth_syncing | 5 |
net_listening | 5 |
net_version | 5 |
web3_clientVersion | 5 |
eth_subscribe | 10 |
eth_uninstallFilter | 10 |
eth_unsubscribe | 10 |
web3_sha3 | 10 |
eth_gasPrice | 15 |
eth_getBalance | 15 |
eth_getBlockByNumber | 15 |
eth_getCode | 15 |
eth_getStorageAt | 15 |
eth_getTransactionByBlockHashAndIndex | 15 |
eth_getTransactionByBlockNumberAndIndex | 15 |
eth_getTransactionByHash | 15 |
eth_getTransactionReceipt | 15 |
eth_getBlockByHash | 18 |
eth_getBlockTransactionCountByHash | 18 |
eth_getBlockTransactionCountByNumber | 18 |
eth_getFilterChanges | 18 |
eth_newBlockFilter | 18 |
eth_newFilter | 18 |
eth_newPendingTransactionFilter | 18 |
eth_call | 20 |
eth_getProof | 20 |
eth_getTransactionCount | 25 |
eth_getFilterLogs | 50 |
eth_getLogs | 50 |
eth_estimateGas | 75 |
eth_sendRawTransaction | 150 |
debug_traceTransaction | 280 |
debug_traceCall | 280 |
debug_traceBlockByNumber | 1800 |
debug_traceBlockByHash | 1800 |
Ethereum only
Method | CUs |
---|---|
eth_protocolVersion | 5 |
eth_createAccessList | 10 |
eth_feeHistory | 10 |
eth_maxPriorityFeePerGas | 10 |
eth_getUncleByBlockHashAndIndex | 15 |
eth_getUncleByBlockNumberAndIndex | 15 |
eth_getUncleCountByBlockHash | 15 |
eth_getUncleCountByBlockNumber | 15 |
Polygon API
Method | CUs |
---|---|
bor_getAuthor | 15 |
bor_getCurrentProposer | 15 |
bor_getCurrentValidators | 15 |
bor_getRootHash | 15 |
bor_getSignersAtHash | 15 |
eth_getTransactionReceiptsByBlock | 250 |
Optimism API
Method | CUs |
---|---|
eth_getBlockRange | 25 |
rollup_getInfo | 15 |
rollup_gasPrices | 15 |
Enhanced API
Method | CUs |
---|---|
debug_traceTransaction | 280 |
debug_traceCall | 280 |
debug_traceBlockByNumber | 1800 |
debug_traceBlockByHash | 1800 |
debug_jstraceTransaction | 2800 |
debug_jstraceCall | 2800 |
debug_jstraceBlockByNumber | 18000 |
debug_jstraceBlockByHash | 18000 |
eth_getDiffAccounts | 1000 |
eth_getDiffAccountsWithScope | 1200 |
nr_getTokenBalance1155 | 25 |
nr_getNFTCollectionHolders | 300 |
nr_getNFTCollectionHolderCount | 50 |
nr_getNFTInventory | 200 |
nr_getNFTHolders | 300 |
nr_getNFTHoldersWithBalance | 100 |
nr_getNFTHolderCount | 50 |
nr_getTokenMeta | 80 |
nr_getTotalSupply721 | 25 |
nr_getTotalSupply1155 | 25 |
nr_getNFTHoldings | 300 |
nr_getNFTHoldingCount | 50 |
nr_getTokenBalance721 | 25 |
nr_getSummedSupply1155 | 100 |
nr_getNFTTokenCount | 50 |
nr_getNFTTokens | 100 |
nr_getNFTTokenOwners | 150 |
nr_getNFTMeta | 100 |
nr_getTokenBalance20 | 25 |
nr_getTotalSupply20 | 25 |
nr_getTokenCount | 100 |
nr_getTokenHoldings | 300 |
nr_getTokenHoldingCount | 50 |
nr_getTokenHolders | 300 |
nr_getTokenHolderCount | 50 |
nr_getTransactionReceiptsByBlockHash | 250 |
nr_getTransactionReceiptsByBlockNumber | 250 |
nr_getTransactionDetail | 50 |
nr_getTransactionByAddress | 250 |
nr_getTransactionByAddressCount | 250 |
nr_getTransferByTokenId | 250 |
nr_getContractCreationTransaction | 250 |
nr_getAssetTransfersCount | 150 |
nr_getAssetTransfers | 250 |
txpool_content | 3000 |
txpool_inspect | 20 |
txpool_status | 15 |
Aptos API
Method | CUs |
---|---|
get_account | 25 |
get_account_modules | 25 |
get_account_resources | 25 |
get_account_transaction | 125 |
get_blocks_by_height | 50 |
get_blocks_by_version | 50 |
get_events_by_creation_number | 125 |
get_events_by_event_handle | 125 |
get_ledger_information | 25 |
get_node_health | 25 |
get_specific_account_module | 25 |
get_specific_account_resource | 25 |
get_table_item | 25 |
get_transaction_by_hash | 25 |
get_transaction_by_version | 25 |
get_transactions | 125 |
simulate_transaction | 50 |
submit_batch_transactions | 50 |
submit_transaction | 25 |
encode_submission | 25 |
estimate_gas_price | 25 |
spec | 200 |
Unsupported Method
If MegaNode received requests using unsupported RPC method, the CUs are 2 for each request.
How does MegaNode calculate my monthly CU quota?
We accumulate the monthly usage by account. Regardless of how many API Keys you created in your account, we calculate the usage by summing the entire usage across all API Keys.
Websocket subscription
MegaNode charges the websocket subscription by bandwidth. For every byte, the cost is 0.04 CU.
What happens if I run out of monthly CU quota?
If you keep sending RPC request even though you've reached the monthly CU quota, the request will fail and you will receive http 429 error and an error code: -32005
{
"jsonrpc":"2.0",
"id":1,
"error":{
"code":-32005,
"message":"limit exceeded"
}
}
What happens if I send a request with incorrect payload?
If you're sending a RPC request with an incorrect payload, it will cost:
- If incorrect method: it will cost you 2 usage for incorrect or unsupported RPC method.
- If other parameters are incorrect, or execution failed due to the wrong payload: it will consume the original cost of each method.
How much monthly quota do I have?
We provide MegaNode users different tiers of monthly quota according to their pricing plan. Pleaserefer to our pricing plan.
Updated 12 days ago