用JavaScript查询Validator余额【以太坊2.0】

简介: 在ETH 2.0抵押的一个基本需求是监视其验证者余额,在这个教程中我们将学习如何利用Infura的ETH 2.0 Beacon Chain API编写程序来查询验证者(Validator)的余额。

在ETH 2.0抵押的一个基本需求是监视其验证者余额,在这个教程中我们将学习如何利用Infura的ETH 2.0 Beacon Chain API编写程序来查询验证者(Validator)的余额。

用自己熟悉的语言学习 以太坊DApp开发Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart

离ETH 2.0的零阶段启动越来越近,在witti以及即将上线的altona测试网上参与抵押的兴趣也越来越高涨 —— 调查报告显示超过65%的受访者表示期望抵押其持有的ETH。

首先我们需要引入axio库并创建一个HTTP客户端,从环境变量加载Infura项目ID:

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://witti.infura.io/',
  auth: {
    username: process.env.INFURA_PROJECT_ID,
    password: '',
  },
});

我们需要定义一些网络相关的参数。前两个有助于我们计算当前周期(epoch),最后一个用来将余额单位从gwei转换为我们更熟悉的eth:

const SECONDS_PER_SLOT = 12;
const SLOTS_PER_EPOCH = 32;
const GWEI_PER_ETH = 1000000000;

接下来我们将查询网络的创世数据用来计算当前周期:

(async () => {
  let response = await instance.get('node/genesis_time')
  const genesisTime = response.data;

  const now = Math.floor(Date.now() / 1000)
  const currentEpoch = Math.floor((now - genesisTime) / (SECONDS_PER_SLOT * SLOTS_PER_EPOCH))

有了这些代码,我们就可以查询验证者(Validator)的当前余额了,这里我们使用写文章时余额最高的验证者的公钥进行查询:

  response = await instance.post('beacon/validators', {
    epoch: currentEpoch.toString(),
    pubkeys: ["0xb0bfa93603f81ecaf3c450b793e71f7372822cd2002534364493e4e497fb5df16d252ae2fdc6bbc0e74d849f918db393"],
  });

  const balanceGwei = response.data[0].balance;
  const balance = balanceGwei / GWEI_PER_ETH;
  
  console.log(`You have ${balance} Ξ2.0`);
})();

当我们运行这个程序时,就可以看到如下输出:

You have 32.500178823 Ξ2.0

下面是查询ETH 2.0验证者余额的完整代码:

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://witti.infura.io/',
  auth: {
    username: process.env.INFURA_PROJECT_ID,
    password: '',
  },
});

const SECONDS_PER_SLOT = 12;
const SLOTS_PER_EPOCH = 32;
const GWEI_PER_ETH = 1000000000;

(async () => {
  let response = await instance.get('node/genesis_time')
  const genesisTime = response.data;

  const now = Math.floor(Date.now() / 1000)
  const currentEpoch = Math.floor((now - genesisTime) / (SECONDS_PER_SLOT * SLOTS_PER_EPOCH))

  response = await instance.post('beacon/validators', {
    epoch: currentEpoch.toString(),
    pubkeys: ["0xb0bfa93603f81ecaf3c450b793e71f7372822cd2002534364493e4e497fb5df16d252ae2fdc6bbc0e74d849f918db393"],
  });

  const balanceGwei = response.data[0].balance;
  const balance = balanceGwei / GWEI_PER_ETH;
  
  console.log(`You have ${balance} Ξ2.0`);
})();
目录
相关文章
|
存储 JavaScript 前端开发
ts简介和基本类型
ts简介和基本类型
|
运维 监控 网络虚拟化
【Python操作基础】——运算符
【Python操作基础】——运算符
|
1天前
|
存储 JavaScript 前端开发
JavaScript基础
本节讲解JavaScript基础核心知识:涵盖值类型与引用类型区别、typeof检测类型及局限性、===与==差异及应用场景、内置函数与对象、原型链五规则、属性查找机制、instanceof原理,以及this指向和箭头函数中this的绑定时机。重点突出类型判断、原型继承与this机制,助力深入理解JS面向对象机制。(238字)
|
2天前
|
安全 数据可视化 网络安全
安全无小事|阿里云先知众测,为企业筑牢防线
专为企业打造的漏洞信息收集平台
1303 2
|
3天前
|
云安全 人工智能
2025,阿里云安全的“年度报告”
拥抱AI时代,阿里云安全为你护航~
1449 2
|
2天前
|
人工智能 自然语言处理 API
n8n:流程自动化、智能化利器
流程自动化助你在重复的业务流程中节省时间,可通过自然语言直接创建工作流啦。
345 4
n8n:流程自动化、智能化利器
|
11天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
1442 7
|
1天前
|
Linux 数据库
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
本文介绍在CentOS 7.9环境下安装PolarDB-X单机版数据库的完整流程,涵盖系统环境准备、本地Yum源配置、RPM包安装、用户与目录初始化、依赖库解决、数据库启动及客户端连接等步骤,助您快速部署运行PolarDB-X。
219 1
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
|
4天前
|
人工智能 API 开发工具
Skills比MCP更重要?更省钱的多!Python大佬这观点老金测了一周终于懂了
加我进AI学习群,公众号右下角“联系方式”。文末有老金开源知识库·全免费。本文详解Claude Skills为何比MCP更轻量高效:极简配置、按需加载、省90% token,适合多数场景。MCP仍适用于复杂集成,但日常任务首选Skills。推荐先用SKILL.md解决,再考虑协议。附实测对比与配置建议,助你提升效率,节省精力。关注老金,一起玩转AI工具。