小白教程 | 如何跨多链查询账户余额

本文主要介绍,如果通过 Ankr 高级 API, 跨多链获取 ETH, Polygon, BNB Chain, Fantom, Avalanche, Arbitrum 等区块链的账户余额。

准备工作

要成功完成本文内容,您只需在机器上安装 Node.js 和 Yarn 。

Node.js

https://nodejs.org/

Yarn

https://yarnpkg.com/

设置 Next.js

导航到项目目录,在终端中运行以下命令,设置新的 Node.js 起始页:

yarn create next-app --ts ankrjs-account-balance

您将看到正在创建的几个文件和文件夹,进入新创建的目录并在 localhost:3000 上启动开发服务器。

cd ankrjs-account-balance
yarn dev

访问 localhost:3000,查看启动应用程序,它将类似于下图:

 

安装和设置 Ankr.js

安装和设置 Ankr.js,用于跨多链查询账户余额。

我们从安装 npm 的 ankr.js 包开始:

yarn add @ankr.com/ankr.js

现在我们已经安装了 Ankr.js 库,请在项目根目录下创建一个名为 apis.ts  的新文件来设置 Ankr.js,并在这个文件中初始化 Ankr.js。

File: ./apis.ts

import AnkrscanProvider from '@ankr.com/ankr.js';
import type { Blockchain } from '@ankr.com/ankr.js/dist/types';

const provider = new AnkrscanProvider('');

为了与 Ankr 高级 API 交互,我们创建了一个提供程序实例,作为获取数据所需的接口。

创建函数以获取总余额

在这一步中,我们将首先在 ./apis.ts 文件中创建一个 getAccountBalance 函数,该文件将接收 walletAddress,并返回 Coin 和相应的 Token 余额。这里我们将使用 Ankr.js 提供的 getAccountBalance 方法。

File:./apis.ts

import AnkrscanProvider from '@ankr.com/ankr.js';
import type { Blockchain } from '@ankr.com/ankr.js/dist/types';

const provider = new AnkrscanProvider('');

//defining the list of supported blockchains
const listOfChains: Blockchain[] = ['eth', 'arbitrum', 'avalanche', 
'bsc', 'fantom', 'polygon', ];

//key-value pair mapping of chains to their native symbols
export const chainsToNativeSymbols: { [key in Blockchain]: string } = {
  eth: 'ETH',
  arbitrum: 'ETH',
  avalanche: 'AVAX',
  bsc: 'BNB',
  fantom: 'FTM',
  polygon: 'MATIC',
};

//getAccountBalance function to fetch coins and their respective token balances
export const getAccountBalance = async (walletAddress: string) => {
  return provider.getAccountBalance({
    walletAddress,
  });
};

在页面调用这个函数,即 ./pages/index.tsx 检查账户余额。为此,请从 index.tsx 文件中清除代码并将其替换为下面给出的代码:

File: ./pages/index.tsx

import { useEffect } from 'react';

import {
  getAccountBalance,
} from '../apis';

function App() {

  useEffect(() => {
    (async () => {
      const  total  = await getAccountBalance(
        "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
      );
      console.log({ total });
    })();
  }, []);

  return (
    <div className='p-10 flex flex-col items-center'>
      <h1 className='text-3xl font-bold'>Account Balance</h1>
    </div>
  );
}

export default App;

现在,可在浏览器的开发者控制台中查看钱包地址的账户余额。

  • 使用 Option + ⌘ + J(macOS)或 Shift + CTRL + J(Windows/Linux),便可看到链列表及各 Token 和账户余额。 

 

可选:计算净值

为了计算跨链余额总和(净值),我们将在 apis.ts 文件中创建一个新函数,并将其命名为 getTotalMultichainBalance

File:./apis.ts


import AnkrscanProvider from '@ankr.com/ankr.js';
import type { Blockchain } from '@ankr.com/ankr.js/dist/types';

const provider = new AnkrscanProvider('');

//defining the list of supported blockchains
const listOfChains: Blockchain[] = ['eth', 'arbitrum', 'avalanche', 
'bsc', 'fantom', 'polygon', ];

//key-value pair mapping of chains to their native symbols
export const chainsToNativeSymbols: { [key in Blockchain]: string } = {
  eth: 'ETH',
  arbitrum: 'ETH',
  avalanche: 'AVAX',
  bsc: 'BNB',
  fantom: 'FTM',
  polygon: 'MATIC',
};

//getAccountBalance function to fetch coins and their respective token balances
export const getAccountBalance = async (
  walletAddress: string,
  blockchain: Blockchain
) => {
  return provider.getAccountBalance({
    walletAddress,
    blockchain,
  });
};

//use getAccountBalance to sum total balance across chains
export const getTotalMultichainBalance = async (walletAddress: string) => {
  let total = 0;
  for await (const chain of listOfChains) {
    const { totalBalanceUsd, assets } = await getAccountBalance(
      walletAddress,
      chain
    );
    total += +totalBalanceUsd;
  }
  return total;
};

在页面上调用函数来检查总账户余额。

File: ./pages/index.tsx


import { useEffect } from 'react';

import {
  getTotalMultichainBalance,
} from '../apis';

function App() {

  useEffect(() => {
    (async () => {
      const  total  = await getTotalMultichainBalance(
        "0xd8da6bf26964af9d7eed9e03e53415d37aa96045"
      );
      console.log({ total });
    })();
  }, []);

  return (
    <div className='p-10 flex flex-col items-center'>
      <h1 className='text-3xl font-bold'>Net Worth</h1>
    </div>
  );
}

export default App;

在浏览器的开发者控制台中查看输入的钱包地址的净值。

  • 使用 Option + ⌘ + J(macOS )或 Shift + CTRL + J(Windows/Linux ),可查询净资产。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值