以太坊2.0查询Validator余额的JS代码怎么写
以太坊2.0查询Validator余额的JS代码怎么写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
成都创新互联公司服务项目包括和平网站建设、和平网站制作、和平网页制作以及和平网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,和平网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到和平省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
在ETH 2.0抵押的一个基本需求是监视其验证者余额,我们将学习如何利用Infura的ETH 2.0 Beacon Chain API编写程序来查询验证者(Validator)的余额。
离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`); })();
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
分享文章:以太坊2.0查询Validator余额的JS代码怎么写
转载来于:http://ybzwz.com/article/pdcpgg.html