# Best Practices for Building High Performance Apps
Source: https://docs.monad.xyz/developer-essentials/best-practices
Learn best practices for building high performance apps on Monad
## Configure web hosting to keep costs under control
* Vercel and Railway provide convenient serverless platforms for hosting your
application, abstracting away the logistics of web hosting relative to using a
cloud provider directly. You may end up paying a premium for the convenience,
especially at higher volumes.
* AWS and other cloud providers offer more flexibility and commodity pricing.
* Before choosing any service, check pricing and be aware that many providers
offer loss-leader pricing on lower volumes, but then charge higher rates once
you hit a certain threshold.
* For example, suppose there is a \$20 plan that includes 1 TB per month of
data transfer, with \$0.20 per GB beyond that. Do the math to note that the second TB
(and onward) will cost \$200. If the next tier up says "contact us", don't
assume the next tier up will be charging \$20 per TB.
* If you are building a high-traffic app and you aren't careful about serving
static files more cheaply, it will be easy to exceed the loss-leader tier
and pay much more than you expect.
* For production deployments on AWS, consider:
* Amazon S3 + CloudFront for static file hosting and CDN
* AWS Lambda for serverless functions
* Amazon ECS or EKS for containerized applications
* Amazon RDS for database needs
* This setup typically provides granular cost control and scalability for
high-traffic applications.
## Use a hardcoded value instead of `eth_estimateGas` call if gas usage is static
Many on-chain actions have a fixed gas cost. The simplest example is that a
transfer of native tokens always costs 21,000 gas, but there are many others.
This makes it unnecessary to call `eth_estimateGas` for each transaction.
Use a hardcoded value instead, as suggested
[here](/developer-essentials/gas-pricing#set-the-gas-limit-explicitly-if-it-is-constant).
Eliminating an `eth_estimateGas` call substantially speeds up the user workflow
in the wallet, and avoids a potential bad behavior in some wallets when
`eth_estimateGas` reverts (discussed in the linked page).
## Reduce `eth_call` latency by submitting multiple requests concurrently
Making multiple `eth_call` requests serially will introduce unnecessary latency
due to multiple round trips to an RPC node. You can make many `eth_call`s
concurrently, either by condensing them into a single `eth_call` or by
submitting a batch of calls. Alternatively, you might find it better to switch
to an indexer.
### Condensing multiple `eth_call`s into one
* **Multicall:** Multicall is a utility smart contract that allows you to
aggregate multiple read requests (`eth_call`) into a single one. This is
particularly effective for fetching data points like token balances,
allowances, or contract parameters simultaneously. The standard `Multicall3`
contract is deployed at
[`0xcA11bde05977b3631167028862bE2a173976CA11`](https://monadvision.com/address/0xcA11bde05977b3631167028862bE2a173976CA11) on both Monad Mainnet and Monad Testnet.
Many libraries offer helper functions to simplify multicall usage, e.g.
[viem](https://viem.sh/docs/contract/multicall.html). Read more about
`Multicall3` [here](https://www.multicall3.com).
* **Custom Batching Contracts:** For complex read patterns or scenarios not
easily handled by the standard multicall contract, you can deploy a custom
smart contract that aggregates the required data in a single function, which
can then be invoked via a single `eth_call`.
| Revision | Notes |
|---|---|
MONAD\_NINE |
|
MONAD\_EIGHT |
|
MONAD\_SEVEN |
|
MONAD\_SIX |
|
MONAD\_FIVE |
|
MONAD\_FOUR |
|
MONAD\_THREE |
|
MONAD\_TWO |
|
MONAD\_ONE |
|
| Name | Value |
|---|---|
| Network Name |
|
| Chain ID |
|
| Currency Symbol |
|
| RPC URL | [see below](#public-rpc-endpoints) |
| Block Explorer (MonadVision) |
|
| Block Explorer (Monadscan) |
|
| Block Explorer (Socialscan) |
|
| Network Visualization |
|
| Current version / revision | [`v0.13.1`](/developer-essentials/changelog/releases#v0131) / [`MONAD_NINE`](/developer-essentials/changelog#revisions) |
| RPC URL | Provider | Rate Limits | Batch Call Limit | Notes |
|---|---|---|---|---|
|
|
QuickNode | 25 rps | 100 | |
|
|
Alchemy | 15 rps | 100 | `debug_` and `trace_` methods disabled |
|
|
Goldsky Edge | 300 per 10s | 10 | historical state lookups (e.g. `eth_call`) supported; see [discussion](/developer-essentials/historical-data) |
|
|
Ankr | 300 per 10s | 10 | `debug_` methods disabled |
|
|
MF | 20 rps | 1 | historical state lookups (e.g. `eth_call`) supported; see [discussion](/developer-essentials/historical-data) |
| Name | Address |
|---|---|
| Wrapped MON |
|
| [Create2Deployer](https://github.com/pcaversaccio/create2deployer) |
|
| [CreateX](https://github.com/pcaversaccio/createx) |
|
| [ERC-2470 Singleton Factory](https://eips.ethereum.org/EIPS/eip-2470) |
|
| [ERC-4337 EntryPoint v0.6](https://github.com/eth-infinitism/account-abstraction/blob/v0.6.0/contracts/core/EntryPoint.sol) |
|
| [ERC-4337 SenderCreator v0.6](https://github.com/eth-infinitism/account-abstraction/blob/v0.6.0/contracts/core/SenderCreator.sol) |
|
| [ERC-4337 EntryPoint v0.7](https://github.com/eth-infinitism/account-abstraction/releases) |
|
| [ERC-4337 SenderCreator v0.7](https://github.com/eth-infinitism/account-abstraction/blob/v0.7.0/contracts/core/SenderCreator.sol) |
|
| [ERC-6492 UniversalSigValidator](https://eips.ethereum.org/EIPS/eip-6492) |
|
| [Foundry Deterministic Deployer](https://getfoundry.sh/guides/deterministic-deployments-using-create2/) |
|
| [Multicall3](https://www.multicall3.com/) |
|
| [MultiSend](https://github.com/safe-fndn/safe-smart-account/blob/v1.3.0/contracts/libraries/MultiSend.sol) |
|
| [MultiSendCallOnly](https://github.com/safe-fndn/safe-smart-account/blob/v1.3.0/contracts/libraries/MultiSendCallOnly.sol) |
|
| [Permit2](https://github.com/Uniswap/permit2) |
|
| [Safe](https://github.com/safe-fndn/safe-smart-account/blob/v1.3.0/contracts/GnosisSafe.sol) |
|
| [SafeL2](https://github.com/safe-fndn/safe-smart-account/blob/v1.3.0/contracts/GnosisSafeL2.sol) |
|
| [SafeSingletonFactory](https://github.com/safe-fndn/safe-singleton-factory/blob/main/source/deterministic-deployment-proxy.yul) |
|
| [SimpleAccount](https://github.com/eth-infinitism/account-abstraction/blob/develop/contracts/accounts/SimpleAccount.sol) |
|
| [Simple7702Account](https://github.com/eth-infinitism/account-abstraction/blob/develop/contracts/accounts/Simple7702Account.sol) |
|
| [Sub Zero VanityMarket](https://github.com/Philogy/sub-zero-contracts) |
|
| [Zoltu Deterministic Deployment Proxy](https://github.com/Zoltu/deterministic-deployment-proxy) |
|
| Symbol | Name | Address | Bridge + Link | Bridgeable from | Select Markets |
|---|---|---|---|---|---|
| `AUSD` | Agora USD | LayerZero OFT ([Stargate](https://stargate.finance/?srcChain=ethereum\&srcToken=0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a\&dstChain=monad\&dstToken=0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a)) | Eth, Avax, Base | [Curve 3pool](https://www.curve.finance/dex/monad/pools/factory-stable-ng-2) [Uni AUSD/USDC](https://app.uniswap.org/explore/pools/monad/0xd112fde908d7342135fc7297cc53d25bf7a11d6c6e21fe7ac3e73c40f70827e8) |
|
| `USDC` | USD Coin | Circle CCTP ([link](https://monadbridge.com/?fromChain=Ethereum\&fromToken=USDC\&toChain=Monad\&toToken=USDC)) | 17 chains | [Curve 3pool](https://www.curve.finance/dex/monad/pools/factory-stable-ng-2) | |
| `USDT0` | Tether USD | LayerZero OFT ([Stargate](https://stargate.finance/?srcChain=ethereum\&srcToken=0xdAC17F958D2ee523a2206206994597C13D831ec7\&dstChain=monad\&dstToken=0xe7cd86e13AC4309349F30B3435a9d337750fC82D)) | 18 chains | [Curve 3pool](https://www.curve.finance/dex/monad/pools/factory-stable-ng-2) [Uni AUSD/USDT0](https://app.uniswap.org/explore/pools/monad/0xe56868928b91fcd5ebeada3d0ec8767f2bbfeb1e7da181203d13f6af76b03bf9) |
|
| `USD1` | USD1 | Chainlink CCIP ([Transporter](https://app.transporter.io/?from=mainnet\&tab=token\&to=monad\&token=USD1)) | Eth | [PCS USD1/USDC](https://pancakeswap.finance/liquidity/pool/monad/0x8CcB070b6F871AbA552972c76D3b7DF8d88Ffa1a) | |
| `thBILL` | Theo Short Duration UST Fund | LayerZero OFT ([Stargate](https://stargate.finance/?srcChain=ethereum\&srcToken=0x5FA487BCa6158c64046B2813623e20755091DA0b\&dstChain=monad\&dstToken=0xfDD22Ce6D1F66bc0Ec89b20BF16CcB6670F55A5a)) | Eth, Arb, Base, +4 | [Uni thBILL/USDC](https://app.uniswap.org/explore/pools/monad/0xeF6F8aa2d7018b3A3b33cf214DebD87e9638e043) | |
| `wsrUSD` | Wrapped srUSD | LayerZero OFT ([Stargate](https://stargate.finance/?srcChain=ethereum\&srcToken=0xd3fD63209FA2D55B07A0f6db36C2f43900be3094\&dstChain=monad\&dstToken=0x4809010926aec940b550D34a46A52739f996D75D)) | Eth | ||
| `yzUSD` | Yuzu USD | LayerZero OFT ([Stargate](https://stargate.finance/?srcChain=ethereum\&srcToken=0x387167e5C088468906Bcd67C06746409a8E44abA\&dstChain=monad\&dstToken=0x9dcB0D17eDDE04D27F387c89fECb78654C373858)) | Eth, Plasma | ||
| `syzUSD` | Staked Yuzu USD | LayerZero OFT ([Stargate](https://stargate.finance/?srcChain=ethereum\&srcToken=0x6DFF69eb720986E98Bb3E8b26cb9E02Ec1a35D12\&dstChain=monad\&dstToken=0x484be0540aD49f351eaa04eeB35dF0f937D4E73f)) | Eth, Plasma |
| Symbol | Name | Address | Bridge + Link | Bridgeable from | Select Markets |
|---|---|---|---|---|---|
| `WETH` | Wrapped Ether | NTT 2/2 ([MonadBridge](https://monadbridge.com/?fromChain=Ethereum\&fromToken=ETH\&toChain=Monad\&toToken=WETH)) | many | [Uni WETH/MON](https://app.uniswap.org/explore/pools/monad/0x3783b51e33900eb366a9e8473c76cda441e7170d2e5d96927f30c16a7add93aa) [Uni USDC/WETH](https://app.uniswap.org/explore/pools/monad/0xad408916c1c310da9c258d4c128a7bf50fd9edc42a218cc970da39cfc8a05d93) |
|
| `ezETH` | Renzo Restaked ETH | Hyperlane ([Nexus](https://nexus.hyperlane.xyz/?token=ezETH\&origin=ethereum\&destination=monad)) | many | [Curve ezETH/WETH](https://www.curve.finance/dex/monad/pools/factory-stable-ng-15) | |
| `rETH` | Rocket Pool ETH | Chainlink CCIP ([Transporter](https://app.transporter.io/?from=mainnet\&tab=token\&to=monad\&token=RETH)) | Eth | ||
| `wstETH` | Lido Wrapped Staked ETH | Chainlink CCIP ([Transporter](https://app.transporter.io/?tab=token\&to=monad\&token=wstETH)) | Eth, Ink, Plasma | [Uni wstETH/WETH](https://app.uniswap.org/explore/pools/monad/0x55d7ed991392eb9597a76a5f41dfb964e291452c15107c0e64fd3d25925394ce) | |
| `weETH` | Wrapped EtherFi ETH | LayerZero OFT ([Stargate](https://stargate.finance/?srcChain=ethereum\&srcToken=0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee\&dstChain=monad\&dstToken=0xA3D68b74bF0528fdD07263c60d6488749044914b)) | Eth, Base | [Uni weETH/WETH](https://app.uniswap.org/explore/pools/monad/0x2884b37c4a144e7047a1377ba7201d4b8ea318f0240369e01dc400f04e6cac40) | |
| `pufETH` | pufETH | LayerZero OFT ([Stargate](https://stargate.finance/?srcChain=ethereum\&srcToken=0xD9A442856C234a39a81a089C06451EBAa4306a72\&dstChain=monad\&dstToken=0x37D6382B6889cCeF8d6871A8b60E667115eDDBcF)) | Eth, Base, +3 |
| Symbol | Name | Address | Bridge + Link | Bridgeable from | Select Markets |
|---|---|---|---|---|---|
| `cbBTC` | Coinbase Wrapped BTC | Chainlink CCIP ([Transporter](https://app.transporter.io/?from=base\&tab=token\&to=monad\&token=cbBTC)) | Base | [Curve cbBTC/WBTC/LBTC](https://www.curve.finance/dex/monad/pools/0xd2634e05ebed90bd0a6c0e93d48d7bd8036653b1) [Uni USDC/cbBTC](https://app.uniswap.org/explore/pools/monad/0x7fc6232a9ec6cc4e9434640dcde5ee08ccae3b07de3247bf788fc9e2051b449e) |
|
| `WBTC` | Wrapped Bitcoin | LayerZero OFT ([Stargate](https://stargate.finance/?srcChain=ethereum\&srcToken=0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\&dstChain=monad\&dstToken=0x0555E30da8f98308EdB960aa94C0Db47230d2B9c)) | Eth, Base, +15 | [Curve cbBTC/WBTC/LBTC](https://www.curve.finance/dex/monad/pools/0xd2634e05ebed90bd0a6c0e93d48d7bd8036653b1) [Uni MON/WBTC](https://app.uniswap.org/explore/pools/monad/0x1c93dd2f2f47439330150bf728c3beeaad71de45420a49183214898b044b65d1) [Uni WBTC/USDC](https://app.uniswap.org/explore/pools/monad/0xd77c0f253764f5d5fbc78e13888afcc35c839262e6b21cd02baa9d8551a9898a) |
|
| `LBTC` | Lombard Staked Bitcoin | Chainlink CCIP ([Transporter](https://app.transporter.io/?from=mainnet\&tab=token\&to=monad\&token=LBTC)) | Eth, Avax, Base, BNB, Sonic | [Curve cbBTC/WBTC/LBTC](https://www.curve.finance/dex/monad/pools/0xd2634e05ebed90bd0a6c0e93d48d7bd8036653b1) [Curve Bitcoin Converter](https://www.curve.finance/dex/monad/pools/factory-stable-ng-8) |
|
| `BTC.b` | BTC.b | Chainlink CCIP ([Transporter](https://app.transporter.io/?from=mainnet\&tab=token\&to=monad\&token=BTC.b)) | Eth, Avax | [Curve Bitcoin Converter](https://www.curve.finance/dex/monad/pools/factory-stable-ng-8) | |
| `SolvBTC` | Solv BTC | Chainlink CCIP ([Transporter](https://app.transporter.io/?from=mainnet\&tab=token\&to=monad\&token=SolvBTC)) | Eth | ||
| `xSolvBTC` | xSolvBTC | Chainlink CCIP ([Transporter](https://app.transporter.io/?from=mainnet\&tab=token\&to=monad\&token=xSolvBTC)) | Eth |
| Symbol | Name | Address | Bridge + Link | Bridgeable from | Select Markets |
|---|---|---|---|---|---|
| `WSOL` | Wrapped SOL | Wormhole ([Portal](https://monadbridge.com/?fromChain=Solana\&fromToken=SOL\&toChain=Monad\&toToken=SOL)) | many | ||
| `XAUt0` | Tether Gold | LayerZero OFT ([Stargate](https://stargate.finance/?srcChain=ethereum\&srcToken=0x68749665FF8D2d112Fa859AA293F07A622782F38\&dstChain=monad\&dstToken=0x01bFF41798a0BcF287b996046Ca68b395DbC1071)) | Eth, Arb, Sol, +10 | [Uni XAUt0/AUSD](https://app.uniswap.org/explore/pools/monad/0xe1a8600687e4d06ca4787e5d0ccdacb1d360bfc9ca6ca2a49a688e14d0ef37b4) |
| Symbol | Name | Address |
|---|---|---|
| `WMON` | Wrapped MON | |
| `mEDGE` | Midas mEDGE |
| Name | Blockchain | Address | Notes |
|---|---|---|---|
| `WMON` | Solana |
|
|
| `WMON` | Ethereum |
|
2/2 NTT |
| Address space | Same address space as Ethereum (last 20 bytes of ECDSA public key) |
| EIP-7702 | Supported. See [EIP-7702 reference](/developer-essentials/eip-7702) |
| Opcodes | All [opcodes](https://www.evm.codes/) as of the Fusaka fork are supported. |
| Precompiles | All Ethereum precompiles as of the Fusaka fork (`0x01` to `0x11`), plus P256 signature verification at `0x0100` ([EIP-7951](https://eips.ethereum.org/EIPS/eip-7951)) and the staking precompile at `0x1000`. See [Precompiles](/developer-essentials/precompiles) |
| Max contract size | 128 kb (up from 24.5 kb in Ethereum) |
| Transaction types | Supported:
|
| Per-transaction gas limit | 30M gas |
| Block gas limit | 200M gas |
| Block gas target | 80% (160M gas) |
| Gas throughput | 500M gas/sec (200M gas/block divided by 0.4 sec/block) |
| Gas charged | The **gas limit** is what is charged. That is: total tokens deducted from the sender's balance is `value + gas_price * gas_limit`. See [discussion](/developer-essentials/gas-pricing#gas-limit-not-gas-used). |
| EIP-1559 dynamics | Monad is EIP-1559-compatible; base fee and priority fee work as on Ethereum. [EIP-1559 explainer](/developer-essentials/gas-pricing#eip-1559-compatibility) |
| Base fee | Min base fee of 100 MON-gwei (100 \* 10^-9 MON). The base fee controller is similar to Ethereum's but stays elevated for less time ([details](/developer-essentials/gas-pricing#base_price_per_gas-controller)). |
| Item | Ethereum | Monad | Notes |
|---|---|---|---|
| Cold access cost - account | 2,600 | 10,100 | Affected opcodes: `BALANCE`, `EXTCODESIZE`, `EXTCODECOPY`, `EXTCODEHASH`, `CALL`, `CALLCODE`, `DELEGATECALL`, `STATICCALL`, `SELFDESTRUCT` See [details](/developer-essentials/opcode-pricing#cold-access-cost) |
| Cold access cost - storage | 2,100 | 8,100 | Affected opcodes: `SLOAD`, `SSTORE`. See [details](/developer-essentials/opcode-pricing#cold-access-cost) |
| `ecRecover`, `ecAdd`, `ecMul`, `ecPairing`, `blake2f`, `point_eval` precompiles | See [details](/developer-essentials/opcode-pricing#precompiles) Precompiles `0x01`, `0x06`, `0x07`, `0x08`, `0x09`, `0x0a` |
| Block frequency | 400 ms |
| `TIMESTAMP` opcode | As in Ethereum, `TIMESTAMP` is a second-granularity unix timestamp. Since blocks are every 400 ms, this means that 2-3 blocks will likely have the same timestamp. |
| Finality | Blocks are finalized after two blocks (800 ms). Once a block is finalized, it cannot be reorged. See [MonadBFT](/monad-arch/consensus/monad-bft) for a fuller discussion. |
| Speculative finality | Blocks can be
[speculatively finalized](/monad-arch/consensus/monad-bft#speculative-finality)
after one block (400 ms), when it is marked as being in the `Voted` stage. Speculative finality can revert under very rare circumstances (see fuller discussion [here](/monad-arch/consensus/monad-bft#speculative-finality)). |
| JSON-RPC | See [RPC API](/reference/json-rpc). Monad supports all standard RPC methods from Ethereum. Differences are noted in [RPC Differences](/reference/rpc-differences). For rate limits, see [here](/reference/rpc-limits). |
| WebSocket | See the [WebSocket Guide](/reference/websockets). Monad implements the `eth_subscribe` method with the following subscription types:
|
| Execution Events | See [Execution Events](/execution-events). The Execution Events system allows developers to build high-performance applications that receive lowest-latency event data from a Monad node via shared memory queue. |
| Name | Value |
|---|---|
| Chain ID |
|
| Network Name |
|
| Currency Symbol |
|
| RPC URL | [see below](#public-rpc-endpoints) |
| Block Explorer (MonadVision) |
|
| Block Explorer (Monadscan) |
|
| Block Explorer (Socialscan) |
|
| Network visualization |
|
| App hub | [https://testnet.monad.xyz/](https://testnet.monad.xyz/) |
| Faucet | [https://faucet.monad.xyz](https://faucet.monad.xyz) |
| Current version / revision | [`v0.13.1`](/developer-essentials/changelog/testnet#v0131-2026-03-16) / [`MONAD_NINE`](/developer-essentials/changelog#revisions) |
| Changelog | [(link)](/developer-essentials/changelog/testnet) |
| RPC URL | Provider | Rate Limits | Batch Requests | Archive Support | Notes |
|---|---|---|---|---|---|
|
|
QuickNode | 50 rps | 100 | ✅ | 25 rps for `eth_call` and `eth_estimateGas` |
|
|
Ankr | 300 reqs / 10s 12000 reqs / 10 min |
100 | ❌ | `debug_*` methods are not allowed |
|
|
Monad Foundation | 20 rps | not allowed | ✅ |
| Name | Address |
|---|---|
| Wrapped MON |
|
| CreateX |
|
| Foundry Deterministic Deployer |
|
| [ERC-6492 UniversalSigValidator](https://eips.ethereum.org/EIPS/eip-6492) |
|
| EntryPoint v0.6 |
|
| EntryPoint v0.7 |
|
| Multicall3 |
|
| Permit2 |
|
| SafeSingletonFactory |
|
| Name | Address |
|---|---|
| Safe |
|
| SafeL2 |
|
| SafeProxyFactory |
|
| MultiSend |
|
| MultiSendCallOnly |
|
| CompatibilityFallbackHandler |
|
| SignMessageLib |
|
| CreateCall |
|
| SimulateTxAccessor |
|
| Name | Value |
|---|---|
| Purpose | Transient network; sandbox for new features. Currently a sandbox for the [Opcode pricing changes](/developer-essentials/opcode-pricing) |
| Chain ID |
|
| RPC URL | Please submit [this form](https://tally.so/r/wLlvlj). You will need to join the [Monad Developer Discord](https://discord.gg/monaddev) |
| Block Explorer | n/a |
| Faucet | Please submit [this form](https://tally.so/r/wLlvlj). You will need to join the [Monad Developer Discord](https://discord.gg/monaddev) |
| Current version / revision | [`v0.12.3`](/developer-essentials/changelog/testnet#v0123-2025-12-04) / [`MONAD_EIGHT`](/developer-essentials/changelog#revisions) |
Network Details:
Network Details:
| Network | URL |
|---|---|
| Testnet |
|
| Mainnet |
|
{token.symbol}
{token.name}
${formatCurrency(token.usdPrice, 4)}
) : (-
)}{formatCurrency(token.balanceFormatted, 2)}
{formatUSD(token.usdValue)}
) : (-
)}Micropayments via Thirdweb facilitator.{" "} Docs
Pipelining laundry day. Top: Naive; Bottom: Pipelined. Credit: Prof. Lois Hawkes, FSU
When doing four loads of laundry, the naive strategy is to wash, dry, fold, and store the first load of laundry before starting on the second one. The pipelined strategy is to start washing load 2 when load 1 goes into the dryer. Pipelining gets work done more efficiently by utilizing multiple resources simultaneously. **Monad** introduces pipelining to address existing bottlenecks in state storage, transaction processing, and distributed consensus. In particular, Monad introduces pipelining and other optimizations in five major areas: * [MonadBFT](/monad-arch/consensus/monad-bft) for performant, tail-fork-resistant BFT consensus * [RaptorCast](/monad-arch/consensus/raptorcast) for efficient block transmission * [Asynchronous Execution](/monad-arch/consensus/asynchronous-execution) for pipelining consensus and execution to raise the time budget for execution * [Parallel Execution](/monad-arch/execution/parallel-execution) and [JIT Compilation](/monad-arch/execution/native-compilation) for efficient transaction execution * [MonadDb](/monad-arch/execution/monaddb) for efficient state access Monad's client, which was written from scratch in C++ and Rust, reflect these architectural improvements and result in a platform for decentralized apps that can truly scale to world adoption. ## Why should I care? Decentralized apps are replacements for centralized services with several significant advantages: * **Open APIs / composability**: decentralized apps can be called atomically by other decentralized apps, allowing developers to build more complex functionality by stacking existing components. * **Transparency**: app logic is expressed purely through code, so anyone can review the logic for side effects. State is transparent and auditable; proof of reserves in DeFi is the default. * **Censorship-resistance and credible neutrality:** anyone can submit transactions or upload applications to a permissionless network. * **Global reach**: anyone with access to the internet can access crucial financial services, including unbanked/underbanked users. However, decentralized apps need cheap, performant infrastructure to reach their intended level of impact. A single app with 1 million daily active users (DAUs) and 10 transactions per user per day would require 10 million transactions per day, or 100 tps. A quick glance at [L2Beat](https://l2beat.com/scaling/activity) - a useful website summarizing the throughput and decentralization of existing EVM-compatible L1s and L2s - shows that no EVM blockchain supports even close to that level of throughput right now. Monad materially improves on the performance of an EVM-compatible blockchain network, pioneering several innovations that will hopefully become standard in Ethereum in the years to come. With Monad, developers, users, and researchers can reuse the wealth of existing applications, libraries, and applied cryptography research that have all been built for the EVM. ## Testnet Monad's public testnet is live. Head to [Network Information](/developer-essentials/network-information) to get started. # Why Blockchain? Source: https://docs.monad.xyz/introduction/why-blockchain A simple mental model for the 'what' and 'why'. A blockchain is decentralized agreement among a diverse set of participants about two things: 1. An official **ordering** (ledger) of transactions 2. An official **state of the world**, including balances of accounts and the state of various programs. In modern blockchains such as Ethereum, transactions consist of balance transfers, creation of new programs, and function calls against existing programs. The aggregate result of all transactions up to now produces the current state, which is why *agreement about (1) above implies agreement about (2).* A blockchain system has a set of protocol rules, also known as a consensus mechanism, which describe how a distributed set of nodes which are currently in sync will communicate with each other to agree upon additional transactions to add to the ledger. ([MonadBFT](/monad-arch/consensus/monad-bft) is an example of a consensus mechanism.) Induction keeps the nodes in sync: they start with the same state and apply the same transactions, so at the end of applying a new list of transactions, they still have consistent state. Shared global state enables the development of decentralized apps - apps that live "on the blockchain", i.e. on each of the nodes in the blockchain system. A decentralized app is a chunk of code (as well as persistent, app-specific state) that can get invoked by any user, who does so by submitting a transaction pointing to a function on that app. Each of the nodes in the blockchain is responsible for correctly executing the bytecode being called; duplication keeps each node honest. ## An example app Decentralized apps can implement functionality that we might otherwise expect to be implemented in a centralized fashion. For example, a very simple example of a decentralized app is a *Virtual Bank* (typically referred to in crypto as a Lending Protocol). In the physical world, a bank is a business that takes deposits and loans them out at a higher rate. The bank makes the spread between the high rate and the low rate; the borrower gets a loan to do something economically productive; and you earn interest on your deposits. Everyone wins! A Virtual Bank is simply an app with four major methods: `deposit`, `withdraw`, `borrow`, and `repay`. The logic for each of those methods is mostly bookkeeping to ensure that deposits and loans are being tracked correctly: ```python theme={null} class VirtualBank: def deposit(sender, amount): # transfer amount from sender to myself (the bank) # do internal bookkeeping to credit the sender def withdraw(sender, amount): # ensure the sender had enough on deposit # do internal bookkeeping to debit the sender # transfer amount from myself (the bank) to sender def borrow(sender, amount): # ... def repay(sender, amount); # ... ``` In Ethereum, or in Monad, someone can write code for this Virtual Bank and upload it; then anyone can utilize it for borrowing and lending, potentially far more easily than when trying to get access to banking services in their home country. This simple example shows the power of decentralized apps. Here are a few other benefits to call out: * **Open APIs / composability**: decentralized apps can be called atomically by other decentralized apps, allowing developers to build more complex functionality by stacking existing components. * **Transparency**: app logic is expressed purely through code, so anyone can review the logic for side effects. State is transparent and auditable; proof of reserves in DeFi is the default. * **Censorship-resistance and credible neutrality:** anyone can submit transactions or upload applications to a permissionless network. * **Global reach**: anyone with access to the internet can access crucial financial services, including unbanked/underbanked users. # Why Monad: Decentralization + Performance Source: https://docs.monad.xyz/introduction/why-monad Monad addresses today's performance bottlenecks through optimization while preserving decentralization. ## Decentralization matters A blockchain has several major components: * Consensus mechanism for achieving agreement on transactions to append to the ledger * Execution/storage system for maintaining the active state In increasing the performance of these components, one could cut corners, for example by requiring all of the nodes to be physically close to each other (to save on the overhead of consensus), or by requiring a huge amount of RAM (to keep much or all of the state in memory), but it would be at a significant cost to decentralization. And decentralization is the whole point! As discussed in [Why Blockchain?](/introduction/why-blockchain), decentralized shared global state allows many parties to coordinate while relying on a single, shared, objective source of truth. Decentralization is key to the matter; a blockchain maintained by a small group of node operators (or in the extreme case, a single operator!) would not offer benefits such as trustlessness, credible neutrality, and censorship-resistance. For any blockchain network, decentralization should be the principal concern. Performance improvements should not come at the expense of decentralization. ## Today's performance bottlenecks Ethereum's current execution limits (2.5M gas per second) are set conservatively, but for several good reasons: * Inefficient storage access patterns * Single-threaded execution * Very limited execution budget, because consensus can't proceed without execution * Concerns about state growth, and the effect of state growth on future state access costs Monad addresses these limitations through algorithmic improvements and architectural changes, pioneering several innovations that will hopefully become standard in Ethereum in the years to come. Maintaining a high degree of decentralization, while making material performance improvements, is the key consideration. ## Addressing these bottlenecks through optimization Monad enables pipelining and other optimizations in four major areas to enable exceptional Ethereum Virtual Machine performance and materially advance the decentralization/scalability tradeoff. Subsequent pages describe these major areas of improvement: * [MonadBFT](/monad-arch/consensus/monad-bft), a frontier BFT consensus mechanism solving the [tail-forking](https://www.category.xyz/blogs/monadbft-fast-responsive-fork-resistant-streamlined-consensus) problem * [RaptorCast](/monad-arch/consensus/raptorcast) for efficient block transmission * [Asynchronous Execution](/monad-arch/consensus/asynchronous-execution) for pipelining consensus and execution to raise the time budget for execution * [Parallel Execution](/monad-arch/execution/parallel-execution) and [JIT Compilation](/monad-arch/execution/native-compilation) for efficient transaction execution * [MonadDb](/monad-arch/execution/monaddb) for efficient storage of Ethereum state # Asynchronous I/O Source: https://docs.monad.xyz/monad-arch/concepts/asynchronous-io *Asynchronous I/O* is a form of input/output processing that allows the CPU to continue executing concurrently while communication is in progress. Disk and network are orders of magnitude slower than the CPU. Rather than initiating an I/O operation and waiting for the result, the CPU can initiate the I/O operation as soon as it's known that the data will be needed, and continue executing other instructions which do not depend on the result of the I/O operation. Some rough comparisons for illustration purposes:| Device | Latency | Bandwidth |
|---|---|---|
| CPU L3 Cache | 10 ns | >400 GB/s |
| Memory | 100 ns | 100 GB/s |
| Disk (NVMe SSD) | 400 us | 380 MB/s |
| Network | 50 - 200 ms | 1 Gb/s (125 MB/s) |
Pipelining laundry day. Top: Naive; Bottom: Pipelined. Credit: Prof. Lois Hawkes, FSU
When doing four loads of laundry, the naive strategy is to wash, dry, fold, and store the first load of laundry before starting on the second one. The pipelined strategy is to start washing load 2 when load 1 goes into the dryer. Pipelining gets work done more efficiently by utilizing multiple resources simultaneously. # Asynchronous Execution Source: https://docs.monad.xyz/monad-arch/consensus/asynchronous-execution Pipelined consensus-execution staging ## Summary Asynchronous Execution is a technique that allows Monad to substantially increase execution throughput by decoupling consensus from execution. Decoupling consensus from execution allows Monad to substantially increase the execution budget, since execution goes from occupying a small fraction of the block time to occupying the full block time. ## Background: interleaved execution is inefficient Consensus is the process where nodes come to agreement about the official ordering of transactions. Execution is the process of actually executing those transactions and updating the state. In Ethereum and most other blockchains, execution is a prerequisite to consensus. When nodes come to consensus on a block, they are agreeing on both (1) the list of transactions in the block, and (2) the merkle root summarizing all of the state after executing that list of transactions. As a result, the leader must execute all of the transactions in the proposed block *before* sharing the proposal, and the validating nodes must execute those transactions *before* responding with a vote. We refer to this style of blockchain as one that has execution **interleaved** with consensus. In this paradigm, the time budget for execution is extremely limited, since it has to happen twice *and* leave enough time for multiple rounds of cross-globe communication for consensus. Additionally, since execution will block consensus, the per-block gas limit must be chosen extremely conservatively to ensure that the computation completes on all nodes within the budget even in the worst-case scenario. The result is that the per-block gas limit is a tiny fraction of the block time. In particular, in Ethereum, the gas limit (30M worst-case gas) corresponds to a roughly 100ms time budget, even though the the block time is 12 seconds:Comparing Ethereum execution budget to block time
That's 1% of the block time! In short, interleaving consensus and execution has a massive time-shrinking effect. What if it didn't have to be this way? ## Asynchronous Execution Monad decouples consensus from execution, moving execution out of the hot path of consensus into a separate, slightly-lagged swim lane. **In Monad, nodes come to consensus (i.e. agreement about the official ordering of transactions), without ever executing those transactions.** That is, the leader proposes an ordering without knowing the resultant state root, and the validating nodes vote on block validity without knowing (for example) whether all of the transactions in the block execute without reverting. When a block is finalized, every node in the network (validators and full nodes) can execute the block's transactions to produce the latest, agreed-upon state. As a result of this change, execution can be budgeted the full block time. To see why, consider the somewhat stylized diagrams, in which blue rectangles correspond to execution, and orange rectangles correspond to consensus: **Interleaved execution** In interleaved execution, the sum of the execution and consensus budgets equals the block time, and consensus occupies most of the block time.Interleaved execution
**Asynchronous execution** In asynchronous execution, consensus occupies the full block time - and so does execution, because they are occurring in separate swim lanes, *at the same time*:Asynchronous execution
**Comparison** Comparing the two styles side by side, you can see the benefit of the asynchronous style: the execution budget can be significantly expanded to occupy the full block time:Top: interleaved; bottom: asynchronous.
## Determined ordering implies state determinism Although execution lags consensus, the true state of the world is determined as soon as the ordering is determined. Execution is required to unveil the truth, but the truth is already determined. It's worth noting that in Monad, like in Ethereum, it is fine for transactions in a block to "fail" in the sense that the intuitive outcome did not succeed.(For example, there could be a transaction included in a block in which Bob tries to send 10 tokens to Alice but only has 1 token in his account. The transfer 'fails' but the transaction is still valid. The outcome of any transaction, including failure, is deterministic.Example of transaction determinism even when some transactions fail
## Finer details ### Delayed Merkle Root As mentioned above, Monad block proposals don't include the merkle root of the state trie, since that would require execution to have already completed. All nodes should stay in sync because they're all doing the same work. But it'd be nice to be sure! As a precaution, proposals also includes a merkle root from `D` blocks ago, allowing nodes to detect if they're diverging. `D` is a systemwide parameter (currently set in testnet and mainnet to `3`). Delayed merkle root validity is part of block validity, so if the leader proposes a block but the delayed merkle root is wrong, the block will be rejected. As a result of this delayed merkle root: 1. After the network comes to consensus (2/3 majority vote) on block `N` (typically upon receiving block `N+2`, which contains a QC-on-QC for block `N`), it means that the network has agreed that the official consequence of block `N-D` is a state rooted in merkle root `M`. Light clients can then query full nodes for merkle proofs of state variable values at block `N-D`. 2. Any node with an error in execution at block `N-D` will fall out of consensus starting at block `N`. This will trigger a rollback on that node to the end state of block `N-D-1`, followed by re-execution of the transactions in block `N-D` (hopefully resulting in the merkle root matching), followed by re-execution of the transactions in block `N-D+1`, `N-D+2`, etc. Ethereum's approach uses consensus to enforce *state machine replication* in a very strict way: after nodes come to consensus, we know that the supermajority agrees about the official ordering and the state resulting from that ordering. However, this strictness comes at great cost because interleaved execution limits execution throughput. Asynchronous execution achieves state machine replication without this limitation, and the delayed merkle root serves an additional precaution.Delayed merkle root
### Reserve balance Because consensus can only be assumed to have up to the `D`-block delayed view of the global state, it is necessary to adjust the consensus and execution rules slightly to allow consensus to safely build blocks that include only transactions whose gas costs can be paid for. Monad introduces the [Reserve Balance](/developer-essentials/reserve-balance) rules to ensure this. The rules place light restrictions on when transactions can be included at consensus time, and imposes some conditions under which transactions will revert at execution time. ### Speculative execution In MonadBFT, nodes receive a proposed block `N` at slot `N`, but it is not finalized until slot `N+2`. During the intervening time, a node can still locally execute the proposed block (without the guarantee that it will become voted or finalized). This allows a few nice properties: 1. In the likely event that the proposed block is finalized, the validator node has already done the work and can immediately update its merkle root pointer to the result. 2. Transactions can be simulated (in `eth_call` or `eth_estimateGas`) against the speculative state which is likely more up-to-date. ### Transactions from newly-funded accounts Because consensus runs slightly ahead of execution, newly-funded accounts which previously had zero balance cannot send transactions until the transfer that credits them with tokens is `D` blocks old. In practice, this means that if you send tokens from account `A` into an account `B` (which has 0 balance), then you should wait until seeing the transaction receipt (indicative that that block has reached [`Proposed`](/monad-arch/consensus/block-states#Proposed) state), and then wait another 1.2 seconds. Alternatively, depending on the nature of intended transaction from `B`, it may be possible to write a smart contract callable by `A` which combines the funding operation and whatever `B` was intending to do, requiring no delay between funding and spending. ## Block states See [block states](/monad-arch/consensus/block-states) for a summary of the states through which each block progresses. # Message Authentication Source: https://docs.monad.xyz/monad-arch/consensus/authentication ## BLS Multi-Signatures Certificates (QCs and TCs) can be naively implemented as a vector of ECDSA signatures on the secp256k1 curve. These certificates are explicit and easy to construct and verify. However, the size of the certificate is linear with the number of signers. It poses a limit to scaling because the certificate is included in almost every consensus message, except vote message. Pairing-based BLS signature on the BLS12-381 curve helps with solving the scaling issue. The signatures can be incrementally aggregated into one signature. Verifying the single valid aggregated signature provides proof that the stakes associated with the public keys have all signed on the message. BLS signature is much slower than ECDSA signature. So for performance reasons, Monad's implementation of MonadBFT adopts a blended signature scheme where BLS signatures are only used on aggregatable message types (votes and timeouts). Message integrity and authenticity is still provided by ECDSA signatures. # Block States Source: https://docs.monad.xyz/monad-arch/consensus/block-states Block lifecycle In [MonadBFT](/monad-arch/consensus/monad-bft), a block progresses through [three states](/monad-arch/consensus/monad-bft#block-states-due-to-monadbft). Additionally, due to [asynchronous execution](/monad-arch/consensus/asynchronous-execution), block finalization is a separate (earlier) matter from state root verification. As a result of this architecture, each Monad block can be considered to be in one of four states. Note that a block's state is from the perspective of a particular observer (any other validator or full node). As new messages arrive, they allow that observer to progress the block's state locally. Although the states are defined locally, they correspond to assurance that the rest of the network will ultimately converge on an outcome consistent with that state. For example, if a node marks a block as `Finalized`, it is because that node has received a message carrying sufficient proof that the rest of the network will ultimately converge on enshrining that block at that block height. ## States A Monad block is in one of the four states: 1. `Proposed` 2. `Voted` 3. `Finalized` 4. `Verified`Classification of historical blocks based on the latest proposed block N.
### Proposed The block has been proposed by a leader but has not been voted upon. Note: if execution is not lagging behind consensus, a node may [speculatively execute](/monad-arch/consensus/asynchronous-execution#speculative-execution) the proposed block. ### Voted We have a [Quorum Certificate (QC)](/monad-arch/consensus/monad-bft#quorum-certificate-qc) in hand for the block, indicating that it has been voted affirmatively for by a supermajority of validators. (Typically, this is due to receiving a child block for this block.) In MonadBFT, `Voted` means the block can be [speculatively finalized](/monad-arch/consensus/monad-bft#speculative-finality). ### Finalized We have a QC-squared in hand for the block (that is, we have a [QC](/monad-arch/consensus/monad-bft#quorum-certificate-qc) for a block that contains a QC on the original block). This serves as proof that a supermajority of validators have ratified the existence and validity of a QC on the original block. Due to the consensus rules of MonadBFT, this means that the block is finalized. ### Verified A block containing the [delayed merkle root](/monad-arch/consensus/asynchronous-execution#delayed-merkle-root) has been finalized, meaning that the execution outputs of the block has been agreed upon by a supermajority of validator nodes. Concretely, the latest verified block will be the `latest_finalized_block - execution_delay`. ## Mapping to JSON-RPC commitment levels Monad uses a different consensus algorithm than Ethereum, but is API compatible with the [JSON-RPC](/reference) programming interface defined by the [Geth client](https://geth.ethereum.org/docs/interacting-with-geth/rpc). Geth communicates consensus information about blocks publicly over JSON-RPC using the tags `"latest"`, `"safe"`, and `"finalized"`. Here is how they map to Monad's block states: | Geth RPC state | ...corresponds to Monad block state | Why? | | -------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `"latest"` | `Proposed` | Both states refer to the most recently observed block, before consensus finalizes the result | | `"safe"` | `Voted` | In Ethereum's LMD-GHOST algorithm, "safe" means something like "extremely unlikely to be reverted, but still theoretically possible"; Monad's voted has a similar meaning | | `"finalized"` | `Finalized` | This has the same meaning on both chains: not revertible without a hard fork |Transaction path from RPC to leader (through the local mempool).
## Local mempool eviction Transactions are evicted from a validator's local mempool for the following reasons: 1. Whenever a validator finalizes a block, any replicas of transactions in that block are pruned from the local mempool. 2. Validators periodically check the validity of each transaction in the mempool and evict invalid transactions (e.g. nonces are too low, account balances are insufficient). 3. If the local mempool's size reaches a soft limit, older transactions will be evicted. # MonadBFT Source: https://docs.monad.xyz/monad-arch/consensus/monad-bft MonadBFT - Fast, Responsive, Fork-Resistant, Streamlined Consensus ## Summary MonadBFT represents a major leap in Byzantine Fault Tolerant (BFT) consensus. It is responsible for ensuring that the Monad network aligns on valid proposed blocks efficiently and securely, while supporting 10,000+ tx/s and sub-second time-to-finality, while also supporting a large consensus node set. MonadBFT combines all of these properties while also being resilient to **tail-forking**, a critical weakness of pipelined leader-based BFT protocols where a leader can fork away its predecessor's block. For a full description and deep technical dive into MonadBFT, please refer to the [full research paper](https://arxiv.org/abs/2502.20692), the [latest blog post from Category Labs](https://www.category.xyz/blogs/monadbft-update-fast-recovery-leader-fault-isolation) and the [original blog post](https://www.category.xyz/blogs/monadbft-fast-responsive-fork-resistant-streamlined-consensus) introducing MonadBFT. MonadBFT achieves: * **Speculative finality in a single consensus round**, and **full finality in two rounds**. * **Linear message and authenticator complexity** on the happy path (meaning under normal operations, when no failures occur). This allows the consensus validator set to scale to a large number of nodes. * **Optimistic responsiveness**: round progression without waiting for the worst-case network delay, both in the common case and while recovering from failed rounds. * **Leader fault isolation** A single failed leader only incurs one timeout delay. All other rounds are able to proceed as quickly as the network allows. This is in contrast to existing pipelined BFT protocols, which have a two timeouts for a failed leader. * **Tail-forking resistance**: built-in protection against [tail-forking](#no-tail-forking), a class of Maximal Extractable Value (MEV) attacks where a malicious leader could otherwise fork away its predecessor's block. This resolves a critical issue in prior pipelined leader-based BFT consensus mechanisms. No other pipelined leader-based BFT protocol combines all these features.| Sybil resistance mechanism | Proof-of-Stake (PoS) |
| Min block time | 400 ms |
| Finality | 2 slots (800 ms) |
| Speculative finality *(can only revert in [rare circumstances](#speculative-finality) requiring equivocation by the original leader*) | 1 slot (400 ms) |
| Delegation allowed | Yes |
Illustrating the pipelined (staggered) nature of MonadBFT. Same diagram as the previous, but zoomed out to include one more round.
## Unhappy Path (Fault Handling) The unhappy path describes the abnormal case where either the leader fails to send out a valid proposal or the QC builder (next leader) fails to build a QC. Understanding the unhappy path is crucial to understanding how the happy path works as well! The thing that ultimately allows a validator to speculatively finalize a proposal after receiving the child proposal, or finalize a proposal after receiving the grandchild proposal, is knowing that the fallback mechanism will still preserve the original proposal. Here, we will focus on the standard recovery, which is actually the fallback of the fallback mechanism. In most cases in practice, we can use [fast recovery](#fast-recovery), which substantially speeds up the time for the protocol to go back to the happy path after a failure occurs. However, for the protocol as a whole to achieve the tail forking resistance, even in the worst case of Byzantine failures, we rely on the standard recovery, which we now present. ### Scenario As before, to describe the flow of the unhappy path, we'll follow a scenario shown in a diagram. Again, suppose that it is currently round `K` and Alice is the scheduled leader. Bob and Charlie are the next two leaders in the schedule. Alice has last seen block `N-1`, so she is going to propose block `N`. In our example, Alice sends block `N` at round `K`, but Bob fails to send a block at round `K+1`. This could be because he was offline, or it could be that Alice either sent an invalid block, or not enough people voted for it.Generic view of the two-hop Raptorcast broadcast tree.
Using a two-level broadcast tree minimizes latency for message delivery. Each level of the tree has worst-case latency of the one-way latency between any two nodes in the network (the network’s “latency diameter”), so the worst case delivery time under RaptorCast is the round-trip-time of the network. ### Fault toleranceA 2 MB block is split into chunks, expanded and disseminated.
Note that the two-stage distribution model allows participating consensus nodes to receive a copy of a message even if direct network connectivity with the message originator is intermittently or entirely faulty.RaptorCast used to send erasure-encoded chunks from a leader to each validator.
The message originator (leader) typically[^2] distributes generated chunks to the first-hop recipients according to stake weight. For example: * Validator 1 has stake 1 * Validator 2 has stake 2 * Validator 3 has stake 3 * Validator 4 has stake 4 When Validator 1 is the leader, they will send: * 2 / (2 + 3 + 4) of generated chunks to validator 2 * 3 / (2 + 3 + 4) of generated chunks to validator 3 * 4 / (2 + 3 + 4) of generated chunks to validator 4 The leader *currently* sends chunks in contiguous ranges but development work is currently being done to enable dissemination at a more granular level. With the new algorithm, individual or much smaller sets of chunks would be sent randomly to first-hop validators without replacement, weighted by stake. This approach produces better utilization of the network as all validators can start processing chunks as they arrive and send for redistribution (start the second-hop). [^2]: The pure stake-weighted distribution scheme can break down when the number of required chunks is sufficiently small, e.g. 12 chunks distributed to 100 validators. This corner case is actively being addressed. ### Chunk transport integrity The originator signs every encoded chunk, so intermediate nodes (level one) in the broadcast tree can verify the integrity of an encoded chunk before forwarding it. Furthermore, the number of source chunks `K` is encoded in the message. For given `K`, the recipient currently accepts encoded chunks in the range of 0 to `7 * K - 1`. This gives the originator sufficient freedom to specify a high degree of redundancy (up to 7), while also limiting the potential for network spam by a rogue validator. To amortize the cost of generating and verifying these signatures over many chunks, RaptorCast aggregates contiguous ranges of encoded message chunks in variable-depth Merkle trees, and produces a single signature for every Merkle tree root. ## Other uses of RaptorCast RaptorCast is not only used for broadcasting a block in chunks from the leader. ### Transaction forwarding Transaction forwarding, e.g. from a full node to the next three validator hosts, is performed via RaptorCast, benefiting from its properties of speed and robustness. In this context, only one hop is required - the receiver should not rebroadcast. ### Secondary RaptorCast - full node block propagation RaptorCast is also used to disseminate block proposals to full nodes. As described in [full node configurations](/node-ops/full-node-block-delivery), each participating validator creates a secondary RaptorCast network rooted in itself, utilizing full nodes as the recipients. Full nodes are added to a validator's secondary RaptorCast group if they are **prioritized** by the validator, or if they are running in **public** mode and are selected by the selection algorithm.Each validator, after reconstructing the proposal, can disseminate all received (or produced) chunks to full nodes via dedicated relationship or secondary RaptorCast.
Secondary RaptorCast mirrors the primary RaptorCast diagram above. Under secondary RaptorCast, the originator is now *any* validator, and the group receiving chunks is a collection of public and prioritized full nodes, rather than the stake-weighted validator set. All full nodes in secondary RaptorCast receive an equal number of chunks (no stake-weight applicable). In terms of bandwidth, secondary RaptorCast is much more efficient than dedicated full nodes, because the upload bandwidth requirement for the validator is constant, rather than scaling linearly for the number of dedicated full nodes. Similar to primary RaptorCast, by adding a second hop, the burden of dissemination is borne more evenly by the participants in the group. # Staking Source: https://docs.monad.xyz/monad-arch/consensus/staking How Monad's staking system works Monad uses staking to determine validator voting weights and each epoch's leader schedule in [MonadBFT](/monad-arch/consensus/monad-bft). Validators must stake at least a minimum amount, and others can delegate to them. For a developer-oriented guide to interacting with the staking precompile, see the documentation [overview](/reference/staking/overview) and [API](/reference/staking/api). ## Validator set To be part of the active validator set, a validator must meet all of the following criteria: * **Self-delegation:** the validator's `authAddress` must have self-delegated at least `MIN_AUTH_ADDRESS_STAKE` (100,000 MON) * **Total stake:** the validator must have total delegation of at least `ACTIVE_VALIDATOR_STAKE` (10,000,000 MON) * **Rank:** the validator must be in the top `ACTIVE_VALSET_SIZE` (200) validators by stake weight Validators that fall below these thresholds are removed from the active set at the next epoch boundary. ## Rewards and commission When a block is produced, the leader who produced it earns a block reward from two sources: 1. **Inflationary reward** — a fixed `REWARD` of 25 MON per block, minted by the protocol 2. **Priority fees** — the priority fees from all transactions in the block ### Commission Each validator sets a commission rate (0%–100%) that determines what fraction of the inflationary block reward they keep before distributing the remainder to delegators. The remainder is distributed **pro rata** by stake weight. As a delegator, your share of a block's reward is proportional to your stake relative to the validator's total stake. **Example:** Suppose you have delegated to a validator and comprise 20% of that validator's total stake. The inflationary block reward is 10 MON and the commission is 10%. You receive: > 10 MON × 90% × 20% = **1.8 MON** ### Priority fees Currently, priority fees go only to the validator. Validators may choose to share priority fees with delegators (including themselves) by calling the [`externalReward`](/reference/staking/api#externalreward) method on the staking precompile. Commission is **not** deducted from external rewards. ### Claiming and compounding Each delegation accumulates rewards over time. Delegators can either: * **Claim** rewards — withdrawn to the delegator's account immediately * **Compound** rewards — added to the delegation, increasing stake weight (follows the standard epoch timing rules described below) ## Epochs and boundaries An **epoch** uses one set of delegations and leader validators for its entire duration. Every 50,000 blocks (the `BOUNDARY_BLOCK_PERIOD`) is a **boundary block** that commits the upcoming staking changes and the validator set to be used in the next epoch. Boundary blocks happen approximately every 5.5 hours. The next epoch does not start immediately at the boundary block, but after a 5,000-round delay (`EPOCH_DELAY_ROUNDS`) to allow all nodes to update their epoch information.Pipelining laundry day. Top: Naive; Bottom: Pipelined. Credit: Prof. Lois Hawkes, FSU
Here's a concrete example of how you can use pipelining yourself: Suppose you are writing a automated trading application. Further suppose that when a certain contract (e.g., a CLOB contract) emits a particular log event, your trading algorithm uses data from that log event as a signal to buy or sell. Before actually trading, you may need to perform additional actions first. Some of the things you might do are: * Check your risk limits, to see if increasing the position will give you too much exposure, or bring you too close to a potential liquidation * Run a more complex mathematical model, if your strategy needs to perform complex computations based on the input in the trading signal * Create and cryptographically sign the transaction for your buy/sell order All these things take time, and you can do them *in preparation* for your eventual trade, while you wait to find out if the block containing the market signal was actually finalized. If the block *is* finalized, you've already completed the essential work and can just "pull the trigger" (i.e., send the presigned trade transaction message). If the block is *not* finalized, you just throw the preparatory work away and never do the trade. ### Advantage #2: reacting before we know it's "real" Consider a UI component which wants to keep users informed about the progress of their transaction. When the transaction is speculatively executed, it can be marked as `Pending` in the UI, so that the user knows it has been seen and there's a very good chance it will go through. Even if it fails to progress to a later commit state, seeing a bit of instant feedback tends to be a superior user experience. Also, consider again the example of our automated trading application. Timing is very important in financial markets. When prices are changing rapidly, a trade *right now* could be much more valuable than a trade a few seconds later. It might make sense to initiate a trade *immediately* off of speculative data, even knowing that some tiny percentage of the time, the trade is based on a false premise. You may lose money sometimes, i.e., when your strategy reacts to "not real" market data in a block that fails to finalize. But *usually* this does not happen, and the gains from being early most of the time could outweigh the occasional losses when you react to "false" data. There are also other kinds of applications, e.g., on-chain games, where being more interactive is better than being perfectly accurate all the time. # Block commit states Elsewhere in the [documentation](/monad-arch/consensus/block-states), we learned that a block can be in one of four states: `Proposed`, `Voted`, `Finalized`, and `Verified`. These are sometimes called "commit states" or "consensus states" in the documentation. In speculative real-time data feeds, whenever you are given blockchain data, you will also be told: * What commit state the associated block is in * If the initial state was not *verified*, you will be notified at some point later when the block transitions to a different state Later in this article, we'll walk through exactly how the process happens in the current version of the software. ## Block numbers and block ids Once a block is canonically appended to the blockchain, it becomes uniquely identified by a (sequentially increasing) block number, also called a "block height." The inclusion of a block on the blockchain is the goal of the consensus algorithm, and is called "finalization." When a block is first constructed, it is constructed assuming it will become the next block number, `N`. But prior to finalization, consensus nodes are still trying to agree whether or not this candidate block will actually become block `N`. In consensus terminology, a leader constructs a block and *proposes* it to the Monad network. Consensus nodes vote on the proposal of a particular candidate block `B` to become the finalized block with number `N`. We call this candidate block a "proposed block." It's not part of the blockchain yet, but it probably will be soon. It's possible for the proposal to fail for many reasons. In the most common case, the proposed block does not reach enough other nodes before the timeout period expires, due to network issues. In that case, you would see another candidate to become the same block number `N` later on. Because the real-time data feeds are fed by speculative execution, you might see blockchain data for *both* of the block `N` candidates, and will be told later which one was correct. The critical thing to understand is that this blockchain data may claim to be for "block number `N`", but it's not be the "real" block `N` yet: it's just a *proposal* to become block `N`. Consequently, when you see real-time data for a block *before* it finalizes, the block number alone is not enough to uniquely identify it. This is only the block number that the block *will* have, if it eventually gets finalized. Instead, consensus uses a "block id" to uniquely identify proposed blocks. The id can be used to track a specific block through its commit state lifecycle. Consider the following situation: ``` ■ ║ ┌─────────────┐ ┌─────────────┐ ║ │ │ │ │ ┌─────────╬──┤ Block 102 ◀───┤ Block 103 │ │ ║ │ id: 79c25 │ │ id: 13a33 │ ┌─────────────┐ ┌──────▼──────┐ ║ │ │ │ │ │ │ │ │ ║ └─────────────┘ └─────────────┘ │ Block 100 ◀───┤ Block 101 │ ║ │ id: 5b3a6 │ │ id: 6d585 │ ║ │ │ │ │ ║ └─────────────┘ └──────▲──────┘ ║ ┌─────────────┐ │ ║ │ │ └─────────╬──┤ Block 102 │ ║ │ id: 3ed4d │ ║ │ │ ║ └─────────────┘ ║ ║ ◀ ║ ▶ Finalized blocks ║ Proposed blocks (committed to ║ (may not become blockchain) ║ committed to ║ blockchain) ║ ■ ``` In this diagram: * Block 101 is the latest block to be finalized * There are two competing proposed blocks vying to become block 102; they can be distinguished by their block ids * One of the proposed blocks (`13a33`) is the parent of another proposed block * You might see real-time data for *all* of these blocks; for those which are not finalized, you can start your pipeline processing right away, but you *may* want to wait until they reach a better commitment state before actingMonad Archive Server architecture
Many full nodes and validators can point to the same Archive Server. For instructions on running an Archive Server, please refer to [Running an Archive Server](/node-ops/archive-data/running-an-archive-server). Archive Servers store the following data types: * blocks * transactions * receipts * logs * traces Note: We call this an "Archive Server" rather than an "Archive Node" to reduce confusion. Archive Servers typically don't host a Monad full node (consensus and execution). ## Object Storage Archive data can also be stored in an object storage service (e.g., AWS S3). While MongoDB is preferred for performance and query efficiency, object storage provides a viable fallback option for users who prefer off-site or cloud-based data retention. Like ArchiveDB, the object storage can also be configured in the RPC client as a source of historical data. Object Storage stores the following data types: * blocks * transactions * receipts * logs * traces| **Tier** | **Criteria**\* | **Delegation** |
| 1 | Highest performance across high throughput networks in the industry, and/or strong level of experience operating in high throughput networks. Potential to have high impact in offering ecosystem contributions. | 90,000,000 MON |
| 2 | Strong performance across high throughput networks in the industry, and/or solid level of experience operating in high throughput networks. Potential to have a strong level of impact in contribution to the ecosystem. | 75,000,000 MON |
| 3 | Good performance across high throughput networks in the industry. Potential to have a good level of impact in contribution to the ecosystem. | 52,500,000 MON |
| 4 | Entities that can attract significant stake without the assistance of the foundation, or fair performance across high throughput networks in the industry. No extra ecosystem contributions planned beyond node operations. | 25,000,000 MON |
| What | Where |
|---|---|
| Block Explorer (MonadVision) |
|
| Block Explorer (Monadscan) |
|
| Block Explorer (SocialScan) |
|
| Network Visualization |
|
| App Hub |
|
| What | Where |
|---|---|
| Website |
|
| Blog |
|
| X |
|
| Monad Ecosytem on X |
|
| The Pipeline on X |
|
| Announcement Telegram |
|
| Youtube |
|
| Newsletter |
|
| Community Discord |
|
| r/Monad Subreddit |
|
| What | Where |
|---|---|
| `monad-developers` Github |
|
| DevNads on X |
|
| Developer Discord |
|
| Research Forum |
|
| Developer Portal |
|
| Dev Announcements Telegram |
|
| DeltaV Founder Community |
|
| What | Where |
|---|---|
| Monad Node Announcements |
|
| What | Where |
|---|---|
| Consensus Client Github |
|
| Execution Client Github |
|
| Monad Improvement Proposals (MIPs) |
|
| What | Where |
|---|---|
| Monad Foundation Jobs |
|
| Monad Ecosystem Jobs |
|
| What | Where |
|---|---|
| Block Explorer (MonadVision) |
|
| Testnet Faucet |
|
Timeline of withdrawability of stake relative to undelegate command
Timeline of withdrawability of stake relative to undelegate
{context.user.username}
} ``` The template also provide an example of the same in `components/Home/User.tsx` file. You can learn more about Context [here](https://miniapps.farcaster.xyz/docs/sdk/context). ### Performing App Actions| iOS | Android |
|---|---|
|
|
|
| iOS | Android |
|---|---|
|
|
|
| iOS | Android |
|---|---|
|
|
|
| iOS | Android |
|---|---|
|
|
|
| iOS | Android |
|---|---|
|
|
|
| iOS | Android |
|---|---|
|
|
|
| iOS | Android |
|---|---|
|
|
|
| Service | Status | Docs | Description |
|---|---|---|---|
| [Blockaid](https://www.blockaid.io//) | ✅ | Real-time detection platform for on-chain monitoring and fraud prevention | |
| [Birdeye](https://birdeye.so) | ✅ | [Docs](https://docs.birdeye.so/) | Birdeye platform provides comprehensive multi-market data for cryptocurrency tokens, pulling information from both decentralized exchanges (DEX) and centralized exchanges (CEX). |
| [Bubblemaps](https://bubblemaps.io/) | ✅ | [Docs](https://docs.bubblemaps.io/) | Visual analytics platform to investigate wallets, trace funds, and map token activity in real time |
| [CoinGecko](https://www.coingecko.com/) | ✅ | [Docs](https://docs.coingecko.com/) | Comprehensive crypto price & market data provider with on-chain DEX data, token discovery, and trading analytics |
| [Collab.Land](https://collab.land) | ✅ | [Docs](https://docs.collab.land/) | Community management tool that supports a wide range of projects, including DAOs, NFT communities, brands, and creators of all sizes |
| [DeBank](https://debank.com/) | ✅ | [Docs](https://docs.cloud.debank.com/) | DeFi portfolio tracker and analytics platform |
| [DeFiLlama](https://defillama.com/) | ✅ | [Docs](https://defillama.com/docs/api) | Open-source DeFi TVL and analytics platform aggregating data from thousands of protocols across multiple chains. See [How to list a DeFi project](https://docs.llama.fi/list-your-project/submit-a-project) |
| [Dune](https://www.dune.com/) | ✅ | [Docs](https://docs.dune.com/home) | Datasets and dashboards about on-chain activity |
| [Flipside](https://www.flipsidecrypto.xyz/) | ✅ | [Docs](https://docs.flipsidecrypto.xyz/) | AI-powered analytics for on-chain activity |
| [InsightX](https://app.insightx.network) | ✅ | [Docs](https://docs.insightx.network/docs) | Web3 transparency and security platform combining smart contract scanning with real-time holder maps for on-chain trading |
| [Matrica](https://matrica.io/) | ✅ | [Docs](https://docs.matrica.io/) | Cross-chain Web3 social platform and community management solution. |
| [Nansen](https://www.nansen.ai/) | ✅ | [Docs](https://docs.nansen.ai/) | Blockchain analytics platform providing wallet profiling, smart money tracking, and on-chain insights |
| [Phalcon Explorer by Blocksec](https://blocksec.com/explorer) | ✅ | [Docs](https://docs.blocksec.com/phalcon/phalcon) | Explorer for understanding transaction details with fund flow, balance changes, invocation flow, gas usage, and more |
| [Tenderly](https://tenderly.co/) | ✅ | [Docs](https://docs.tenderly.co/) | Comprehensive toolkit including virtual testnets, explorer, debugger, transaction simulator, and monitoring |
| Service | Status | Docs | Description |
|---|---|---|---|
| [Dune](https://www.alchemy.com/) | ✅ | [Docs](https://docs.dune.com/home) | Datasets and dashboards about on-chain activity |
| [Flipside](https://www.flipsidecrypto.xyz/) | ✅ | [Docs](https://docs.flipsidecrypto.xyz/) | AI-powered analytics for on-chain activity |
| [Phalcon](https://blocksec.com/explorer) | ✅ | [Docs](https://docs.blocksec.com/phalcon/phalcon) | Explorer for understanding transaction details with fund flow, balance changes, invocation flow, gas usage, and more |
| Block explorer | Powered by | Status | URL | Verifier Type & URL |
|---|---|---|---|---|
| **MonadVision** | BlockVision | ✅ |
|
Sourcify: |
| **Monadscan** | Etherscan | ✅ |
|
Etherscan: |
| **SocialScan - Monad** | Hemera | ✅ |
|
Etherscan: |
| Block explorer | Powered by | Status | URL | Verifier Type & URL |
|---|---|---|---|---|
| **MonadVision** | BlockVision | ✅ |
|
Sourcify: |
| **Monadscan** | Etherscan | ✅ |
|
Etherscan: |
| **SocialScan - Monad** | Hemera | ✅ |
|
Etherscan: |
| UserOp Explorer | Status | URL | Notes |
|---|---|---|---|
| JiffyScan | ✅ |
|
UserOp explorer for EIP-4337 |
| Transaction Explorer | Status | URL | Notes |
|---|---|---|---|
| Tenderly Explorer | ✅ |
|
Detailed transaction analyzer featuring call stack, balance changes, gas usage, and more |
| Blocksec Phalcon Explorer | ✅ |
|
Detailed transaction analyzer featuring call stack, balance changes, fund flows, and more |
| Feature | Description |
|---|---|
| **Arbitrary Messaging Bridge (AMB)** | Allows arbitrary messages to be securely relayed from a smart contract on chain 1 to a smart contract on chain 2. AMB provides guarantees that messages delivered to chain 2 represent events finalized on chain 1. |
| **Token Bridge** | Allows user to lock native tokens or ERC20 tokens on chain 1 and mint claim tokens on chain 2. Bridge maintains the invariant that, for each token minted on chain 2, there exists a corresponding token locked on chain 1. |
| **Intents Bridge / Liquidity Layer** | Allows user to turn in tokens on one chain and quickly redeem tokens on another chain, typically relying on drawing on a pool of assets maintained on each side. Provides greater immediacy relative to waiting for full finality of an AMB. |
| **Bridge Aggregator** | Aggregates multiple liquidity layers or token bridges, potentially integrating swapping as well so that users may receive a different token than the one they input. |
| **Chain Abstraction** | Enables a user experience exempt from the manual processes required to interact with multiple chains. |
| Provider | Status | Docs | Bridge Type | Contract Addresses | Explorer |
|---|---|---|---|---|---|
| [Across](https://app.across.to/bridge-and-swap) | ✅ | [Docs](https://docs.across.to/) | Intents Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/across.jsonc) | |
| [Axelar](https://www.axelar.network/) | ✅ | [Docs](https://docs.axelar.dev/) | AMB; Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/axelar.jsonc) | [Axelarscan](https://axelarscan.io/) |
| [Bungee](https://www.bungee.exchange/?fromChainId=1\&fromTokenAddress=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\&toChainId=143\&toTokenAddress=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee) | ✅ | [Docs](https://docs.bungee.exchange/) | Bridge Aggregator | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/bungee.jsonc) | |
| [ChangeHero](https://changehero.io/) | ✅ | [Docs](https://api-docs.changehero.io/) | Bridge Aggregator | ||
| [Chainlink CCIP](https://chain.link/cross-chain) | ✅ | [Docs](https://docs.chain.link/ccip) | AMB; Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/chainlink.jsonc) | [CCIP Explorer](https://ccip.chain.link/) |
| [Circle CCTP](https://www.circle.com/cross-chain-transfer-protocol) | ✅ | [Docs](https://developers.circle.com/cctp) | Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/circle_cctp.jsonc) | |
| [deBridge](https://app.debridge.com/?inputChain=1\&outputChain=143) | ✅ | [Docs](https://docs.debridge.com/) | AMB; Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/debridge.jsonc) | [deExplorer](https://app.debridge.finance/orders) |
| [Flashnet](https://flashnet.xyz/) | ✅ | [Docs](https://docs.flashnet.xyz/products/orchestration/overview) | Liquidity Layer | ||
| [Garden](https://garden.finance/) | ✅ | [Docs](https://docs.garden.finance/) | Token Bridge for BTC | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/garden.jsonc) | |
| [Gas.zip](https://www.gas.zip) | ✅ | [Docs](https://dev.gas.zip) | Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/gas_zip.jsonc) | [Explorer](https://www.gas.zip/scan) |
| [Hyperlane](https://nexus.hyperlane.xyz/) | ✅ | [Docs](https://docs.hyperlane.xyz) | AMB; Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/hyperlane_nexus.jsonc) | [Hyperlane Explorer](https://explorer.hyperlane.xyz) |
| [Jumper](https://jumper.exchange) | ✅ | Bridge aggregator | |||
| [LayerZero](https://layerzero.network/) | ✅ | [Docs](https://docs.layerzero.network) | AMB; Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/layerzero.jsonc) | [LayerZeroScan](https://testnet.layerzeroscan.com/) |
| [Li.fi](https://li.fi/) | ✅ | [Docs](https://docs.li.fi/) | Bridge aggregator SDK | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/li_fi.jsonc) | [Li.Fi Scan](https://scan.li.fi/) |
| [Mayan](https://swap.mayan.finance/) | ✅ | [Docs](https://docs.mayan.finance/) | Bridge Aggregator | [Mayan Explorer](https://explorer.mayan.finance/) | |
| [Particle Network](https://particle.network/) | ✅ | [Docs](https://developers.particle.network/intro/introduction) | Chain Abstraction | Explorer: `https://universalx.app/activity/details?id=${transactionId}` (Replace `transactionId`) |
|
| [Polymer](https://polymerlabs.org/) | ✅ | [Docs](https://docs.polymerlabs.org/docs/build/start/) | AMB | [PolyScan](https://dashboard.polymerlabs.org/) | |
| [Relay](https://relay.link/bridge) | ✅ | [Docs](https://docs.relay.link) | Liquidity Layer | [Transactions](https://relay.link/transactions) | |
| [SimpleSwap](https://simpleswap.io/) | ✅ | [Docs](https://api.simpleswap.io/docs/getting-started/) | Bridge Aggregator | ||
| [Socket](https://www.socket.tech/) | ✅ | [Docs](https://www.socket.tech/) | AMB | [Socketscan](https://www.socketscan.io/) | |
| [Squid](https://www.squidrouter.com/) | ✅ | [Docs](https://docs.squidrouter.com) | Liquidity Layer | [Explorer (Axelarscan)](https://axelarscan.io) | |
| [Stargate](https://stargate.finance/?srcChain=ethereum\&srcToken=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\&dstChain=monad\&dstToken=0x754704Bc059F8C67012fEd69BC8A327a5aafb603) | ✅ | [Docs](https://docs.stargate.finance/) | Liquidity Layer | ||
| [Trails](https://trails.build/) | ✅ | [Docs](https://docs.trails.build/) | Intents Bridge / Liquidity Layer | ||
| [Wormhole](https://wormhole.com/) / [Portal](https://portalbridge.com/) | ✅ | [Docs](https://wormhole.com/docs) | AMB; Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/wormhole_portal.jsonc) | [WormholeScan](https://wormholescan.io/#/?network=Testnet) |
| Provider | Status | Docs | Bridge Type | Contract Addresses | Explorer |
|---|---|---|---|---|---|
| Axelar | ✅ | [Docs](https://docs.axelar.dev/) | AMB; Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/testnet/axelar.jsonc) | [Axelarscan](https://axelarscan.io/) |
| Chainlink CCIP | ✅ | [Docs](https://docs.chain.link/ccip) | AMB; Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/testnet/chainlink_ccip.jsonc) | [CCIP Explorer](https://ccip.chain.link/) |
| [Garden](https://testnet.garden.finance) | ✅ | [Docs](https://docs.garden.finance/) | Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/testnet/garden.jsonc) | |
| LayerZero | ✅ | [Docs](https://docs.layerzero.network) | AMB; Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/testnet/layerzero.jsonc) | [LayerZeroScan](https://testnet.layerzeroscan.com/) |
| Polymer | ✅ | [Docs](https://docs.polymerlabs.org/docs/build/start) | AMB | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/testnet/polymer.jsonc) | [PolyScan](https://dashboard.sepolia.polymer.zone/) |
| Wormhole | ✅ | [Docs](https://wormhole.com/docs) | AMB; Token Bridge | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/testnet/wormhole_portal.jsonc) | [WormholeScan](https://wormholescan.io/#/?network=Testnet) |
| Service | Supported (Mainnet) | Docs |
|---|---|---|
| [Anchorage Digital](https://www.anchorage.com/) | ✅ | |
| [BitGo](https://www.bitgo.com/) | ✅ | [Docs](https://developers.bitgo.com/) |
| [Coinbase Custody](https://www.coinbase.com/custody) | ✅ | [Docs](https://docs.cdp.coinbase.com/prime/introduction/welcome) |
| [Fireblocks](https://www.fireblocks.com/) | ✅ | [Docs](https://developers.fireblocks.com/) |
| [HexTrust](https://www.hextrust.com/) | ✅ |
| Provider | Status | Docs | Supported services | Access model |
|---|---|---|---|---|
| [Allium](https://www.allium.so/) | ✅ | [Docs](https://docs.allium.so/) | **Chain data** (blocks, transactions, logs, traces, contracts) (via [Explorer](https://docs.allium.so/app/overview) (historical) and [Datastreams](https://docs.allium.so/realtime/kafka-blockchains-70+) (realtime) products) **Transfers** (native, ERC20, and NFTs) (via [Developer](https://docs.allium.so/data-products-real-time/allium-developer/wallet-apis/activities) (realtime) product) |
API, except streaming for Datastreams product |
| [Birdeye Data Services](https://bds.birdeye.so/) | ✅ | [Docs](https://docs.birdeye.so/) | [**DEX trades**](https://docs.birdeye.so/reference/get-defi-price) [**Market data**](https://docs.birdeye.so/reference/get-defi-v3-token-market-data) for tokens [**Token metadata**](https://docs.birdeye.so/reference/get-defi-tokenlist) and analytics |
API |
| [Codex](https://www.codex.io/) | ✅ | [Docs](https://docs.codex.io/) | Token- and trading-centric data: [Token](https://docs.codex.io/recipes/discover-tokens) charts, metadata, prices, events, and detailed stats NFT metadata, events, and detailed stats |
API |
| [Dune Sim](https://sim.dune.com/) | ✅ | [Docs](https://docs.sim.dune.com/) | **Chain data:** Transactions, logs (raw or decoded) **Balances:** Native, ERC20 |
API |
| [GoldRush](https://goldrush.dev/) (by Covalent) | ✅ | [Docs](https://goldrush.dev/docs/overview) | **Chain data:** Blocks, enriched transactions and logs (raw and decoded) **Balances:** native, ERC20, NFTs & Portfolio **Transactions:** Full historical with decoded transfer events |
API |
| [Goldsky](https://goldsky.com/) | ✅ | [Docs](https://docs.goldsky.com/) | **Chain data:** blocks, enriched transactions, logs, and traces via [Mirror](https://docs.goldsky.com/mirror/introduction). [Fast scan](https://docs.goldsky.com/mirror/sources/direct-indexing#backfill-vs-fast-scan) is supported | API; Streaming |
| [Mobula](https://mobula.io/) | ✅ | [Docs](https://docs.mobula.io/introduction) | **Chain data** **Balances:** [native, ERC20](https://docs.mobula.io/rest-api-reference/endpoint/wallet-portfolio) and [NFT](https://docs.mobula.io/rest-api-reference/endpoint/wallet-nfts) **Transfers:** [native, ERC20](https://docs.mobula.io/rest-api-reference/endpoint/wallet-transactions) and NFT [**DEX trades**](https://docs.mobula.io/rest-api-reference/endpoint/market-trades-pair) [**Market data**](https://docs.mobula.io/rest-api-reference/endpoint/market-data) for ERC20s |
API |
| [Moralis](https://moralis.com) | ✅ | [Docs](https://docs.moralis.com) | **Chain Data:** [blocks](https://docs.moralis.com/web3-data-api/evm/reference/blockchain-api#get-blocks), [transactions](https://docs.moralis.com/web3-data-api/evm/reference/blockchain-api#get-transactions), [logs](https://docs.moralis.com/rpc-nodes/reference/eth_getLogs) **Balances:** [native, ERC20,](https://docs.moralis.com/web3-data-api/evm/reference/wallet-api/get-wallet-token-balances-price?address=0xcB1C1FdE09f811B294172696404e88E658659905\&chain=eth\&token_addresses=\[]\&limit=50) [NFTs](https://docs.moralis.com/web3-data-api/evm/reference/wallet-api#get-wallet-nft-balances) (with metadata, logos, spam / low-liquidity filtering) [**Token Prices**](https://docs.moralis.com/web3-data-api/evm/reference/price-api#get-token-prices): USD valuation included **Transfers:** [native, ERC20](https://docs.moralis.com/web3-data-api/evm/reference/wallet-api/get-transactions-by-wallet?address=0x1f9090aaE28b8a3dCeaDf281B0F12828e676c326\&chain=eth\&limit=50\&order=DESC), and [NFTs](https://docs.moralis.com/web3-data-api/evm/reference/wallet-api/get-wallet-nft-transfers?address=0xcB1C1FdE09f811B294172696404e88E658659905\&chain=eth\&contract_addresses=\[]\&format=decimal\&limit=25\&order=DESC) (decoded events), [wallet history](https://docs.moralis.com/web3-data-api/evm/reference/wallet-api/get-wallet-history?address=0xcB1C1FdE09f811B294172696404e88E658659905\&chain=eth\&order=DESC\&limit=25) (categorized transfers + approvals) [**Streams**](https://docs.moralis.com/streams-api/evm): real-time address/contract monitoring via webhooks [**Datashare**](https://moralis.com/datashare/): Export massive crypto datasets [**RPC Nodes**](https://docs.moralis.com/rpc-nodes): Raw blockchain data access |
APIs, Streaming (webhooks) |
| [Quicknode](https://www.quicknode.com/) | ✅ | [Docs](https://www.quicknode.com/docs/streams/getting-started) | [**Streams**](https://www.quicknode.com/streams), [**Webhooks**](https://www.quicknode.com/webhooks) | Streams, Webhooks |
| [Rarible](https://rarible.org/) | ✅ | [Docs](https://docs.rarible.org/) | [**NFT data**](https://docs.rarible.org/reference): metadata; holdings by address (current and historic); trade data; spam scoring | API |
| [Sequence](https://sequence.xyz/) | ❓ | [Docs](https://docs.sequence.xyz/solutions/indexer/overview) | **Balances**: native, ERC20, and NFT **Transfers**: native, ERC20, and NFTs **Other:** Transaction history; webhooks |
API; Streaming (webhooks) |
| [SQD](https://sqd.ai/) | ✅ | [Docs](https://docs.sqd.ai/) | **Chain data:** blocks, transactions, logs, traces, state diffs (via [Portal](https://docs.sqd.dev/en/portal/evm/overview) and [Subsquid SDK](https://github.com/subsquid/squid-sdk)) **Other:** [MCP server](https://docs.sqd.dev/en/ai/mcp-server) for AI agent integration |
API |
| [SonarX](https://sonarx.com) | ✅ | **Chain data:** blocks, transactions, logs, traces **Transfers:** tokens, NFTs, internal transfers, net internal transfers (with/without pricing) **Balances:** PIT and current balances **DEX trades** and balances **Other:** Approvals and failed transactions |
Cloud Platforms Data Shares (Snowflake, BigQuery, Azure, Databricks); Streaming (Kafka); File delivery (CSV, Parquet, Iceberg); API | |
| [thirdweb](https://thirdweb.com/) | ✅ | [Docs](https://insight-api.thirdweb.com/guide/getting-started) | **Chain data:** [blocks](https://insight-api.thirdweb.com/reference#tag/blocks), [transactions](https://insight-api.thirdweb.com/guide/blueprints#transactions-blueprint), [logs](https://insight-api.thirdweb.com/guide/blueprints#events-blueprint), [contracts](https://insight-api.thirdweb.com/reference#tag/contracts) [**Balances**](https://insight-api.thirdweb.com/guide/blueprints#tokens-blueprint): native, ERC20, NFTs **Other:** [NFTs](https://insight-api.thirdweb.com/reference#tag/nfts) |
API |
| [Unmarshal](https://unmarshal.io/) | ❓ | [Docs](https://docs.unmarshal.io) | [**Balances**](https://docs.unmarshal.io/reference/fungibleerc20tokenbalances): ERC20 and NFT [**Transactions**](https://docs.unmarshal.io/reference/get-v3-chain-address-address-transactions) with price annotations [**NFT API**](https://docs.unmarshal.io/reference/get-v2-chain-address-address-nft-transactions) (transactions and metadata) |
API |
| [Zerion](https://zerion.io/) | ✅ | [Docs](https://zerion.io/api) | [**Wallet info**](https://developers.zerion.io/reference/wallets) [**Balances**](https://developers.zerion.io/reference/listwalletpositions) (native, ERC20, and NFTs) [**Transactions**](https://developers.zerion.io/reference/listwallettransactions) (multichain with prices) **Other:** [Portfolio](https://developers.zerion.io/reference/getwalletportfolio), [PNL](https://developers.zerion.io/reference/getwalletpnl#/) and [Historical Positions](https://developers.zerion.io/reference/getwalletchart) [Notification Webhooks](https://developers.zerion.io/v1.0-subscriptions/reference/createsubscriptionwallettransactions) |
API; Webhooks |
| Provider | Status | Docs | Supported services | Access model |
|---|---|---|---|---|
| [Allium](https://www.allium.so/) | ✅ | [Docs](https://docs.allium.so/) | **Chain data** (blocks, transactions, logs, traces, contracts) (via [Explorer](https://docs.allium.so/app/overview) (historical) and [Datastreams](https://docs.allium.so/realtime/kafka-blockchains-70+) (realtime) products) **Transfers** (native, ERC20, and NFTs) (via [Developer](https://docs.allium.so/data-products-real-time/allium-developer/wallet-apis/activities) (realtime) product) |
API, except streaming for Datastreams product |
| [Codex](https://www.codex.io/) | ✅ | [Docs](https://docs.codex.io/) | Token- and trading-centric data: [Token](https://docs.codex.io/recipes/discover-tokens) charts, metadata, prices, events, and detailed stats (see [dashboard](https://www.defined.fi/tokens/discover?network=mon-test)) [NFT](https://docs.codex.io/api-reference/queries/getnftpool) metadata, events, and detailed stats |
API |
| [Dune Sim](https://sim.dune.com/) | ✅ | [Docs](https://docs.sim.dune.com/) | **Chain data:** Transactions, logs (raw or decoded) **Balances:** Native, ERC20 |
API |
| [GoldRush](https://goldrush.dev/) (by Covalent) | ✅ | [Docs](https://goldrush.dev/docs/overview) | **Chain data:** Blocks, enriched transactions and logs (raw and decoded) **Balances:** native, ERC20, NFTs & Portfolio **Transactions:** Full historical with decoded transfer events |
API |
| [Goldsky](https://goldsky.com/) | ✅ | [Docs](https://docs.goldsky.com/) | **Chain data:** blocks, enriched transactions, logs, and traces via [Mirror](https://docs.goldsky.com/mirror/introduction). [Fast scan](https://docs.goldsky.com/mirror/sources/direct-indexing#backfill-vs-fast-scan) is supported | API; Streaming |
| [Mobula](https://mobula.io/) | ✅ | [Docs](https://docs.mobula.io/introduction) | **Chain data** **Balances:** [native, ERC20](https://docs.mobula.io/rest-api-reference/endpoint/wallet-portfolio) and [NFT](https://docs.mobula.io/rest-api-reference/endpoint/wallet-nfts) **Transfers:** [native, ERC20](https://docs.mobula.io/rest-api-reference/endpoint/wallet-transactions) and NFT [**DEX trades**](https://docs.mobula.io/rest-api-reference/endpoint/market-trades-pair) [**Market data**](https://docs.mobula.io/rest-api-reference/endpoint/market-data) for ERC20s |
API |
| [Moralis](https://moralis.com) | ❌ | [Docs](https://docs.moralis.com/) | **Chain data** **Balances:** [native, ERC20](https://docs.moralis.com/web3-data-api/evm/reference/wallet-api/get-wallet-token-balances-price?address=0xcB1C1FdE09f811B294172696404e88E658659905\&chain=eth\&token_addresses=\[]\&limit=50) and [NFT](https://docs.moralis.com/web3-data-api/evm/reference/wallet-api/get-nfts-by-wallet?address=0xff3879b8a363aed92a6eaba8f61f1a96a9ec3c1e\&chain=eth\&format=decimal\&limit=50\&token_addresses=\[]\&normalizeMetadata=true\&media_items=false\&include_prices=false) **Transfers:** [native, ERC20](https://docs.moralis.com/web3-data-api/evm/reference/wallet-api/get-transactions-by-wallet?address=0x1f9090aaE28b8a3dCeaDf281B0F12828e676c326\&chain=eth\&limit=50\&order=DESC) |
API |
| [Quicknode](https://www.quicknode.com/) | ✅ | [Docs](https://www.quicknode.com/docs/streams/getting-started) | [**Streams**](https://www.quicknode.com/streams), [**Webhooks**](https://www.quicknode.com/webhooks) | Streams, Webhooks |
| [Sequence](https://sequence.xyz/) | ✅ | [Docs](https://docs.sequence.xyz/solutions/indexer/overview) | **Balances**: native, ERC20, and NFT **Transfers**: native, ERC20, and NFTs **Other:** Transaction history; webhooks |
API; Streaming (webhooks) |
| [SQD](https://sqd.ai/) | ✅ | [Docs](https://docs.sqd.ai/) | **Chain data:** blocks, transactions, logs, traces, state diffs (via [Portal](https://docs.sqd.dev/en/portal/evm/overview) and [Subsquid SDK](https://github.com/subsquid/squid-sdk)) **Other:** [MCP server](https://docs.sqd.dev/en/ai/mcp-server) for AI agent integration |
API |
| [SonarX](https://sonarx.com) | ✅ | **Chain data:** blocks, transactions, logs, traces **Transfers:** tokens, NFTs, internal transfers, net internal transfers (with/without pricing) **Balances:** PIT and current balances **DEX trades** and balances **Other:** Approvals and failed transactions |
Cloud Platforms Data Shares (Snowflake, BigQuery, Azure, Databricks); Streaming (Kafka); File delivery (CSV, Parquet, Iceberg); API | |
| [thirdweb](https://thirdweb.com/) | ✅ | [Docs](https://insight-api.thirdweb.com/guide/getting-started) | **Chain data:** [blocks](https://insight-api.thirdweb.com/reference#tag/blocks), [transactions](https://insight-api.thirdweb.com/guide/blueprints#transactions-blueprint), [logs](https://insight-api.thirdweb.com/guide/blueprints#events-blueprint), [contracts](https://insight-api.thirdweb.com/reference#tag/contracts) [**Balances**](https://insight-api.thirdweb.com/guide/blueprints#tokens-blueprint): native, ERC20, NFTs **Other:** [NFTs](https://insight-api.thirdweb.com/reference#tag/nfts) |
API |
| [Zerion](https://zerion.io/) | ✅ | [Docs](https://zerion.io/api) | [**Wallet info**](https://developers.zerion.io/reference/wallets) [**Balances**](https://developers.zerion.io/reference/listwalletpositions) (native, ERC20, and NFTs) [**Transactions**](https://developers.zerion.io/reference/listwallettransactions) (multichain with prices) **Other:** [Portfolio](https://developers.zerion.io/reference/getwalletportfolio), [PNL](https://developers.zerion.io/reference/getwalletpnl#/) and [Historical Positions](https://developers.zerion.io/reference/getwalletchart) [Notification Webhooks](https://developers.zerion.io/v1.0-subscriptions/reference/createsubscriptionwallettransactions) |
API; Webhooks |
| Provider | Status | Docs | Language | Framework | Known for | Hosted service | Decen- tralized hosted service | Onchain & offchain data | Web- socket subscr- iptions | Query layer |
|---|---|---|---|---|---|---|---|---|---|---|
| [Envio](https://envio.dev/) | ✅ | [Docs](https://docs.envio.dev/docs/HyperIndex/overview) | JavaScript, TypeScript, Rescript | [HyperIndex](https://github.com/enviodev/hyperindex) | Performance and scale | ✅ | ❌ | ✅ | ✅ | GraphQL |
| [Ghost](https://tryghost.xyz/) | ✅ | [Docs](https://docs.tryghost.xyz/ghostgraph/overview) | Solidity | GhostGraph | Solidity development | ✅ | ❌ | ❌ | ❌ | GraphQL |
| [Goldsky](https://goldsky.com/) | ✅ | [Docs](https://docs.goldsky.com/) | AssemblyScript, SQL, TypeScript | [subgraph](https://github.com/graphprotocol/graph-node), [ETL pipelines](https://docs.goldsky.com/mirror/introduction) | Real-time data streaming | ✅ | ❌ | ✅ (with [Compose](https://docs.goldsky.com/compose/introduction)) | ❌ | GraphQL and SQL ([in your db](https://docs.goldsky.com/mirror/sinks/postgres)) |
| [Ormi](https://ormilabs.com/) | ✅ | [Docs](https://docs.ormilabs.com/) | Assembly- Script | [subgraph](https://github.com/graphprotocol/graph-node) | High performance and custom environments | ✅ | ❌ | ❌ | ❌ | Custom GraphQL |
| [Sentio](https://www.sentio.xyz/) | ✅ | [Docs](https://docs.sentio.xyz/docs/quickstart) | JavaScript, TypeScript | [sentio-sdk](https://github.com/sentioxyz/sentio-sdk) | Performance; integrated alerting and visualization | ✅ | ❌ | ✅ | ❌ | GraphQL & SQL |
| [SQD](https://sqd.ai/) | ✅ | [Docs](https://docs.sqd.ai) | TypeScript | [squid-sdk](https://github.com/subsquid/squid-sdk) | Performance, decentralization | ✅ | Partial[^1] | ✅ | ✅ | GraphQL |
| [Streamingfast](https://thegraph.market/) | ✅ | [Docs](https://docs.substreams.dev/tutorials/intro-to-tutorials/monad) | Rust | [Substreams](https://substreams.dev) | Performance, low latency and custom sinks | ✅ | ❌ | ❌ | ✅ (gRPC subscription) | gRPC, 20+ db types supported |
| [SubQuery](https://subquery.network/) | ✅ | [Docs](https://academy.subquery.network/) | TypeScript | [subql](https://github.com/subquery/subql) | Decentral- ization | ✅ | ✅ | ✅ | ❌ | GraphQL |
| [The Graph](https://thegraph.com/) | ✅ | [Docs](https://thegraph.com/docs/en/subgraphs/quick-start/) | Assembly- Script | [subgraph](https://github.com/graphprotocol/graph-node) | The original indexer | ✅ | ✅ | ❌ | ❌ | Custom GraphQL |
| Provider | Status | Docs | Language | Framework | Known for | Hosted service | Decen- tralized hosted service | Onchain & offchain data | Web- socket subscr- iptions | Query layer |
|---|---|---|---|---|---|---|---|---|---|---|
| [Envio](https://envio.dev/) | ✅ | [Docs](https://docs.envio.dev/docs/HyperIndex/overview) | JavaScript, TypeScript, Rescript | [HyperIndex](https://github.com/enviodev/hyperindex) | Performance and scale | ✅ | ❌ | ✅ | ✅ | GraphQL |
| [Ghost](https://tryghost.xyz/) | ✅ | [Docs](https://docs.tryghost.xyz/ghostgraph/overview) | Solidity | GhostGraph | Solidity development | ✅ | ❌ | ❌ | ❌ | GraphQL |
| [Goldsky](https://goldsky.com/) | ✅ | [Docs](https://docs.goldsky.com/) | AssemblyScript, SQL, TypeScript | [subgraph](https://github.com/graphprotocol/graph-node), [ETL pipelines](https://docs.goldsky.com/mirror/introduction) | Real-time data streaming | ✅ | ❌ | ✅ (with [Compose](https://docs.goldsky.com/compose/introduction)) | ❌ | GraphQL and SQL ([in your db](https://docs.goldsky.com/mirror/sinks/postgres)) |
| [Ormi](https://ormilabs.com/) | ✅ | [Docs](https://docs.ormilabs.com/) | Assembly- Script | [subgraph](https://github.com/graphprotocol/graph-node) | High performance and custom environments | ✅ | ❌ | ❌ | ❌ | Custom GraphQL |
| [SQD](https://sqd.ai/) | ✅ | [Docs](https://docs.sqd.ai) | TypeScript | [squid-sdk](https://github.com/subsquid/squid-sdk) | Performance, decentralization | ✅ | Partial[^1] | ✅ | ✅ | GraphQL |
| [SubQuery](https://subquery.network/) | ✅ | [Docs](https://academy.subquery.network/) | TypeScript | [subql](https://github.com/subquery/subql) | Decentral- ization | ✅ | ✅ | ✅ | ❌ | GraphQL |
| [The Graph](https://thegraph.com/) | ✅ | [Docs](https://thegraph.com/docs/en/subgraphs/quick-start/) | Assembly- Script | [subgraph](https://github.com/graphprotocol/graph-node) | The original indexer | ✅ | ✅ | ❌ | ❌ | Custom GraphQL |
| Provider | Status | Docs | Support notes | Regions supported | Currencies & Countries Supported |
|---|---|---|---|---|---|
| [AhoraCrypto](https://ahoracrypto.com/) | ✅ | [Docs](https://ahoracrypto.gitbook.io/ahoracrypto) | [Onramp API](https://ahoracrypto.gitbook.io/ahoracrypto/api/payment-intent) Offramp docs coming soon [Widget](https://ahoracrypto.gitbook.io/ahoracrypto/widget/web-widget) |
Africa, APAC, Europe, LATAM, Middle East, North America, South Asia | 14+ local payment methods, 50+ cryptocurrencies, 50+ countries |
| [Alchemy Pay](https://alchemypay.org/) | ✅ | [Docs](https://alchemypay.readme.io/) | [Onramp](https://alchemypay.readme.io/docs/alchemypay-on-ramp) [NFT Checkout](https://alchemypay.readme.io/docs/alchemy-pay-nft-checkout) [Crypto Payment](https://alchemypay.readme.io/docs/alchemy-pay-crypto-payment) |
APAC, Africa, LATAM | [Payment Methods](https://alchemypay.notion.site/Payment-Methods-Coverages-Other-Details-Table-fb3b4f5c68c04b9b8619c48aad31277d) |
| [alfred](https://www.alfredpay.io/) | ⌛️ | [Docs](https://alfredpay.readme.io/docs/overview) | [API Endpoints](https://alfredpay.readme.io/reference/customers-1) | LATAM, US, EU, APAC | [Supported Currencies](https://alfredpay.readme.io/docs/payment-methods-supported) |
| [Banxa](https://banxa.com/) | ✅ | [Docs](https://docs.banxa.com/) | [Onramp API](https://docs.banxa.com/docs/tutorial) [Offramp API](https://docs.banxa.com/docs/off-ramp) |
US, Canada, UK, EU, Australia | [Supported Currencies](https://support.banxa.com/en/support/solutions/articles/44002280809-which-fiat-currencies-does-banxa-support-) [Supported Countries](https://support.banxa.com/en/support/solutions/articles/44002216505-what-countries-are-supported-by-banxa-) |
| [Brale](https://brale.xyz/) | ✅ | [Docs](https://docs.brale.xyz/) | [Onramp](https://docs.brale.xyz/guides/fiat-to-stablecoin-onramp) [Offramp](https://docs.brale.xyz/guides/stablecoin-to-fiat-offramp) |
[Supported Currencies](https://docs.brale.xyz/coverage/value-types) | |
| [BTC Direct](https://onramp.btcdirect.eu/) | ✅ | [Docs](https://developer.btcdirect.eu/) | [Onramp](https://developer.btcdirect.eu/api/v1/#/Buy) [Offramp](https://developer.btcdirect.eu/api/v1/#/Sell) [Widget](https://developer.btcdirect.eu/widget/getting-started) |
SEPA / Europe | EUR [Supported Cryptocurrencies](https://developer.btcdirect.eu/widget/supported-cryptocurrencies.html) |
| [Capa](https://capa.fi/) | ✅ | [Docs](https://docs.capa.fi/docs/getting-started) | [Onramp API](https://docs.capa.fi/docs/on-ramp) [Offramp API](https://docs.capa.fi/docs/off-ramp) |
LATAM | [Supported Currencies](https://docs.capa.fi/docs/on-ramp#select-the-fiat-currency%3A) |
| [Chainrails](https://chainrails.io) | ✅ | [Docs](https://docs.chainrails.io) | [API Endpoints](https://docs.chainrails.io/api-reference/introduction) | Africa, APAC, LATAM, EU, US, Australia | [Supported Currencies](https://docs.chainrails.io/essentials/integrations) |
| [Coinbase Onramp & Offramp](https://docs.cdp.coinbase.com/onramp/introduction/welcome) | ✅ | [Docs](https://docs.cdp.coinbase.com/onramp/introduction/welcome) | [Onramp API](https://docs.cdp.coinbase.com/onramp-&-offramp/onramp-apis/onramp-overview) [Offramp API](https://docs.cdp.coinbase.com/onramp-&-offramp/offramp-apis/offramp-overview) |
US, Canada, Brazil, EU, Singapore, Australia, New Zealand | ACH, debit cards, Apple Pay, and cash/crypto balances are supported in the US. Debit cards and cash/crypto balances are supported everywhere else. |
| [Coindisco](https://coindisco.com/) | ✅ | [Docs](https://coindisco.gitbook.io/coindisco) | [Buy|Sell Widget](https://coindisco.gitbook.io/coindisco/widget-integration/widget-integration-methods) [White Label API](https://coindisco.gitbook.io/coindisco/widget-integration/white-label-api-integration) |
240+ countries and territories | [Supported Payment Methods](https://coindisco.gitbook.io/coindisco/platform-support/supported-payment-methods) [Supported Fiat Currencies](https://coindisco.gitbook.io/coindisco/supported-fiat-currencies) [Supported Countries](https://coindisco.gitbook.io/coindisco/supported-countries) |
| [Coinflow](https://coinflow.cash/) | ✅ | [Docs](https://docs.coinflow.cash/) | [API Endpoints](https://docs.coinflow.cash/guides/getting-started/getting-started-with-checkout) | APAC, LATAM, US, EU | [Supported Countries - Withdraw](https://docs.coinflow.cash/guides/payouts/available-countries) [Supported Countries - Global Push Card](https://docs.coinflow.cash/guides/payouts/available-countries/supported-countries-for-global-push-to-card) |
| [Daimo](https://daimo.com/) | ✅ | [Docs](https://docs.daimo.com/introduction) | [Quickstart](https://docs.daimo.com/quickstart) | Canada, US | [Payment Methods](https://docs.daimo.com/guides/fiat#supported-rails) |
| [El Dorado](https://eldorado.io/) | ✅ | [Docs](https://api.eldorado.io/) | [API Overview](https://api.eldorado.io/#api-overview) | LATAM | [Supported Countries](https://api.eldorado.io/concepts/countries) [Supported Currencies](https://api.eldorado.io/concepts/currencies) |
| [FinchPay](https://finchpay.io/) | ✅ | [Docs](https://docs.finchpay.io/) | [Widget URL](https://docs.finchpay.io/docs/url-structure) [API](https://docs.finchpay.io/docs/partners-api) |
EU, 150+ countries | Local payment methods: Brazil (PicPay, PIX), Mexico (SPEI and OXXO), Indonesia (virtual accounts BRI & Mandiri, e-wallets DANA/OVO) |
| [Flashnet](https://flashnet.xyz/) | ✅ | [Docs](https://docs.flashnet.xyz/products/orchestration/overview) | US Only, no NY | [Supported Chains & Assets](https://docs.flashnet.xyz/products/orchestration/overview#which-chains-and-assets-are-supported) | |
| [Fonbnk](https://www.fonbnk.com/) | ⌛️ | [Docs](https://docs.fonbnk.com/) | [Onramp](https://docs.fonbnk.com/on-ramp) [Offramp](https://docs.fonbnk.com/off-ramp) |
Africa, LATAM | [Supported Countries & Payment Methods](https://www.fonbnk.com/) |
| [Fun.xyz](https://fun.xyz/) | ✅ | [Contact](https://fun.xyz/contact) | ✅ | ||
| [Guardarian](https://guardarian.com/) | ✅ | [Docs](https://guardarian.com/api-doc) | [API](https://guardarian.com/api-doc) | LATAM, EU, Africa, APAC | [Supported Countries & Payment Methods](https://guardarian.com/payment-methods) [Supported Countries Fees](https://guardarian.notion.site/guardarian-supported-countries-fees) [Supported Currencies](https://guardarian.com/currencies) |
| [Halliday](https://halliday.xyz/) | ✅ | [Docs](https://docs.halliday.xyz/pages/home) | [API Quickstart](https://docs.halliday.xyz/pages/api-quickstart) [Payments SDK](https://docs.halliday.xyz/pages/payments-sdk-docs) |
US, EU, LATAM, APAC | Credit or debit card, ACH, Apple Pay, Google Pay, or a CEX balance |
| [HoneyCoin](https://honeycoin.app/) | ✅ | [Docs](https://docs.honeycoin.app/reference/welcome) | [Onramp](https://docs.honeycoin.app/reference/onramp) [Offramp](https://docs.honeycoin.app/reference/crypto-off-ramp) |
Africa | [Supported Countries & Limits](https://docs.honeycoin.app/docs/supported-countries-limits) |
| [Koywe](https://koywe.com/) | ✅ | [Docs](https://docs.koywe.com/crypto/introduction/%F0%9F%91%8B-welcome-to-koywe-%F0%9F%8C%B3) | [Widget Ramp Demo](https://widget.koywe.com/) | LATAM | [Supported Currencies](https://docs.koywe.com/documentation/supported-currencies-payment-methods#supported-currencies-by-country) [Supported Countries](https://docs.koywe.com/documentation/supported-currencies-payment-methods#supported-payment-methods-by-country) |
| [Meld](https://www.meld.io/) | ✅ | [Docs](https://docs.meld.io/docs/getting-started) (pw protected) | 225+ Countries | ||
| [Mercuryo](https://mercuryo.io/) | ✅ | [Docs](https://oor-redirect.redoc.ly/) | [Onramp API Endpoints](https://oor-redirect.redoc.ly/#section/On-Ramp.-Crypto-Purchase) [Offramp API Endpoints](https://oor-redirect.redoc.ly/#section/Off-Ramp.-Crypto-Sell.) |
US, EU | [Supported Currencies](https://help.mercuryo.io/hc/en-gb/articles/14495507502749-Which-fiat-currencies-are-supported) [Supported Countries](https://help.mercuryo.io/hc/en-gb/articles/15265851177245-Where-does-Mercuryo-operate) |
| [MoonPay](https://www.moonpay.com/) | ✅ | [Docs](https://dev.moonpay.com/) | [Onramp](https://dev.moonpay.com/docs/on-ramp-overview) [Offramp](https://dev.moonpay.com/docs/off-ramp-overview) |
US, EU, Canada, LATAM, APAC, Africa | [Supported Currencies](https://support.moonpay.com/en/articles/362475-moonpay-s-supported-currencies) [Supported Payment Methods](https://support.moonpay.com/en/articles/380823-moonpay-s-supported-payment-methods) [Unsupported Countries](https://support.moonpay.com/en/articles/380968-moonpay-s-unsupported-countries) |
| [Onramp Money](https://onramp.money/) | ✅ | [Docs](https://docs.onramp.money/onramp/) | APAC, Africa, EU, US, LATAM | ||
| [Onramper](https://www.onramper.com/) | ✅ | [Docs](https://docs.onramper.com/docs/getting-started) | [API Endpoints](https://docs.onramper.com/reference/get_supported) | 190+ Countries | [Payment Methods](https://docs.onramper.com/docs/supported-payment-methods) |
| [OSL Pay](https://www.osl-pay.com/) | ✅ | [Docs](https://www.osl-pay.com/api-doc/startHere/quickStart) | [Onramp](https://www.osl-pay.com/api-doc/product/onRamp) | 134+ Countries | [Supported Currencies & Countries](https://docs.pay.osl.com/docs/overview) |
| [Paj](https://paj.cash/) | ✅ | [Docs](https://github.com/paj-cash/paj_ramp/tree/main/examples) | [Support notes](https://github.com/paj-cash/paj_ramp) | Africa | [Supported Currencies & Countries](https://github.com/paj-cash/paj_ramp) |
| [Peer](https://peer.xyz/) | ✅ | [Docs](https://docs.peer.xyz/) | [Onramp](https://docs.peer.xyz/developer/integrate-zkp2p/integrate-redirect-onramp) [Offramp](https://docs.peer.xyz/developer/developer/offramp) |
US, EU, Africa, LATAM, APAC | Venmo, Cash App, Wise, Revolut, PayPal, Mercado Pago, etc. |
| [Ramp Network](https://rampnetwork.com/) | ✅ | [Docs](https://docs.rampnetwork.com/) | [Getting Started](https://docs.rampnetwork.com/getting-started) | US, EU, LATAM, APAC & 150+ countries | [Supported Currencies & Countries](https://support.rampnetwork.com/en/articles/433-which-countries-and-us-states-are-unsupported-for-buying-and-selling-crypto) |
| [Rampnow](https://app.rampnow.io) | ✅ | [Docs](https://docs.rampnow.io) | US, EU, EEA, LATAM, ASIA, South Africa, Nigeria | [Payment Methods](https://docs.rampnow.io/quickstart/onramp/payment-methods) | |
| [Suby](https://suby.fi) | ✅ | [Docs](https://documentation.suby.fi/) | [Crypto Payment Link](https://documentation.suby.fi/docs/payment/stablecoins) | Global | [Supported Countries](https://documentation.suby.fi/docs/merchants/supported-countries) |
| [Swapped](https://swapped.com/) | ✅ | [Docs](https://docs.swapped.com/) | [Onramp Endpoints](https://docs.swapped.com/swapped-ramp/endpoints/onramp-endpoints) [Offramp Endpoints](https://docs.swapped.com/swapped-ramp/endpoints/offramp-endpoints) |
150+ countries | [Supported Payment Methods](https://swapped.com/payment-methods) [Supported Countries](https://swapped.com/supported-countries) |
| [Swapper Finance](https://swapper.finance/) | ✅ | [Docs](https://docs.swapper.finance/) | [Onramp Widget SDK](https://docs.swapper.finance/quick-start) | Global | ACH, credit cards, Apple Pay, Google Pay, UnionPay, and other major payment methods |
| [Transak](https://transak.com/) | ✅ | [Docs](https://docs.transak.com/) | [API endpoints](https://docs.transak.com/reference/end-points) | US, UK, EU, Australia, Canada, APAC | [Supported Countries](https://transak.com/global-coverage) |
| [Unlimit](https://www.unlimit.com/) | ⌛️ | [Docs](https://integration.unlimit.com/doc-guides/mylvyrw7nxiom-homepage) | [API Endpoints](https://integration.unlimit.com/api-reference/6nk7rnnwnafo0-environments) | LATAM, Africa, India, EU, UK, APAC | [Payment Methods](https://integration.unlimit.com/doc-guides/ci8k5zm86k3ny-card-methods) [Payout Methods](https://integration.unlimit.com/doc-guides/m2mtijltdzphg-card-methods) |
| [UR](https://ur.app/) | ✅ | [Docs](https://docs.ur.app/hc/en-us) | APAC, EU | [Supported Countries](https://docs.ur.app/hc/en-us/articles/12862724456207-Countries-and-Territories-Supported-By-UR) [Restricted Countries](https://docs.ur.app/hc/en-us/articles/13249954658447-Restricted-Payment-Countries) |
|
| [Walapay](https://www.walapay.io/) | ⌛️ | [Docs](https://docs.walapay.io/docs/introduction) | Africa, APAC, EU, US, Canada, LATAM | [Supported Countries & Currencies](https://docs.walapay.io/docs/countries-and-rails) [Prohibited Countries](https://docs.walapay.io/docs/onboarding-regions) |
|
| [zerohash](https://zerohash.com/) | ✅ | [Docs](https://docs.zerohash.com/) | [On and Off Ramps](https://docs.zerohash.com/docs/convert-withdraw-1) | US, Canada, EU, Africa, Australia, APAC | [Supported Countries](https://docs.zerohash.com/docs/supported-regions) |
| Provider | Status | Docs | Contract addresses | Live data | Support notes |
|---|---|---|---|---|---|
| [Chainlink](https://chain.link/) | ✅ | [Docs](https://docs.chain.link/) | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/chainlink.jsonc) | [Live data](https://data.chain.link/streams) | * Push oracle ([Price Feeds](https://docs.chain.link/data-feeds/price-feeds)) * Pull oracle ([Data Streams](https://docs.chain.link/data-streams)) |
| [Chronicle](https://chroniclelabs.org/) | ✅ | [Docs](https://docs.chroniclelabs.org/) | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/chronicle.jsonc) | Push oracle; custom oracles | |
| [eOracle](https://eo.app/) | ✅ | [Docs](https://docs.eo.app/docs) | [Dashboard](https://data.eo.app/) | Push oracle | |
| [Pyth](https://www.pyth.network/) | ✅ | [Docs](https://docs.pyth.network/) | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/pyth.jsonc) | [Live data](https://www.pyth.network/price-feeds) | [Pull oracle](https://docs.pyth.network/price-feeds/pull-updates); [VRF](https://docs.pyth.network/entropy) |
| [Redstone](https://www.redstone.finance/) | ✅ | [Docs](https://docs.redstone.finance/) | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/redstone.jsonc) | [Live data](https://app.redstone.finance/app/tokens/) | [Push oracle](https://app.redstone.finance/app/feeds/?networks=10143); [pull oracle](https://app.redstone.finance/app/pull-model/redstone-primary-prod) |
| [Stork](https://stork.network/) | ✅ | [Docs](https://docs.stork.network/) |
* See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/stork.jsonc) * [Addresses](https://docs.stork.network/resources/contract-addresses/evm); [APIs](https://docs.stork.network/api-reference/contract-apis/evm); [Asset ID Registry](https://docs.stork.network/resources/asset-id-registry) |
[Live Data](https://data.stork.network) | [Push oracle](https://docs.stork.network/resources/stork-pushed-assets); [Pull oracle](https://docs.stork.network/introduction/core-concepts) |
| [Supra](https://supra.com/) | ✅ | [Docs](https://docs.supra.com/) | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/supra_oracles.jsonc) | [Live data](https://supra.com/data) | [Push oracle](https://docs.supra.com/oracles/data-feeds/push-oracle); [Pull oracle](https://docs.supra.com/oracles/data-feeds/pull-oracle); [dVRF](https://docs.supra.com/oracles/dvrf) |
| [Switchboard](https://switchboard.xyz/) | ✅ | [Docs](https://docs.switchboard.xyz/) | * See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/switchboard.jsonc) * More info: [Deployments](https://docs.switchboard.xyz/docs-by-chain/evm) | [Pull oracle](https://docs.switchboard.xyz/docs-by-chain/evm); [Oracle aggregator](https://docs.switchboard.xyz/custom-feeds/advanced-feed-configuration/oracle-aggregator); [VRF](https://docs.switchboard.xyz/docs-by-chain/evm/randomness) |
| Provider | Status | Docs | Contract addresses | Live data | Support notes |
|---|---|---|---|---|---|
| [Chainlink](https://chain.link/) | ✅ | [Docs](https://docs.chain.link/) |
Price Feeds \[push oracle]: * BTC / USD: [`0x2Cd9D7E85494F68F5aF08EF96d6FD5e8F71B4d31`](https://testnet.monadvision.com/address/0x2Cd9D7E85494F68F5aF08EF96d6FD5e8F71B4d31) * ETH / USD: [`0x0c76859E85727683Eeba0C70Bc2e0F5781337818`](https://testnet.monadvision.com/address/0x0c76859E85727683Eeba0C70Bc2e0F5781337818) * LINK / USD: [`0x4682035965Cd2B88759193ee2660d8A0766e1391`](https://testnet.monadvision.com/address/0x4682035965Cd2B88759193ee2660d8A0766e1391) * USDC / USD: [`0x70BB0758a38ae43418ffcEd9A25273dd4e804D15`](https://testnet.monadvision.com/address/0x70BB0758a38ae43418ffcEd9A25273dd4e804D15) * USDT / USD: [`0x14eE6bE30A91989851Dc23203E41C804D4D71441`](https://testnet.monadvision.com/address/0x14eE6bE30A91989851Dc23203E41C804D4D71441) * [general reference](https://docs.chain.link/data-feeds/price-feeds/addresses?page=1\&testnetPage=1\&network=monad) Data Streams \[pull oracle]: * Data stream verifier proxy address: [`0xC539169910DE08D237Df0d73BcDa9074c787A4a1`](https://testnet.monadvision.com/address/0xC539169910DE08D237Df0d73BcDa9074c787A4a1) |
[Live data](https://data.chain.link/streams) | * Push oracle ([Price Feeds](https://docs.chain.link/data-feeds/price-feeds)) * Pull oracle ([Data Streams](https://docs.chain.link/data-streams)) |
| [Chronicle](https://chroniclelabs.org/) | ✅ | [Docs](https://docs.chroniclelabs.org/) | [Address reference](https://docs.chroniclelabs.org/Developers/testnet) | [Dashboard](https://chroniclelabs.org/dashboard/oracles?blockchain=MON-TESTNET) (toggle dev mode) | Push oracle; custom oracles |
| [eOracle](https://eo.app/) | ✅ | [Docs](https://docs.eo.app/docs) | * Update conditions: 0.5% deviation & 24h heartbeat | [Dashboard](https://data.eo.app/) | Push oracle |
| [Gelato VRF](https://docs.gelato.network/web3-services/vrf/quick-start) | ✅ | [Docs](https://docs.gelato.network/web3-services/vrf/quick-start) | VRF | ||
| [Pyth](https://www.pyth.network/) | ✅ | [Docs](https://docs.pyth.network/) |
* Price feeds: [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://testnet.monadvision.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43) * Beta price feeds (incl MON/USDC): [`0xad2B52D2af1a9bD5c561894Cdd84f7505e1CD0B5`](https://testnet.monadvision.com/address/0xad2B52D2af1a9bD5c561894Cdd84f7505e1CD0B5) * Entropy: [`0x36825bf3Fbdf5a29E2d5148bfe7Dcf7B5639e320`](https://testnet.monadvision.com/address/0x36825bf3Fbdf5a29E2d5148bfe7Dcf7B5639e320) |
[Live data](https://www.pyth.network/price-feeds) [Beta live data](https://www.pyth.network/developers/price-feed-ids#beta) (includes MON / USDC) |
[Pull oracle](https://docs.pyth.network/price-feeds/pull-updates); [VRF](https://docs.pyth.network/entropy) |
| [Redstone](https://www.redstone.finance/) | ✅ | [Docs](https://docs.redstone.finance/) |
* Push oracle [addresses](https://app.redstone.finance/app/feeds/?networks=10143) * Update conditions for all: 0.5% deviation & 6h heartbeat |
[Live data](https://app.redstone.finance/app/tokens/) | [Push oracle](https://app.redstone.finance/app/feeds/?networks=10143); [pull oracle](https://app.redstone.finance/app/pull-model/redstone-primary-prod) |
| [Stork](https://stork.network/) | ✅ | [Docs](https://docs.stork.network/) |
* Pull oracle (includes MON/USD): [`0xacC0a0cF13571d30B4b8637996F5D6D774d4fd62`](https://testnet.monadvision.com/address/0xacC0a0cF13571d30B4b8637996F5D6D774d4fd62) * [Addresses](https://docs.stork.network/resources/contract-addresses/evm); [APIs](https://docs.stork.network/api-reference/contract-apis/evm); [Asset ID Registry](https://docs.stork.network/resources/asset-id-registry) |
[Live Data](https://data.stork.network) | [Pull oracle](https://docs.stork.network/introduction/core-concepts) |
| [Supra](https://supra.com/) | ✅ | [Docs](https://docs.supra.com/) | * Storage: [`0xf0e852BC3F940447862D6b67e5B9807E64B433F6`](https://testnet.monadvision.com/address/0xf0e852BC3F940447862D6b67e5B9807E64B433F6) * Pull: [`0xF8522B7fcE37439b98A2be282d413A44269028bE`](https://testnet.monadvision.com/address/0xF8522B7fcE37439b98A2be282d413A44269028bE) * Router: [`0x5CbC3Dfa33223884E7752a833Fa6aD28Ee015FC4`](https://testnet.monadvision.com/address/0x5CbC3Dfa33223884E7752a833Fa6aD28Ee015FC4) * Deposit: [`0x95bfe6e94D5ff9e9d087647bc589acC9E3D31619`](https://testnet.monadvision.com/address/0x95bfe6e94D5ff9e9d087647bc589acC9E3D31619) | [Live data](https://supra.com/data) | [Push oracle](https://docs.supra.com/oracles/data-feeds/push-oracle); [Pull oracle](https://docs.supra.com/oracles/data-feeds/pull-oracle); [dVRF](https://docs.supra.com/oracles/dvrf) |
| [Switchboard](https://switchboard.xyz/) | ✅ | [Docs](https://docs.switchboard.xyz/) |
* Pull oracle: [`0xD3860E2C66cBd5c969Fa7343e6912Eff0416bA33`](https://testnet.monadvision.com/address/0xD3860E2C66cBd5c969Fa7343e6912Eff0416bA33) * More info: [Deployments](https://docs.switchboard.xyz/docs-by-chain/evm) |
[Live data](https://explorer.switchboardlabs.xyz/) | [Pull oracle](https://docs.switchboard.xyz/docs-by-chain/evm); [Oracle aggregator](https://docs.switchboard.xyz/custom-feeds/advanced-feed-configuration/oracle-aggregator); [VRF](https://docs.switchboard.xyz/docs-by-chain/evm/randomness) |
| Provider | Status | Notes |
|---|---|---|
| [Alchemy](https://www.alchemy.com/) | ✅ | Alchemy Monad [docs](https://www.alchemy.com/docs/reference/monad-api-quickstart) |
| [Ankr](https://www.ankr.com/) | ✅ | Ankr Monad [docs](https://www.ankr.com/web3-api/chains-list/monad/) |
| [Blockdaemon](https://www.blockdaemon.com) | ✅ | Blockdaemon Monad [docs](https://www.blockdaemon.com/protocols/monad) |
| [BlockPI](https://blockpi.io/) | ✅ | BlockPI Monad [docs](https://blockpi.io/chain/monad) |
| [Chainstack](https://chainstack.com/build-better-with-monad/) | ✅ | Chainstack Monad [docs](https://docs.chainstack.com/reference/monad-getting-started) |
| [dRPC NodeCloud](https://drpc.org/) | ✅ | dRPC NodeCloud Monad [docs](https://drpc.org/chainlist/monad-mainnet-rpc) |
| [Dwellir](https://dwellir.com/) | ✅ | Dwellir Monad [docs](https://dwellir.com/networks/monad) |
| [Envio](https://envio.dev/) | ✅ | HyperRPC is a performant read-only RPC. See [docs](https://docs.envio.dev/docs/HyperRPC/overview-hyperrpc) |
| [GetBlock](https://getblock.io/) | ✅ | GetBlock Monad [docs](https://getblock.io/nodes/monad/) |
| [OnFinality](https://onfinality.io/) | ✅ | OnFinality Monad [docs](https://onfinality.io/en/networks/monad-mainnet) |
| [Quicknode](https://www.quicknode.com/) | ✅ | Quicknode Monad [docs](https://www.quicknode.com/chains/monad) |
| [Spectrum](https://spectrumnodes.com/) | ✅ | |
| [Tatum](https://tatum.io) | ✅ | Tatum Monad [docs](https://tatum.io/exclusive/monad) |
| [thirdweb](https://thirdweb.com) | ✅ | thirdweb RPC Edge [docs](https://portal.thirdweb.com/infrastructure/rpc-edge/overview) |
| [Triton One](https://triton.one/) | ✅ | Triton One Monad [docs](https://docs.triton.one/chains/monad) |
| [Validation Cloud](https://validationcloud.io/) | ✅ | Validation Cloud Monad [docs](https://docs.validationcloud.io/monad) |
| Provider | Status | Notes |
|---|---|---|
| [Alchemy](https://www.alchemy.com/) | ✅ | Alchemy Monad [docs](https://www.alchemy.com/docs/reference/monad-api-quickstart) |
| [Ankr](https://www.ankr.com/) | ✅ | Ankr Monad [docs](https://www.ankr.com/web3-api/chains-list/monad/) |
| [Blockdaemon](https://www.blockdaemon.com) | ✅ | Blockdaemon Monad [docs](https://www.blockdaemon.com/protocols/monad) |
| [BlockPI](https://blockpi.io/) | ✅ | BlockPI Monad [docs](https://blockpi.io/chain/monad) |
| [Chainstack](https://chainstack.com/build-better-with-monad/) | ✅ | Chainstack Monad [docs](https://docs.chainstack.com/reference/monad-getting-started) |
| [dRPC NodeCloud](https://drpc.org/) | ✅ | dRPC NodeCloud Monad [docs](https://drpc.org/chainlist/monad-testnet-rpc) |
| [Dwellir](https://dwellir.com/) | ✅ | Dwellir Monad [docs](https://dwellir.com/networks/monad) |
| [Envio](https://envio.dev/) | ✅ | HyperRPC is a performant read-only RPC. See [docs](https://docs.envio.dev/docs/HyperRPC/overview-hyperrpc) |
| [GetBlock](https://getblock.io/) | ✅ | GetBlock Monad [docs](https://getblock.io/nodes/monad/) |
| [OnFinality](https://onfinality.io/) | ✅ | OnFinality Monad [docs](https://onfinality.io/en/networks/monad-mainnet) |
| [Quicknode](https://www.quicknode.com/) | ✅ | Quicknode Monad [docs](https://www.quicknode.com/chains/monad) |
| [Spectrum](https://spectrumnodes.com/) | ✅ | |
| [Tatum](https://tatum.io) | ✅ | Tatum Monad [docs](https://tatum.io/chain/monad) |
| [thirdweb](https://thirdweb.com) | ✅ | thirdweb RPC Edge [docs](https://portal.thirdweb.com/infrastructure/rpc-edge/overview) |
| [Validation Cloud](https://validationcloud.io/) | ✅ | Validation Cloud Monad [docs](https://docs.validationcloud.io/monad) |
| Provider | Status | Docs | Supported services | How to get started |
|---|---|---|---|---|
| [Alchemy](https://www.alchemy.com/smart-wallets) | ✅ | [Docs](https://accountkit.alchemy.com/) | [Gas Manager](https://docs.alchemy.com/docs/gas-manager-services) (aka Paymaster) [Bundler](https://docs.alchemy.com/docs/bundler-services) |
[Dashboard](https://dashboard.alchemy.com/accounts?a=smart-wallets\&utm_source=chain_partner\&utm_medium=referral\&utm_campaign=monad) |
| [Biconomy](https://biconomy.io) | ✅ | [Docs](https://docs.biconomy.io) | [Orchestration Infrastructure](https://docs.biconomy.io/new/learn-about-biconomy/what-is-mee) | [Getting started](https://docs.biconomy.io/supertransaction-api/getting-started) |
| [FastLane](https://www.fastlane.xyz/) | ❓ | [Docs](https://docs.shmonad.xyz/) | [Paymaster and Bundler](https://github.com/FastLane-Labs/4337-bundler-paymaster-script/tree/main) | [Dashboard](https://shmonad.xyz/) |
| [Openfort](https://openfort.io/) | ✅ | [Docs](https://www.openfort.io/docs) | [Paymaster and Bundler](https://www.openfort.io/docs/overview) | [Quickstart](https://www.openfort.io/docs/overview/start) |
| [Pimlico](https://pimlico.io/) | ✅ | [Docs](https://docs.pimlico.io/) | [Paymaster](https://docs.pimlico.io/infra/paymaster) [Bundler](https://docs.pimlico.io/infra/bundler) |
[Tutorial](https://docs.pimlico.io/permissionless/tutorial/tutorial-1) |
| [Sequence](https://sequence.xyz/) | ✅ | [Docs](https://docs.sequence.xyz/solutions/infrastructure/transaction-api) | Relayer: gasless, batched, parallelized transactions | [Quickstart](https://docs.sequence.xyz/solutions/builder/gas-sponsorship) |
| [thirdweb](https://thirdweb.com/) | ✅ | [Docs](https://portal.thirdweb.com/) | [Paymaster and Bundler](https://portal.thirdweb.com/connect/account-abstraction/infrastructure) | [Quickstart](https://portal.thirdweb.com/typescript/v5/account-abstraction/get-started) |
| [ZeroDev](https://zerodev.app/) | ✅ | [Docs](https://docs.zerodev.app/) | [Meta AA infrastructure](https://docs.zerodev.app/meta-infra/intro) for bundlers and paymasters | [Dashboard](https://dashboard.zerodev.app/) |
| Provider | Status | Docs | Supported services | How to get started |
|---|---|---|---|---|
| [Alchemy](https://www.alchemy.com/smart-wallets) | ✅ | [Docs](https://accountkit.alchemy.com/) | [Gas Manager](https://docs.alchemy.com/docs/gas-manager-services) (aka Paymaster) [Bundler](https://docs.alchemy.com/docs/bundler-services) |
[Dashboard](https://dashboard.alchemy.com/accounts?a=smart-wallets\&utm_source=chain_partner\&utm_medium=referral\&utm_campaign=monad) |
| [Biconomy](https://biconomy.io) | ✅ | [Docs](https://docs.biconomy.io) | [Orchestration Infrastructure](https://docs.biconomy.io/new/learn-about-biconomy/what-is-mee) | [Getting started](https://docs.biconomy.io/supertransaction-api/getting-started) |
| [FastLane](https://www.fastlane.xyz/) | ✅ | [Docs](https://docs.shmonad.xyz/) | [Paymaster and Bundler](https://github.com/FastLane-Labs/4337-bundler-paymaster-script/tree/main) | [Dashboard](https://shmonad.xyz/) |
| [Gelato](https://docs.gelato.cloud/paymaster-&-bundler/introduction/overview) | ✅ | [Docs](https://docs.gelato.cloud/paymaster-&-bundler/introduction/overview) | [Paymaster and Bundler](https://docs.gelato.cloud/paymaster-&-bundler/introduction/overview) | [Quickstart](https://docs.gelato.cloud/paymaster-&-bundler/how-to-guides/overview) |
| [Openfort](https://openfort.io/) | ✅ | [Docs](https://www.openfort.io/docs) | [Paymaster and Bundler](https://www.openfort.io/docs/overview) | [Quickstart](https://www.openfort.io/docs/overview/start) |
| [Pimlico](https://pimlico.io/) | ✅ | [Docs](https://docs.pimlico.io/) | [Paymaster](https://docs.pimlico.io/infra/paymaster) [Bundler](https://docs.pimlico.io/infra/bundler) |
[Tutorial](https://docs.pimlico.io/permissionless/tutorial/tutorial-1) |
| [Sequence](https://sequence.xyz/) | ✅ | [Docs](https://docs.sequence.xyz/solutions/infrastructure/transaction-api) | Relayer: gasless, batched, parallelized transactions | [Quickstart](https://docs.sequence.xyz/solutions/builder/gas-sponsorship) |
| [thirdweb](https://thirdweb.com/) | ✅ | [Docs](https://portal.thirdweb.com/) | [Paymaster and Bundler](https://portal.thirdweb.com/connect/account-abstraction/infrastructure) | [Quickstart](https://portal.thirdweb.com/typescript/v5/account-abstraction/get-started) |
| [ZeroDev](https://zerodev.app/) | ✅ | [Docs](https://docs.zerodev.app/) | [Meta AA infrastructure](https://docs.zerodev.app/meta-infra/intro) for bundlers and paymasters | [Dashboard](https://dashboard.zerodev.app/) |
| Provider | Status | Docs | Supported services | Security Method | How to get started |
|---|---|---|---|---|---|
| [Alchemy](https://www.alchemy.com/smart-wallets) | ✅ | [Docs](https://accountkit.alchemy.com/) | [Embedded wallets](https://accountkit.alchemy.com/react/quickstart) Auth: [passkey](https://accountkit.alchemy.com/signer/authentication/passkey-signup), [social](https://accountkit.alchemy.com/signer/authentication/social-login), [email](https://accountkit.alchemy.com/signer/authentication/email-otp) sign-in |
[Quickstart](https://accountkit.alchemy.com/react/quickstart) | |
| [Coinbase Developer Platform (CDP)](https://www.coinbase.com/developer-platform/products/embeddedwallets) | ✅ | [Docs](https://docs.cdp.coinbase.com/embedded-wallets/welcome) | [Embedded wallets](https://docs.cdp.coinbase.com/embedded-wallets/welcome) Auth: [email/social/SMS](https://docs.cdp.coinbase.com/embedded-wallets/authentication-methods) |
Device-based secure enclaves | [Quickstart](https://docs.cdp.coinbase.com/embedded-wallets/quickstart) |
| [Dynamic](https://dynamic.xyz/) | ✅ | [Docs](https://docs.dynamic.xyz/) | [Embedded wallets](https://docs.dynamic.xyz/wallets/embedded-wallets/dynamic-embedded-wallets) Auth: [passkey](https://docs.dynamic.xyz/wallets/v1-embedded/transactional-mfa/passkeys#passkeys), [email/social/SMS](https://docs.dynamic.xyz/authentication-methods/email-social-sms) sign-in |
TEE; TSS-MPC (just added) | [Get started](https://www.dynamic.xyz/get-started) |
| [Fordefi](https://fordefi.com/) | ✅ | [Docs](https://docs.fordefi.com/) | [Products and Services](https://docs.fordefi.com/user-guide/welcome/products-and-services) | MPC | [Quickstart](https://docs.fordefi.com/user-guide/quickstart) |
| [MetaMask Embedded Wallet](https://docs.metamask.io/embedded-wallets/) | ✅ | [Docs](https://docs.metamask.io/embedded-wallets/) | Embedded wallet Auth: [passkey](https://docs.metamask.io/embedded-wallets/authentication/), [social](https://docs.metamask.io/embedded-wallets/authentication/social-logins/google/), [email](https://docs.metamask.io/embedded-wallets/authentication/basic-logins/email-passwordless/), [SMS](https://docs.metamask.io/embedded-wallets/authentication/basic-logins/sms-otp/) |
MPC-SSS/TSS | [Quickstart](https://docs.metamask.io/embedded-wallets/connect-blockchain/evm/monad) |
| [Openfort](https://openfort.io/) | ✅ | [Docs](https://www.openfort.io/docs) | [Embedded wallets](https://www.openfort.io/docs/guides/react/configuration), [Backend wallets](https://www.openfort.io/docs/guides/server/dev), [Ecosystem wallets](https://www.openfort.io/docs/guides/ecosystem) Auth: [passkeys](https://www.openfort.io/docs/products/embedded-wallet/react/auth), [social](https://www.openfort.io/docs/products/embedded-wallet/react/auth), [email](https://www.openfort.io/docs/products/embedded-wallet/react/auth) |
SSS | [Quickstart](https://www.openfort.io/docs/guides/react) |
| [Para](https://www.getpara.com/) | ✅ | [Docs](https://docs.getpara.com/) | [Embedded wallets](https://docs.getpara.com/getting-started/initial-setup/react-nextjs); robust policy engine for sessions Auth: [email and phone](https://docs.getpara.com/v2/swift/guides/email-phone-login#email-and-phone-login), [social](https://docs.getpara.com/customize-para/oauth-social-logins), [SMS](https://docs.getpara.com/customize-para/phone-login) sign-in |
MPC + DKG | [Quickstart](https://docs.getpara.com/v1/web/guides/evm/overview#evm-overview) |
| [Portal](https://www.portalhq.io/) | ✅ | [Docs](https://docs.portalhq.io/) | [Integration overview](https://docs.portalhq.io/integrations) | TSS MPC | [API Quickstart](https://docs.portalhq.io/apis/quickstart), [SDK Quickstart](https://docs.portalhq.io/sdks/quickstart) |
| [Privy](https://privy.io/) | ✅ | [Docs](https://docs.privy.io/) | [Embedded wallets](https://docs.privy.io/guide/embedded-wallets), [server wallets](https://docs.privy.io/guide/overview-server-wallets), server-delegated actions Auth: [passkey](https://docs.privy.io/guide/authentication), [social](https://docs.privy.io/guide/authentication), [email](https://docs.privy.io/guide/authentication), [SMS](https://docs.privy.io/guide/authentication) |
TEE + SSS | [Quickstart](https://docs.privy.io/guide/react/quickstart) |
| [Reown](https://reown.com/) (formerly WalletConnect) | ✅ | [Docs](https://docs.reown.com/) | Popular UI component for selecting a wallet Embedded wallet with social/email sign-in |
[Overview](https://docs.reown.com/appkit/overview) | |
| [Sequence](https://sequence.xyz/) | ✅ | [Docs](https://docs.sequence.xyz/solutions/wallets/overview) | [Embedded wallets](https://docs.sequence.xyz/solutions/wallets/developers/embedded-wallet/overview),
[ecosystem wallets](https://docs.sequence.xyz/solutions/wallets/developers/overview) Auth: Passkey, Google, Apple, Twitter, email, Facebook, Twitch, Epic Games, Playfab, Stych, Standard OAuth |
TEE; Sandboxed Smart Sessions | [Ecosystem quickstart](https://docs.sequence.xyz/solutions/wallets/developers/overview) [Embedded quickstart](https://docs.sequence.xyz/solutions/wallets/developers/embedded-wallet/quickstart) |
| [thirdweb](https://thirdweb.com/) | ✅ | [Docs](https://portal.thirdweb.com/connect/wallet/overview) | Embedded wallets Auth: [passkey](https://portal.thirdweb.com/connect/wallet/sign-in-methods/configure), [social](https://portal.thirdweb.com/connect/wallet/sign-in-methods/configure), [email](https://portal.thirdweb.com/connect/wallet/sign-in-methods/configure), [SMS](https://portal.thirdweb.com/connect/wallet/sign-in-methods/configure), OIDC, or generic auth |
[Quickstart](https://portal.thirdweb.com/connect/wallet/get-started) | |
| [Turnkey](https://www.turnkey.com/) | ✅ | [Docs](https://docs.turnkey.com/) | [Embedded wallet](https://docs.turnkey.com/reference/embedded-wallet-kit), [policy engine](https://docs.turnkey.com/concepts/policies/overview), [delegated access](https://docs.turnkey.com/concepts/policies/delegated-access-frontend), [signing automation](https://docs.turnkey.com/signing-automation/overview), [sessions](https://docs.turnkey.com/authentication/sessions) [Server-side SDKs](https://docs.turnkey.com/sdks/introduction) for auth, wallet management, and policies Auth: [passkey](https://docs.turnkey.com/authentication/passkeys/introduction), [social](https://docs.turnkey.com/authentication/social-logins), [email](https://docs.turnkey.com/authentication/email), [SMS](https://docs.turnkey.com/authentication/sms) login |
TEE | [Quickstart](https://docs.turnkey.com/getting-started/quickstart) |
| Provider | Status | Docs | Supported services | Security Method | How to get started |
|---|---|---|---|---|---|
| [Alchemy](https://www.alchemy.com/smart-wallets) | ✅ | [Docs](https://accountkit.alchemy.com/) | [Embedded wallets](https://accountkit.alchemy.com/react/quickstart) Auth: [passkey](https://accountkit.alchemy.com/signer/authentication/passkey-signup), [social](https://accountkit.alchemy.com/signer/authentication/social-login), [email](https://accountkit.alchemy.com/signer/authentication/email-otp) sign-in |
[Quickstart](https://accountkit.alchemy.com/react/quickstart) | |
| [Coinbase Developer Platform (CDP)](https://www.coinbase.com/developer-platform/products/embeddedwallets) | ✅ | [Docs](https://docs.cdp.coinbase.com/embedded-wallets/welcome) | [Embedded wallets](https://docs.cdp.coinbase.com/embedded-wallets/welcome) Auth: [email/social/SMS](https://docs.cdp.coinbase.com/embedded-wallets/authentication-methods) |
Device-based secure enclaves | [Quickstart](https://docs.cdp.coinbase.com/embedded-wallets/quickstart) |
| [Dynamic](https://dynamic.xyz/) | ✅ | [Docs](https://docs.dynamic.xyz/) | [Embedded wallets](https://docs.dynamic.xyz/wallets/embedded-wallets/dynamic-embedded-wallets) Auth: [passkey](https://docs.dynamic.xyz/wallets/v1-embedded/transactional-mfa/passkeys#passkeys), [email/social/SMS](https://docs.dynamic.xyz/authentication-methods/email-social-sms) sign-in |
TEE; TSS-MPC (just added) | [Get started](https://www.dynamic.xyz/get-started) |
| [Fordefi](https://fordefi.com/) | ✅ | [Docs](https://docs.fordefi.com/) | [Products and Services](https://docs.fordefi.com/user-guide/welcome/products-and-services) | MPC | [Quickstart](https://docs.fordefi.com/user-guide/quickstart) |
| [MetaMask Embedded Wallet](https://docs.metamask.io/embedded-wallets/) | ✅ | [Docs](https://docs.metamask.io/embedded-wallets/) | Embedded wallet Auth: [passkey](https://docs.metamask.io/embedded-wallets/authentication/), [social](https://docs.metamask.io/embedded-wallets/authentication/social-logins/google/), [email](https://docs.metamask.io/embedded-wallets/authentication/basic-logins/email-passwordless/), [SMS](https://docs.metamask.io/embedded-wallets/authentication/basic-logins/sms-otp/) |
MPC-SSS/TSS | [Quickstart](https://docs.metamask.io/embedded-wallets/connect-blockchain/evm/monad) |
| [Openfort](https://openfort.io/) | ✅ | [Docs](https://www.openfort.io/docs) | [Embedded wallets](https://www.openfort.io/docs/guides/react/configuration), [Backend wallets](https://www.openfort.io/docs/guides/server/dev), [Ecosystem wallets](https://www.openfort.io/docs/guides/ecosystem) Auth: [passkeys](https://www.openfort.io/docs/products/embedded-wallet/react/auth), [social](https://www.openfort.io/docs/products/embedded-wallet/react/auth), [email](https://www.openfort.io/docs/products/embedded-wallet/react/auth) |
SSS | [Quickstart](https://www.openfort.io/docs/guides/react) |
| [Para](https://www.getpara.com/) | ✅ | [Docs](https://docs.getpara.com/) | [Embedded wallets](https://docs.getpara.com/getting-started/initial-setup/react-nextjs); robust policy engine for sessions Auth: [email and phone](https://docs.getpara.com/v2/swift/guides/email-phone-login#email-and-phone-login), [social](https://docs.getpara.com/customize-para/oauth-social-logins), [SMS](https://docs.getpara.com/customize-para/phone-login) sign-in |
MPC + DKG | [Quickstart](https://docs.getpara.com/v1/web/guides/evm/overview#evm-overview) |
| [Phantom](https://phantom.com/learn/developers) | ✅ | [Docs](https://docs.phantom.com/) | [Embedded wallets](https://github.com/phantom/wallet-sdk) (Web SDK & Native Mobile SDK) Auth: [Google](https://phantom.com/learn/blog/deep-dive-log-in-to-phantom-with-email) sign-in |
SSS | [Quickstart](https://docs.phantom.com/introduction) |
| [Portal](https://www.portalhq.io/) | ✅ | [Docs](https://docs.portalhq.io/) | [Integration overview](https://docs.portalhq.io/integrations) | TSS MPC | [API Quickstart](https://docs.portalhq.io/apis/quickstart), [SDK Quickstart](https://docs.portalhq.io/sdks/quickstart) |
| [Privy](https://privy.io/) | ✅ | [Docs](https://docs.privy.io/) | [Embedded wallets](https://docs.privy.io/guide/embedded-wallets), [server wallets](https://docs.privy.io/guide/overview-server-wallets), server-delegated actions Auth: [passkey](https://docs.privy.io/guide/authentication), [social](https://docs.privy.io/guide/authentication), [email](https://docs.privy.io/guide/authentication), [SMS](https://docs.privy.io/guide/authentication) |
TEE + SSS | [Quickstart](https://docs.privy.io/guide/react/quickstart) |
| [Reown](https://reown.com/) (formerly WalletConnect) | ✅ | [Docs](https://docs.reown.com/) | Popular UI component for selecting a wallet Embedded wallet with social/email sign-in |
[Overview](https://docs.reown.com/appkit/overview) | |
| [Sequence](https://sequence.xyz/) | ✅ | [Docs](https://docs.sequence.xyz/solutions/wallets/overview) | [Embedded wallets](https://docs.sequence.xyz/solutions/wallets/developers/embedded-wallet/overview),
[ecosystem wallets](https://docs.sequence.xyz/solutions/wallets/developers/overview) Auth: Passkey, Google, Apple, Twitter, email, Facebook, Twitch, Epic Games, Playfab, Stych, Standard OAuth |
TEE; Sandboxed Smart Sessions | [Ecosystem quickstart](https://docs.sequence.xyz/solutions/wallets/developers/overview) [Embedded quickstart](https://docs.sequence.xyz/solutions/wallets/developers/embedded-wallet/quickstart) |
| [thirdweb](https://thirdweb.com/) | ✅ | [Docs](https://portal.thirdweb.com/connect/wallet/overview) | Embedded wallets Auth: [passkey](https://portal.thirdweb.com/connect/wallet/sign-in-methods/configure), [social](https://portal.thirdweb.com/connect/wallet/sign-in-methods/configure), [email](https://portal.thirdweb.com/connect/wallet/sign-in-methods/configure), [SMS](https://portal.thirdweb.com/connect/wallet/sign-in-methods/configure), OIDC, or generic auth |
[Quickstart](https://portal.thirdweb.com/connect/wallet/get-started) | |
| [Turnkey](https://www.turnkey.com/) | ✅ | [Docs](https://docs.turnkey.com/) | [Embedded wallet](https://docs.turnkey.com/reference/embedded-wallet-kit), [policy engine](https://docs.turnkey.com/concepts/policies/overview), [delegated access](https://docs.turnkey.com/concepts/policies/delegated-access-frontend), [signing automation](https://docs.turnkey.com/signing-automation/overview), [sessions](https://docs.turnkey.com/authentication/sessions) [Server-side SDKs](https://docs.turnkey.com/sdks/introduction) for auth, wallet management, and policies Auth: [passkey](https://docs.turnkey.com/authentication/passkeys/introduction), [social](https://docs.turnkey.com/authentication/social-logins), [email](https://docs.turnkey.com/authentication/email), [SMS](https://docs.turnkey.com/authentication/sms) login |
TEE | [Quickstart](https://docs.turnkey.com/getting-started/quickstart) |
| Provider | Status | Docs | Supported services | How to get started |
|---|---|---|---|---|
| [Biconomy](https://biconomy.io) | ✅ | [Docs](https://docs.biconomy.io) | [Nexus: Smartest & most gas-efficient smart account](https://docs.biconomy.io/new/learn-about-biconomy/nexus) [External Wallets](https://docs.biconomy.io/new/quickstart/external-wallets-quickstart) Auth: [privy](https://docs.biconomy.io/new/integration-guides/wallets-and-signers/privy), [turnkey](https://docs.biconomy.io/new/integration-guides/wallets-and-signers/turnkey); [session keys](https://docs.biconomy.io/new/smart-sessions/introduction) |
[Quickstart](https://docs.biconomy.io/new/getting-started/getting-started) |
| [MetaMask Smart Accounts Kit](https://docs.metamask.io/smart-accounts-kit) | ✅ | [Embedded Smart Accounts (4337 & 7702)](https://docs.metamask.io/smart-accounts-kit#smart-account-implementation-types) Auth: Signer agnostic, bring any signer Features: WebAuthn, Multisig, [ERC-7710 delegations support](https://eips.ethereum.org/EIPS/eip-7710) |
[Quickstart](https://docs.metamask.io/smart-accounts-kit/get-started/smart-account-quickstart/) | |
| [Pimlico](https://pimlico.io/) | ✅ | [Docs](https://docs.pimlico.io/) | [permissionless.js](https://docs.pimlico.io/permissionless), a flexible SDK for interfacing with various smart accounts, bundlers/paymasters, and signers. | [Tutorial](https://docs.pimlico.io/permissionless/tutorial/tutorial-1) |
| [ZeroDev](https://zerodev.app/) | ✅ | [Docs](https://docs.zerodev.app/) | [Smart contract accounts](https://docs.zerodev.app/sdk/core-api/create-account) [Session keys](https://docs.zerodev.app/sdk/permissions/intro) with several options for signature schemes (ECDSA, Passkey, Multisig), policies, and actions. |
[Quickstart](https://docs.zerodev.app/sdk/getting-started/quickstart) |
| Provider | Status | Docs | Supported services | How to get started |
|---|---|---|---|---|
| [Biconomy](https://biconomy.io) | ✅ | [Docs](https://docs.biconomy.io) | [Nexus: Smartest & most gas-efficient smart account](https://docs.biconomy.io/new/learn-about-biconomy/nexus) [External Wallets](https://docs.biconomy.io/new/quickstart/external-wallets-quickstart) Auth: [privy](https://docs.biconomy.io/new/integration-guides/wallets-and-signers/privy), [turnkey](https://docs.biconomy.io/new/integration-guides/wallets-and-signers/turnkey); [session keys](https://docs.biconomy.io/new/smart-sessions/introduction) |
[Quickstart](https://docs.biconomy.io/new/getting-started/getting-started) |
| [MetaMask Smart Accounts Kit](https://docs.metamask.io/smart-accounts-kit) | ✅ | [Embedded Smart Accounts (4337 & 7702)](https://docs.metamask.io/smart-accounts-kit#smart-account-implementation-types) Auth: Signer agnostic, bring any signer Features: WebAuthn, Multisig, [ERC-7710 delegations support](https://eips.ethereum.org/EIPS/eip-7710) |
[Quickstart](https://docs.metamask.io/smart-accounts-kit/get-started/smart-account-quickstart/) | |
| [Pimlico](https://pimlico.io/) | ✅ | [Docs](https://docs.pimlico.io/) | [permissionless.js](https://docs.pimlico.io/permissionless), a flexible SDK for interfacing with various smart accounts, bundlers/paymasters, and signers. | [Tutorial](https://docs.pimlico.io/permissionless/tutorial/tutorial-1) |
| [ZeroDev](https://zerodev.app/) | ✅ | [Docs](https://docs.zerodev.app/) | [Smart contract accounts](https://docs.zerodev.app/sdk/core-api/create-account) [Session keys](https://docs.zerodev.app/sdk/permissions/intro) with several options for signature schemes (ECDSA, Passkey, Multisig), policies, and actions. |
[Quickstart](https://docs.zerodev.app/sdk/getting-started/quickstart) |
| Wallet | Status | Other Features |
|---|---|---|
| [Ledger](https://www.ledger.com) | ✅ | |
| [Safepal](https://www.safepal.com) | ✅ | Support for multiple cryptocurrencies, Secure element chip |
| [Tangem](https://tangem.com/en/) | ✅ | Card-shaped, self-custodial hardware wallet designed for secure, offline storage of cryptocurrencies. |
| Wallet | Status | Other Features |
|---|---|---|
| [D'Cent Wallet](https://dcentwallet.com) | ✅ | Biometric authentication, Bluetooth connectivity |
| [Ledger](https://www.ledger.com) | ❌ | |
| [Safepal](https://www.safepal.com) | ✅ | Support for multiple cryptocurrencies, Secure element chip |
| Wallet | Status | Contract addresses | Other Features |
|---|---|---|---|
| [Porto by Anchorage Digital](https://www.anchorage.com/platform/self-custody) | ✅ | ||
| [Utila](https://utila.io/) | ✅ |
| Wallet | Status | Contract addresses | Other Features |
|---|---|---|---|
| [Safe](https://safe.global/wallet) | ✅ | See [contract addresses](https://github.com/monad-crypto/protocols/blob/main/mainnet/safe.jsonc) |
| Wallet | Status | Other Features |
|---|---|---|
| [Safe](https://safe.global/wallet) | ✅ |
| Wallet | Status | Available on | Autodetect Tokens and NFTs | AA | [Blinks](/guides/blinks-guide) | Other Features |
|---|---|---|---|---|---|---|
| [Phantom](https://phantom.com) | ✅ | Desktop, Mobile | Tokens, NFTs | ❌ | ✅ | NFT support, DApp browser, Token swaps, cross-chain swaps, staking options |
| [Atomic Wallet](https://atomicwallet.io) | ✅ | Desktop, Mobile | ❌ | ❌ | ❌ | Cross-chain swaps, Portfolio tracking, Staking, DApp support, Futures trading |
| [Backpack](https://backpack.app) | ✅ | Desktop, Mobile | Tokens, NFTs | ❌ | ✅ | DApp browser, Built-in exchange, Futures trading, Portfolio tracking |
| [Binance Wallet](https://www.binance.com/en/web3wallet) | ✅ | Desktop, Mobile | Tokens, NFTs | ❌ | ❌ | |
| [Bitget Wallet](https://web3.bitget.com/en?source=bitget) | ✅ | Desktop, Mobile | ❌ | ❌ | ❌ | DApp browser, NFT Market, DApp Browser, and Launchpad |
| [HaHa](https://www.haha.me) | ✅ | Desktop, Mobile | ✅ | ✅ | ❌ | DeFi integrations, AA, Monad Native, trading, hardware wallet support |
| [Keplr](https://www.keplr.app) | ✅ | Desktop, Mobile | ❌ | ❌ | ❌ | Multi-chain support, Open source, Portfolio tracking, Transaction History, In-app browser |
| [MetaMask](https://metamask.io) | ✅ | Desktop, Mobile | NFTs | ❌ | ❌ | NFT support, DApp browser, Open source, Token swaps, portfolio tracking |
| [OKX Wallet](https://web3.okx.com/) | ⌛️ | Desktop, Mobile | ✅ | ✅ | ✅ | DApp browser, Portfolio tracking, Cross-chain swaps, Biometric Login |
| [Rabby Wallet](https://rabby.io/) | ✅ | Desktop, Mobile | ✅ | ✅ | ❌ | Portfolio tracking, Biometric login |
| [Safepal](https://www.safepal.com) | ✅ | Desktop, Mobile | ✅ | ❌ | ❌ | NFT support, DApp browser, Token swaps, Hardware wallet support |
| [Trust Wallet](https://trustwallet.com) | ✅ | Desktop, Mobile | Tokens, NFTs | ✅ | ❌ | Multi-chain support, NFT support, DApp browser, Token swaps, Staking, Buy crypto |
| Wallet | Status | Available on | Autodetect Tokens and NFTs | AA | [Blinks](/guides/blinks-guide) | Other Features |
|---|---|---|---|---|---|---|
| [Phantom](https://phantom.com) | ✅ | Desktop, Mobile | Tokens, NFTs | ❌ | ✅ | NFT support, DApp browser, Token swaps, cross-chain swaps, staking options |
| [Backpack](https://backpack.app) | ✅ | Desktop, Mobile | Tokens, NFTs | ❌ | ✅ | DApp browser, Built-in exchange, Futures trading, Portfolio tracking |
| [Bitget Wallet](https://web3.bitget.com/en?source=bitget) | ✅ | Desktop, Mobile | ❌ | ❌ | ❌ | DApp browser, NFT Market, DApp Browser, and Launchpad |
| [Coin98 Wallet](https://coin98.com) | ✅ | Desktop, Mobile | ✅ | ❌ | ❌ | Multi-chain support, DApp browser, Cross-chain swaps, NFT Gallery |
| [Crypto.com Web3 Wallet](https://crypto.com/defi-wallet) | ✅ | Desktop, Mobile | ✅ | ❌ | ❌ | DApp browser, DeFi integrations, Token swaps, Staking |
| [HaHa](https://www.haha.me) | ✅ | Desktop, Mobile | ✅ | ✅ | ❌ | DeFi integrations, AA, Monad Native, trading, hardware wallet support |
| [Kucoin Web3 Wallet](https://www.kucoin.com/web3) | ✅ | Desktop, Mobile | ✅ | ❌ | ❌ | DApp browser, Multi-chain support, Portfolio tracking |
| [MetaMask](https://metamask.io) | ✅ | Desktop, Mobile | NFTs | ❌ | ❌ | NFT support, DApp browser, Open source, Token swaps, portfolio tracking |
| [OKX Wallet](https://www.okx.com/en-us/help/section/faq-web3-wallet) | ✅ | Desktop, Mobile | ✅ | ✅ | ✅ | DApp browser, Portfolio tracking, Cross-chain swaps, Biometric Login |
| [Rabby Wallet](https://rabby.io/) | ✅ | Desktop, Mobile | ✅ | ✅ | ❌ | Portfolio tracking, Biometric login |
| [Safepal](https://www.safepal.com) | ✅ | Desktop, Mobile | ✅ | ❌ | ❌ | NFT support, DApp browser, Token swaps, Hardware wallet support |
| [Trust Wallet](https://trustwallet.com) | ✅ | Desktop, Mobile | Tokens, NFTs | ✅ | ❌ | Multi-chain support, NFT support, DApp browser, Token swaps, Staking, Buy crypto |