【科学家养成日记#3】获得钱包不同链上的原生币数量
IPFS
这个和【科学家养成日记#1】读取钱包代币数量 类似,区别是要获得不同链上的币的数量
比如同个钱包地址,获得BSC,FTM,Polygon网络上的原生币数量
//加载web3的库 const Web3 = require('web3'); //3个不同链的RPC节点,BSC,FTM和Polygon const rpcUrls = ['https://bsc-dataseed1.binance.org/', 'https://rpcapi.fantom.network', 'https://polygon-rpc.com']; /** * 通过小数点多少位,转换对应的数据 * tokenDecimals: 代币的小数点数 * **/ function getWeiName(tokenDecimals = 18) { tokenDecimals = Number(tokenDecimals); let weiName = 'ether'; switch (tokenDecimals) { case 3: weiName = "Kwei"; break; case 6: weiName = 'mwei'; break; case 9: weiName = 'gwei'; break; case 12: weiName = 'microether '; break; case 15: weiName = 'milliether'; break; case 18: weiName = 'ether'; break; default: weiName = 'ether'; break; } return weiName; } /** * 获得代币的符号 * @param {*} chainId 网络ID * @returns 代币的符号 */ function getChainToken(chainId) { let token = ''; switch (chainId) { case 56: token = 'BNB'; break; case 137: token = 'FTM'; break; case 250: token = 'MATIC'; break; default: token = 'ETH'; break; } return token; } /** * 获得钱包原生代币数量 * address: 钱包地址 **/ const getEthBalance = async (address, web3) => { let result = await web3.eth.getBalance(address); if (result) { //经过小数点转换之后的ETH数量 let balance = web3.utils.fromWei(result, getWeiName()); let chainId = await web3.eth.getChainId(); let token = getChainToken(chainId); return `你的钱包里有:${balance} ${token}`; } else { console.error("Getting ETH Balance error."); } } //查看多个链钱包余额 async function main() { let myWallet = '0x11e78fC4B70014d7B8978287bA3c5103D80dDd06'; for (let rpc of rpcUrls) { let rpcWeb3 = new Web3(new Web3.providers.HttpProvider(rpc)); let web3 = rpcWeb3; let balance = await getEthBalance(myWallet, web3); console.log(balance) } } main()
运行结果:
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
- 来自作者
- 相关推荐