中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

以太坊2.0查詢Validator余額的JS代碼怎么寫

發布時間:2021-12-13 21:40:01 來源:億速云 閱讀:163 作者:柒染 欄目:互聯網科技

以太坊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`);
})();

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大丰市| 闸北区| 慈利县| 吐鲁番市| 孟津县| 固原市| 庆安县| 泰和县| 叙永县| 巨野县| 普安县| 札达县| 甘泉县| 彰化市| 肥乡县| 大港区| 芒康县| 麻城市| 黑龙江省| 长汀县| 苍南县| 治多县| 望江县| 桃江县| 阿拉善盟| 万年县| 乌兰浩特市| 汝城县| 福安市| 龙口市| 师宗县| 四会市| 宁阳县| 岑巩县| 兴隆县| 寿阳县| 石家庄市| 大港区| 饶阳县| 兴山县| 砀山县|