You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript获取Starknet网络的chainId

JavaScript 获取 Starknet chainId 实现方案

你可以根据项目场景,选择以下两种等效于官方Python示例的JS实现方式:

  • 无依赖原生实现:直接通过RPC接口调用获取,不需要额外安装依赖
  • SDK实现:引入官方JS SDK调用内置方法,适合已有Starknet相关开发依赖的项目

方案1:原生JS无依赖实现

Starknet节点开放了starknet_chainId的RPC调用方法,直接发送POST请求即可拿到十六进制格式的返回值,转码后就是可读的chainId:

// 可将rpcUrl替换为你自己使用的Starknet节点地址
async function getStarknetChainId(rpcUrl) {
  const resp = await fetch(rpcUrl, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      jsonrpc: "2.0",
      method: "starknet_chainId",
      params: [],
      id: 1
    })
  });
  const data = await resp.json();
  // 去掉十六进制前缀0x后转UTF-8字符串
  const chainId = Buffer.from(data.result.slice(2), "hex").toString("utf8");
  return chainId;
}

// Node环境调用示例
getStarknetChainId("你的Starknet节点RPC地址").then(id => console.log("链ID为:", id));

如果是浏览器环境,没有Node内置的Buffer对象,替换解码逻辑即可:

// 浏览器端十六进制转UTF-8工具方法
function hexToUtf8(hexStr) {
  return decodeURIComponent('%' + hexStr.slice(2).match(/.{1,2}/g).join('%'));
}
// 替换上述代码中Buffer转码的行即可:const chainId = hexToUtf8(data.result);

方案2:使用官方starknet.js SDK实现

如果你的项目已经引入了Starknet官方JS SDK,直接调用封装好的方法即可,不需要手动处理请求和转码:

// 先安装依赖:npm install starknet
import { RpcProvider } from "starknet";

async function getChainIdBySdk() {
  // 初始化RPC实例,传入你的节点地址
  const provider = new RpcProvider({ nodeUrl: "你的Starknet节点RPC地址" });
  const chainId = await provider.getChainId();
  return chainId;
}

// 调用示例
getChainIdBySdk().then(id => console.log("链ID为:", id));

常见网络chainId对应值:Starknet主网为SN_MAIN,Goerli测试网为SN_GOERLI,Sepolia测试网为SN_SEPOLIA。

内容的提问来源于stack exchange,提问作者ssteiger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:33:22