{"author":{"address":null,"user":"https://learnblockchain.cn/people/24069"},"content":{"body":"\u003c!--StartFragment--\u003e\r\n\r\n### 概述 \r\n\r\n今天的文章将从深入介绍 ETH 地址开始。在此过程中，我们将介绍它们是什么以及它们的用途。从那里，我们将直接进入教程，向您展示如何使用 Moralis 的 Token API 通过三个简单的步骤列出 ETH 地址中的所有硬币： \r\n\r\n1. 获取 Moralis API 密钥\r\n2. `getWalletTokenBalances()`编写调用端点的脚本\r\n3. 运行代码\r\n\r\n\u003c!--EndFragment--\u003e\r\n\u003c!--StartFragment--\u003e\r\n\r\n## 什么是 ETH 地址？ \r\n\r\nETH 地址是一个 42 个字符长的字母数字十六进制字符串，用作以太坊区块链上外部拥有帐户 (EOA) 或智能合约的唯一公共标识符。此类地址主要用于发送、接收和存储数字资产，如可替代和不可替代代币 (NFT)！\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![bab.png](https://img.learnblockchain.cn/attachments/2025/03/geC4zH9a67cac4792a11a.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\nETH 地址有两种类型，我们将在下面简要介绍： \r\n\r\n* **账户地址**：账户地址（通常也称为“钱包地址”或“区块链地址”）对应于由私钥控制的区块链上的公共用户账户。账户地址用于发送、接收和存储数字资产，以及与智能合约和 dapp 交互。\r\n\r\n\u003c!----\u003e\r\n\r\n* **合约地址**：合约地址与部署在区块链上的智能合约相关联。合约地址不像账户地址那样由个人或实体控制，而是代表智能合约在网络上所在的位置。 \r\n\r\n总而言之，ETH 地址是以太坊账户和智能合约的唯一标识符。此外，它们通常用于发送、接收和存储数字资产，如可替代代币和 NFT！ \r\n\r\n\u003c!--EndFragment--\u003e\r\n\u003c!--StartFragment--\u003e\r\n\r\n### 步骤 1：获取 Moralis API 密钥 \r\n\r\n要调用 Token API，您需要一个 Moralis API 密钥，您可以通过注册 Moralis 免费获取该密钥。因此，如果您还没有，请点击 Moralis 主页右上角的“免费开始”按钮来创建您的帐户：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![bab.png](https://img.learnblockchain.cn/attachments/2025/03/q9hQHKGW67cac4df40968.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n使用手头的帐户，选择一个项目，使用左侧的导航栏转到“设置”选项卡，向下滚动到“API 密钥”部分，然后复制您的密钥：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![bab.png](https://img.learnblockchain.cn/attachments/2025/03/ASBpUgFr67cac507693d4.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n现在保存密钥，因为在下一步初始化 Moralis 软件开发工具包 (SDK) 时您将需要它！\r\n\r\n### `getWalletTokenBalances()`步骤 2：编写调用端点的 脚本\r\n\r\n第二步，首先在您喜欢的 IDE 中设置一个新的项目文件夹。从那里，打开一个新终端并在根文件夹中运行以下命令来安装 Moralis SDK：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n```js\r\nnpm install moralis @moralisweb3/common-evm-utils\r\n```\r\n\u003c!--StartFragment--\u003e\r\n接下来，创建一个新的”index.js”文件并添加以下代码： \r\n\u003c!--EndFragment--\u003e\r\n\r\n```js\r\nconst Moralis = require(\"moralis\").default;\r\nconst { EvmChain } = require(\"@moralisweb3/common-evm-utils\");\r\n\r\nconst runApp = async () =\u003e {\r\n  await Moralis.start({\r\n    apiKey: \"YOUR_API_KEY\",\r\n    // ...and any other configuration\r\n  });\r\n\r\n  const address = \"0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d\";\r\n\r\n  const chain = EvmChain.ETHEREUM;\r\n\r\n  const response = await Moralis.EvmApi.token.getWalletTokenBalances({\r\n    address,\r\n    chain,\r\n  });\r\n\r\n  console.log(response.toJSON());\r\n};\r\n\r\nrunApp();\r\n```\r\n\u003c!--StartFragment--\u003e\r\n\r\n在运行代码之前，您需要进行一些小配置。首先用`YOUR_API_KEY`您在第一步中复制的密钥进行替换。这样做将初始化 Moralis SDK：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![bab.png](https://img.learnblockchain.cn/attachments/2025/03/ZkJOx5cn67cac587ed4fe.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n请记住，您不想暴露您的 Moralis API 密钥。因此，在构建可用于生产的 dapp 时，请务必使用环境变量和其他最佳实践。\r\n\r\n从这里，您还需要`address`通过添加您想要从中获取所有硬币列表的 ETH 地址来配置 const：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![bab.png](https://img.learnblockchain.cn/attachments/2025/03/Ph5pPuEJ67cac5aaa0833.png)\r\n\u003c!--StartFragment--\u003e\r\n然后我们在调用端点时将`address`和`chain`作为参数传递`getWalletTokenBalances()`： \r\n\u003c!--EndFragment--\u003e\r\n\r\n![bab.png](https://img.learnblockchain.cn/attachments/2025/03/cAN604fC67cac5cd0f99b.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n这就是代码；您现在可以运行脚本并获取指定 ETH 地址中所有硬币的列表！ \r\n\r\n### 步骤 3：运行代码 \r\n\r\n要运行代码，请继续启动一个新终端，`cd`进入项目的根文件夹，然后执行以下命令：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n```js\r\nnode index.js\r\n```\r\n\u003c!--StartFragment--\u003e\r\n\r\n运行代码后，您将收到一个响应，其中包含指定 ETH 地址中所有硬币的列表。它看起来应该像这样：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n```js\r\n[\r\n  {\r\n    \"token_address\": \"0xff20548405c6f024264b5c8dc954625285b799e1\",\r\n    \"symbol\": \"BTCETF\",\r\n    \"name\": \"BTCETF\",\r\n    \"logo\": null,\r\n    \"thumbnail\": null,\r\n    \"decimals\": 18,\r\n    \"balance\": \"166000000000000000000000\",\r\n    \"possible_spam\": false\r\n  },\r\n  {\r\n    \"token_address\": \"0xe90cc7d807712b2b41632f3900c8bd19bdc502b1\",\r\n    \"symbol\": \"KUMA\",\r\n    \"name\": \"Kuma\",\r\n    \"logo\": null,\r\n    \"thumbnail\": null,\r\n    \"decimals\": 18,\r\n    \"balance\": \"3000000000000000000000000000\",\r\n    \"possible_spam\": false\r\n   },\r\n  //...\r\n]\r\n```\r\n\u003c!--StartFragment--\u003e\r\n\r\n恭喜您；现在您知道如何获取 ETH 地址中所有硬币的列表！ \r\n\r\n现在，如果你想要了解如何处理这些数据，请加入我们的下一节。在此过程中，我们将探讨列出 ETH 地址中所有代币的一些常见用例！ \r\n\r\n### 列出 ETH 地址中所有代币的用例 \r\n\r\n列出 ETH 地址中的所有代币有很多用例，我们无法在本节中介绍所有这些用例。相反，我们将简要列出四个需要以某种方式访问​​地址余额的平台的突出示例： \r\n\r\n* **投资组合追踪器：**加密货币投资组合追踪器是一个数字平台，可让您在一个地方监督所有加密货币持有量。一些很好的例子包括 Delta、Koinly 和 Kubera。 \r\n\r\n\u003c!----\u003e\r\n\r\n* **去中心化交易所 (DEX)：** DEX 是一种加密货币交易所，无需中介参与即可实现点对点 (P2P) 交易。成熟的平台包括 Uniswap、Curve Finance 和 PancakeSwap。 \r\n\r\n\u003c!----\u003e\r\n\r\n* **区块浏览器：**区块浏览器是一种数字工具，可让您搜索有关区块链网络的实时和历史信息。这包括从区块数据到特定地址的代币余额的所有内容。一些著名的区块浏览器示例包括 Etherscan、PolygonScan 和 BscScan。\r\n\r\n\u003c!----\u003e\r\n\r\n* **Web3 钱包：** Web3 钱包是数字平台，可让您存储和管理数字资产，包括购买、出售和交换代币。Web3 钱包的示例包括 MetaMask、Coinbase Wallet 和 Ledger。 \r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![bab.png](https://img.learnblockchain.cn/attachments/2025/03/H4b3f7vt67cac63e848be.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n现在您知道如何列出 ETH 地址中的所有硬币以及这些数据有用的某些情况，让我们在下一节进一步探索 Moralis 的功能！ \r\n\r\n## 除了查询 ETH 地址中的所有代币列表之外——进一步探索 Moralis \r\n\r\nMoralis 是业界首屈一指的 Web3 API 提供商，我们的动态工具集的功能远远超出了 Token API！ \r\n\r\n![使用 Moralis 构建 ETH 地址项目 - 图形艺术插图](https://developers.moralis.com/wp-content/uploads/2024/01/Blog-List-All-the-Coins-in-An-ETH-Addres-Moralis.jpg)\r\n\r\n在 Moralis 业界领先的 Web3 API 套件中，您会发现适用于各种用例的多个接口，下面我们将探讨三个示例： \r\n\r\n* **钱包 API：**如果您希望构建 Web3 钱包或将钱包功能集成到您的 dapp 中，我们的钱包 API是终极工具。通过单个 API 调用，您可以轻松获取钱包余额、实时转账、个人资料数据等。例如，以下是使用端点获取任何钱包的本机余额是多么容易的示例`getNativeBalance()`： \r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n```js\r\nconst response = await Moralis.EvmApi.balance.getNativeBalance({\r\n  \"chain\": \"0x1\",\r\n  \"address\": \"0xDC24316b9AE028F1497c275EB9192a3Ea0f67022\"\r\n});\r\n```\r\n\u003c!--StartFragment--\u003e\r\n\r\n* **NFT API：** Moralis 的NFT API是业界领先的 NFT 相关数据工具。借助此一流界面，您只需几行代码即可获得 NFT 元数据、余额、链上价格等。例如，使用`getWalletNFTs()`端点，您可以无缝获取任何钱包的 NFT 余额： \r\n\u003c!--EndFragment--\u003e\r\n\r\n```js\r\nconst response = await Moralis.EvmApi.nft.getWalletNFTs({\r\n  \"chain\": \"0x1\",\r\n  \"address\": \"0xff3879b8a363aed92a6eaba8f61f1a96a9ec3c1e\"\r\n});\r\n```\r\n\u003c!--StartFragment--\u003e\r\n\r\n**区块链 API：**使用区块链 API，您可以解锁原始和解码区块链数据的功能。轻松获取区块数据、智能合约日志、事件等。例如，以下是如何使用`getBlock()`端点获取区块数据（包括哈希、时间戳等）的示例：\r\n\u003c!--EndFragment--\u003e\r\n\r\n```js\r\nconst response = await Moralis.EvmApi.block.getBlock({\r\n  \"chain\": \"0x1\",\r\n  \"blockNumberOrHash\": \"18541416\"\r\n});\r\n```\r\n\u003c!--StartFragment--\u003e\r\n\r\n因此，无论您要构建 Web3 钱包、NFT dapp、区块链浏览器还是任何其他平台，Moralis 都有满足您需求的完美工具。\r\n\r\n\u003c!--EndFragment--\u003e","title":"如何列出 ETH 地址中的所有代币"},"history":null,"timestamp":1741342470,"version":1}