5.3 KiB
Chain 138 Snap — FAQ
Frequently asked questions about the Chain 138 Snap (MetaMask).
General
What is the Chain 138 Snap?
A MetaMask Snap that adds Chain 138 (DeFi Oracle Meta Mainnet) and ALL Mainnet (651940) support inside MetaMask: network parameters, token list, market data (USD prices), swap quotes, and bridge routes (CCIP and Trustless). It uses a token-aggregation (or compatible) API that you configure.
Why use this Snap?
MetaMask supports Chain 138 as a custom EVM network, but native Swaps, Portfolio Bridge, and USD pricing do not include Chain 138. This Snap provides in-wallet swap quotes, bridge routes, and market data by calling your API, so users get feature parity without waiting for upstream support.
What is the Snap ID?
Production: npm:chain138-snap (after installing from npm or the MetaMask Snaps Directory).
Development: local:http://localhost:8000 when running the dev server.
Installation and usage
How do I install the Snap?
- Install MetaMask (or MetaMask Flask for development).
- From a dApp or the companion site, connect and add the Snap using the ID
npm:chain138-snap.
Do I need MetaMask Flask?
- Production: No. Once the Snap is allowlisted, it installs in standard MetaMask.
- Development: Yes, for testing before allowlisting. Use MetaMask Flask.
Why do market data, swap quote, and bridge routes not work?
Those features require the dApp to pass apiBaseUrl (your token-aggregation service base URL) when invoking the Snap. Without it, the Snap cannot fetch data. See INTEGRATORS.md.
Can I use my own API or JSON URLs?
Yes. You can pass:
apiBaseUrl— base URL of a token-aggregation–compatible API (networks, token list, bridge, quote endpoints).networksUrl— direct URL to a networks JSON (overrides API for networks).tokenListUrl— direct URL to a token list JSON.bridgeListUrl— direct URL to a bridge routes JSON.
See INTEGRATORS.md and TESTING_INSTRUCTIONS.md.
Development
How do I run the Snap locally?
From the repo root: pnpm run start. The companion site and Snap are served at http://localhost:8000. Use MetaMask Flask and connect to that URL.
How do I run tests?
- Unit (Jest):
pnpm run test - E2E (Playwright):
pnpm run test:e2e(runnpx playwright installonce)
See TESTING_INSTRUCTIONS.md for full manual E2E.
The companion site shows "Set GATSBY_SNAP_API_BASE_URL"
Set GATSBY_SNAP_API_BASE_URL in packages/site/.env (copy from .env.production.dist) to your token-aggregation API base URL so the site can pass apiBaseUrl to the Snap. Restart the dev server after changing env.
How do I publish a new version?
- Bump version in
packages/snap/package.json. - From repo root:
pnpm run buildthenpnpm run publish:snap(see PUSH_AND_PUBLISH.md). - Push to GitHub. If the Snap is allowlisted, submit a version update via the MetaMask update form.
Permissions and security
What permissions does the Snap use?
- snap_dialog — show dialogs (e.g. bridge routes, market data).
- endowment:rpc (dapps: true) — handle RPC from dApps.
- endowment:network-access — fetch data from the configured API/URLs.
No key-management or account APIs are used. See SECURITY.md and packages/snap/snap.manifest.json.
Is an audit required for allowlisting?
No. The Snap does not use key-management APIs, so a third-party audit is not required for the MetaMask Snaps Directory. See ALLOWLIST_SOURCE_AND_COMPLIANCE_CHECKLIST.md.
RPC methods
What RPC methods are available?
See the table in packages/snap/README.md or TESTING_INSTRUCTIONS.md. Summary: hello, get_networks, get_chain138_config, get_chain138_market_chains, get_token_list, get_token_list_url, get_oracles, show_dynamic_info, get_market_summary, show_market_data, get_bridge_routes, show_bridge_routes, get_swap_quote, show_swap_quote.
How do I call the Snap from my dApp?
Use wallet_requestSnaps to install and wallet_invokeSnap to call methods. Example in INTEGRATORS.md and packages/snap/README.md.
Troubleshooting
Snap not appearing in MetaMask Flask
- Ensure the dev server is running on port 8000 and you opened http://localhost:8000.
- Check the browser console for errors and refresh the page.
API calls failing (CORS, 404)
- Ensure your token-aggregation API allows the Snap/site origin in CORS.
- Verify
apiBaseUrlis correct (no trailing slash) and the endpoints (e.g./api/v1/networks,/api/v1/report/token-list) exist and return valid JSON.
Permission errors
- Confirm
snap.manifest.jsonincludesendowment:network-accessif you call APIs. Reinstall the Snap after changing the manifest.
For more, see the Troubleshooting section in TESTING_INSTRUCTIONS.md.