如何使用Moralis的JSSDK监控所有ETH转账交易虽然通过Moralis管理区域设置链上监控是最简单的途径,但在构建更高级的dapp时,您可能更喜欢通过Moralis的SDK进行设置。注意:如果您想要有关如何通过SDK使用Streams的详细说明,请
<!--StartFragment-->
虽然通过 Moralis 管理区域设置链上监控是最简单的途径,但在构建更高级的 dapp 时,您可能更喜欢通过 Moralis 的 SDK 进行设置。
注意:如果您想要有关如何通过 SDK 使用 Streams 的详细说明,请点击 Moralis 管理区域“Stream”页面上的相关按钮:
因此,您可能想知道如何以编程方式监控所有 ETH 转账交易。首先,您必须决定要使用哪种编程语言/框架。您有很多选择,但 JavaScript 或 Python 与 NodeJS 相结合往往是最受欢迎的。
但是,在专注于通过 SDK 创建流之前,您需要准备一个服务器。后者将接收一个 webhook。幸运的是,您可以创建一个简单的 NodeJS Express 应用程序,它将为您提供一个“webhook”端点。
因此,为此,您可以使用以下代码行 - 只需将它们复制粘贴到“index.js”文件中即可:
<!--EndFragment-->
const express = require("express");
const app = express();
const port = 3000;
app.use(express.json());
app.post("/webhook", async (req, res) => {
const {body} = req;
try {
console.log(body);
} catch (e) {
console.log(e);
return res.status(400).json();
}
return res.status(200).json();
});
app.listen(port, () => {
console.log(`Listening to streams`);
});
<!--StartFragment-->
有了上述脚本,只需npm run start
使用终端输入并运行命令即可。
响应上述命令,你的终端应该返回“正在监听流”消息:
接下来,打开一个新终端并运行该ngrok http 3000
命令。这将创建一个到端口的隧道3000
。响应此命令,您将获得一个 URL 地址,可用作流的 webhook URL。
准备好本地服务器和隧道后,您可以使用下一节中概述的代码行来监视各种链上活动。当然,“如何监视所有 ETH 转账交易”功能也是您可以关注的选项之一。
首先初始化另一个 NodeJS 应用程序。接下来,创建一个新的“index.js”文件,该文件需要依赖 Moralis 和dotenv
:
<!--EndFragment-->
const Moralis = require("moralis").default;
const { EvmChain } = require("@moralisweb3/common-evm-utils");
require("dotenv").config();
<!--StartFragment-->
此外,您需要创建一个“ .env ”文件。在该文件中,将您的 Moralis Web3 API 密钥存储在MORALIS_KEY
变量下。要获取该变量的值,请访问您的 Moralis 管理区域,转到“设置”,然后复制默认 API 密钥或创建一个新密钥:
现在您有了 API 密钥,您可以初始化 Moralis。为此,请在下面添加以下代码行require (“dotenv”).config();
:
<!--EndFragment-->
Moralis.start({
apiKey: process.env.MORALIS_KEY,
});
<!--StartFragment--> 然后,是时候使用以下代码行来关注流的选项了: <!--EndFragment-->
async function streams(){
const options = {
chains: [EvmChain.MUMBAI],
tag: "transfers",
description: "Listen to Transfers",
includeContractLogs: false,
includeNativeTxs: true,
webhookUrl: "your webhook url"
}
<!--StartFragment-->
查看上面的代码片段,您可以看到它定义了要关注的链、描述、标签和 webhook URL。这些都是我们在上一节中介绍的相同选项,因为我们使用了 Moralis 的管理 UI。
我们将专注于监听孟买测试网上的原生交易。因此,我们将 设置includeContractLogs
为false
,以便不监听 ERC-20 交易。此外,我们将 设置为 ,专注于原生货币转账includeNativeTxs
。true
对于孟买网络,原生货币是“测试”MATIC。
要在“index.js”脚本中使用上述代码行,您只需将其替换your webhook url
为之前生成的ngrok
URL:
如上图所示,请确保/webhook
在 URL 末尾添加ngrok
。
通过完成上述所有步骤,您最终就可以实现本文介绍中展示的代码行了。
因此,请关注上面定义的内容async function streams
,并在该行下方添加以下代码片段webhookUrl
:
<!--EndFragment-->
const newStream = await Moralis.Streams.add(options)
const {id} = newStream.toJSON();
const address = "wallet_address_you_want_to_track";
await Moralis.Streams.addAddress({address, id})
console.log("Fin")
}
streams()
<!--StartFragment-->
该Moralis.Streams.add(options)
方法使用上面定义的流选项来创建新流。接下来,代码使用它const {id}
来获取新流的 ID。此外,它还定义了要监控的钱包地址。这是您需要wallet_address_you_want_to_track
用实际地址替换的地方。
该Moralis.Streams.addAddress
方法使用您的流的 ID 为其分配钱包地址。最后,代码Fin
在完成所有前面的步骤后记录。
要运行脚本,请输入node index.js
。如果您按照上述说明进行了所有操作,您应该Fin
在终端中看到:
在出于测试目的执行本地货币交易之前,请打开“Express 服务器”终端。在那里,您应该看到一个空的 webhook 正在初始化:
现在,使用您的 MetaMask 并从您正在监控的地址转移一些“测试”MATIC。一旦交易确认,您将能够在终端中看到测试交易的详细信息:
这就是如何通过其 SDK 使用 Moralis Streams 监控所有 ETH 转移交易!
无论您决定跟踪特定的智能合约还是钱包,最终还是要监听实时的链上交易。由于交易围绕不同的活动进行,因此您有很多选择。
例如,在上面的教程中,我们首先关注 ERC-20 转账,然后关注原生转账。然而,这只是两个常见的链上事件示例。您还可以关注其他几个链上事件。各种 dapp 都可以从使用这种监控中受益匪浅。
您可能知道,链上数据(对于公共区块链)可供任何人使用。但是,原始格式的数据毫无用处。因此,开发人员要么浪费时间和资源自己解析数据,要么使用出色的工具来为他们完成工作。
在监控加密交易方面,Moralis 的 Streams API 是最好的工具。它允许开发人员在事件发生时检测它们,并返回与这些事件相关的解析数据。因此,这为 dapp 开发人员节省了大量时间,使他们能够专注于创建最佳用户体验。
Streams API 工具的一些核心优势包括:
此外,有了这个强大的工具,您还可以避免:
有些开发者仍在使用 ethers.js 来监听区块链,因此错过了上述所有好处。
<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!