Develop TON Jettons using TEP-74 standard with Blueprint and Sandbox. Create minter and wallet contracts in FunC for fungible tokens on TON blockchain.
TLDR:
You’ll create a fungible token (Jetton) on TON using a master “minter” contract plus a wallet contract for each user.
You’ll rely on Blueprint and Sandbox to compile, test, and deploy standard TON FunC contracts.
You’ll apply the Jetton standard (TEP74) for token transfers and metadata (TEP64) for properties like symbol and decimals.
By the end, you’ll have a baseline fungible token on the TON testnet ready for any custom logic.
In this tutorial, we will discuss the standard implementation of fungible tokens on the TON blockchain and walk through the development steps using the Blueprint environment and Sandbox.
Start for free and get your app to production levels immediately. No credit card required. You can sign up with your GitHub, X, Google, or Microsoft account.
The suggested approach for fungible tokens on TON involves having a minter contract (also called a master contract) and a specific wallet contract for each user. This allows taking advantage of the TON blockchain architecture and its sharding feature.The minter contract holds key token metrics and parameters, while the wallet contract maintains a balance of a specific user and allows transferring and burning tokens. This is described in more detail in the TON standards (TEPs). Let’s examine those related to fungible tokens.
TON fungible tokens are called Jettons. The Jetton standard is described in TEP74. The specification for metadata of all tokens on TON is in TEP64. The Jetton standard (TEP74) describes:
The method for Jetton transfers.
How to retrieve common information (name, circulating supply, etc.) about a given Jetton asset.
Jettons are organized as follows: each Jetton has a master smart contract used to mint new Jettons, account for circulating supply, and provide common information. At the same time, information about the amount of jettons owned by each user is stored in a decentralized manner in individual smart contracts (referred to as “Jetton-wallets”) for each owner.An example of the Jetton minter and wallet contracts has been prepared by the TON core team. We will take these contracts as a starting point for our development.
Then, let’s copy the contracts from the standard implementation to our project’s contracts folder. We need jetton-minter-discoverable.fc, jetton-wallet.fc and jetton-utils.fc, discovery-params.fc, op-codes.fc, params.fc. Let’s briefly walk through them.The minter contract allows the admin (the contract owner) to manage the minting process and total tupply. Additionally, it implements the TEP89 feature for Jetton wallet discovery, which simplifies obtaining a Jetton wallet address by other smart contracts. Previously, this was challenging because contracts couldn’t use get methods on other contracts directly.The wallet contract manages Jetton token transfers, storage, and burning for a specific user. It tracks the wallet balance, owner’s address, and Jetton master details, updating the data after transfers or burns.The jetton-utils.fc file contains functions that help in creating and managing a Jetton wallet, making sure that all the necessary data is packed and that the correct address for the wallet is calculated.The discovery-params.fc, op-code.fc files contain the standard operational codes for the minter and wallet contracts. Additionally, the function is_resolvable checks if a given address is within the same workchain as the contract. It extracts the workchain ID from the address and compares it with the current contract’s workchain ID. The params.fc also contains the same check that is used by the wallet contract.Before proceeding, please make sure your contracts include required imports.jetton-minter-discoverable.fc
To test and run scripts for our smart contracts, we need to have TypeScript interfaces for them. The wrappers folder contains such interface classes for all contracts (implementing Contract from @ton/core), including serialization primitives, getter wrappers and compilation functions.Let’s copy the wrappers, JettonMinter.ts, JettonWallet.ts, JettonConstants.ts and ui-utils.ts, from the existing implementation to our project’s folder wrappers. You can also copy the shortened versions of the same files from our repository. Additionally, ui-utils.ts has a few adjustments there.
The Blueprint framework incorporates Sandbox. The package allows developers to emulate TON smart contracts behaviour as if they were deployed on a real network. Please copy the tests from our repository. As in the case with the wrappers, it’s a shortened version with a few adjustments based on examples prepared by the TON core team (here and here).To test the contracts using Sandbox, run the command:
npx blueprint test
In the scripts folder, create deployJettonMinter.ts with the following code:
import {toNano} from '@ton/core';import {JettonMinter} from '../wrappers/JettonMinter';import {compile, NetworkProvider} from '@ton/blueprint';import {jettonWalletCodeFromLibrary, promptUrl, promptUserFriendlyAddress} from "../wrappers/ui-utils";export async function run(provider: NetworkProvider) { const isTestnet = provider.network() !== 'mainnet'; const ui = provider.ui(); const jettonWalletCodeRaw = await compile('JettonWallet'); const adminAddress = await promptUserFriendlyAddress("Enter the address of the jetton owner (admin):", ui, isTestnet); const jettonMetadataUri = await promptUrl("Enter jetton metadata uri (https://jettonowner.com/jetton.json)", ui) const jettonWalletCode = jettonWalletCodeFromLibrary(jettonWalletCodeRaw); const minter = provider.open(JettonMinter.createFromConfig({ admin: adminAddress.address, wallet_code: jettonWalletCode, jetton_content: {type: 1, uri: jettonMetadataUri} }, await compile('JettonMinter')) ); await minter.sendDeploy(provider.sender(), toNano("1.5")); // send 1.5 TON}
The metadata JSON must have the following format with the image data having base64-encoded value:
We walked through the fungible token standard on the TON blockchain and its main development steps using Blueprint and Sandbox. In future tutorials, we will add custom behaviour for our token. Stay tuned!
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Chainstack","description":"Chainstack developer documentation — deploy and manage blockchain nodes across 70+ protocols via managed cloud infrastructure or self-hosted on your own Kubernetes","colors":{"primary":"#007aff","light":"#007aff","dark":"#007aff"},"logo":{"light":"https://mintcdn.com/chainstack/4kCLdVG8vhROt3j-/logo/light.svg?fit=max\u0026auto=format\u0026n=4kCLdVG8vhROt3j-\u0026q=85\u0026s=7d2d6d754203b9b3aa553e71ac4d9991","dark":"https://mintcdn.com/chainstack/4kCLdVG8vhROt3j-/logo/dark.svg?fit=max\u0026auto=format\u0026n=4kCLdVG8vhROt3j-\u0026q=85\u0026s=0f1b86eba2477ec37c2464be89df9e6d","href":"https://chainstack.com/"},"favicon":"https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/favicon.png?fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=d58df95278b0108206c861030eca1a8a","api":{"openapi":["openapi/hyperliquid_node_api/hypercore_info/info_meta.json","openapi/hyperliquid_node_api/hypercore_info/info_meta_and_asset_ctxs.json","openapi/hyperliquid_node_api/hyperevm/evm_net_version.json","openapi/hyperliquid_node_api/hyperevm/evm_web3_client_version.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_block_number.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_call.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_chain_id.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_filter_changes.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_filter_logs.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_header_by_hash.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_header_by_number.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_transaction_by_sender_and_nonce.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_uncle_by_block_hash_and_index.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_uncle_by_block_number_and_index.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_new_filter.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_uninstall_filter.json","openapi/hyperliquid_node_api/hyperevm/evm_debug_get_raw_block.json","openapi/hyperliquid_node_api/hyperevm/evm_debug_get_raw_header.json","openapi/hyperliquid_node_api/hyperevm/evm_debug_get_raw_receipts.json","openapi/hyperliquid_node_api/hyperevm/evm_debug_get_raw_transaction.json","openapi/hyperliquid_node_api/hyperevm/evm_debug_trace_block.json","openapi/hyperliquid_node_api/hyperevm/evm_debug_trace_call.json","openapi/hyperliquid_node_api/hyperevm/evm_debug_trace_transaction.json","openapi/hyperliquid_node_api/hyperevm/evm_erigon_get_header_by_number.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_big_block_gas_price.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_blob_base_fee.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_call_many.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_create_access_list.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_estimate_gas.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_fee_history.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_gas_price.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_balance.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_block_by_hash.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_block_by_number.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_block_receipts.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_block_transaction_count_by_hash.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_block_transaction_count_by_number.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_code.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_logs.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_proof.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_raw_transaction_by_block_hash_and_index.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_raw_transaction_by_block_number_and_index.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_raw_transaction_by_hash.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_storage_at.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_system_txs_by_block_hash.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_system_txs_by_block_number.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_transaction_by_block_hash_and_index.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_transaction_by_block_number_and_index.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_transaction_by_hash.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_transaction_count.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_transaction_receipt.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_uncle_count_by_block_hash.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_get_uncle_count_by_block_number.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_max_priority_fee_per_gas.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_new_block_filter.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_protocol_version.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_send_raw_transaction.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_simulate_v1.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_syncing.json","openapi/hyperliquid_node_api/hyperevm/evm_eth_using_big_blocks.json","openapi/hyperliquid_node_api/hyperevm/evm_net_listening.json","openapi/hyperliquid_node_api/hyperevm/evm_net_peer_count.json","openapi/hyperliquid_node_api/hyperevm/evm_ots_get_api_level.json","openapi/hyperliquid_node_api/hyperevm/evm_ots_get_block_details.json","openapi/hyperliquid_node_api/hyperevm/evm_ots_get_block_details_by_hash.json","openapi/hyperliquid_node_api/hyperevm/evm_ots_get_block_transactions.json","openapi/hyperliquid_node_api/hyperevm/evm_ots_get_contract_creator.json","openapi/hyperliquid_node_api/hyperevm/evm_ots_get_header_by_number.json","openapi/hyperliquid_node_api/hyperevm/evm_ots_get_internal_operations.json","openapi/hyperliquid_node_api/hyperevm/evm_ots_get_transaction_by_sender_and_nonce.json","openapi/hyperliquid_node_api/hyperevm/evm_ots_get_transaction_error.json","openapi/hyperliquid_node_api/hyperevm/evm_ots_has_code.json","openapi/hyperliquid_node_api/hyperevm/evm_ots_trace_transaction.json","openapi/hyperliquid_node_api/hyperevm/evm_trace_block.json","openapi/hyperliquid_node_api/hyperevm/evm_trace_call.json","openapi/hyperliquid_node_api/hyperevm/evm_trace_call_many.json","openapi/hyperliquid_node_api/hyperevm/evm_trace_filter.json","openapi/hyperliquid_node_api/hyperevm/evm_trace_raw_transaction.json","openapi/hyperliquid_node_api/hyperevm/evm_trace_replay_block_transactions.json","openapi/hyperliquid_node_api/hyperevm/evm_trace_replay_transaction.json","openapi/hyperliquid_node_api/hypercore_info/info_batch_clearinghouse_states.json","openapi/hyperliquid_node_api/hypercore_info/info_funding_history.json","openapi/hyperliquid_node_api/hypercore_info/info_predicted_fundings.json","openapi/hyperliquid_node_api/hypercore_info/info_spot_meta_and_asset_ctxs.json","openapi/hyperliquid_node_api/hypercore_info/info_token_details.json","openapi/hyperliquid_node_api/hypercore_info/info_user_funding.json","openapi/hyperliquid_node_api/hypercore_info/info_user_non_funding_ledger_updates.json","openapi/hyperliquid_node_api/hypercore_info/info_spotmeta.json","openapi/hyperliquid_node_api/hypercore_info/info_clearinghousestate.json","openapi/hyperliquid_node_api/hypercore_info/info_spotclearinghousestate.json","openapi/hyperliquid_node_api/hypercore_info/info_openorders.json","openapi/hyperliquid_node_api/hypercore_info/info_exchangestatus.json","openapi/hyperliquid_node_api/hypercore_info/info_frontendopenorders.json","openapi/hyperliquid_node_api/hypercore_info/info_liquidatable.json","openapi/hyperliquid_node_api/hypercore_info/info_activeassetdata.json","openapi/hyperliquid_node_api/hypercore_info/info_maxmarketorderntls.json","openapi/hyperliquid_node_api/hypercore_info/info_vaultsummaries.json","openapi/hyperliquid_node_api/hypercore_info/info_uservaultequities.json","openapi/hyperliquid_node_api/hypercore_info/info_leadingvaults.json","openapi/hyperliquid_node_api/hypercore_info/info_extraagents.json","openapi/hyperliquid_node_api/hypercore_info/info_subaccounts.json","openapi/hyperliquid_node_api/hypercore_info/info_userfees.json","openapi/hyperliquid_node_api/hypercore_info/info_userratelimit.json","openapi/hyperliquid_node_api/hypercore_info/info_spotdeploystate.json","openapi/hyperliquid_node_api/hypercore_info/info_perpdeployauctionstatus.json","openapi/hyperliquid_node_api/hypercore_info/info_delegations.json","openapi/hyperliquid_node_api/hypercore_info/info_perpdexs.json","openapi/hyperliquid_node_api/hypercore_info/info_delegator_summary.json","openapi/hyperliquid_node_api/hypercore_info/info_delegator_history.json","openapi/hyperliquid_node_api/hypercore_info/info_delegator_rewards.json","openapi/hyperliquid_node_api/hypercore_info/info_max_builder_fee.json","openapi/hyperliquid_node_api/hypercore_info/info_user_to_multi_sig_signers.json","openapi/hyperliquid_node_api/hypercore_info/info_user_role.json","openapi/hyperliquid_node_api/hypercore_info/info_perps_at_open_interest_cap.json","openapi/hyperliquid_node_api/hypercore_info/info_validator_l1_votes.json","openapi/hyperliquid_node_api/hypercore_info/info_web_data2.json","openapi/hyperliquid_node_api/hypercore_info/info_allmids.json","openapi/hyperliquid_node_api/hypercore_info/info_user_fills.json","openapi/hyperliquid_node_api/hypercore_info/info_user_fills_by_time.json","openapi/hyperliquid_node_api/hypercore_info/info_portfolio.json","openapi/hyperliquid_node_api/hypercore_info/info_referral.json","openapi/hyperliquid_node_api/hypercore_info/info_order_status.json","openapi/hyperliquid_node_api/hypercore_info/info_l2_book.json","openapi/hyperliquid_node_api/hypercore_info/info_candle_snapshot.json","openapi/hyperliquid_node_api/hypercore_info/info_historical_orders.json","openapi/hyperliquid_node_api/hypercore_info/info_user_twap_slice_fills.json","openapi/hyperliquid_node_api/hypercore_info/info_recent_trades.json","openapi/hyperliquid_node_api/hypercore_info/info_vault_details.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_place_order.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_cancel_order.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_cancel_by_cloid.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_schedule_cancel.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_modify_order.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_batch_modify.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_update_leverage.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_update_isolated_margin.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_usd_send.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_spot_send.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_withdraw.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_spot_perp_transfer.json","openapi/hyperliquid_node_api/hypercore_info/info_web_data3.json","openapi/hyperliquid_node_api/hypercore_info/info_user_dex_abstraction.json","openapi/hyperliquid_node_api/hypercore_info/info_user_abstraction.json","openapi/hyperliquid_node_api/hypercore_info/info_borrow_lend_user_state.json","openapi/hyperliquid_node_api/hypercore_info/info_borrow_lend_reserve_state.json","openapi/hyperliquid_node_api/hypercore_info/info_all_borrow_lend_reserve_states.json","openapi/hyperliquid_node_api/hypercore_info/info_all_perp_metas.json","openapi/hyperliquid_node_api/hypercore_info/info_perp_annotation.json","openapi/hyperliquid_node_api/hypercore_info/info_perp_categories.json","openapi/hyperliquid_node_api/hypercore_info/info_perp_dex_limits.json","openapi/hyperliquid_node_api/hypercore_info/info_perp_dex_status.json","openapi/hyperliquid_node_api/hypercore_info/info_spot_pair_deploy_auction_status.json","openapi/hyperliquid_node_api/hypercore_info/info_margin_table.json","openapi/hyperliquid_node_api/hypercore_info/info_aligned_quote_token_info.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_twap_order.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_twap_cancel.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_approve_agent.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_approve_builder_fee.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_set_referrer.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_create_sub_account.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_sub_account_transfer.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_sub_account_spot_transfer.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_convert_to_multi_sig_user.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_multi_sig.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_user_set_abstraction.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_agent_set_abstraction.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_user_dex_abstraction.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_agent_enable_dex_abstraction.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_evm_user_modify.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_send_asset.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_send_to_evm_with_data.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_vault_transfer.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_token_delegate.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_c_deposit.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_c_withdraw.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_spot_deploy.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_perp_deploy.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_c_signer_action.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_c_validator_action.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_validator_l1_stream.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_noop.json","openapi/hyperliquid_node_api/hypercore_exchange/exchange_reserve_request_weight.json","openapi/hyperliquid_node_api/hyperevm/evm_debug_trace_block_by_number.json","openapi/ethereum_node_api/transaction_info/eth_getTransactionReceipt.json","openapi/ethereum_node_api/transaction_info/eth_getTransactionByBlockNumberAndIndex.json","openapi/ethereum_node_api/transaction_info/eth_getBlockReceipts.json","openapi/ethereum_node_api/transaction_info/eth_getTransactionByHash.json","openapi/ethereum_node_api/transaction_info/eth_newPendingTransactionFilter.json","openapi/ethereum_node_api/transaction_info/eth_getTransactionByBlockHashAndIndex.json","openapi/ethereum_node_api/chain_info/eth_syncing.json","openapi/ethereum_node_api/chain_info/eth_chainId.json","openapi/ethereum_node_api/debug_and_trace/custom_js_tracer.json","openapi/ethereum_node_api/debug_and_trace/debug_traceTransaction.json","openapi/ethereum_node_api/debug_and_trace/debug_traceCall.json","openapi/ethereum_node_api/debug_and_trace/trace_transaction.json","openapi/ethereum_node_api/debug_and_trace/debug_traceBlockByHash.json","openapi/ethereum_node_api/debug_and_trace/trace_block.json","openapi/ethereum_node_api/debug_and_trace/debug_traceBlockByNumber.json","openapi/ethereum_node_api/gas_data/eth_gasPrice.json","openapi/ethereum_node_api/gas_data/eth_estimateGas.json","openapi/ethereum_node_api/gas_data/eth_maxPriorityFeePerGas.json","openapi/ethereum_node_api/filter_handling/eth_getFilterChanges.json","openapi/ethereum_node_api/filter_handling/eth_uninstallFilter.json","openapi/ethereum_node_api/client_info/net_peerCount.json","openapi/ethereum_node_api/client_info/net_listening.json","openapi/ethereum_node_api/client_info/web3_clientVersion.json","openapi/ethereum_node_api/blocks_info/eth_getBlockByNumber.json","openapi/ethereum_node_api/blocks_info/eth_getBlockTransactionCountByHash.json","openapi/ethereum_node_api/blocks_info/eth_blockNumber.json","openapi/ethereum_node_api/blocks_info/eth_newBlockFilter.json","openapi/ethereum_node_api/blocks_info/eth_getBlockByHash.json","openapi/ethereum_node_api/blocks_info/eth_getBlockTransactionCountByNumber.json","openapi/ethereum_node_api/accounts_info/eth_getStorageAt.json","openapi/ethereum_node_api/accounts_info/eth_getBalance.json","openapi/ethereum_node_api/accounts_info/eth_getTransactionCount.json","openapi/ethereum_node_api/accounts_info/eth_getCode.json","openapi/ethereum_node_api/accounts_info/eth_getProof.json","openapi/ethereum_node_api/logs_and_events/eth_newFilter.json","openapi/ethereum_node_api/logs_and_events/eth_getLogs.json","openapi/ethereum_node_api/execute_transactions/eth_simulateV1.json","openapi/ethereum_node_api/execute_transactions/eth_call.json","openapi/ethereum_node_api/execute_transactions/eth_sendRawTransaction.json","openapi/ethereum_beacon_chain_api/configuration_info/node_config.json","openapi/ethereum_beacon_chain_api/configuration_info/genesis_data.json","openapi/ethereum_beacon_chain_api/configuration_info/fork_schedule.json","openapi/ethereum_beacon_chain_api/configuration_info/fork_version_by_state_id.json","openapi/ethereum_beacon_chain_api/configuration_info/deposit_contract.json","openapi/ethereum_beacon_chain_api/state/getStateRoot.json","openapi/ethereum_beacon_chain_api/state/getFinalityCheckpoints.json","openapi/ethereum_beacon_chain_api/state/getCommitteesByStateIdEpochIndexAndSlot.json","openapi/ethereum_beacon_chain_api/state/getBlobsByBlockId.json","openapi/ethereum_beacon_chain_api/state/getSyncCommitteeContribution.json","openapi/ethereum_beacon_chain_api/state/getBeaconBlockRootByBlockId.json","openapi/ethereum_beacon_chain_api/state/getBeaconBlocksByBlockId.json","openapi/ethereum_beacon_chain_api/state/getBeaconHeadersByBlockId.json","openapi/ethereum_beacon_chain_api/state/getBeaconHeadersBySlotAndParentRoot.json","openapi/ethereum_beacon_chain_api/state/getSyncCommitteesByStateIdAndEpoch.json","openapi/ethereum_beacon_chain_api/events/subscribe_to_events.json","openapi/ethereum_beacon_chain_api/validatiors_info/validator_information_by_state_id.json","openapi/ethereum_beacon_chain_api/validatiors_info/proposer_duties.json","openapi/ethereum_beacon_chain_api/validatiors_info/validator_information_by_state_id_or_public_key.json","openapi/ethereum_beacon_chain_api/validatiors_info/attestation_data.json","openapi/ethereum_beacon_chain_api/validatiors_info/produce_unsigned_blinded_block.json","openapi/ethereum_beacon_chain_api/validatiors_info/voluntary_exits.json","openapi/ethereum_beacon_chain_api/validatiors_info/produce_unsigned_block.json","openapi/ethereum_beacon_chain_api/validatiors_info/attestation_of_beacon_block_by_block_id.json","openapi/ethereum_beacon_chain_api/validatiors_info/proposer_slashings.json","openapi/ethereum_beacon_chain_api/validatiors_info/validator_balances.json","openapi/ethereum_beacon_chain_api/validatiors_info/attester_slashings.json","openapi/ethereum_beacon_chain_api/validatiors_info/beacon_pool_attestations.json","openapi/polygon_node_api/transaction_info/eth_getTransactionReceipt.json","openapi/polygon_node_api/transaction_info/eth_getTransactionByBlockNumberAndIndex.json","openapi/polygon_node_api/transaction_info/eth_getBlockReceipts.json","openapi/polygon_node_api/transaction_info/eth_getTransactionByHash.json","openapi/polygon_node_api/transaction_info/eth_newPendingTransactionFilter.json","openapi/polygon_node_api/transaction_info/eth_getTransactionByBlockHashAndIndex.json","openapi/polygon_node_api/chain_info/eth_syncing.json","openapi/polygon_node_api/chain_info/eth_chainId.json","openapi/polygon_node_api/debug_and_trace/debug_traceTransaction.json","openapi/polygon_node_api/debug_and_trace/debug_traceCall.json","openapi/polygon_node_api/debug_and_trace/debug_traceBlockByHash.json","openapi/polygon_node_api/debug_and_trace/debug_traceBlockByNumber.json","openapi/polygon_node_api/gas_data/eth_gasPrice.json","openapi/polygon_node_api/gas_data/eth_estimateGas.json","openapi/polygon_node_api/filter_handling/eth_getFilterChanges.json","openapi/polygon_node_api/filter_handling/eth_uninstallFilter.json","openapi/polygon_node_api/client_info/net_peerCount.json","openapi/polygon_node_api/client_info/net_listening.json","openapi/polygon_node_api/client_info/web3_clientVersion.json","openapi/polygon_node_api/blocks_info/eth_getBlockByNumber.json","openapi/polygon_node_api/blocks_info/eth_getBlockTransactionCountByHash.json","openapi/polygon_node_api/blocks_info/eth_blockNumber.json","openapi/polygon_node_api/blocks_info/eth_newBlockFilter.json","openapi/polygon_node_api/blocks_info/eth_getBlockByHash.json","openapi/polygon_node_api/blocks_info/eth_getBlockTransactionCountByNumber.json","openapi/polygon_node_api/account_info/eth_getStorageAt.json","openapi/polygon_node_api/account_info/eth_getBalance.json","openapi/polygon_node_api/account_info/eth_getTransactionCount.json","openapi/polygon_node_api/account_info/eth_getCode.json","openapi/polygon_node_api/logs_and_events/eth_newFilter.json","openapi/polygon_node_api/logs_and_events/eth_getLogs.json","openapi/polygon_node_api/execute_transactions/eth_call.json","openapi/polygon_node_api/execute_transactions/eth_sendRawTransaction.json","openapi/bnb_node_api/eth_getBlockByNumber.json","openapi/bnb_node_api/eth_getTransactionReceipt.json","openapi/bnb_node_api/eth_getStorageAt.json","openapi/bnb_node_api/eth_getTransactionByBlockNumberAndIndex.json","openapi/bnb_node_api/eth_getBlockTransactionCountByHash.json","openapi/bnb_node_api/eth_getBalance.json","openapi/bnb_node_api/net_peerCount.json","openapi/bnb_node_api/eth_gasPrice.json","openapi/bnb_node_api/trace_replayBlockTransactions.json","openapi/bnb_node_api/trace_callMany.json","openapi/bnb_node_api/eth_blockNumber.json","openapi/bnb_node_api/trace_get.json","openapi/bnb_node_api/net_listening.json","openapi/bnb_node_api/custom_js_tracer.json","openapi/bnb_node_api/eth_newBlockFilter.json","openapi/bnb_node_api/eth_getFilterChanges.json","openapi/bnb_node_api/debug_traceTransaction.json","openapi/bnb_node_api/eth_estimateGas.json","openapi/bnb_node_api/eth_getTransactionCount.json","openapi/bnb_node_api/eth_getBlockReceipts.json","openapi/bnb_node_api/debug_traceCall.json","openapi/bnb_node_api/trace_replayTransaction.json","openapi/bnb_node_api/eth_getTransactionByHash.json","openapi/bnb_node_api/eth_newPendingTransactionFilter.json","openapi/bnb_node_api/eth_syncing.json","openapi/bnb_node_api/trace_transaction.json","openapi/bnb_node_api/debug_traceBlockByHash.json","openapi/bnb_node_api/eth_getBlockByHash.json","openapi/bnb_node_api/eth_call.json","openapi/bnb_node_api/eth_chainId.json","openapi/bnb_node_api/trace_block.json","openapi/bnb_node_api/eth_getBlockTransactionCountByNumber.json","openapi/bnb_node_api/eth_uninstallFilter.json","openapi/bnb_node_api/trace_call.json","openapi/bnb_node_api/eth_getCode.json","openapi/bnb_node_api/eth_maxPriorityFeePerGas.json","openapi/bnb_node_api/web3_clientVersion.json","openapi/bnb_node_api/eth_getTransactionByBlockHashAndIndex.json","openapi/bnb_node_api/eth_newFilter.json","openapi/bnb_node_api/eth_getLogs.json","openapi/bnb_node_api/eth_getProof.json","openapi/bnb_node_api/debug_traceBlockByNumber.json","openapi/bnb_node_api/eth_sendRawTransaction.json","openapi/base_node_api/eth_protocolVersion.json","openapi/base_node_api/eth_getUncleByBlockNumberAndIndex.json","openapi/base_node_api/eth_getBlockByNumber.json","openapi/base_node_api/eth_getTransactionReceipt.json","openapi/base_node_api/eth_getStorageAt.json","openapi/base_node_api/debug_traceCallMany.json","openapi/base_node_api/eth_getTransactionByBlockNumberAndIndex.json","openapi/base_node_api/eth_getBlockTransactionCountByHash.json","openapi/base_node_api/eth_getUncleCountByBlockHash.json","openapi/base_node_api/eth_getBalance.json","openapi/base_node_api/eth_getRawTransactionByBlockNumberAndIndex.json","openapi/base_node_api/debug_getModifiedAccountsByNumber.json","openapi/base_node_api/eth_gasPrice.json","openapi/base_node_api/trace_replayBlockTransactions.json","openapi/base_node_api/eth_blockNumber.json","openapi/base_node_api/trace_get.json","openapi/base_node_api/eth_getFilterLogs.json","openapi/base_node_api/eth_getUncleCountByBlockNumber.json","openapi/base_node_api/eth_createAccessList.json","openapi/base_node_api/net_listening.json","openapi/base_node_api/eth_newBlockFilter.json","openapi/base_node_api/eth_getFilterChanges.json","openapi/base_node_api/debug_traceTransaction.json","openapi/base_node_api/eth_estimateGas.json","openapi/base_node_api/eth_getTransactionCount.json","openapi/base_node_api/eth_getBlockReceipts.json","openapi/base_node_api/debug_traceCall.json","openapi/base_node_api/trace_replayTransaction.json","openapi/base_node_api/eth_getTransactionByHash.json","openapi/base_node_api/eth_getRawTransactionByHash.json","openapi/base_node_api/eth_newPendingTransactionFilter.json","openapi/base_node_api/eth_syncing.json","openapi/base_node_api/trace_transaction.json","openapi/base_node_api/debug_traceBlockByHash.json","openapi/base_node_api/eth_accounts.json","openapi/base_node_api/eth_getBlockByHash.json","openapi/base_node_api/web3_sha3.json","openapi/base_node_api/eth_callMany.json","openapi/base_node_api/eth_call.json","openapi/base_node_api/eth_chainId.json","openapi/base_node_api/eth_feeHistory.json","openapi/base_node_api/trace_block.json","openapi/base_node_api/eth_getBlockTransactionCountByNumber.json","openapi/base_node_api/eth_uninstallFilter.json","openapi/base_node_api/debug_storageRangeAt.json","openapi/base_node_api/trace_call.json","openapi/base_node_api/eth_getCode.json","openapi/base_node_api/eth_maxPriorityFeePerGas.json","openapi/base_node_api/debug_getModifiedAccountsByHash.json","openapi/base_node_api/web3_clientVersion.json","openapi/base_node_api/trace_callMany_method.json","openapi/base_node_api/eth_getRawTransactionByBlockHashAndIndex.json","openapi/base_node_api/eth_getTransactionByBlockHashAndIndex.json","openapi/base_node_api/eth_getUncleByBlockHashAndIndex.json","openapi/base_node_api/eth_newFilter.json","openapi/base_node_api/eth_getLogs.json","openapi/base_node_api/eth_getProof.json","openapi/base_node_api/debug_traceBlockByNumber.json","openapi/base_node_api/eth_sendRawTransaction.json","openapi/base_node_api/eth_sendRawTransactionSync.json","openapi/avalanche_node_api/chain_info/eth_syncing.json","openapi/avalanche_node_api/chain_info/eth_chainId.json","openapi/avalanche_node_api/debug_and_trace/debug_traceTransaction.json","openapi/avalanche_node_api/debug_and_trace/debug_traceCall.json","openapi/avalanche_node_api/debug_and_trace/debug_traceBlockByHash.json","openapi/avalanche_node_api/debug_and_trace/debug_traceBlockByNumber.json","openapi/avalanche_node_api/gas_data/eth_gasPrice.json","openapi/avalanche_node_api/gas_data/eth_estimateGas.json","openapi/avalanche_node_api/transactions_info/eth_getTransactionReceipt.json","openapi/avalanche_node_api/transactions_info/eth_getTransactionByBlockNumberAndIndex.json","openapi/avalanche_node_api/transactions_info/eth_getTransactionByHash.json","openapi/avalanche_node_api/transactions_info/eth_newPendingTransactionFilter.json","openapi/avalanche_node_api/transactions_info/eth_getTransactionByBlockHashAndIndex.json","openapi/avalanche_node_api/filter_handling/eth_getFilterChanges.json","openapi/avalanche_node_api/filter_handling/eth_uninstallFilter.json","openapi/avalanche_node_api/client_info/net_listening.json","openapi/avalanche_node_api/client_info/web3_clientVersion.json","openapi/avalanche_node_api/blocks_info/eth_getBlockByNumber.json","openapi/avalanche_node_api/blocks_info/eth_getBlockTransactionCountByHash.json","openapi/avalanche_node_api/blocks_info/eth_blockNumber.json","openapi/avalanche_node_api/blocks_info/eth_newBlockFilter.json","openapi/avalanche_node_api/blocks_info/eth_getBlockByHash.json","openapi/avalanche_node_api/blocks_info/eth_getBlockTransactionCountByNumber.json","openapi/avalanche_node_api/accounts_info/eth_getStorageAt.json","openapi/avalanche_node_api/accounts_info/eth_getBalance.json","openapi/avalanche_node_api/accounts_info/eth_getTransactionCount.json","openapi/avalanche_node_api/accounts_info/eth_getCode.json","openapi/avalanche_node_api/logs_and_events/eth_newFilter.json","openapi/avalanche_node_api/logs_and_events/eth_getLogs.json","openapi/avalanche_node_api/execute_transactions/eth_call.json","openapi/avalanche_node_api/execute_transactions/eth_sendRawTransaction.json","openapi/ton_node_api/v2/getMasterchainBlockSignatures.json","openapi/ton_node_api/v2/getBlockTransactionsExt.json","openapi/ton_node_api/v2/runGetMethod.json","openapi/ton_node_api/v2/getAddressState.json","openapi/ton_node_api/v2/unpackAddress.json","openapi/ton_node_api/v2/lookupBlock.json","openapi/ton_node_api/v2/tryLocateTx.json","openapi/ton_node_api/v2/tryLocateResultTx.json","openapi/ton_node_api/v2/getTransactions.json","openapi/ton_node_api/v2/packAddress.json","openapi/ton_node_api/v2/getExtendedAddressInformation.json","openapi/ton_node_api/v2/getBlockHeader.json","openapi/ton_node_api/v2/getMasterchainInfo.json","openapi/ton_node_api/v2/getWalletInformation.json","openapi/ton_node_api/v2/tryLocateSourceTx.json","openapi/ton_node_api/v2/getBlockTransactions.json","openapi/ton_node_api/v2/getAddressInformation.json","openapi/ton_node_api/v2/detectAddress.json","openapi/ton_node_api/v2/getShardBlockProof.json","openapi/ton_node_api/v2/getAddressBalance.json","openapi/ton_node_api/v2/getConsensusBlock.json","openapi/ton_node_api/v2/shards.json","openapi/ton_node_api/v2/getConfigParam.json","openapi/ton_node_api/v2/getTokenData.json","openapi/ton_node_api/v3/runGetMethod.json","openapi/ton_node_api/v3/getNFTTransfers.json","openapi/ton_node_api/v3/getMasterchainBlockShardState.json","openapi/ton_node_api/v3/getNFTItems.json","openapi/ton_node_api/v3/getWalletInfo.json","openapi/ton_node_api/v3/getTransactions.json","openapi/ton_node_api/v3/getTransactionsByMasterchainBlock.json","openapi/ton_node_api/v3/getMasterchainInfo.json","openapi/ton_node_api/v3/estimateFee.json","openapi/ton_node_api/v3/getAdjacentTransactions.json","openapi/ton_node_api/v3/getTransactionsByMessage.json","openapi/ton_node_api/v3/getJettonMasters.json","openapi/ton_node_api/v3/getNFTCollections.json","openapi/ton_node_api/v3/getJettonWallets.json","openapi/ton_node_api/v3/getBlocks.json","openapi/ton_node_api/v3/getJettonTransfers.json","openapi/ton_node_api/v3/getAccountInfo.json","openapi/ton_node_api/v3/getAddressBookInfo.json","openapi/ton_node_api/v3/getMessages.json","openapi/ton_node_api/v3/getJettonBurns.json","openapi/ton_node_api/v3/getMasterchainBlockShards.json","openapi/arbitrum_node_api/transaction_info/eth_getTransactionReceipt.json","openapi/arbitrum_node_api/transaction_info/eth_getTransactionByBlockNumberAndIndex.json","openapi/arbitrum_node_api/transaction_info/eth_getTransactionByHash.json","openapi/arbitrum_node_api/transaction_info/eth_getTransactionByBlockHashAndIndex.json","openapi/arbitrum_node_api/transaction_info/eth_simulateV1.json","openapi/arbitrum_node_api/chain_info/eth_syncing.json","openapi/arbitrum_node_api/chain_info/eth_chainId.json","openapi/arbitrum_node_api/debug_and_trace/arbtrace_callMany.json","openapi/arbitrum_node_api/debug_and_trace/arbtrace_transaction.json","openapi/arbitrum_node_api/debug_and_trace/arbtrace_filter.json","openapi/arbitrum_node_api/debug_and_trace/arbtrace_replayBlockTransactions.json","openapi/arbitrum_node_api/debug_and_trace/arbtrace_get.json","openapi/arbitrum_node_api/debug_and_trace/arbtrace_replayTransaction.json","openapi/arbitrum_node_api/debug_and_trace/arbtrace_block.json","openapi/arbitrum_node_api/debug_and_trace/arbtrace_call.json","openapi/arbitrum_node_api/gas_data/eth_gasPrice.json","openapi/arbitrum_node_api/gas_data/eth_estimateGas.json","openapi/arbitrum_node_api/filter_handling/eth_getFilterChanges.json","openapi/arbitrum_node_api/filter_handling/eth_uninstallFilter.json","openapi/arbitrum_node_api/client_info/web3_clientVersion.json","openapi/arbitrum_node_api/blocks_info/eth_getBlockByNumber.json","openapi/arbitrum_node_api/blocks_info/eth_getBlockTransactionCountByHash.json","openapi/arbitrum_node_api/blocks_info/eth_blockNumber.json","openapi/arbitrum_node_api/blocks_info/eth_newBlockFilter.json","openapi/arbitrum_node_api/blocks_info/eth_getBlockByHash.json","openapi/arbitrum_node_api/blocks_info/eth_getBlockTransactionCountByNumber.json","openapi/arbitrum_node_api/accounts_info/eth_getStorageAt.json","openapi/arbitrum_node_api/accounts_info/eth_getBalance.json","openapi/arbitrum_node_api/accounts_info/eth_getTransactionCount.json","openapi/arbitrum_node_api/accounts_info/eth_getCode.json","openapi/arbitrum_node_api/logs_and_events/eth_newFilter.json","openapi/arbitrum_node_api/logs_and_events/eth_getLogs.json","openapi/arbitrum_node_api/execute_transactions/eth_call.json","openapi/arbitrum_node_api/execute_transactions/eth_sendRawTransaction.json","openapi/zksync_node_api/zks_getTestnetPaymaster.json","openapi/zksync_node_api/zks_estimateFee.json","openapi/zksync_node_api/zks_estimateGasL1ToL2.json","openapi/zksync_node_api/zks_getBytecodeByHash.json","openapi/zksync_node_api/zks_getMainContract.json","openapi/zksync_node_api/zks_L1ChainId.json","openapi/zksync_node_api/zks_getBlockDetails.json","openapi/zksync_node_api/zks_getBridgeContracts.json","openapi/zksync_node_api/zks_getL2ToL1LogProof.json","openapi/zksync_node_api/zks_getAllAccountBalances.json","openapi/zksync_node_api/zks_L1BatchNumber.json","openapi/zksync_node_api/zks_getL1BatchBlockRange.json","openapi/zksync_node_api/zks_getL1BatchDetails.json","openapi/zksync_node_api/zks_getTransactionDetails.json","openapi/zksync_node_api/zks_getRawBlockTransactions.json","openapi/optimism_node_api/eth_getBlockByNumber.json","openapi/optimism_node_api/eth_getTransactionReceipt.json","openapi/optimism_node_api/eth_getStorageAt.json","openapi/optimism_node_api/debug_traceCallMany.json","openapi/optimism_node_api/eth_getTransactionByBlockNumberAndIndex.json","openapi/optimism_node_api/eth_getBlockTransactionCountByHash.json","openapi/optimism_node_api/eth_getUncleCountByBlockHash.json","openapi/optimism_node_api/eth_getBalance.json","openapi/optimism_node_api/eth_getRawTransactionByBlockNumberAndIndex.json","openapi/optimism_node_api/debug_getModifiedAccountsByNumber.json","openapi/optimism_node_api/eth_gasPrice.json","openapi/optimism_node_api/eth_blockNumber.json","openapi/optimism_node_api/eth_getFilterLogs.json","openapi/optimism_node_api/eth_getUncleCountByBlockNumber.json","openapi/optimism_node_api/eth_createAccessList.json","openapi/optimism_node_api/net_listening.json","openapi/optimism_node_api/eth_newBlockFilter.json","openapi/optimism_node_api/eth_getFilterChanges.json","openapi/optimism_node_api/debug_traceTransaction.json","openapi/optimism_node_api/eth_estimateGas.json","openapi/optimism_node_api/eth_getTransactionCount.json","openapi/optimism_node_api/eth_getBlockReceipts.json","openapi/optimism_node_api/debug_traceCall.json","openapi/optimism_node_api/eth_getTransactionByHash.json","openapi/optimism_node_api/eth_getRawTransactionByHash.json","openapi/optimism_node_api/eth_syncing.json","openapi/optimism_node_api/debug_traceBlockByHash.json","openapi/optimism_node_api/eth_getBlockByHash.json","openapi/optimism_node_api/web3_sha3.json","openapi/optimism_node_api/eth_callMany.json","openapi/optimism_node_api/eth_call.json","openapi/optimism_node_api/eth_chainId.json","openapi/optimism_node_api/eth_feeHistory.json","openapi/optimism_node_api/eth_getBlockTransactionCountByNumber.json","openapi/optimism_node_api/eth_uninstallFilter.json","openapi/optimism_node_api/debug_storageRangeAt.json","openapi/optimism_node_api/eth_getCode.json","openapi/optimism_node_api/eth_maxPriorityFeePerGas.json","openapi/optimism_node_api/debug_getModifiedAccountsByHash.json","openapi/optimism_node_api/web3_clientVersion.json","openapi/optimism_node_api/eth_getRawTransactionByBlockHashAndIndex.json","openapi/optimism_node_api/eth_getTransactionByBlockHashAndIndex.json","openapi/optimism_node_api/eth_newFilter.json","openapi/optimism_node_api/eth_getLogs.json","openapi/optimism_node_api/eth_getProof.json","openapi/optimism_node_api/debug_traceBlockByNumber.json","openapi/optimism_node_api/eth_sendRawTransaction.json","openapi/solana_node_api/getLatestBlockhash.json","openapi/solana_node_api/getRecentPrioritizationFees.json","openapi/solana_node_api/getInflationRate.json","openapi/solana_node_api/getBlockProduction.json","openapi/solana_node_api/getHighestSnapshotSlot.json","openapi/solana_node_api/getMaxShredInsertSlot.json","openapi/solana_node_api/getFirstAvailableBlock.json","openapi/solana_node_api/getBlockTime.json","openapi/solana_node_api/getMinimumBalanceForRentExemption.json","openapi/solana_node_api/getProgramAccounts.json","openapi/solana_node_api/getBlock.json","openapi/solana_node_api/getInflationReward.json","openapi/solana_node_api/getFeeForMessage.json","openapi/solana_node_api/getClusterNodes.json","openapi/solana_node_api/getStakeMinimumDelegation.json","openapi/solana_node_api/getTokenAccountsByOwner.json","openapi/solana_node_api/simulateTransaction.json","openapi/solana_node_api/sendTransaction.json","openapi/solana_node_api/getTransactionCount.json","openapi/solana_node_api/getVersion.json","openapi/solana_node_api/getVoteAccounts.json","openapi/solana_node_api/getSlotLeaders.json","openapi/solana_node_api/minimumLedgerSlot.json","openapi/solana_node_api/getTokenSupply.json","openapi/solana_node_api/getTokenAccountsByDelegate.json","openapi/solana_node_api/getHealth.json","openapi/solana_node_api/getGenesisHash.json","openapi/solana_node_api/getSignaturesForAddress.json","openapi/solana_node_api/isBlockhashValid.json","openapi/solana_node_api/getRecentBlockhash.json","openapi/solana_node_api/getBalance.json","openapi/solana_node_api/getSignatureStatuses.json","openapi/solana_node_api/getLeaderSchedule.json","openapi/solana_node_api/getSlotLeader.json","openapi/solana_node_api/getEpochInfo.json","openapi/solana_node_api/getEpochSchedule.json","openapi/solana_node_api/getTokenAccountBalance.json","openapi/solana_node_api/getLargestAccounts.json","openapi/solana_node_api/getRecentPerformanceSamples.json","openapi/solana_node_api/getSupply.json","openapi/solana_node_api/getBlocks.json","openapi/solana_node_api/getInflationGovernor.json","openapi/solana_node_api/getIdentity.json","openapi/solana_node_api/getAccountInfo.json","openapi/solana_node_api/getTokenLargestAccounts.json","openapi/solana_node_api/getBlockCommitment.json","openapi/solana_node_api/getMaxRetransmitSlot.json","openapi/solana_node_api/getMultipleAccounts.json","openapi/solana_node_api/getSlot.json","openapi/solana_node_api/getBlockHeight.json","openapi/solana_node_api/getTransaction.json","openapi/solana_node_api/getBlocksWithLimit.json","openapi/ronin_node_api/eth_getBlockByNumber.json","openapi/ronin_node_api/eth_getTransactionReceipt.json","openapi/ronin_node_api/eth_getStorageAt.json","openapi/ronin_node_api/eth_getTransactionByBlockNumberAndIndex.json","openapi/ronin_node_api/eth_getBlockTransactionCountByHash.json","openapi/ronin_node_api/eth_getBalance.json","openapi/ronin_node_api/net_peerCount.json","openapi/ronin_node_api/eth_gasPrice.json","openapi/ronin_node_api/eth_blockNumber.json","openapi/ronin_node_api/net_listening.json","openapi/ronin_node_api/eth_newBlockFilter.json","openapi/ronin_node_api/eth_getFilterChanges.json","openapi/ronin_node_api/debug_traceTransaction.json","openapi/ronin_node_api/eth_estimateGas.json","openapi/ronin_node_api/eth_getTransactionCount.json","openapi/ronin_node_api/debug_traceCall.json","openapi/ronin_node_api/eth_getTransactionByHash.json","openapi/ronin_node_api/eth_syncing.json","openapi/ronin_node_api/debug_traceBlockByHash.json","openapi/ronin_node_api/eth_getBlockByHash.json","openapi/ronin_node_api/eth_call.json","openapi/ronin_node_api/eth_chainId.json","openapi/ronin_node_api/eth_getBlockTransactionCountByNumber.json","openapi/ronin_node_api/eth_uninstallFilter.json","openapi/ronin_node_api/eth_getCode.json","openapi/ronin_node_api/eth_maxPriorityFeePerGas.json","openapi/ronin_node_api/web3_clientVersion.json","openapi/ronin_node_api/eth_getTransactionByBlockHashAndIndex.json","openapi/ronin_node_api/eth_newFilter.json","openapi/ronin_node_api/eth_getLogs.json","openapi/ronin_node_api/debug_traceBlockByNumber.json","openapi/ronin_node_api/eth_sendRawTransaction.json","openapi/gnosis_node_api/transaction_info/eth_getTransactionReceipt.json","openapi/gnosis_node_api/transaction_info/eth_getTransactionByBlockNumberAndIndex.json","openapi/gnosis_node_api/transaction_info/eth_getTransactionByHash.json","openapi/gnosis_node_api/transaction_info/eth_newPendingTransactionFilter.json","openapi/gnosis_node_api/transaction_info/eth_getTransactionByBlockHashAndIndex.json","openapi/gnosis_node_api/chain_info/eth_syncing.json","openapi/gnosis_node_api/chain_info/eth_chainId.json","openapi/gnosis_node_api/gas_data/eth_gasPrice.json","openapi/gnosis_node_api/gas_data/eth_estimateGas.json","openapi/gnosis_node_api/filter_handling/eth_getFilterChanges.json","openapi/gnosis_node_api/filter_handling/eth_uninstallFilter.json","openapi/gnosis_node_api/client_info/net_peerCount.json","openapi/gnosis_node_api/client_info/net_listening.json","openapi/gnosis_node_api/client_info/web3_clientVersion.json","openapi/gnosis_node_api/blocks_info/eth_getBlockByNumber.json","openapi/gnosis_node_api/blocks_info/eth_getBlockTransactionCountByHash.json","openapi/gnosis_node_api/blocks_info/eth_blockNumber.json","openapi/gnosis_node_api/blocks_info/eth_newBlockFilter.json","openapi/gnosis_node_api/blocks_info/eth_getBlockByHash.json","openapi/gnosis_node_api/blocks_info/eth_getBlockTransactionCountByNumber.json","openapi/gnosis_node_api/accounts_info/eth_getStorageAt.json","openapi/gnosis_node_api/accounts_info/eth_getBalance.json","openapi/gnosis_node_api/accounts_info/eth_getTransactionCount.json","openapi/gnosis_node_api/accounts_info/eth_getCode.json","openapi/gnosis_node_api/logs_and_events/eth_newFilter.json","openapi/gnosis_node_api/logs_and_events/eth_getLogs.json","openapi/gnosis_node_api/execute_transactions/eth_call.json","openapi/gnosis_node_api/execute_transactions/eth_sendRawTransaction.json","openapi/cronos_node_api/eth_getBlockByNumber.json","openapi/cronos_node_api/eth_getTransactionReceipt.json","openapi/cronos_node_api/eth_getStorageAt.json","openapi/cronos_node_api/eth_getTransactionByBlockNumberAndIndex.json","openapi/cronos_node_api/eth_getBlockTransactionCountByHash.json","openapi/cronos_node_api/eth_getBalance.json","openapi/cronos_node_api/net_peerCount.json","openapi/cronos_node_api/eth_gasPrice.json","openapi/cronos_node_api/eth_blockNumber.json","openapi/cronos_node_api/net_listening.json","openapi/cronos_node_api/eth_newBlockFilter.json","openapi/cronos_node_api/eth_getFilterChanges.json","openapi/cronos_node_api/eth_estimateGas.json","openapi/cronos_node_api/eth_getTransactionCount.json","openapi/cronos_node_api/eth_getTransactionByHash.json","openapi/cronos_node_api/eth_newPendingTransactionFilter.json","openapi/cronos_node_api/eth_syncing.json","openapi/cronos_node_api/eth_getBlockByHash.json","openapi/cronos_node_api/eth_call.json","openapi/cronos_node_api/eth_chainId.json","openapi/cronos_node_api/eth_getBlockTransactionCountByNumber.json","openapi/cronos_node_api/eth_uninstallFilter.json","openapi/cronos_node_api/eth_getCode.json","openapi/cronos_node_api/eth_maxPriorityFeePerGas.json","openapi/cronos_node_api/web3_clientVersion.json","openapi/cronos_node_api/eth_getTransactionByBlockHashAndIndex.json","openapi/cronos_node_api/eth_newFilter.json","openapi/cronos_node_api/eth_getLogs.json","openapi/cronos_node_api/eth_getProof.json","openapi/cronos_node_api/eth_sendRawTransaction.json","openapi/fantom_node_api/eth_getBlockByNumber.json","openapi/fantom_node_api/eth_getTransactionReceipt.json","openapi/fantom_node_api/eth_getStorageAt.json","openapi/fantom_node_api/eth_getTransactionByBlockNumberAndIndex.json","openapi/fantom_node_api/eth_getBlockTransactionCountByHash.json","openapi/fantom_node_api/eth_getBalance.json","openapi/fantom_node_api/net_peerCount.json","openapi/fantom_node_api/eth_gasPrice.json","openapi/fantom_node_api/eth_blockNumber.json","openapi/fantom_node_api/net_listening.json","openapi/fantom_node_api/eth_newBlockFilter.json","openapi/fantom_node_api/eth_getFilterChanges.json","openapi/fantom_node_api/eth_estimateGas.json","openapi/fantom_node_api/eth_getTransactionCount.json","openapi/fantom_node_api/eth_getTransactionByHash.json","openapi/fantom_node_api/eth_newPendingTransactionFilter.json","openapi/fantom_node_api/eth_syncing.json","openapi/fantom_node_api/eth_getBlockByHash.json","openapi/fantom_node_api/eth_call.json","openapi/fantom_node_api/eth_chainId.json","openapi/fantom_node_api/eth_getBlockTransactionCountByNumber.json","openapi/fantom_node_api/eth_uninstallFilter.json","openapi/fantom_node_api/eth_getCode.json","openapi/fantom_node_api/eth_maxPriorityFeePerGas.json","openapi/fantom_node_api/web3_clientVersion.json","openapi/fantom_node_api/eth_getTransactionByBlockHashAndIndex.json","openapi/fantom_node_api/eth_newFilter.json","openapi/fantom_node_api/eth_getLogs.json","openapi/fantom_node_api/eth_getProof.json","openapi/fantom_node_api/eth_sendRawTransaction.json","openapi/bitcoin_node_api/prioritisetransaction.json","openapi/bitcoin_node_api/getblockfilter.json","openapi/bitcoin_node_api/getrawtransaction.json","openapi/bitcoin_node_api/getchaintxstats.json","openapi/bitcoin_node_api/getnetworkhashps.json","openapi/bitcoin_node_api/decodescript.json","openapi/bitcoin_node_api/getnettotals.json","openapi/bitcoin_node_api/getmininginfo.json","openapi/bitcoin_node_api/getnodeaddresses.json","openapi/bitcoin_node_api/verifychain.json","openapi/bitcoin_node_api/getmempooldescendants.json","openapi/bitcoin_node_api/getblockchaininfo.json","openapi/bitcoin_node_api/getblockheader.json","openapi/bitcoin_node_api/decoderawtransaction.json","openapi/bitcoin_node_api/getmempoolentry.json","openapi/bitcoin_node_api/getpeerinfo.json","openapi/bitcoin_node_api/getrpcinfo.json","openapi/bitcoin_node_api/getmempoolancestors.json","openapi/bitcoin_node_api/preciousblock.json","openapi/bitcoin_node_api/validateaddress.json","openapi/bitcoin_node_api/getbestblockhash.json","openapi/bitcoin_node_api/getmempoolinfo.json","openapi/bitcoin_node_api/gettxoutproof.json","openapi/bitcoin_node_api/getmemoryinfo.json","openapi/bitcoin_node_api/getblocktemplate.json","openapi/bitcoin_node_api/getblock.json","openapi/bitcoin_node_api/getblockstats.json","openapi/bitcoin_node_api/gettxout.json","openapi/bitcoin_node_api/getchaintips.json","openapi/bitcoin_node_api/getblockhash.json","openapi/bitcoin_node_api/getdifficulty.json","openapi/bitcoin_node_api/verifytxoutproof.json","openapi/bitcoin_node_api/getconnectioncount.json","openapi/bitcoin_node_api/getrawmempool.json","openapi/bitcoin_node_api/uptime.json","openapi/bitcoin_node_api/getnetworkinfo.json","openapi/bitcoin_node_api/estimatesmartfee.json","openapi/bitcoin_node_api/gettxoutsetinfo.json","openapi/starknet_node_api/starknet_getStorageAt.json","openapi/starknet_node_api/starknet_getTransactionByHash.json","openapi/starknet_node_api/starknet_simulateTransactions.json","openapi/starknet_node_api/starknet_estimateFee.json","openapi/starknet_node_api/starknet_getClassAt.json","openapi/starknet_node_api/starknet_estimateMessageFee.json","openapi/starknet_node_api/starknet_call.json","openapi/starknet_node_api/starknet_traceBlockTransactions.json","openapi/starknet_node_api/starknet_getTransactionByBlockIdAndIndex.json","openapi/starknet_node_api/starknet_getClassHashAt.json","openapi/starknet_node_api/starknet_getNonce.json","openapi/faucet_api/transaction_history.json","openapi/faucet_api/get_tokens.json","openapi/plasma_node_api/accounts_info/eth_getBalance.json","openapi/plasma_node_api/accounts_info/eth_getCode.json","openapi/plasma_node_api/accounts_info/eth_getStorageAt.json","openapi/plasma_node_api/accounts_info/eth_getTransactionCount.json","openapi/plasma_node_api/accounts_info/eth_getProof.json","openapi/plasma_node_api/accounts_info/eth_getAccount.json","openapi/plasma_node_api/blocks_info/eth_blockNumber.json","openapi/plasma_node_api/blocks_info/eth_getBlockByNumber.json","openapi/plasma_node_api/blocks_info/eth_getBlockByHash.json","openapi/plasma_node_api/blocks_info/eth_getBlockTransactionCountByNumber.json","openapi/plasma_node_api/blocks_info/eth_getBlockTransactionCountByHash.json","openapi/plasma_node_api/blocks_info/eth_getBlockReceipts.json","openapi/plasma_node_api/blocks_info/eth_getUncleCountByBlockNumber.json","openapi/plasma_node_api/blocks_info/eth_getUncleCountByBlockHash.json","openapi/plasma_node_api/blocks_info/eth_getUncleByBlockNumberAndIndex.json","openapi/plasma_node_api/blocks_info/eth_getUncleByBlockHashAndIndex.json","openapi/plasma_node_api/blocks_info/eth_getHeaderByNumber.json","openapi/plasma_node_api/blocks_info/eth_getHeaderByHash.json","openapi/plasma_node_api/transaction_info/eth_getTransactionByHash.json","openapi/plasma_node_api/transaction_info/eth_getTransactionReceipt.json","openapi/plasma_node_api/transaction_info/eth_getTransactionByBlockNumberAndIndex.json","openapi/plasma_node_api/transaction_info/eth_getTransactionByBlockHashAndIndex.json","openapi/plasma_node_api/transaction_info/eth_getRawTransactionByHash.json","openapi/plasma_node_api/transaction_info/eth_getRawTransactionByBlockNumberAndIndex.json","openapi/plasma_node_api/transaction_info/eth_getRawTransactionByBlockHashAndIndex.json","openapi/plasma_node_api/transaction_info/eth_getTransactionBySenderAndNonce.json","openapi/plasma_node_api/execute_transactions/eth_call.json","openapi/plasma_node_api/execute_transactions/eth_estimateGas.json","openapi/plasma_node_api/execute_transactions/eth_createAccessList.json","openapi/plasma_node_api/execute_transactions/eth_simulateV1.json","openapi/plasma_node_api/gas_data/eth_gasPrice.json","openapi/plasma_node_api/gas_data/eth_maxPriorityFeePerGas.json","openapi/plasma_node_api/gas_data/eth_feeHistory.json","openapi/plasma_node_api/gas_data/eth_blobBaseFee.json","openapi/plasma_node_api/chain_info/eth_chainId.json","openapi/plasma_node_api/chain_info/eth_syncing.json","openapi/plasma_node_api/chain_info/eth_protocolVersion.json","openapi/plasma_node_api/chain_info/eth_accounts.json","openapi/plasma_node_api/chain_info/eth_hashrate.json","openapi/plasma_node_api/filter_handling/eth_newFilter.json","openapi/plasma_node_api/filter_handling/eth_newBlockFilter.json","openapi/plasma_node_api/filter_handling/eth_newPendingTransactionFilter.json","openapi/plasma_node_api/filter_handling/eth_uninstallFilter.json","openapi/plasma_node_api/logs_and_events/eth_getLogs.json","openapi/plasma_node_api/client_info/web3_clientVersion.json","openapi/plasma_node_api/client_info/web3_sha3.json","openapi/plasma_node_api/client_info/net_version.json","openapi/plasma_node_api/client_info/net_listening.json","openapi/plasma_node_api/client_info/net_peerCount.json","openapi/plasma_node_api/debug_and_trace/debug_getRawHeader.json","openapi/plasma_node_api/debug_and_trace/debug_getRawBlock.json","openapi/plasma_node_api/debug_and_trace/debug_getRawTransaction.json","openapi/plasma_node_api/debug_and_trace/debug_getRawReceipts.json","openapi/plasma_node_api/debug_and_trace/debug_traceCall.json","openapi/plasma_node_api/debug_and_trace/trace_call.json","openapi/plasma_node_api/debug_and_trace/trace_callMany.json","openapi/plasma_node_api/debug_and_trace/trace_replayBlockTransactions.json","openapi/plasma_node_api/debug_and_trace/trace_block.json","openapi/plasma_node_api/debug_and_trace/trace_get.json"]},"appearance":{"default":"light"},"background":{"decoration":"gradient","color":{"dark":"#000020"}},"navbar":{"links":[],"primary":{"type":"button","label":"Start for free","href":"https://console.chainstack.com/user/account/create"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/chainstack","x":"https://x.com/ChainstackHQ","discord":"https://discord.gg/Cymtg2f7pX","telegram":"https://t.me/chainstack","facebook":"https://www.facebook.com/chainstack","youtube":"https://www.youtube.com/c/Chainstack"},"links":[{"header":"Platform","items":[{"label":"Solution","href":"https://chainstack.com/solution"},{"label":"Pricing","href":"https://chainstack.com/pricing"},{"label":"Enterprise","href":"https://chainstack.com/enterprise"},{"label":"Customers","href":"https://chainstack.com/customers"},{"label":"Marketplace","href":"https://chainstack.com/marketplace"},{"label":"Hosting","href":"https://chainstack.com/hosting"},{"label":"Chainstack Cloud","href":"https://chainstack.com/chainstack-cloud"}]},{"header":"Developers","items":[{"label":"Login","href":"https://console.chainstack.com/user/account"},{"label":"Sign up","href":"https://console.chainstack.com/user/account"},{"label":"Faucets","href":"https://chainstack.com/faucets"},{"label":"Labs","href":"https://chainstack.com/labs"},{"label":"Status","href":"https://status.chainstack.com/"}]},{"header":"Company","items":[{"label":"About us","href":"https://chainstack.com/about"},{"label":"Contact us","href":"https://chainstack.com/contact"},{"label":"Careers","href":"https://chainstack.bamboohr.com/jobs"},{"label":"Ambassadors","href":"https://chainstack.com/chainstack-ambassadors-program"},{"label":"Labs","href":"https://chainstack.com/labs"},{"label":"Security","href":"https://chainstack.com/security"},{"label":"SLA","href":"https://chainstack.com/enterprise-support-sla"}]},{"header":"Support","items":[{"label":"Help center","href":"https://support.chainstack.com/hc/en-us"},{"label":"Developer portal","href":"https://docs.chainstack.com/"},{"label":"Terms of service","href":"https://chainstack.com/tos"},{"label":"Privacy policy","href":"https://chainstack.com/privacy"}]}]},"seo":{"metatags":{"og:site_name":"Chainstack Developer Portal"}},"fonts":{"heading":{"family":"Poppins"},"body":{"family":"Inter"}},"styling":{"codeblocks":"system","latex":true},"integrations":{"gtm":{"tagId":"GTM-WMRDXP6"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","grok","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"global":{"anchors":[{"anchor":"MCP","icon":"plug","href":"/docs/chainstack-mcp-server"},{"anchor":"llms-full.txt","icon":"brain","href":"https://docs.chainstack.com/llms-full.txt"},{"anchor":"Status","icon":"signal","href":"https://status.chainstack.com/"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/Cymtg2f7pX"},{"anchor":"Telegram","icon":"telegram","href":"https://t.me/chainstack"},{"anchor":"Blog","icon":"newspaper","href":"https://chainstack.com/blog/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"chainstack","hasAudioNarration":false,"actualSubdomain":"chainstack","customDomains":["docs.chainstack.com"],"gitSource":{"type":"github","owner":"chainstack","repo":"dev-portal","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae9c1d307405bf5d595abb5","collectionId":"29012f84-109d-46bc-a5d9-b076d3dc0f8d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae9c1d307405bf5d595abb5"},"feedback":{"edits":true,"thumbs":true,"issues":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae9c1d307405bf5d595abb5","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Cloud","count":2172},{"language":"default","tag":"API","count":1571},{"language":"default","tag":"Node APIs","count":1522},{"language":"default","tag":"Guides","count":392},{"language":"default","tag":"Release notes","count":260},{"language":"default","tag":"Web3 [de]coded","count":229},{"language":"default","tag":"Hyperliquid node API","count":215},{"language":"default","tag":"TRON node API","count":155},{"language":"default","tag":"Protocols","count":113},{"language":"default","tag":"Arc node API","count":87}],"searchSettings":{"maxResults":50}},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"docs/ton-how-to-develop-fungible-tokens-jettons","slug":"/docs/ton-how-to-develop-fungible-tokens-jettons","pageMetadata":{"title":"TON: How to develop fungible tokens (Jettons)","description":"Develop TON Jettons using TEP-74 standard with Blueprint and Sandbox. Create minter and wallet contracts in FunC for fungible tokens on TON blockchain.","href":"/docs/ton-how-to-develop-fungible-tokens-jettons"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Develop TON Jettons using TEP-74 standard with Blueprint and Sandbox. Create minter and wallet contracts in FunC for fungible tokens on TON blockchain.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,CodeGroup,Frame,Heading,Icon,Info,OptimizedImage}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Icon)_missingMdxReference(`Icon`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`TLDR:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You’ll create a fungible token (Jetton) on TON using a master “minter” contract plus a wallet contract for each user.`}),`\n`,_jsx(_components.li,{children:`You’ll rely on Blueprint and Sandbox to compile, test, and deploy standard TON FunC contracts.`}),`\n`,_jsx(_components.li,{children:`You’ll apply the Jetton standard (TEP74) for token transfers and metadata (TEP64) for properties like symbol and decimals.`}),`\n`,_jsx(_components.li,{children:`By the end, you’ll have a baseline fungible token on the TON testnet ready for any custom logic.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`main-article`,children:`Main article`}),`\n`,_jsxs(_components.p,{children:[`In this tutorial, we will discuss the standard implementation of fungible tokens on the TON blockchain and walk through the development steps using the `,_jsx(_components.a,{href:`https://github.com/ton-org/blueprint`,children:`Blueprint`}),` environment and `,_jsx(_components.a,{href:`https://github.com/ton-org/sandbox`,children:`Sandbox`}),`.`]}),`\n`,_jsxs(Info,{children:[_jsx(Heading,{level:`3`,id:`run-nodes-on-chainstack`,children:`Run nodes on Chainstack`}),_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://console.chainstack.com/`,children:`Start for free`}),` and get your app to production levels immediately. No credit card required. You can sign up with your GitHub, X, Google, or Microsoft account.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`introduction`,children:`Introduction`}),`\n`,_jsx(_components.p,{children:`The suggested approach for fungible tokens on TON involves having a minter contract (also called a master contract) and a specific wallet contract for each user. This allows taking advantage of the TON blockchain architecture and its sharding feature.`}),`\n`,_jsxs(_components.p,{children:[`The minter contract holds key token metrics and parameters, while the wallet contract maintains a balance of a specific user and allows transferring and burning tokens. This is described in more detail in the TON standards (`,_jsx(_components.a,{href:`https://github.com/ton-blockchain/TEPs/`,children:`TEPs`}),`). Let’s examine those related to fungible tokens.`]}),`\n`,_jsx(Heading,{level:`3`,id:`jetton-standard`,children:`Jetton standard`}),`\n`,_jsxs(_components.p,{children:[`TON fungible tokens are called Jettons. The Jetton standard is described in `,_jsx(_components.a,{href:`https://github.com/ton-blockchain/TEPs/blob/master/text/0074-jettons-standard.md`,children:`TEP74`}),`. The specification for metadata of all tokens on TON is in `,_jsx(_components.a,{href:`https://github.com/ton-blockchain/TEPs/blob/master/text/0064-token-data-standard.md`,children:`TEP64`}),`. The Jetton standard (TEP74) describes:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`The method for Jetton transfers.`}),`\n`,_jsx(_components.li,{children:`How to retrieve common information (name, circulating supply, etc.) about a given Jetton asset.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Jettons are organized as follows: each Jetton has a master smart contract used to mint new Jettons, account for circulating supply, and provide common information. At the same time, information about the amount of jettons owned by each user is stored in a decentralized manner in individual smart contracts (referred to as “Jetton-wallets”) for each owner.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://github.com/ton-blockchain/token-contract/tree/main/ft`,children:`An example of the Jetton minter and wallet contracts`}),` has been prepared by the TON core team. We will take these contracts as a starting point for our development.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/3eae1cc1b0164d6a445316bb4efaa58be9b4f2d4995a1091e6e444897ac9385d-image.png?fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=71ca946a8035e57eb4870b7d906de13e`,alt:`Parent-children approach`,\"data-og-width\":`1282`,width:`1282`,\"data-og-height\":`722`,height:`722`,\"data-path\":`images/docs/3eae1cc1b0164d6a445316bb4efaa58be9b4f2d4995a1091e6e444897ac9385d-image.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/3eae1cc1b0164d6a445316bb4efaa58be9b4f2d4995a1091e6e444897ac9385d-image.png?w=280\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=30cd4591844ba7c1f2985dfb45cfe3f8 280w, https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/3eae1cc1b0164d6a445316bb4efaa58be9b4f2d4995a1091e6e444897ac9385d-image.png?w=560\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=6dfee2684990fa776578a2ab6bc4b88a 560w, https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/3eae1cc1b0164d6a445316bb4efaa58be9b4f2d4995a1091e6e444897ac9385d-image.png?w=840\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=3b8560707e9b21fd067101a3110ce267 840w, https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/3eae1cc1b0164d6a445316bb4efaa58be9b4f2d4995a1091e6e444897ac9385d-image.png?w=1100\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=e5aa01b64020a100508d482f8f03a529 1100w, https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/3eae1cc1b0164d6a445316bb4efaa58be9b4f2d4995a1091e6e444897ac9385d-image.png?w=1650\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=1ef1b88ef870d5b5a2d9aa5c01457a37 1650w, https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/3eae1cc1b0164d6a445316bb4efaa58be9b4f2d4995a1091e6e444897ac9385d-image.png?w=2500\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=d71ade40593261c4ca55cfc5ffe156b7 2500w`})}),`\n`,_jsxs(_components.p,{children:[`Source: `,_jsx(_components.a,{href:`https://blog.ton.org/how-to-shard-your-ton-smart-contract-and-why-studying-the-anatomy-of-tons-jettons`,children:`How to shard your TON smart contract and why - studying the anatomy of TON’s Jettons`}),`.`]}),`\n`,_jsxs(Info,{children:[_jsx(Heading,{level:`3`,id:`tutorial-code`,children:`Tutorial code`}),_jsxs(_components.p,{children:[`The GitHub repository with all code written in this tutorial is published `,_jsx(_components.a,{href:`https://github.com/chainstacklabs/ton-jetton-tutorial-1`,children:`here`}),`.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`development`,children:`Development`}),`\n`,_jsx(Heading,{level:`3`,id:`contracts`,children:`Contracts`}),`\n`,_jsx(_components.p,{children:`Let’s create an empty Blueprint project with FunC in the current folder:`}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`Bash`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ton@latest`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` .`})]}),`\n`]})})})}),`\n`,_jsxs(_components.p,{children:[`After that, create the `,_jsx(_components.code,{children:`blueprint.config.ts`}),` file and paste your Chainstack endpoint. In this tutorial, we work with the testnet:`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`10`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Config`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@ton/blueprint'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` config`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Config`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` network:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` endpoint:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://ton-testnet.core.chainstack.com/.../api/v2/jsonRPC'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` type:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'testnet'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` version:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'v2'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // key: 'YOUR_API_KEY',`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`]})})})}),`\n`,_jsxs(_components.p,{children:[`Then, let’s copy the contracts from `,_jsx(_components.a,{href:`https://github.com/ton-blockchain/token-contract/tree/main/ft`,children:`the standard implementation`}),` to our project’s `,_jsx(_components.code,{children:`contracts`}),` folder. We need `,_jsx(_components.code,{children:`jetton-minter-discoverable.fc`}),`, `,_jsx(_components.code,{children:`jetton-wallet.fc`}),` and `,_jsx(_components.code,{children:`jetton-utils.fc`}),`, `,_jsx(_components.code,{children:`discovery-params.fc`}),`, `,_jsx(_components.code,{children:`op-codes.fc`}),`, `,_jsx(_components.code,{children:`params.fc`}),`. Let’s briefly walk through them.`]}),`\n`,_jsxs(_components.p,{children:[`The minter contract allows the admin (the contract owner) to manage the minting process and total tupply. Additionally, it implements the `,_jsx(_components.a,{href:`https://github.com/ton-blockchain/TEPs/blob/master/text/0089-jetton-wallet-discovery.md`,children:`TEP89`}),` feature for Jetton wallet discovery, which simplifies obtaining a Jetton wallet address by other smart contracts. Previously, this was challenging because contracts couldn’t use get methods on other contracts directly.`]}),`\n`,_jsx(_components.p,{children:`The wallet contract manages Jetton token transfers, storage, and burning for a specific user. It tracks the wallet balance, owner’s address, and Jetton master details, updating the data after transfers or burns.`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`jetton-utils.fc`}),` file contains functions that help in creating and managing a Jetton wallet, making sure that all the necessary data is packed and that the correct address for the wallet is calculated.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`discovery-params.fc`}),`, `,_jsx(_components.code,{children:`op-code.fc`}),` files contain the standard operational codes for the minter and wallet contracts. Additionally, the function `,_jsx(_components.code,{children:`is_resolvable`}),` checks if a given address is within the same workchain as the contract. It extracts the workchain ID from the address and compares it with the current contract’s workchain ID. The `,_jsx(_components.code,{children:`params.fc`}),` also contains the same check that is used by the wallet contract.`]}),`\n`,_jsx(_components.p,{children:`Before proceeding, please make sure your contracts include required imports.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`jetton-minter-discoverable.fc`})}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`C`,numberOfLines:`4`,language:`c`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`c`,children:_jsxs(_components.code,{language:`c`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`#include`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"imports/stdlib.fc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#569CD6`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`#include`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"jetton-utils.fc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#569CD6`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`#include`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"discovery-params.fc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#569CD6`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`#include`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"op-codes.fc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#569CD6`},children:`;`})]}),`\n`]})})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`jetton-wallet.fc`})}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`C`,numberOfLines:`2`,language:`c`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`c`,children:_jsxs(_components.code,{language:`c`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`#include`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"jetton-utils.fc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#569CD6`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`#include`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"op-codes.fc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#569CD6`},children:`;`})]}),`\n`]})})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`jetton-utils.fc`})}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`C`,numberOfLines:`1`,language:`c`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`c`,children:_jsxs(_components.code,{language:`c`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`#include`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"params.fc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#569CD6`},children:`;`})]}),`\n`]})})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`params.fc`})}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`C`,numberOfLines:`1`,language:`c`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`c`,children:_jsxs(_components.code,{language:`c`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`#include`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"imports/stdlib.fc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#569CD6`},children:`;`})]}),`\n`]})})})}),`\n`,_jsx(_components.p,{children:`To check that everything is alright, please try to compile the contracts:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`In the folder `,_jsx(_components.code,{children:`wrappers`}),` create or update the compile files:`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`JettonMinter.compile.ts`})}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`8`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CompilerConfig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@ton/blueprint'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` compile`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` CompilerConfig`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` lang:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'func'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` targets:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'contracts/jetton-minter-discoverable.fc'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`]})})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`JettonWallet.compile.ts`})}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`8`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CompilerConfig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@ton/blueprint'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` compile`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` CompilerConfig`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` lang:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'func'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` targets:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'contracts/jetton-wallet.fc'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`]})})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Run the command `,_jsx(_components.code,{children:`build`}),`:`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`Bash`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` blueprint`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` build`})]}),`\n`]})})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`wrappers`,children:`Wrappers`}),`\n`,_jsxs(_components.p,{children:[`To test and run scripts for our smart contracts, we need to have TypeScript interfaces for them. The `,_jsx(_components.code,{children:`wrappers`}),` folder contains such interface classes for all contracts (implementing `,_jsx(_components.code,{children:`Contract`}),` from `,_jsx(_components.code,{children:`@ton/core`}),`), including serialization primitives, getter wrappers and compilation functions.`]}),`\n`,_jsxs(_components.p,{children:[`Let’s copy the wrappers, `,_jsx(_components.code,{children:`JettonMinter.ts`}),`, `,_jsx(_components.code,{children:`JettonWallet.ts`}),`, `,_jsx(_components.code,{children:`JettonConstants.ts`}),` and `,_jsx(_components.code,{children:`ui-utils.ts`}),`, from `,_jsx(_components.a,{href:`https://github.com/ton-blockchain/token-contract/tree/main/wrappers`,children:`the existing implementation`}),` to our project’s folder `,_jsx(_components.code,{children:`wrappers`}),`. You can also copy the shortened versions of the same files from `,_jsx(_components.a,{href:`https://github.com/chainstacklabs/ton-jetton-tutorial-1`,children:`our repository`}),`. Additionally, `,_jsx(_components.code,{children:`ui-utils.ts`}),` has a few adjustments there.`]}),`\n`,_jsx(Heading,{level:`2`,id:`tests-and-deployment`,children:`Tests and deployment`}),`\n`,_jsxs(_components.p,{children:[`The Blueprint framework incorporates `,_jsx(_components.a,{href:`https://github.com/ton-org/sandbox`,children:`Sandbox`}),`. The package allows developers to emulate TON smart contracts behaviour as if they were deployed on a real network. Please copy the tests from `,_jsx(_components.a,{href:`https://github.com/chainstacklabs/ton-jetton-tutorial-1`,children:`our repository`}),`. As in the case with the wrappers, it’s a shortened version with a few adjustments based on examples prepared by the TON core team (`,_jsx(_components.a,{href:`https://github.com/ton-blockchain/token-contract/tree/main/sandbox_tests`,children:`here`}),` and `,_jsx(_components.a,{href:`https://github.com/ton-blockchain/stablecoin-contract/tree/main/sandbox_tests`,children:`here`}),`).`]}),`\n`,_jsx(_components.p,{children:`To test the contracts using Sandbox, run the command:`}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`Bash`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`npx blueprint test`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsxs(_components.p,{children:[`In the `,_jsx(_components.code,{children:`scripts`}),` folder, create `,_jsx(_components.code,{children:`deployJettonMinter.ts`}),` with the following code:`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`27`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`27`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`toNano`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@ton/core'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`JettonMinter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '../wrappers/JettonMinter'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`compile`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`NetworkProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@ton/blueprint'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`jettonWalletCodeFromLibrary`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`promptUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`promptUserFriendlyAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"../wrappers/ui-utils\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`provider`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` NetworkProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` isTestnet`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`network`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!==`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'mainnet'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` ui`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`ui`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` jettonWalletCodeRaw`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` compile`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'JettonWallet'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` adminAddress`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` promptUserFriendlyAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Enter the address of the jetton owner (admin):\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ui`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`isTestnet`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` jettonMetadataUri`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` promptUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Enter jetton metadata uri (https://jettonowner.com/jetton.json)\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ui`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` jettonWalletCode`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` jettonWalletCodeFromLibrary`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`jettonWalletCodeRaw`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` minter`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`open`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`JettonMinter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`createFromConfig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` admin:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` adminAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`address`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` wallet_code:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jettonWalletCode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jetton_content:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`type:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`uri:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jettonMetadataUri`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` compile`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'JettonMinter'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` );`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` minter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`sendDeploy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`sender`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(), `}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`toNano`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"1.5\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// send 1.5 TON`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})}),`\n`,_jsx(_components.p,{children:`The metadata JSON must have the following format with the image data having base64-encoded value:`}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`JSON`,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Example Token\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"description\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Official token\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"symbol\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"EXTO\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"decimals\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`9`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"image_data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"4bWxuczPHN2ZyB0...\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})}),`\n`,_jsx(_components.p,{children:`To deploy the contracts to the testnet, run the command:`}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`Bash`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`npx blueprint run`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsx(Heading,{level:`2`,id:`conclusion`,children:`Conclusion`}),`\n`,_jsx(_components.p,{children:`We walked through the fungible token standard on the TON blockchain and its main development steps using Blueprint and Sandbox. In future tutorials, we will add custom behaviour for our token. Stay tuned!`}),`\n`,_jsx(Heading,{level:`3`,id:`about-the-author`,children:`About the author`}),`\n`,_jsx(CardGroup,{children:_jsxs(Card,{title:`Anton Sauchyk`,children:[_jsx(`img`,{src:`https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/profile_images/1817926677730664448/3nNn0T2p_400x400.jpg?fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=1d13d3584862f1be3a84fa3f8e38fea7`,alt:`Anton Sauchyk`,style:{width:`80px`,height:`80px`,borderRadius:`50%`,objectFit:`cover`,display:`block`,margin:`0 auto`},noZoom:true,\"data-og-width\":`400`,width:`400`,\"data-og-height\":`400`,height:`400`,\"data-path\":`images/docs/profile_images/1817926677730664448/3nNn0T2p_400x400.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/profile_images/1817926677730664448/3nNn0T2p_400x400.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=4b4cf2c618c2e0d192efaf1952982724 280w, https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/profile_images/1817926677730664448/3nNn0T2p_400x400.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=add9efeb5b72fb4f195b2e32c310ab6b 560w, https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/profile_images/1817926677730664448/3nNn0T2p_400x400.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=626d83440e40968a2e689d3510887b49 840w, https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/profile_images/1817926677730664448/3nNn0T2p_400x400.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=befac8c9ce62fb014800a5ff804584fa 1100w, https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/profile_images/1817926677730664448/3nNn0T2p_400x400.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=6dcf3cf6ab7c5c7349f8041d5dae1e24 1650w, https://mintcdn.com/chainstack/UN3rP7zhB69idvnC/images/docs/profile_images/1817926677730664448/3nNn0T2p_400x400.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=UN3rP7zhB69idvnC\u0026q=85\u0026s=cc8e68a0d52f4125b72b369110fbadbe 2500w`}),_jsxs(_components.p,{children:[_jsx(Icon,{icon:`code`,iconType:`solid`}),` Developer Advocate @ Chainstack\n`,_jsx(`br`,{}),_jsx(Icon,{icon:`laptop`,iconType:`solid`}),` Multiple years of software development and Web3 expertise`]}),_jsxs(`div`,{style:{display:`flex`,justifyContent:`center`,gap:`12px`},children:[_jsx(`a`,{href:`https://github.com/smypmsa`,style:{textDecoration:`none`,borderBottom:`none`},children:_jsx(Icon,{icon:`github`,iconType:`brands`})}),_jsx(`a`,{href:`https://x.com/sensuniama`,style:{textDecoration:`none`,borderBottom:`none`},children:_jsx(Icon,{icon:`twitter`,iconType:`brands`})}),_jsx(`a`,{href:`https://www.linkedin.com/in/anton-sauchyk/`,style:{textDecoration:`none`,borderBottom:`none`},children:_jsx(Icon,{icon:`linkedin`,iconType:`brands`})})]})]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"TON: How to develop fungible tokens (Jettons)","description":"Develop TON Jettons using TEP-74 standard with Blueprint and Sandbox. Create minter and wallet contracts in FunC for fungible tokens on TON blockchain.","href":"/docs/ton-how-to-develop-fungible-tokens-jettons"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Main article","slug":"main-article","depth":2,"children":[{"title":"Run nodes on Chainstack","slug":"run-nodes-on-chainstack","depth":3,"children":[]}]},{"title":"Introduction","slug":"introduction","depth":2,"children":[{"title":"Jetton standard","slug":"jetton-standard","depth":3,"children":[]},{"title":"Tutorial code","slug":"tutorial-code","depth":3,"children":[]}]},{"title":"Development","slug":"development","depth":2,"children":[{"title":"Contracts","slug":"contracts","depth":3,"children":[]}]},{"title":"Wrappers","slug":"wrappers","depth":2,"children":[]},{"title":"Tests and deployment","slug":"tests-and-deployment","depth":2,"children":[]},{"title":"Conclusion","slug":"conclusion","depth":2,"children":[{"title":"About the author","slug":"about-the-author","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"chainstack","siteName":"Chainstack","title":"TON: How to develop fungible tokens (Jettons) - Chainstack","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-03-26T05:32:33.592Z","gitLastModified":"2026-03-26T05:28:07.000Z","originalFileLocation":"docs/ton-how-to-develop-fungible-tokens-jettons.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Develop TON Jettons using TEP-74 standard with Blueprint and Sandbox. Create minter and wallet contracts in FunC for fungible tokens on TON blockchain.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Chainstack\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/chainstack/jo9dYY4MCWk3fHQO/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/chainstack/jo9dYY4MCWk3fHQO/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/chainstack/jo9dYY4MCWk3fHQO/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/chainstack/jo9dYY4MCWk3fHQO/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/chainstack/jo9dYY4MCWk3fHQO/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/chainstack/jo9dYY4MCWk3fHQO/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/chainstack/jo9dYY4MCWk3fHQO/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/chainstack/jo9dYY4MCWk3fHQO/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/chainstack/jo9dYY4MCWk3fHQO/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"TON: How to develop fungible tokens (Jettons) - Chainstack\">\u003cmeta data-mint-head property=\"og:description\" content=\"Develop TON Jettons using TEP-74 standard with Blueprint and Sandbox. Create minter and wallet contracts in FunC for fungible tokens on TON blockchain.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Chainstack Developer Portal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.chainstack.com/docs/ton-how-to-develop-fungible-tokens-jettons\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://chainstack.mintlify.app/_mintlify/api/og/v2?division=Protocols\u0026amp;title=TON%3A+How+to+develop+fungible+tokens+%28Jettons%29\u0026amp;description=Develop+TON+Jettons+using+TEP-74+standard+with+Blueprint+and+Sandbox.+Create+minter+and+wallet+contracts+in+FunC+for+fungible+tokens+on+TON+blockchain.\u0026amp;theme=c53f2fdbd09e71fbd128e481\u0026amp;signature=0ba4207ff669f1a567972d09161a700fbab29ca3911adeb1a3d3bc955be6f2bb\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"TON: How to develop fungible tokens (Jettons) - Chainstack\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Develop TON Jettons using TEP-74 standard with Blueprint and Sandbox. Create minter and wallet contracts in FunC for fungible tokens on TON blockchain.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://chainstack.mintlify.app/_mintlify/api/og/v2?division=Protocols\u0026amp;title=TON%3A+How+to+develop+fungible+tokens+%28Jettons%29\u0026amp;description=Develop+TON+Jettons+using+TEP-74+standard+with+Blueprint+and+Sandbox.+Create+minter+and+wallet+contracts+in+FunC+for+fungible+tokens+on+TON+blockchain.\u0026amp;theme=c53f2fdbd09e71fbd128e481\u0026amp;signature=0ba4207ff669f1a567972d09161a700fbab29ca3911adeb1a3d3bc955be6f2bb\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/chainstack/jo9dYY4MCWk3fHQO/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Chainstack\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#007aff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.chainstack.com/docs/ton-how-to-develop-fungible-tokens-jettons\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/ton-how-to-develop-fungible-tokens-jettons.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.chainstack.com/#organization\",\"name\":\"Chainstack\",\"url\":\"https://docs.chainstack.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/chainstack/4kCLdVG8vhROt3j-/logo/light.svg?fit=max\u0026auto=format\u0026n=4kCLdVG8vhROt3j-\u0026q=85\u0026s=7d2d6d754203b9b3aa553e71ac4d9991\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.chainstack.com#website\",\"name\":\"Chainstack\",\"url\":\"https://docs.chainstack.com\",\"publisher\":{\"@id\":\"https://docs.chainstack.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.chainstack.com/docs/ton-how-to-develop-fungible-tokens-jettons#webpage\",\"url\":\"https://docs.chainstack.com/docs/ton-how-to-develop-fungible-tokens-jettons\",\"name\":\"TON: How to develop fungible tokens (Jettons)\",\"description\":\"Develop TON Jettons using TEP-74 standard with Blueprint and Sandbox. Create minter and wallet contracts in FunC for fungible tokens on TON blockchain.\",\"dateModified\":\"2026-03-26T05:28:07.000Z\",\"isPartOf\":{\"@id\":\"https://docs.chainstack.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.chainstack.com/docs/ton-how-to-develop-fungible-tokens-jettons#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.chainstack.com/docs/ton-how-to-develop-fungible-tokens-jettons#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Web3 [de]coded\",\"item\":\"https://docs.chainstack.com/docs/web3-decoded-introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Protocols\",\"item\":\"https://docs.chainstack.com/docs/protocols-tutorials\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"TON: How to develop fungible tokens (Jettons)\",\"item\":\"https://docs.chainstack.com/docs/ton-how-to-develop-fungible-tokens-jettons\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.chainstack.com/docs/ton-how-to-develop-fungible-tokens-jettons#article\",\"headline\":\"TON: How to develop fungible tokens (Jettons)\",\"name\":\"TON: How to develop fungible tokens (Jettons)\",\"description\":\"Develop TON Jettons using TEP-74 standard with Blueprint and Sandbox. Create minter and wallet contracts in FunC for fungible tokens on TON blockchain.\",\"url\":\"https://docs.chainstack.com/docs/ton-how-to-develop-fungible-tokens-jettons\",\"mainEntityOfPage\":{\"@id\":\"https://docs.chainstack.com/docs/ton-how-to-develop-fungible-tokens-jettons#webpage\"},\"dateModified\":\"2026-03-26T05:28:07.000Z\",\"publisher\":{\"@id\":\"https://docs.chainstack.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.chainstack.com#website\"}}]}\u003c/script>","siteName":"Chainstack","nav":{"global":{"anchors":[{"anchor":"MCP","icon":"plug","href":"/docs/chainstack-mcp-server"},{"anchor":"llms-full.txt","icon":"brain","href":"https://docs.chainstack.com/llms-full.txt"},{"anchor":"Status","icon":"signal","href":"https://status.chainstack.com/"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/Cymtg2f7pX"},{"anchor":"Telegram","icon":"telegram","href":"https://t.me/chainstack"},{"anchor":"Blog","icon":"newspaper","href":"https://chainstack.com/blog/"}]},"products":[{"product":"Cloud","icon":"cloud","description":"Managed blockchain infrastructure","tabs":[{"tab":"Guides","groups":[{"group":"Platform","pages":[{"title":"Chainstack platform overview: nodes, APIs, and billing","href":"/docs/platform-introduction"},{"title":"Manage your account","href":"/docs/manage-your-account"},{"title":"Manage your organization","href":"/docs/manage-your-organization"},{"title":"Manage your billing","href":"/docs/manage-your-billing"},{"title":"Billing thresholds","href":"/docs/billing-thresholds"},{"title":"Manage your projects","href":"/docs/manage-your-project"},{"title":"Manage your networks","href":"/docs/manage-your-networks"},{"title":"Manage your nodes","href":"/docs/manage-your-node"},{"title":"Use Multichain API","href":"/docs/multichain-api"},{"title":"Statistics","href":"/docs/see-statistics"},{"title":"Node usage","href":"/docs/node-usage"},{"title":"Faucet","href":"/docs/faucets"},{"title":"RSS feeds","href":"/docs/rss-feeds"}]},{"group":"Pricing","pages":[{"title":"Chainstack pricing: plans, request units, and quotas","href":"/docs/pricing-introduction"},{"title":"Request units (RUs)","href":"/docs/request-units"},{"title":"Features availability","href":"/docs/features-availability-across-subscription-plans"},{"title":"Throughput guidelines","href":"/docs/limits"},{"title":"Requests per second (RPS) plan limits","href":"/docs/rps-plan-limits"},{"title":"Quotas","href":"/docs/quotas"}]},{"group":"Core","pages":[{"title":"Global Node","href":"/docs/global-elastic-node"},{"title":"Unlimited Node","href":"/docs/unlimited-node"},{"title":"Trader Node","href":"/docs/trader-node"},{"title":"Dedicated Node","href":"/docs/dedicated-node"},{"title":"Dedicated Node monitoring","href":"/docs/dedicated-node-monitoring"},{"title":"Hybrid hosting","href":"/docs/hybrid-hosting"}]},{"group":"Add-ons","pages":[{"title":"Chainstack add-ons: marketplace extensions for RPC nodes","href":"/docs/add-ons"},{"title":"MEV protection","href":"/docs/mev-protection"},{"title":"Optimized submission","href":"/docs/optimized-submission"},{"title":"Yellowstone gRPC Geyser plugin","href":"/docs/yellowstone-grpc-geyser-plugin"},{"title":"Unlimited Node add-on","href":"/docs/unlimited-node-add-on"}]},{"group":"Security","pages":[{"title":"Access rules","href":"/docs/access-rules"},{"title":"Authentication methods available on Chainstack","href":"/docs/authentication-methods-for-different-scenarios"}]},{"group":"Migrate to Chainstack","pages":[{"title":"Migrate to Chainstack with AI","sidebarTitle":"Migrate with AI","href":"/docs/migrate-to-chainstack-with-ai"},{"title":"Migrating from Google Cloud Blockchain Node Engine to Chainstack","sidebarTitle":"Google Blockchain Node Engine","href":"/docs/migrating-from-google-cloud-blockchain-node-engine-to-chainstack"},{"title":"Migrating from Syndica to Chainstack","sidebarTitle":"Syndica","href":"/docs/migrating-from-syndica-to-chainstack"},{"title":"Migrating from Grove to Chainstack","sidebarTitle":"Grove","href":"/docs/migrating-from-grove-to-chainstack"},{"title":"Migrate from Helius getTokenAccounts to Solana RPC","sidebarTitle":"Helius getTokenAccounts","href":"/docs/migrating-from-helius-gettokenaccounts-to-standard-solana-rpc-methods"}]},{"group":"Web3 [de]coded","pages":[{"title":"Web3 [De]Coded: tutorials, guides, and best practices","href":"/docs/web3-decoded-introduction"},{"group":"Protocols","pages":[{"title":"Protocols","sidebarTitle":"Overview","href":"/docs/protocols-tutorials"},{"title":"Ethereum: How to analyze pending blocks","href":"/docs/ethereum-how-to-analyze-pending-blocks"},{"title":"Simulate a Uniswap swap before broadcasting","href":"/docs/ethereum-simulate-a-uniswap-swap"},{"title":"Monitor an Ethereum address for incoming transactions in real time","href":"/docs/ethereum-monitor-address-transactions"},{"title":"Monitor Uniswap swaps in real time over WebSocket","href":"/docs/ethereum-monitor-uniswap-swaps-websocket"},{"title":"Blob transactions the hard way","href":"/docs/blob-transactions-the-hard-way"},{"title":"Ethereum Dencun: Rundown with examples","href":"/docs/ethereum-dencun-rundown-with-examples"},{"title":"EIP-7702: delegate an EOA and batch transactions","href":"/docs/ethereum-eip-7702-tutorial"},{"title":"Ethereum: Academic certificates with Truffle","href":"/docs/ethereum-tutorial-academic-certificates-with-truffle"},{"title":"Ethereum: Asset tokenization with Embark","href":"/docs/ethereum-tutorial-asset-tokenization-with-embark"},{"title":"Ethereum: Trust fund account with Remix","href":"/docs/ethereum-tutorial-trust-fund-account-with-remix"},{"title":"Chainlink: Estimating the price of a call","href":"/docs/chainlink-estimating-the-price-of-a-call"},{"title":"Polygon: Bridging ERC-20 from Ethereum to Polygon","href":"/docs/polygon-tutorial-bridging-erc20-from-ethereum-to-polygon"},{"title":"Polygon: Creating a Polymarket trading OpenClaw skill","href":"/docs/polygon-creating-a-polymarket-trading-openclaw-skill"},{"title":"BNB Smart Chain: BEP-1155 with Truffle \u0026 OpenZeppelin","href":"/docs/bsc-tutorial-bep-1155-contract-with-truffle-and-openzeppelin"},{"title":"BNB Smart Chain: Lorentz hardfork","href":"/docs/bnb-lorentz-hardfork"},{"title":"Base: Deploy an ERC-721 contract with Hardhat","href":"/docs/base-tutorial-deploy-an-erc-721-contract-with-hardhat"},{"title":"Base B20 token standard","href":"/docs/base-b20-token-standard"},{"title":"Base: Deploy a B20 token","href":"/docs/base-tutorial-deploy-a-b20-token"},{"title":"Base: Accept B20 payments","href":"/docs/base-accept-b20-payments"},{"title":"eth_getStorageAt vs debug_storageRangeAt on Reth","href":"/docs/using-eth_getstorageat-instead-of-debug_storagerangeat-on-reth"},{"title":"Avalanche: Aave V3 flash loan with Hardhat","href":"/docs/avalanche-tutorial-aavev3-flash-loans-with-hardhat"},{"title":"Avalanche Granite network upgrade","href":"/docs/avalanche-granite-upgrade"},{"title":"Avalanche Helicon network upgrade","href":"/docs/avalanche-helicon-upgrade"},{"title":"TON: Deploy a smart contract","description":"Deploy TON smart contracts with Blueprint SDK and Chainstack. Learn TACT language, contract development, testing, deployment, and interaction on TON blockchain.","href":"/docs/getting-started-with-ton-deploy-a-smart-contract"},{"title":"TON: How to develop fungible tokens (Jettons)","href":"/docs/ton-how-to-develop-fungible-tokens-jettons"},{"title":"TON: How to customize fungible tokens (Jettons)","description":"Customize TON Jettons with capped supply and mint price. Extend Jetton minter contracts using Blueprint, FunC, and Sandbox for advanced token features.","href":"/docs/ton-how-to-customize-fungible-tokens-jettons"},{"title":"TON: How to develop non-fungible tokens (NFT)","href":"/docs/ton-how-to-develop-non-fungible-tokens"},{"title":"TON: Wallet initialization with Tonweb","href":"/docs/ton-wallet-initialization-with-tonweb"},{"title":"TON: How to interact with Jettons","href":"/docs/ton-how-to-interact-with-jettons"},{"title":"TON: Choosing v2, v3, or v4","href":"/docs/ton-choosing-v2-or-v3"},{"title":"Unichain: Collecting Uniswap v4 ETH-USDC trades","href":"/docs/unichain-collecting-uniswapv4-eth-usdc-trades"},{"title":"Arbitrum: L1 to L2 messaging smart contract","href":"/docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract"},{"title":"zkSync Era: Develop a custom paymaster contract","href":"/docs/zksync-tutorial-develop-a-custom-paymaster-contract"},{"title":"Optimism: Bridge ETH from L1 to L2 with the JS SDK","href":"/docs/optimism-tutorial-bridge-ether-from-ethereum-l1-to-optimism-l2-using-the-optimism-javascript-sdk"},{"title":"Scroll: Deploy Uniswap V3 on Scroll","href":"/docs/scroll-tutorial-deploy-the-uniswap-v3-smart-contracts-on-scroll"},{"title":"Ronin: Make a game's smart contract","href":"/docs/ronin-tutorial-making-a-game-contract"},{"title":"Ronin: on-chain meta racing game","href":"/docs/ronin-on-chain-meta-racing-game"},{"title":"Aptos: Publish a module to save and retrieve messages","href":"/docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos"},{"title":"Plasma: Network setup and configuration","href":"/docs/plasma-tutorial-network-setup-and-configuration"},{"title":"Monitor Plasma USDT flows with web3.py","href":"/docs/plasma-tutorial-monitor-usdt-flows-with-web3py"},{"title":"Plasma: RPC failover with eRPC","href":"/docs/plasma-tutorial-rpc-failover-with-erpc"},{"title":"Plasma: Bridging assets with Symbiosis","href":"/docs/plasma-tutorial-bridging-assets-with-symbiosis"},{"title":"Plasma: Bridging from HyperEVM with deBridge","href":"/docs/plasma-tutorial-bridging-from-hyperevm-with-debridge"},{"title":"Gnosis: Soulbound token with Remix and OpenZeppelin","href":"/docs/gnosis-tutorial-simple-soulbound-token-with-remix-and-openzeppelin"},{"title":"Cronos: Dutch auction smart contract with Hardhat","href":"/docs/cronos-tutorial-dutch-auction-smart-contracts-on-cronos-with-hardhat"},{"title":"Filecoin: Deploy a deal-making contract using Hardhat","href":"/docs/filecoin-tutorial-deploy-a-deal-making-contract-on-filecoin-with-hardhat"},{"title":"TRON: Energy and Bandwidth with Python \u0026 Chainstack","href":"/docs/tron-mastering-energy-bandwidth-with-python-and-chainstack"},{"title":"TRON: Polling for TRC20 transfers in Node.js","href":"/docs/tron-polling-for-trc20-transfers"},{"title":"Sonic: Swap farming for points walkthrough in Python","href":"/docs/sonic-swap-farming-for-points-walkthrough-in-python"},{"title":"Starknet: NFT contract with Nile and L1-L2 messaging","href":"/docs/starknet-tutorial-an-nft-contract-with-nile-and-l1-l2-reputation-messaging"},{"title":"Solana archive nodes: Data availability \u0026 tooling","href":"/docs/solana-archive-nodes-the-backbone-of-solanas-data-availability-and-developer-tooling"},{"title":"Ronin gaming: Overview of Axie \u0026 Pixels","href":"/docs/ronin-gaming-overview-of-axie-pixels"},{"title":"Ronin: Consensus algorithm","href":"/docs/ronin-consensus-algorithm"},{"title":"Kaia (ex. Klaytn): Contract Sizzle 100","href":"/docs/klaytn-contract-sizzle-100"},{"title":"Sui: On-chain validator analytics with pysui","href":"/docs/sui-on-chain-validator-analytics-with-pysui"},{"title":"Berachain: On-chain data quickstart with Python","href":"/docs/berachain-on-chain-data-quickstart-with-python"},{"title":"Linea: Real-time transaction activity monitor with Python","href":"/docs/linea-real-time-transaction-monitor-python"},{"title":"Mantle: Fetching token prices from Merchant Moe","href":"/docs/mantle-fetching-token-prices-from-merchant-moe"},{"title":"Zora: Real-time creator token detection and monitoring","href":"/docs/zora-creator-token-detection-tutorial"},{"title":"Polkadot: Real-time network health monitoring dashboard","href":"/docs/polkadot-network-health-monitoring"},{"title":"Celo: Build a voting dApp with Foundry and Next.js","href":"/docs/celo-build-a-simple-voting-dapp-with-foundry-nextjs-and-web3js"},{"title":"opBNB: How to listen to deposits on the opBNB bridge","href":"/docs/opbnb-how-to-listen-deposits-bridge"},{"title":"Monad: Querying the blockchain with JavaScript","href":"/docs/monad-tutorial-querying-blockchain-javascript"},{"title":"Monad: Querying the blockchain with Python","href":"/docs/monad-tutorial-querying-blockchain-python"},{"title":"Monad: Deploying and verifying smart contracts","href":"/docs/monad-tutorial-deploy-verify-smart-contracts"},{"title":"Monad: Minting and managing NFTs","href":"/docs/monad-tutorial-nft-minting-erc721"},{"title":"Monad: Monitoring events and transactions","href":"/docs/monad-tutorial-event-monitoring"},{"title":"Monad: Fetching token prices from DEXs","href":"/docs/monad-tutorial-dex-price-fetching"},{"title":"Monad: Local fork testing with Foundry","href":"/docs/monad-tutorial-local-fork-testing"},{"title":"Tempo: Building your first payment app","href":"/docs/tempo-tutorial-first-payment-app"},{"title":"Tempo: Basic DEX swap with Foundry","href":"/docs/tempo-tutorial-dex-swap-foundry"},{"title":"Elysium: Trace internal calls and HYPE transfers","href":"/docs/elysium-tutorial-trace-internal-calls"}]},{"group":"Mastering Hyperliquid","pages":[{"title":"Mastering Hyperliquid","sidebarTitle":"Overview","href":"/docs/hyperliquid-development"},{"title":"Building on Hyperliquid with the nktkas TypeScript SDK","href":"/docs/hyperliquid-typescript-sdk-nktkas"},{"title":"Hyperliquid: Bridging USDC between HyperCore and HyperEVM","href":"/docs/hyperliquid-bridging-usdc"},{"title":"Understanding Hyperliquid infrastructure and RPC nodes","href":"/docs/hyperliquid-infrastructure-faq"},{"title":"Hyperliquid: Authentication via signatures overview","href":"/docs/hyperliquid-authentication-guide"},{"title":"Hyperliquid signing overview","href":"/docs/hyperliquid-signing-overview"},{"title":"Hyperliquid: L1 action signing on HyperCore with Python SDK","href":"/docs/hyperliquid-l1-action-signing"},{"title":"Hyperliquid: User-signed actions with Python SDK","href":"/docs/hyperliquid-user-signed-actions"},{"title":"Hyperliquid: Debugging signature errors","href":"/docs/hyperliquid-debugging-signature-errors"},{"title":"Hyperliquid node configuration and system transactions","href":"/docs/hyperliquid-node-configuration"},{"title":"Hyperliquid peering","href":"/docs/hyperliquid-peering"},{"title":"Fork Hyperliquid EVM with Foundry","href":"/docs/hyperliquid-forking-evm-foundry"},{"title":"Write to HyperCore from a contract with CoreWriter","href":"/docs/hyperliquid-corewriter"},{"title":"Building a copy trading bot with spot order mirroring","href":"/docs/hyperliquid-copy-trading-websocket"},{"title":"TWAP order execution and monitoring","href":"/docs/hyperliquid-twap-orders"},{"title":"Handling order precision and market metadata","href":"/docs/hyperliquid-order-precision"},{"title":"Implementing spot-perp funding rate arbitrage","href":"/docs/hyperliquid-funding-rate-arbitrage"},{"title":"Trading HIP-4 outcome markets on Hyperliquid","href":"/docs/hyperliquid-hip4-outcome-markets-trading"}]},{"group":"Mastering Web3 LLMs and AI use","pages":[{"title":"Mastering Web3 LLMs and AI use","sidebarTitle":"Overview","href":"/docs/mastering-web3-llms-and-ai-use"},{"title":"AI trading agent: Stack","href":"/docs/ai-trading-agent-stack"},{"title":"AI trading agent: Pipeline","href":"/docs/ai-trading-agent-pipeline"},{"title":"AI trading agent: Implementation","href":"/docs/ai-trading-agent-implementation"},{"title":"AI trading agent: Stateless agent","href":"/docs/ai-trading-agent-stateless-agent"},{"title":"AI trading agent: Stateful agent","href":"/docs/ai-trading-agent-stateful-agent"},{"title":"AI trading agent: Grok 4 integration with OpenRouter","href":"/docs/ai-trading-agent-grok4-openrouter-integration"},{"title":"AI trading agent: Kimi K2 integration with OpenRouter","href":"/docs/ai-trading-agent-kimi-k2-openrouter-integration"},{"title":"AI trading agent: ERNIE 4.5 local integration with MLX-LM","href":"/docs/ai-trading-agent-ernie-mlx-local-integration"},{"title":"AI trading agent: SmolLM3 local integration with MLX-LM","href":"/docs/ai-trading-agent-smollm3-mlx-local-integration"},{"title":"AI trading agent: Fine-tuning overview","href":"/docs/ai-trading-agent-fine-tuning-overview"},{"title":"AI trading agent: GANs and synthetic data","href":"/docs/ai-trading-agent-gans-and-synthetic-data"},{"title":"AI trading agent: Fusing LoRA adapters for Ollama","href":"/docs/ai-trading-agent-fusing-llm-adapters-and-converting-to-ollama"},{"title":"AI trading agent: Reinforcement learning","href":"/docs/ai-trading-agent-reinforcement-learning"}]},{"group":"Mastering Solana","pages":[{"title":"Mastering Solana","sidebarTitle":"Overview","href":"/docs/solana-development"},{"title":"Solana: Create a stake account and delegate SOL with web3.js","href":"/docs/solana-delegate-sol-staking"},{"title":"Solana: Create and mint an SPL token with web3.js","href":"/docs/solana-mint-spl-tokens"},{"title":"Solana: Alpenglow consensus explained","href":"/docs/solana-alpenglow-consensus"},{"title":"Solana: Transaction v1 explained","href":"/docs/solana-transaction-v1"},{"title":"Solana: Rebuild your programs for sBPFv3","href":"/docs/solana-sbpfv3-program-migration"},{"title":"Solana: Upgrade a program from another program","href":"/docs/solana-upgrade-program-from-program"},{"title":"Solana: Rent reduction and reclaiming excess rent","href":"/docs/solana-rent-reduction-reclaim-excess-rent"},{"title":"Solana: Subscriptions and allowances","href":"/docs/solana-subscriptions-and-allowances"},{"title":"Solana: Indexing subscription events with Geyser","href":"/docs/solana-indexing-subscription-events-geyser"},{"title":"Solana: Capped onchain budgets for AI agents","href":"/docs/solana-agent-allowances-x402"},{"title":"Solana: Creating a trading and sniping pump.fun bot","href":"/docs/solana-creating-a-pumpfun-bot"},{"title":"Solana: Listening to pump.fun migrations to PumpSwap","href":"/docs/solana-listening-to-pumpfun-migrations-to-raydium"},{"title":"Solana: Listen to pump.fun mints via logsSubscribe","href":"/docs/solana-listening-to-pumpfun-token-mint-using-only-logssubscribe"},{"title":"Solana: Priority fees for a Jupiter Swap in Python","href":"/docs/solana-priority-fees-for-a-jupiter-in-python"},{"title":"Solana: Analyzing adjacent transactions for priority fees","href":"/docs/solana-analyzing-adjacent-transactions-for-priority-fees"},{"title":"Solana: How to perform token swaps using Raydium","href":"/docs/solana-how-to-perform-token-swaps-using-the-raydium-sdk"},{"title":"Solana: How to build actions and blinks","href":"/docs/solana-how-to-build-actions-and-blinks"},{"title":"Solana: PDAs and cross-program invocations","href":"/docs/solana-program-derived-addresses-and-cross-program-invocations"},{"title":"Solana: Anchor development","href":"/docs/solana-anchor-development"},{"title":"Solana: Pinocchio vs Quasar program frameworks","href":"/docs/solana-pinocchio-vs-quasar"},{"title":"Solana: The escrow pattern","href":"/docs/solana-escrow-pattern"},{"title":"Solana: Zero-knowledge proofs with Noir and Groth16","href":"/docs/solana-zk-proofs"},{"title":"Solana: Fast unit testing with LiteSVM","href":"/docs/solana-litesvm-testing"},{"title":"Solana: Surfpool quick-start","href":"/docs/solana-surfpool"},{"title":"Solana: Mainnet fork tests with the Surfpool Kit plugin","href":"/docs/solana-surfpool-kit-mainnet-fork-tests"},{"title":"Solana: Token extensions (Token-2022)","href":"/docs/solana-token-extensions"},{"title":"Solana: Create a token and vesting program","href":"/docs/solana-tutorial-creating-a-token-and-vesting-the-token-in-your-program"},{"title":"Solana: Transferring SPL tokens in TypeScript","href":"/docs/transferring-spl-tokens-on-solana-typescript"},{"title":"Solana: Enhancing SPL token transfers with retry logic","href":"/docs/enhancing-solana-spl-token-transfers-with-retry-logic"},{"title":"Solana: pluggable transaction signing with solana-keychain","href":"/docs/solana-keychain-signing"},{"title":"Solana: batching token instructions with p-token","href":"/docs/solana-ptoken-batch-instruction"},{"title":"Solana: getAccountInfo vs getMultipleAccounts","href":"/docs/solana-getaccountinfo-getmultipleaccounts"},{"title":"Solana: Borsh, Bincode, and Wincode serialization","href":"/docs/solana-serialization-borsh-bincode-wincode"},{"title":"Solana: getTokenLargestAccounts for SPL holders","href":"/docs/solana-gettokenlargestaccounts-rpc-method"},{"title":"How to land transactions on Solana","href":"/docs/solana-how-to-land-transactions"},{"title":"Solana: Understanding the compute budget","href":"/docs/solana-compute-budget"},{"title":"Solana: Priority fees for faster transactions","href":"/docs/solana-how-to-priority-fees-faster-transactions"},{"title":"Solana: Estimate priority fees with RPC methods","href":"/docs/solana-estimate-priority-fees-getrecentprioritizationfees"},{"title":"Solana: Multiple RPC endpoints for dApp performance","href":"/docs/solana-how-to-use-multiple-rpc-endpoints-optimize-dapp-performance"},{"title":"Solana: How to handle the transaction expiry error","href":"/docs/solana-how-to-handle-the-transaction-expiry-error"},{"title":"Solana: Durable nonces for offline signing","href":"/docs/solana-durable-nonces"},{"title":"Solana: Address lookup tables","href":"/docs/solana-address-lookup-tables"},{"title":"Solana: MEV protection with Jito","href":"/docs/solana-mev-protection"},{"title":"Solana Agave 2.0 upgrade reference","href":"/docs/solana-agave-20-upgrade-reference"},{"title":"Solana: Blocks vs slots explained","href":"/docs/understanding-the-difference-between-blocks-and-slots-on-solana"},{"title":"Solana: Optimize your getBlock performance","href":"/docs/solana-optimize-your-getblock-performance"},{"title":"Solana: Understanding Block Time","href":"/docs/solana-understanding-block-time"},{"title":"Solana: Associating transactions with block and block time using Yellowstone gRPC","href":"/docs/solana-transactions-block-time-yellowstone-grpc"},{"title":"Solana: Listening to pump.fun token mint using Geyser","href":"/docs/solana-listening-to-pumpfun-token-mint-using-geyser"},{"title":"Solana: Geyser and Yellowstone gRPC in Node.js","href":"/docs/solana-listening-to-programs-using-geyser-and-yellowstone-grpc-node-js"},{"title":"Solana blockSubscribe 1009 error on WebSocket","href":"/docs/solana-blocksubscribe-1009-error-on-websocket"},{"title":"Common errors with @solana/web3.js","href":"/docs/common-errors-with-solana-web3js"}]},{"group":"Best practices handbook","pages":[{"title":"Best practices handbook","sidebarTitle":"Overview","href":"/docs/chainstack-web3-development-best-practices"},{"title":"Chainbench: Benchmark your blockchain RPC endpoints","href":"/docs/chainbench-tutorial-benchmark-your-blockchain-rpc-endpoints"},{"title":"Using eRPC with Chainstack: Quickstart","href":"/docs/using-erpc-with-chainstack-quickstart"},{"title":"Using Chainstack as a Hummingbot Gateway RPC provider","href":"/docs/using-chainstack-with-hummingbot-gateway"},{"title":"Ponder: Blockchain indexing backends with Chainstack","href":"/docs/ponder-tutorial-building-blockchain-application-backends-with-chainstack"},{"title":"HTTP batch request VS multicall contract","href":"/docs/http-batch-request-vs-multicall-contract"},{"title":"Web3 dApp secrets: Environment variables guide","href":"/docs/how-to-store-your-web3-dapp-secrets-guide-to-environment-variables"},{"title":"Introduction to smart contract auditing using Foundry","href":"/docs/introduction-to-smart-contract-manual-auditing-with-foundry-and-slither"},{"title":"Web3 node.js: From zero to a full-fledged project","href":"/docs/web3-nodejs-from-zero-to-a-full-fledged-project"},{"title":"Get the most out of Chainstack platform API","href":"/docs/guide-get-the-most-out-of-the-chainstack-platform-api"},{"title":"Understanding eth_getLogs limitations","href":"/docs/understanding-eth-getlogs-limitations"},{"title":"Monitor transaction propagation to mempool in Python","href":"/docs/monitoring-transaction-propagation-from-node-to-mempool-in-evm-networks-with-python"},{"title":"Handle real-time data with WebSockets in JS \u0026 Python","href":"/docs/handle-real-time-data-using-websockets-with-javascript-and-python"},{"title":"Make your dApp more reliable with Chainstack","href":"/docs/make-your-dapp-more-reliable-with-chainstack"},{"title":"Best practices for error handling in API requests","href":"/docs/best-practices-for-error-handling-in-api-requests"},{"title":"Common SSL issues on Python and how to fix it","href":"/docs/common-ssl-issues-on-python-and-how-to-fix-it"},{"title":"EVM node returns \"Missing trie node\"","href":"/docs/evm-node-returns-missing-trie-node"},{"title":"EVM node connection: HTTP vs WebSocket","href":"/docs/evm-node-connection-http-vs-websocket"},{"title":"EVM transaction pool: pending vs queued","href":"/docs/evm-transaction-pool-pending-vs-queued"},{"title":"Adding a custom network to MetaMask","href":"/docs/adding-a-custom-network-to-metamask"},{"title":"Adding a custom RPC endpoint to Safe","href":"/docs/adding-a-custom-rpc-endpoint-to-safe"},{"title":"Adding a custom RPC endpoint to Rabby","href":"/docs/adding-a-custom-rpc-endpoint-to-rabby"},{"title":"Forking EVM-compatible mainnet with Hardhat","href":"/docs/forking-evm-compatible-mainnet-with-hardhat"},{"title":"Error reference","href":"/docs/error-reference"},{"title":"Only replay-protected (EIP-155) transactions allowed over RPC","href":"/docs/evm-only-replay-protected-eip-155-transactions-error"},{"title":"Checking node latency","href":"/docs/checking-node-latency"},{"title":"Best practices for securing your Chainstack endpoint","href":"/docs/best-practices-for-securing-your-chainstack-endpoint"},{"title":"Multithreading in Python for Web3 requests","href":"/docs/mastering-multithreading-in-python-for-web3-requests-a-comprehensive-guide"},{"title":"Authentication methods available on Chainstack","href":"/docs/authentication-methods-for-different-scenarios"},{"title":"Scaling your dApp with Kubernetes: Comprehensive guide","href":"/docs/tutorial-on-how-to-make-your-dapp-reliable-and-scalable-with-kubernetes"},{"title":"Choose the right blockchain network for your dApp","href":"/docs/navigating-the-web3-landscape-how-to-choose-the-right-blockchain-network-for-your-dapp"},{"title":"Getting started with Foundry","href":"/docs/getting-started-with-foundry"},{"title":"Ethereum: Redundant event listener with ethers/web3.js","href":"/docs/ethereum-redundant-event-llstener-ethers-web3js"},{"title":"Ethereum: Redundant event listener with Python","href":"/docs/ethereum-redundant-event-listener-python-version"}]},{"group":"Blockchain APIs guides","pages":[{"title":"Blockchain APIs guides","sidebarTitle":"Overview","href":"/docs/chainstack-blockchain-apis-guides"},{"title":"Flashblocks on Base: 200ms preconfirmations","href":"/docs/flashblocks-on-base"},{"title":"Stream real-time transactions on Base with Flashblocks","href":"/docs/base-streaming-transactions-flashblocks"},{"title":"Subblocks on Optimism: 200ms preconfirmations","href":"/docs/flashblocks-on-optimism"},{"title":"Track real-time transactions on Optimism with Subblocks","href":"/docs/optimism-streaming-transactions-flashblocks"},{"title":"Tracking some Bored Apes: The Ethereum event logs tutorial","href":"/docs/tracking-some-bored-apes-the-ethereum-event-logs-tutorial"},{"title":"Uncovering the power of eth_getBlockReceipts","href":"/docs/uncovering-the-power-of-ethgetblockreceipts"},{"title":"eth_getBlockReceipts emulator for blockchain data","href":"/docs/expanding-your-blockchain-horizons-the-eth_getblockreceipts-emulator"},{"title":"Deep dive into Merkle proofs and eth_getProof","href":"/docs/deep-dive-into-merkle-proofs-and-eth-getproof-ethereum-rpc-method"},{"title":"Geth vs Erigon: RPC method comparison on Ethereum","href":"/docs/geth-vs-erigon-deep-dive-into-rpc-methods-on-ethereum-clients"},{"title":"Ethereum logs tutorial series: Logs and filters","href":"/docs/ethereum-logs-tutorial-series-logs-and-filters"},{"title":"Custom JavaScript tracing for EVM transactions","href":"/docs/mastering-custom-javascript-tracing-for-ethereum-virtual-machine"},{"title":"Ethereum: Battleship game with zero-knowledge proofs","href":"/docs/develop-a-battleship-game-using-zero-knowledge-concepts-on-ethereum"},{"title":"Send Warp transactions with web3.js, ethers.js, web3.py","href":"/docs/sending-warp-transaction-with-web3js-ethersjs-web3py-and-ethclientgo"},{"title":"Chainlink oracles: Fetch real-time crypto prices","href":"/docs/harnessing-chainlink-oracles-with-chainstack-fetching-real-time-crypto-prices-from-ethereum"},{"title":"Fetch BAYC transfer events with web3.js getPastEvents","href":"/docs/fetching-transfer-events-with-getpastevents-for-a-bayc-nft"},{"title":"Fix Ethereum's filter not found error","href":"/docs/understanding-ethereums-filter-not-found-error-and-how-to-fix-it"},{"title":"Introducing Bun: The future of JavaScript runtimes","href":"/docs/introducing-bun-the-future-of-javascript-runtimes"},{"title":"Fetch address transactions with eth_getBlockByNumber","href":"/docs/fetching-transactions-to-and-from-a-specific-address-with-eth_getblockbynumber"},{"title":"cryo: Your gateway to blockchain data","href":"/docs/cryo-your-gateway-to-blockchain-data"},{"title":"cryo with Chainstack: Blockchain data mastery in Python","href":"/docs/cryo-with-chainstack-and-python"},{"title":"Exploring Bitcoin transactions with `getrawtransaction`","href":"/docs/exploring-bitcoin-transactions-with-getrawtransaction"},{"title":"MESC (Multi-Endpoint Shared Configuration) setup","href":"/docs/mesc-and-chainstack"},{"title":"ethers.js FallbackProvider for data reliability","href":"/docs/enhancing-blockchain-data-reliability-with-ethers-fallbackprovider"},{"title":"Web3.js: How to use the Chainstack plugin","href":"/docs/web3js-how-to-use-the-new-chainstack-plugin"},{"title":"ethers.js ChainstackProvider: Multi-chain balance checker","href":"/docs/ethersjs-chainstackprovider-how-to-multi-chain-wallet-balance-aggregator"}]},{"group":"Chainstack Marketplace","pages":[{"title":"Chainstack Marketplace","sidebarTitle":"Overview","href":"/docs/chainstack-marketplace-tutorials"},{"title":"JWT: Implement secure user authentication","href":"/docs/tutorial-mastering-jwt-how-to-implement-secure-user-authentication"},{"title":"JWT validation in Go for Chainstack Marketplace","href":"/docs/implementing-jwt-validation-in-golang-for-chainstack-marketplace-integration"}]},{"group":"Web3pedia","pages":[{"title":"Web3pedia","sidebarTitle":"Overview","href":"/docs/web3pedia-introduction"},{"title":"Web3 Lingo","href":"/docs/web3-language-and-acronyms"},{"title":"Development frameworks and libraries","href":"/docs/web3-development-frameworks-and-libraries-glossary"},{"title":"Smart contracts","href":"/docs/smart-contracts-glossary"},{"title":"Security","href":"/docs/web3-security-glossary"},{"title":"Infrastructure","href":"/docs/web3-infrastructure-glossary"},{"title":"Solana glossary","href":"/docs/solana-glossary"}]}]},{"group":"MCP servers","pages":[{"title":"Chainstack MCP server","href":"/docs/chainstack-mcp-server"},{"title":"Developer Portal MCP server","href":"/docs/developer-portal-mcp-server"},{"title":"EVM MCP server","href":"/docs/evm-mcp-server"},{"title":"Solana MCP server","href":"/docs/solana-mcp-server"}]},{"group":"Marketplace","pages":[{"title":"About Marketplace","href":"/docs/about-marketplace"},{"title":"List your app on marketplace","href":"/docs/list-your-app-on-marketplace"},{"title":"Work with Marketplace","href":"/docs/work-with-chainstack-marketplace"}]},{"group":"Chainstack Compare","pages":[{"title":"Chainstack Compare dashboard","href":"/docs/chainstack-compare-dashboard"}]},{"group":"Chainstack ChatGPT plugin","pages":[{"title":"Chainstack ChatGPT plugin overview","href":"/docs/chainstack-chat-gpt-plugin-introduction"}]},{"group":"Chainstack DLP browser extension","pages":[{"title":"Chainstack DLP tool overview","href":"/docs/chainstack-data-leak-protection-tool-introduction"}]},{"group":"Protocols","pages":[{"title":"Configurations","href":"/docs/protocols-configurations"},{"title":"Networks","href":"/docs/protocols-networks"},{"title":"Modes and types","href":"/docs/protocols-modes-and-types"},{"title":"Extended history","href":"/docs/extended-nodes"},{"title":"Clients","href":"/docs/protocols-clients"},{"title":"Available clouds, regions, \u0026 locations","href":"/docs/nodes-clouds-regions-and-locations"},{"title":"Mempool configurations","href":"/docs/mempool-configuration"},{"group":"Available node methods","pages":[{"title":"Available node methods","sidebarTitle":"Overview","href":"/docs/available-node-methods"},{"title":"Arc methods","href":"/docs/arc-methods"},{"title":"Ethereum methods","href":"/docs/ethereum-methods"},{"title":"Solana methods","href":"/docs/solana-methods"},{"title":"BNB Smart Chain methods","href":"/docs/bnb-smart-chain-methods"},{"title":"Polygon methods","href":"/docs/polygon-methods"},{"title":"Plasma methods","href":"/docs/plasma-methods"},{"title":"Robinhood Chain methods","href":"/docs/robinhood-methods"},{"title":"Elysium methods","href":"/docs/elysium-methods"},{"title":"Arbitrum methods","href":"/docs/arbitrum-methods"},{"title":"Base methods","href":"/docs/base-methods"},{"title":"Hyperliquid methods","href":"/docs/hyperliquid-methods"},{"title":"TRON methods","href":"/docs/tron-methods"},{"title":"Optimism methods","href":"/docs/optimism-methods"},{"title":"Avalanche methods","href":"/docs/avalanche-methods"},{"title":"TON methods","href":"/docs/ton-methods"},{"title":"Ronin methods","href":"/docs/ronin-methods"},{"title":"ZKsync Era methods","href":"/docs/zksync-era-methods"},{"title":"Starknet methods","href":"/docs/starknet-methods"},{"title":"Scroll methods","href":"/docs/scroll-methods"},{"title":"Aptos methods","href":"/docs/aptos-methods"},{"title":"Fantom methods","href":"/docs/fantom-methods"},{"title":"Sonic methods","href":"/docs/sonic-methods"},{"title":"Cronos methods","href":"/docs/cronos-methods"},{"title":"Gnosis Chain","href":"/docs/gnosis-chain"},{"title":"Kaia methods","href":"/docs/kaia-methods"},{"title":"Celo methods","href":"/docs/celo-methods"},{"title":"Bitcoin methods","href":"/docs/bitcoin-methods"},{"title":"Harmony methods","href":"/docs/harmony-methods"},{"title":"MegaETH methods","href":"/docs/megaeth-methods"},{"title":"Tempo methods","href":"/docs/tempo-methods"},{"title":"World Chain methods","href":"/docs/worldchain-methods"},{"title":"Stable methods","href":"/docs/stable-methods"}]}]},{"group":"Advanced APIs","pages":[{"title":"Advanced APIs","href":"/docs/advanced-apis-introduction"},{"group":"Warp transactions","pages":[{"title":"Warp transactions","sidebarTitle":"Overview","href":"/docs/warp-transactions"},{"title":"Solana Trader Nodes with Warp transactions","href":"/docs/solana-trader-nodes"},{"title":"Ethereum Trader Nodes with Warp transactions","href":"/docs/ethereum-trader-nodes"},{"title":"BNB Smart Chain Trader Nodes with Warp transactions","href":"/docs/bnb-trader-nodes"}]},{"title":"Debug \u0026 Trace APIs","href":"/docs/debug-and-trace-apis"},{"title":"Reading EVM traces: callTracer and prestateTracer","href":"/docs/reading-evm-traces-with-calltracer-and-prestatetracer"}]},{"group":"Tooling","pages":[{"title":"Protocols and tooling: Web3 libraries and frameworks","href":"/docs/protocols-tooling-introduction"},{"title":"Ethereum tooling","href":"/docs/ethereum-tooling"},{"title":"Solana tooling","href":"/docs/solana-tooling"},{"title":"BNB Smart Chain tooling","href":"/docs/bsc-tooling"},{"title":"Polygon tooling","href":"/docs/polygon-tooling"},{"title":"Arbitrum tooling","href":"/docs/arbitrum-tooling"},{"title":"Base tooling","href":"/docs/base-tooling"},{"title":"Optimism tooling","href":"/docs/optimism-tooling"},{"title":"Avalanche tooling","href":"/docs/avalanche-tooling"},{"title":"Hyperliquid tooling","href":"/docs/hyperliquid-tooling"},{"title":"TON tooling","href":"/docs/ton-tooling"},{"title":"Unichain tooling","href":"/docs/unichain-tooling"},{"title":"Ronin tooling","href":"/docs/ronin-tooling"},{"title":"Sui tooling","href":"/docs/sui-tooling"},{"title":"Sui gRPC endpoint","href":"/docs/sui-grpc-endpoint"},{"title":"Sui GraphQL endpoint","href":"/docs/sui-graphql-endpoint"},{"title":"Migrate Sui from JSON-RPC to gRPC and GraphQL","href":"/docs/sui-migrate-json-rpc-to-grpc"},{"title":"Berachain tooling","href":"/docs/berachain-tooling"},{"title":"Monad tooling","href":"/docs/monad-tooling"},{"title":"Linea tooling","href":"/docs/linea-tooling"},{"title":"Mantle tooling","href":"/docs/mantle-tooling"},{"title":"MegaETH tooling","href":"/docs/megaeth-tooling"},{"title":"Polkadot tooling","href":"/docs/polkadot-tooling"},{"title":"zkSync Era tooling","href":"/docs/zksync-era-tooling"},{"title":"Zora tooling","href":"/docs/zora-tooling"},{"title":"Starknet tooling","href":"/docs/starknet-tooling"},{"title":"Scroll tooling","href":"/docs/scroll-tooling"},{"title":"Aptos tooling","href":"/docs/aptos-tooling"},{"title":"Sonic tooling","href":"/docs/sonic-tooling"},{"title":"Fantom tooling","href":"/docs/fantom-tooling"},{"title":"TRON tooling","href":"/docs/tron-tooling"},{"title":"Cronos tooling","href":"/docs/cronos-tooling"},{"title":"Gnosis Chain tooling","href":"/docs/gnosis-tooling"},{"title":"Kaia (ex. Klaytn) tooling","href":"/docs/klaytn-tooling"},{"title":"Celo tooling","href":"/docs/celo-tooling"},{"title":"Bitcoin tooling","href":"/docs/bitcoin-tooling"},{"title":"Bitcoin testnets: Testnet, Signet Testnet, and Testnet4","href":"/docs/bitcoin-testnets"},{"title":"Zcash tooling","href":"/docs/zcash-tooling"},{"title":"Harmony tooling","href":"/docs/harmony-tooling"},{"title":"opBNB tooling","href":"/docs/opbnb-tooling"},{"title":"Filecoin tooling","href":"/docs/filecoin-tooling"},{"title":"Plasma tooling","href":"/docs/plasma-tooling"},{"title":"Tempo tooling","href":"/docs/tempo-tooling"},{"title":"Robinhood Chain tooling","href":"/docs/robinhood-tooling"},{"title":"Elysium tooling","href":"/docs/elysium-tooling"},{"title":"Arc tooling","href":"/docs/arc-tooling"},{"title":"World Chain tooling","href":"/docs/worldchain-tooling"},{"title":"Ink tooling","href":"/docs/ink-tooling"},{"title":"X Layer tooling","href":"/docs/xlayer-tooling"},{"title":"Stable tooling","href":"/docs/stable-tooling"},{"title":"XRP Ledger tooling","href":"/docs/xrpl-tooling"},{"title":"Stellar tooling","href":"/docs/stellar-tooling"}]}]},{"tab":"API","pages":[{"title":"API","href":"/reference/blockchain-apis"}]},{"tab":"Release notes","pages":[{"title":"Release notes","href":"/changelog"}]}]},{"product":"Self-Hosted","icon":"server","description":"Deploy on your own infrastructure","pages":[{"title":"Self-Hosted","href":"/docs/self-hosted/introduction"}]}]},"basePath":"","title":"TON: How to develop fungible tokens (Jettons) - Chainstack","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-DW6UFrUy.js","DynamicMarkdown-B62XqCSI.js","zoom-image-lightbox-eHyQ0tlO.js","lightbox-handle-r17bVUz3.js"]}