从地址(钱包)获取 Elrond 的 esdt 代币(和余额)列表

Getting list with the Elrond's esdt tokens (and balances) from an address (a wallet)

我想从地址(钱包)中获取包含 Elrond 的 esdt 代币(和余额)的列表。我没有任何例子,我试过这样的事情:

  const { address, account } = useGetAccountInfo();
  const objAddress = new Address(address);
  // const data1 = getAccount(address);
  const { network } = useGetNetworkConfig();
  const proxy = new ProxyProvider(network.apiAddress);

  proxy
    .getAddressEsdtList(objAddress)
    .then(({ returnData }) => {
      console.log(returnData);
    })
    .catch((err) => {
      console.error('Unable to call VM query', err);
    });

但在控制台中我得到“未定义”。

非常感谢!

在最新的 erdjs 版本中,我没有提供程序的任何 getAddressEsdtList 功能;可行的方法是 extend the network providers.

所以我们知道我们可以用其他功能扩展可用的网络提供者,我们现在需要用一个地址发出请求并接收该地址持有的所有令牌。 api.elrond.com 有一个 endpointaccounts/{address}/tokens 执行此操作。
由于我们有一个端点可以向其发出请求,因此我们现在可以扩展 ApiNetworkProvider,利用 doGetGeneric.

// CustomNetworkProvider.js
import { ApiNetworkProvider } from "@elrondnetwork/erdjs-network-providers";

export class CustomNetworkProvider extends ApiNetworkProvider {
    async getTokens(address) {
        return await this.doGetGeneric(`accounts/${address}/tokens`);
    }
}
// index.js
import {CustomNetworkProvider} from "./CustomNetworkProvider.js";

const getProvider = () => {
    return new CustomNetworkProvider('https://api.elrond.com', { timeout: 5000 });
}

const provider = getProvider();
const address = 'erd1rf4hv70arudgzus0ymnnsnc4pml0jkywg2xjvzslg0mz4nn2tg7q7k0t6p';
const tokens = await provider.getTokens(address);

console.log(tokens);