如何获取一个地址拥有的所有ERC-20代币
寻找任意钱包的ERC-20代币余额简单得就像你早上问肚子饿没饿一样;用户打开钱包时,所有导入的代币余额都会自动显示。然而,当某个人或实体,比如警察或企业,需要确认另一个地址的ERC-20代币余额时,直接访问钱包是不可能的。
在这种情况下,可以使用应用程序编程接口(API)来检查钱包中的余额。API会返回地址拥有所有ERC-20代币余额,并可以自动化检查代币余额的过程。
本文将介绍如何使用Chainbase、Alchemy和Moralis的API获取地址拥有的ERC-20代币信息。
用Chainbase寻找某地址拥有的所有ERC-20代币的步骤指南
Chainbase——一个Web3区块链交互层基础设施——为开发者提供API服务,帮助他们快速访问和利用区块链网络。其API提供链上数据查询便利。
要使用Chainbase,用户需要在平台上有一个账户和API密钥、集成开发环境和输入钱包地址。
步骤1:创建免费账户并登录
在Chainbase上注册免费账户并访问不同的API及其数据云。然后登录Chainbase并访问仪表板。在控制台中启动一个新项目,获取API密钥。

步骤2:使用Chainbase API编写脚本
下一步是调用Chainbase API来检索ERC-20代币余额。下面的示例使用JavaScript。接下来的操作是使用JavaScript,通过Axios库向Chainbase获取ERC-20代币余额执行HTTP请求。
使用“fetch”向服务器请求数据,如下面的代码片段所示:

上面的代码示例查询Chainbase以获取以太坊主网上某个钱包(以Vitalik Buterin的地址为例)的前五个ERC-20代币余额,显示结果或遇到的任何错误。
虽然使用原生Fetch API是执行JavaScript中HTTP请求的一种常见方式,但在示例代码中,“获取”是通过Axios而不是原生Fetch API进行的。要使用Axios,用户必须在终端中用“npm install axios --save”安装它。

上面的代码使用JavaScript中的Axios查询Chainbase以获取Vitalik Buterin在以太坊主网上钱包的前五个ERC-20代币余额。
步骤3:打印代币余额
Chainbase的getAccountTokens API使用链ID和钱包地址作为参数,并返回钱包拥有的所有ERC-20代币余额。用户还可以通过填写“contract_address”字段来找到关于特定代币的信息。为了打印数据,用户必须在终端中运行“node

上面的代码片段显示了一个给定钱包的几个ERC-20代币的余额和信息,包括以太币、Uniswap V2、dYdX等。
使用Alchemy寻找某地址拥有的所有ERC-20代币的步骤指南
Alchemy提供的API作为一个平台层工作,读取或写入区块链,提供开发者想要的确切信息。以下是通过Alchemy获取代币余额的步骤:
步骤1:安装Node和NPM
在本地计算机上安装Node和Node包管理器(NPM)。Node是一个跨平台、开源的JavaScript运行环境,而NPM提供了访问广泛库和工具的途径。
步骤2:注册Alchemy账户并创建应用
在Alchemy网站上注册免费账户。然后登录并导航到“Alchemy仪表板”以创建一个新的应用。将区块链设置为“Ethereum”,网络设置为“主网”。在仪表板中点击应用的“查看密钥”按钮并记下HTTP URL和API密钥。
URL将呈现如下形式:https://eth-mainnet.g.alchemy.com/v2/xxxxxxxxx
步骤3:创建Node项目
下一步涉及初始化一个空存储库并安装所需的Node.js依赖项。对于API交互,特别是与代币API交互,用户需要使用Alchemy软件开发工具包(SDK),尽管Axios或Fetch可以是合适的替代品。
Axios是一个用于从节点的JavaScript库,用于执行HTTP请求。Fetch API是Node内置的模块,它简化了制作API请求并在服务器上处理响应的过程。Alchemy SDK是一个支持访问底层数据模型和技术的程序函数库。
以下为代码示例:

上述代码将创建一个存储库“eth-balance”,其中包含所有文件和依赖项,代码将写入“main.js”文件。
步骤4:获取某地址的代币余额
要检索代币余额,用户可以使用getTokenBalances方法,该方法需要一个参数:想要获取代币余额的钱包地址。然后,用户需要在main.js文件中添加以下代码。

以下命令运行脚本:

输出将如下所示:

上面的代码显示了地址为0xd8da6bf26964af9d7eed9e03e53415d37aa96045的钱包的代币余额,列出每个代币的合约地址以及相应的十六进制格式余额。
然而,上一步骤的输出——列出代币合约地址和最小的单位余额——不太容易理解。要获取有关代币的详细信息的结构化格式,如名称、代币符号和小数位数,用户应使用getTokenMetadata方法。这个函数——需要合约地址作为输入——提供结构化格式数据。

此外,用户可以优化脚本,将getTokenBalances与getTokenMetadata方法集成。例如,他们可以删除余额为零的代币,并将代币余额转换为可读形式。
使用Moralis寻找某地址拥有的所有ERC-20代币的步骤指南
Moralis提供企业级的Web3 API,促进任何技术堆栈中Web3的集成。以下是通过Moralis寻找某地址所有ERC-20代币的步骤:
步骤1:设置Moralis
安装Node.js v14+和NPM。将二进制文件解压到安装文件夹,设置Node的系统环境变量。命令npm-install设置NPM包及其可能依赖的其他包。
创建免费Moralis账户,登录到Moralis仪表板并获取API密钥。用户可以在“设置 > 密钥”中找到它。在这里,用户应定位到“Web3 API Key - Default”或类似名称的密钥,并复制其值以在项目中使用。
步骤2:寻找某地址所有的ERC-20代币
Moralis提供了一个“getWalletTokenBalances”端点,用来寻找某个地址拥有的所有ERC-20代币。这需要两个参数:地址和链。在这个上下文中,地址代表要查询代币余额的特定钱包地址。链代表代币所持有区块链网络,比如以太坊。
以下为JavaScript代码示例:

上面的代码初始化了Moralis SDK,用提供的API密钥设置它,然后查询与指定以太坊钱包地址相关的所有ERC-20代币余额,以JSON格式将结果打印到控制台。
步骤3:运行脚本
现在可以运行脚本并找到代币数量。在JavaScript中,用户需要输入以下命令:

终端将显示以下JSON响应:

上面的JSON片段详细描述了特定区块链钱包中ERC-20代币的持有情况,有两条代币:apeSoup(APE)和_neg_wheat(WETH)。它包括合同地址、名称、符号、徽标URL(如有)、小数精度以及钱包中代币的余额,以每个代币的最小单位表示。