您好,登錄后才能下訂單哦!
以太坊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`); })();
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。