187 lines
13 KiB
Markdown
187 lines
13 KiB
Markdown
# Chain 138 Snap — Features and RPC methods
|
|
|
|
This document lists every function and feature of the Snap, with parameters and response shapes. The Snap supports **both** blockchains: **Chain 138** (DeFi Oracle Meta Mainnet) and **ALL Mainnet** (651940).
|
|
|
|
---
|
|
|
|
## Blockchains supported
|
|
|
|
| Chain | Chain ID | Name | Use in Snap |
|
|
| --------------- | -------- | ------------------------ | ----------------------------------------------------- |
|
|
| **Chain 138** | 138 | DeFi Oracle Meta Mainnet | Primary; networks, config, market, swap, bridge |
|
|
| **ALL Mainnet** | 651940 | ALL Mainnet | Supported in networks, token list, optional `chainId` |
|
|
|
|
All methods that accept an optional `chainId` default to **138** when omitted.
|
|
|
|
---
|
|
|
|
## Feature overview (visual)
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────────────┐
|
|
│ Chain 138 Snap (npm:chain138-snap) │
|
|
├─────────────────────────────────────────────────────────────────────────┤
|
|
│ Networks & config │ get_networks, get_chain138_config, │
|
|
│ (Chain 138 + ALL) │ get_chain138_market_chains │
|
|
├─────────────────────────────────────────────────────────────────────────┤
|
|
│ Token list │ get_token_list, get_token_list_url │
|
|
│ (optional chainId) │ (chainId: 138 or 651940) │
|
|
├─────────────────────────────────────────────────────────────────────────┤
|
|
│ Market data │ get_market_summary, show_market_data │
|
|
│ (USD prices) │ (dialog: token symbols + prices) │
|
|
├─────────────────────────────────────────────────────────────────────────┤
|
|
│ Bridge routes │ get_bridge_routes, show_bridge_routes │
|
|
│ (CCIP + Trustless) │ (dialog: CCIP WETH9/WETH10 + Trustless Lockbox)│
|
|
├─────────────────────────────────────────────────────────────────────────┤
|
|
│ Swap quote │ get_swap_quote, show_swap_quote │
|
|
│ (Chain 138) │ (tokenIn, tokenOut, amountIn → amountOut) │
|
|
├─────────────────────────────────────────────────────────────────────────┤
|
|
│ Oracles & dynamic │ get_oracles, show_dynamic_info │
|
|
│ (API config) │ (dialog: networks + token list URL) │
|
|
├─────────────────────────────────────────────────────────────────────────┤
|
|
│ Test │ hello (returns greeting) │
|
|
└─────────────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## RPC method matrix
|
|
|
|
| Method | Chain 138 | ALL (651940) | Requires apiBaseUrl / URL param | Shows dialog (UI) |
|
|
| ---------------------------- | --------- | ------------ | ---------------------------------------- | ------------------ |
|
|
| `hello` | — | — | No | Yes (confirmation) |
|
|
| `get_networks` | ✅ | ✅ | apiBaseUrl or networksUrl | No |
|
|
| `get_chain138_config` | ✅ | — | apiBaseUrl or networksUrl | No |
|
|
| `get_chain138_market_chains` | ✅ | — | apiBaseUrl | No |
|
|
| `get_token_list` | ✅ | ✅ | apiBaseUrl or tokenListUrl | No |
|
|
| `get_token_list_url` | ✅ | ✅ | apiBaseUrl or tokenListUrl | No |
|
|
| `get_oracles` | ✅ | — | apiBaseUrl | No |
|
|
| `show_dynamic_info` | ✅ | ✅ | apiBaseUrl or networksUrl/tokenListUrl | **Yes** |
|
|
| `get_market_summary` | ✅ | ✅ | apiBaseUrl | No |
|
|
| `show_market_data` | ✅ | ✅ | apiBaseUrl | **Yes** |
|
|
| `get_bridge_routes` | ✅ | — | apiBaseUrl or bridgeListUrl | No |
|
|
| `show_bridge_routes` | ✅ | — | apiBaseUrl or bridgeListUrl | **Yes** |
|
|
| `get_swap_quote` | ✅ | — | apiBaseUrl + tokenIn, tokenOut, amountIn | No |
|
|
| `show_swap_quote` | ✅ | — | apiBaseUrl + tokenIn, tokenOut, amountIn | **Yes** |
|
|
|
|
---
|
|
|
|
## Method reference by category
|
|
|
|
### Test
|
|
|
|
| Method | Params | Response | UI |
|
|
| ------- | ------ | ------------------------------ | ------------------- |
|
|
| `hello` | — | `"Hello from Chain 138 Snap!"` | Confirmation dialog |
|
|
|
|
---
|
|
|
|
### Networks and chain config
|
|
|
|
| Method | Params | Response shape |
|
|
| ---------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------ |
|
|
| `get_networks` | `apiBaseUrl` or `networksUrl` | `{ version?, networks: EIP-3085[] }` |
|
|
| `get_chain138_config` | `apiBaseUrl` or `networksUrl` | Chain 138 params (chainId, chainName, rpcUrls, nativeCurrency, blockExplorerUrls, oracles) |
|
|
| `get_chain138_market_chains` | `apiBaseUrl` | `[{ chainId, name, nativeToken, rpcUrl, explorerUrl }]` |
|
|
|
|
**Visual (dialog):** None for get\_\*; use `show_dynamic_info` for an in-Snap dialog with networks and token list URL.
|
|
|
|
---
|
|
|
|
### Token list
|
|
|
|
| Method | Params | Response shape |
|
|
| -------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------- |
|
|
| `get_token_list` | `apiBaseUrl` or `tokenListUrl`, optional `chainId` (138 \| 651940) | `{ tokens: [{ symbol, name, address, ... }] }` or API shape |
|
|
| `get_token_list_url` | Same | URL string or object with token list URL |
|
|
|
|
---
|
|
|
|
### Oracles and dynamic info
|
|
|
|
| Method | Params | Response / UI |
|
|
| ------------------- | ---------------------------------------------- | ----------------------------------------------- |
|
|
| `get_oracles` | `apiBaseUrl` | Oracles config from API |
|
|
| `show_dynamic_info` | `apiBaseUrl` or `networksUrl` / `tokenListUrl` | **Dialog:** networks summary and token list URL |
|
|
|
|
---
|
|
|
|
### Market data (USD prices)
|
|
|
|
| Method | Params | Response shape | UI |
|
|
| -------------------- | ---------------------------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
| `get_market_summary` | `apiBaseUrl`, optional `chainId` (default 138) | `{ tokens: [{ symbol, name, address, market?: { priceUsd, volume24h } }] }` | No |
|
|
| `show_market_data` | Same | — | **Dialog:** "Market data (Chain 138)" with token symbols and USD prices |
|
|
|
|
---
|
|
|
|
### Bridge routes (CCIP + Trustless)
|
|
|
|
| Method | Params | Response shape | UI |
|
|
| -------------------- | ------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|
|
| `get_bridge_routes` | `apiBaseUrl` or `bridgeListUrl` | `{ routes: { weth9?, weth10?, trustless? }, chain138Bridges: { weth9?, weth10?, trustless? } }` | No |
|
|
| `show_bridge_routes` | Same | — | **Dialog:** CCIP (WETH9/WETH10) and Trustless (Lockbox on 138) routes to Ethereum Mainnet |
|
|
|
|
The API or `bridgeListUrl` JSON may include:
|
|
|
|
- **CCIP:** `routes.weth9`, `routes.weth10`, `chain138Bridges.weth9`, `chain138Bridges.weth10`.
|
|
- **Trustless:** `chain138Bridges.trustless` (Lockbox on Chain 138), optional `routes.trustless['Ethereum Mainnet (1)']` (Ethereum-side contract).
|
|
|
|
---
|
|
|
|
### Swap quote
|
|
|
|
| Method | Params | Response shape | UI |
|
|
| ----------------- | ---------------------------------------------------------------------------------------------- | -------------------------------------- | -------------------------------- |
|
|
| `get_swap_quote` | `apiBaseUrl`, `tokenIn`, `tokenOut`, `amountIn` (raw string), optional `chainId` (default 138) | `{ amountOut?, error?, poolAddress? }` | No |
|
|
| `show_swap_quote` | Same | — | **Dialog:** In/Out amounts (raw) |
|
|
|
|
---
|
|
|
|
## Request flow (high level)
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
subgraph dApp
|
|
A[dApp / Companion site]
|
|
end
|
|
subgraph Snap
|
|
B[Chain 138 Snap]
|
|
end
|
|
subgraph API
|
|
C[Token-aggregation API]
|
|
end
|
|
A -->|wallet_invokeSnap + apiBaseUrl / URL params| B
|
|
B -->|GET /api/v1/networks etc.| C
|
|
C -->|JSON| B
|
|
B -->|result or snap_dialog| A
|
|
```
|
|
|
|
---
|
|
|
|
## Optional URL overrides
|
|
|
|
Instead of (or in addition to) `apiBaseUrl`, you can pass:
|
|
|
|
| Param | Used by methods |
|
|
| --------------- | ----------------------------------------- |
|
|
| `networksUrl` | `get_networks`, `get_chain138_config` |
|
|
| `tokenListUrl` | `get_token_list`, `get_token_list_url` |
|
|
| `bridgeListUrl` | `get_bridge_routes`, `show_bridge_routes` |
|
|
|
|
---
|
|
|
|
## Screenshots and visuals (for maintainers)
|
|
|
|
To make the docs more visual, add screenshots under **`docs/images/`** and link them here and in the README. Suggested captures:
|
|
|
|
| Screenshot | Description |
|
|
| -------------------------- | ---------------------------------------------------------------- |
|
|
| `connect.png` | Companion site Connect button and MetaMask install prompt |
|
|
| `market-data-dialog.png` | Snap dialog from `show_market_data` (Chain 138 tokens + prices) |
|
|
| `bridge-routes-dialog.png` | Snap dialog from `show_bridge_routes` (CCIP + Trustless routes) |
|
|
| `swap-quote-dialog.png` | Snap dialog from `show_swap_quote` |
|
|
| `dynamic-info-dialog.png` | Snap dialog from `show_dynamic_info` (networks + token list URL) |
|
|
|
|
After adding images, link them in this section and in [README.md](../README.md).
|