如何使用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
相关产品推荐
相关产品推荐

