xtruth

RPC 端点

X Layer 测试网的公开 Erigon 端点 testrpc.xlayer.tech/terigon 在服务端 (curl、graph-node、你的后端)正常,但不返回 CORS 头,浏览器 dapp 直接连会报 Failed to fetch。xtruth 在同源域上跑了一个代理,补上 CORS 头并转发到上游。

端点

| 环境 | URL | |---|---| | 生产 | https://app.xtruth.xyz/api/rpc | | 测试(沙盒) | https://app-dev.xtruth.xyz/api/rpc |

两者代理到同一上游,返回完全相同 —— 开发期间用测试 URL。 详见 环境

示例请求

POST https://app-dev.xtruth.xyz/api/rpc
Content-Type: application/json

请求体是普通 JSON-RPC:

{
  "jsonrpc": "2.0",
  "method": "eth_chainId",
  "params": [],
  "id": 1
}

返回:

{ "jsonrpc": "2.0", "id": 1, "result": "0x7a0" }

0x7a0 = 1952 = X Layer 测试网。

为什么要代理

不代理的话:

代理跟 dapp 同源,浏览器不再做 CORS 检查。

在 viem / wagmi 里使用

import { defineChain, http } from "viem";

const xlayerTestnet = defineChain({
  id: 1952,
  name: "X Layer Testnet",
  nativeCurrency: { name: "OKB", symbol: "OKB", decimals: 18 },
  rpcUrls: {
    default: { http: ["https://app.xtruth.xyz/api/rpc"] },
  },
});

const client = createPublicClient({
  chain: xlayerTestnet,
  transport: http(),
});

在钱包里使用

dapp 里有一个一键按钮调 wallet_addEthereumChain(EIP-3085),帮你 把 X Layer 测试网加到钱包里(用我们的代理 URL)。在 oracle/new 页面如果出 Failed to fetch, 点 Use xtruth RPC in wallet 在钱包弹框里确认即可。

也可以手动配:

限速 / 配额

目前免费,无 auth,无 rate limit。Cloudflare Workers 处理负载。如果用量 变大,会加按 IP 限速 + 方法白名单(eth_calleth_chainIdeth_blockNumbereth_getLogs —— 屏蔽 eth_sendRawTransaction 让 用户走自己的钱包)。

源码

代理是一个边缘 function:见 xtruth-app/src/app/api/rpc/route.ts。 40 行,包括上游 fallback 和 CORS 头。