@ anywalletkit/网络
每个钱包构建的网络列表:目录主网及其公开的RPC故障列表,每个链条家族的默认测试网,用户所添加的网络和RPC,以及证明一个端点的验证器为它声称的网络服务. 移动应用程序和扩展套件读取同一个表格.
安装
npm install @anywalletkit/networks
# or: pnpm add @anywalletkit/networks · yarn add @anywalletkit/networks
时间: @ anywalletkit/网络发表于 发布工作流程 与出处.
纯类型脚本, 不超出运行时间依赖性 @anywalletkit/swap2-assets (计: isCatalogChain) (中文(简体) ). 在赫尔墨斯下运行( 无) URL,没有 atob,没有 structuredClone) (中文(简体) ).
import { NetworksTable, verifyNetwork, parseAddChainParams, checkRpcUrl } from '@anywalletkit/networks'
const table = new NetworksTable(myJsonStorage) // AsyncStorage / chrome.storage / memoryJsonStorage()
await table.load() // once at cold start; before it rpcUrlsForSync / usesUserRpcSync throw (not-loaded)
await table.addRpc('eip155:8453', 'https://my.base.rpc')
await table.rpcUrlsFor('eip155:8453') // ['https://my.base.rpc', 'https://base-rpc.publicnode.com', …]
await table.setOnlyOwnRpc('eip155:8453', true) // → ['https://my.base.rpc'] (no public fallback)
table.rpcUrlsForSync('eip155:8453') // same, from memory — for a sync client factory
table.usesUserRpcSync('eip155:8453') // true → label the review sheet "Custom RPC — simulation not trusted"
const r = await verifyNetwork(await table.get('eip155:8453')!, { rpc: 'https://my.base.rpc' })
// { ok: true, latencyMs: 212, tip: 52896400, reported: '8453' } | { ok: false, error: 'chain-id-mismatch: Endpoint serves chain 1, not 8453.', reported: '1', … }
await table.markRpc('eip155:8453', 'https://my.base.rpc', r) // a failure parks the URL (skipped by rpcUrlsFor) with the reason
型号
interface Network {
caip2: string // eip155:11155111, solana:EtWT…, bip122:<genesis>, ton:-3, tron:nile, near:testnet, zcash:testnet
family: 'evm' | 'solana' | 'ton' | 'tron' | 'btc' | 'near' | 'zcash'
name: string; symbol: string; decimals: number
kind: 'catalog' | 'testnet' | 'custom'
rpcs: string[] // tried in order
explorer?: string
source: 'builtin' | 'user' | { origin: string; addedAt: number } // a site-added network carries its origin
onlyOwnRpc?: boolean // drop the public fallback
balancesViaOwnRpc?: boolean
enabled: boolean // testnets ship off
}
规定:
- 内建条目(目录主网或默认测试网)无法删除;用户只能 预选 RPC和翻转切换——所发运的列表作为倒置,除非
onlyOwnRpc· ; - 一个自定义的自定义网络没有倒置,至少需要一个RPC;一个内置链码所存储的自定义条目被忽略了(一个站点不能取代Ethereum的端点);
rpcUrlsFor(caip2)=健康的用户RPC,然后是内建列表(除非onlyOwnRpc并且至少有一个用户RPC是健康的;markRpc(caip2, url, result)将一个失败的用户RPC与它的错误一起停放,直到它再次通过或被去除——这个端点改变我们下面的链式ID被作为中毒处理,而不是作为断电处理;- 只有三角洲存在
NetworksState: 每个内建, 自定义网络, 问题, http option- in), 所以一个已运出列表更新可以到达每个安装 .
URL 政策(所有者决定 2)
checkRpcUrl(url, { allowHttpLocal })数字 : https:// 任何地方; http:// 仅针对私人地址 -- localhost, (中文(简体) ), *.local, (中文(简体) ), *.internal, (中文(简体) ), *.home.arpa, (中文(简体) ), *.lan,0/8,10/8,100.64/10, 页面存档备份,存于互联网档案馆, 127/8第169254/16号决议,附件, 172.16/12, (中文(简体) ), 192.168/16, 198.18/15, IPv4以任何方式写出URL解析器读取(127.1, (中文(简体) ), 2130706433, (中文(简体) ), 0x7f.0.0.1),任何无法打印的 ASCII 主机(一个 URL 解析地图) 127.0.0.1 至 127.0.0.1, IPv6回放 / ULA / 链接- local / multicast 和 IPv4 在一个映射, NAT64 或 6to4 地址内 - 财务报告和审定财务报表 仅使用 allowHttpLocal (高级切换,存储在表格中). 在 URL 中没有证书, 也没有反斜线、 标签、 CR/ LF 或其他控制字符 \ 并降低标签/ CR/ LF,所以主机获取连接将不会是选中的连接 . parseAddChainParams 永远不要给一个网站当地例外.
isPrivateHost(host) 测试本身,和 isPublicHttpsUrl(url) 用于 URL 的钱包在他人的单词( ENS 网关, avatars) 上获取: https, no certain, a public host. 两者都在 @anywalletkit/networks/url,不会装入目录。 解决私人地址的公用名称(DNS rebound)不会被主机测试所捕获.
verifyNetwork(network, { rpc?, fetch?, allowHttpLocal?, timeoutMs? })
| 家属 | 身份( 必须匹配 CAIP-2 id) | 提示 |
|---|---|---|
| 页:1 | eth_chainId | eth_blockNumber |
| 索兰娜 | getGenesisHash 从引用开始(solana:mainnet 编号 : devnet 编号 : testnet 化名解析) | getSlot |
| 吨数 | 配置 第19段(全球id,从BOC中解析)= -239 编号 : -3 | getMasterchainInfo 后续 |
| 音节 | 起源块 id (wallet/getblockbynum 0)结尾为链条引用(728126428 ≙ 0x2b6653dc, (中文(简体) ), nile ≙ 0xcd8690dc, (中文(简体) ), shasta ≙ 0x94a9059e(中文(简体) ) | wallet/getnowblock |
| (单位:千美元) | 埃斯波罗拉 /block-height/0组合图 /api/v2/block-index/0 | /blocks/tip/height 编号 : bestHeight |
| z 现金 | 同样的,加座椅 dashboards/block/0 | /stats 块 |
| 相邻 | status.chain_id | latest_block_height |
回返 { ok, latencyMs, tip?, error?, reported? } 永远不要扔。 错误前缀为代码 : chain-id-mismatch, (中文(简体) ), url-policy, (中文(简体) ), redirected, (中文(简体) ), http-<status>, (中文(简体) ), rpc-error, (中文(简体) ), bad-json, (中文(简体) ), timeout, (中文(简体) ), unreachable, (中文(简体) ), no-rpc, (中文(简体) ), bad-network拒绝重新指导(redirect: 'error',以及一个回答 url 编号 : redirected / 3xx 状态显示方向是 redirected: Endpoint redirected to <host>; enter the final URL:URL策略判断了用户或网站给出的地址,而不是其指向的位置. 习惯 fetch 不能拒绝方向调整的,应该报告 url 或者说 redirected,或者重定向请求在检查前发出. http-<status> 财务报告和审定财务报表 bad-json 上面没有文字。 回答一个网站( A)wallet_addEthereumChain)带有通则错误,而不是 error。 。 。 . verifyRpcs(network) 检查每一个终点. scripts/verify-live.mjs 运行真实的东西 与每个内置的终点.
内建表
CATALOG_NETWORKS ——资产目录的30个EVM主网(Ethereum, Base, BNB, Arbitrum, Optimism, Polygon, Avalanche, HyperEVM, Robinhood, zkSync, Celo, MegaETH, Unichain, Monad, Plasma, Linea, Gnosis, Sonic, World Chain, Sei, Iink, Plume, X Level, Scroll, Berachain, Arc, Mantle, Katana, Morph, Flare), 公共故障列表,加上Solana, TON, Tron, Bitcoin, NEAR和Zcash, 公共端点(移动应用程序通过表格预置其关键代词).
DEFAULT_TESTNETS (已发运) enabled: false;端点和身份调用于2026-10-21:
| 网络 | 盲肠2 | 结束点 |
|---|---|---|
| 塞波利亚 | eip155:11155111 | ethereum-sepolia-rpc.publicnode.com, sepolia.drpc.org (rpc.sepolia.org 不再回答) 互联网档案馆的存檔,存档日期2013-12-02 |
| 塞波利亚基地 | eip155:84532 | sepolia.base.org, base-sepolia-rpc.publicnode.com 页面存档备份,存于互联网档案馆 |
| 塞波利亚角 | eip155:421614 | (原始内容存档于2018-10-12) (英语). sepolia-rollup.arbitrium.io/rpc, arbitrium-sepolia-rpc.publicnode.com |
| OP 塞波利亚 | eip155:11155420 | sepolia.opimism.io, 乐观主义-sepolia-rpc.publicnode.com |
| 多边形 | eip155:80002 | 多边形-amoy-bor-rpc.publicnode.com,多边形-amoy.drpc.org (rpc-amoy.polygon. teechnology 已无答案) |
| BSC 测试网 | eip155:97 | bsc-testnet-rpc.publicnode.com 数据种子-prebsc-1-s1.bnbchain.org:8545 |
| 莫纳德测试网 | eip155:10143 | testnet-rpc.monad.xyz (中文(简体) ) |
| 索拉纳网络 | solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 (单位:千美元)wallet-solana CAIP2_GENESIS.devnet(中文(简体) ) | api.devnet.solana.com (英语) |
| 比特币测试网4 | bip122:00000000da84f2bafbbc53dee25a72ae (来源于mempol.space/testnet4) | 空间/ testnet4/api - wallet-btc是因为 testnet 选项(tb1...,硬币类型 1')服务它 CAIP2_GENESIS.testnet 是测试网3 |
| TON 测试网 | ton:-3 | testnet.toncenter.com/api/v2/jsonRPC (中文(简体) ). (全球id-3从配置第19段确认) |
| 特龙尼罗 | tron:nile (单位:千美元)wallet-tron 还要 nile 编号 : tron:0xcd8690dc(中文(简体) ) | 诺克·特龙格里奥 |
| NEAR 测试网 | near:testnet | ppc.testnet.near.org, test.rpc.fastnear.com 页面存档备份,存于互联网档案馆 |
| Zcash测试网 | zcash:testnet | 没有——未经核实. 块椅没有zcash/testnet路由,其他公共API也没有回答;用户提供块册 |
EIP-3085 (英语)
parseAddChainParams(params, { known?, origin? }) 转出 wallet_addEthereumChain 请求输入 a Network (单位:千美元)kind: 'custom', (中文(简体) ), source: { origin, addedAt }或 EIP-1193 错误以(-32602 糟糕的车厢, 4902 链条不在目录中). 仅https RPC; nativeCurrency.decimals 一定是18岁 过 known 接受资产目录以外的链条.