本文介绍了如何使用 Alchemy 的 Webhooks 在 Optimism 上设置和使用 Webhook,实现对 Optimism 网络事件的追踪,并通过 Zapier 将事件通知自动发送到 Slack。
由 Alchemy 撰写
由 Brady Werkheiser 审核
发布于 2022 年 8 月 11 日,阅读时长 6 分钟
如果你想让你的 web3 应用程序与第三方应用或服务通信,你一定会喜欢 webhooks。在本教程中,我们将学习如何在 Optimism 上设置和使用 webhooks。然后,我们将展示如何在 Slack 上设置自动通知,以发送和接收 Optimism 上的 ETH。
Webhooks 是 web3 开发者可以使用的工具,允许第三方应用或服务在事件发生时与应用程序通信。 这种技术比持续轮询节点以检查特定状态是否通过 API 更改更有效,因为 webhooks 允许这些服务器在事件发生时将通知推送到应用程序。
Alchemy webhooks 有很大的潜力来改善用户体验并提高 web3 应用程序和服务的参与度,例如在 Discord 频道中跟踪 NFT 销售或将钱包活动发送到 Slack 频道。
我们可以通过 Alchemy webhooks 接收以下三种 Optimism 事件的通知:
已挖出的交易 - 交易完成
丢弃的交易 - 交易失败或从 mempool 中丢弃
地址活动 - 接收或转移 tokens
在本教程中,我们将跟踪 地址活动 事件,我们将收到关于在 Optimism 上发送和接收 ETH 的 Slack 通知。
以下是设置 Optimism webhooks 并自动将通知发送到 Slack 的 10 步流程。对于 Zapier 支持的许多其他第三方平台(如 Discord、Twitter 等),都可以按照此流程进行操作!
我们需要一个 Ethereum 钱包来发送和接收交易。在本教程中,我们将使用 MetaMask,一个基于浏览器的数字资产钱包来管理 Ethereum 账户。下载 MetaMask 并创建一个免费帐户。
为了简化操作,注册一个免费的 Alchemy 开发者帐户,这样你就可以与 Ethereum 链通信,而无需运行你自己的节点。
接下来,创建一个新的应用程序以生成 API 密钥,并 连接到 Optimism 测试网络。
通过将鼠标悬停在导航栏中的 Apps 上,然后单击 Create App,导航到 Alchemy 仪表板中的 Create App 页面。
命名你的应用程序(我们选择了“optimism_webhooks”),并写一个简短的描述。
接下来,为你的链选择 Optimism,并为你的网络选择 Optimism Goerli。
然后,单击 Create app。
现在,单击 Apps 下新创建的应用程序链接,然后单击 Add to Wallet。
你现在应该在 Metamask 上连接到 Optimism Goerli 测试网!
要将你的智能合约部署到 Optimism 测试网络,从 Goerli 水龙头获取 ETH。
首先,将你的 MetaMask 网络更改为 Ethereum Goerli,然后单击 Claim。
然后,你应该在 Goerli 测试网的 MetaMask 帐户中看到 0.05 ETH。
目前还没有公共桥来将 Goerli ETH 转移到 Optimism,但可以使用 Foundry 的 Cast 来完成,这是一个用于 Ethereum 应用程序开发的工具包。
使用此代码段:
cast send --legacy --rpc-url=$ALCHEMY-OPT-GOERLI-ENDPOINT --value=0.001ether --private-key= 0x636Af16bf2f682dD3109e60102b8E1A089FedAa8
现在你在 Opt-Goerli 测试网上有了 Goerli ETH。
现在,创建你的 Zapier 帐户,或者如果你已经有一个 Zapier 帐户,则登录你的帐户。
接下来,在仪表板中,单击左上角的 Create Zap。
我们现在将创建 webhook URL,用于将 webhook 响应从 Alchemy 发送到 Zapier。
在 Trigger 下,搜索并选择 Webhooks by Zapier 作为应用程序事件/触发器。
对于 Trigger Event,选择 Catch Hook,因为 Zapier 正在等待 Alchemy 的地址活动 webhook 在每次发生转移时将事件数据发送到 URL。
单击 Continue 进入 设置触发器 部分,然后复制 Custom Webhook URL。
现在,我们需要创建地址活动 webhook 来跟踪转移事件并将数据发送到 Zapier webhook URL。
我们将展示两种设置 webhook 的方法,首先是从仪表板中的 Alchemy Notify 选项卡,其次是通过使用 Alchemy 的 Notify API 以编程方式(建议用于处理 10 个以上地址的地址活动 webhook)。
确保你在 Alchemy 仪表板左上角的 Ethereum + L2 生态系统中
导航到 Notify 选项卡,然后单击 Address Activity 部分中的 + Create Webhook 按钮
选择 Chain 为 Optimism
选择 Network 为 Goerli
将你从上一步中的 Zapier 复制的 webhook URL 粘贴到框中
将你的 MetaMask 钱包地址粘贴到 Ethereum Addresses 部分。
注意: 如果你想在确认创建之前测试 Alchemy webhook 是否成功将请求发送到 Zapier 的 webhook URL,请单击 webhook URL 旁边的 Test Webhook。或者,如果你已经创建了 webhook 但想再次测试,请单击 webhook 旁边的三个点,然后选择 Send Test Notification。
现在,返回 Zapier 并继续到 Test trigger 部分,然后单击 Test trigger。
如果你看到“We found a request message”,恭喜你!
如果你想为多个 Optimism 地址创建 webhooks,请使用 Notify API。首先,从 Notify 仪表板右上角的 AUTH TOKEN 按钮下复制你的 Alchemy 身份验证Token (X-Alchemy-Token)。
Alchemy 仪表板显示了从哪里复制 Notify API 的 Auth Token。
然后,导航到你的命令行并键入以下内容:
curl https://dashboard.alchemyapi.io/api/create-webhook \
-X POST \
-H "X-Alchemy-Token":"your-X-Alchemy-Token" \
-d '{"network":"OPT_KOVAN","webhook_type":"ADDRESS_ACTIVITY","webhook_url":"your-Zapier-Webhook-URL", "addresses":["your-Ethereum-Address"]}'
请记住使用你自己的 your-X-Alchemy-Token、your-Zapier-Webhook-URL 和 your-Ethereum-Address(即,你粘贴的钱包地址),你可以添加任意数量的 Ethereum 地址来跟踪它们的转移事件。
刷新后,你应该看到新创建的地址活动 webhook 出现在你的 Notify 仪表板中,其中包含所有指定的参数。
给定来自 Alchemy 的 webhook 响应,我们需要在 Zapier 中解析它以创建一个操作,每当我们的 Optimism 地址成功发送交易时发送警报。
在 Action 部分下,选择右侧的 Filter 选项。
在 Filter setup & testing 中,我们希望在 Event Activity From Address(或者你可以简单地搜索 fromAddress)(Text) Exactly matches 我们的 Optimism 地址(将其粘贴到最后一个文本字段)时继续。
如果你单击 Continue 并发现“Your Zap would not have continued”,请不要担心!测试通知不是从钱包发送的,因此可以预料到此消息。
首先,让我们创建一个 Slack 帐户和工作区。在 Slack 上创建一个帐户,或者如果你已经有一个帐户,则登录你的帐户。然后,创建一个新的工作区。我们将其命名为 Optimism Wallet Alerts,但你可以随意发挥你的创造力!
接下来,我们希望在我们的钱包是 转账 事件 的发送者时发送消息。
单击底部的 “+”
在新的 Action 部分中搜索并选择 Slack
对于 Action Event,选择 Send Channel Message
单击 Continue 后,登录到你的 Slack 帐户
填写字段以在 设置操作 部分中发送我们的消息
选择你要在其中发送警报的频道(在我们的例子中为 Optimism-Wallet-Alerts)。
在消息文本中,你可以发挥创意并选择要发送的字段和值。
我们选择了这些字段:
你可以将其他所有内容保留为默认选项。
单击 continue,然后单击 test and continue。
如果没有弹出错误,则表示一切正常!应该在你的帐户上创建了一条 Slack 消息。现在,发布 Zap。
恭喜!现在,每当你的 Optimism 钱包发出交易时,我们的 Zap 都会发送一条详细说明该交易的消息。
你还可以在 Zapier 仪表板上的 Zap History 页面上查看 Zap 的运行详细信息。
我们还希望在我们的钱包收到 Optimism 交易时发送警报。
首先,编辑 continue only if 操作。
单击 Filter Setup & Testing,然后按 “+ or ” 按钮,填写 Event Activity To Address(或者你可以简单地搜索 fromAddress)和 (Text) Exactly matches 我们的 Optimism 地址(将其粘贴到最后一个文本字段)。
太棒了,现在当 Wallet 也是接收者时,我们的 Zap 也会运行!
接下来,让我们在我们的 Only continue if… 和 Send Channel Message in Slack 操作之间创建一个 Code by Zapier 操作。
你可以选择 Run Python 或 Run Javascript。我们将选择后者,但逻辑对于 Python 来说是相同的。
单击 Continue 后,我们将按照以下方式在 设置操作 下设置我们的输入数据:
我们再次解析 webhook 响应,因为我们当前的通知仅为我们的钱包 发送 ETH 时编写。因此,我们需要自定义它们以适应我们的钱包 接收 ETH 的情况。
在代码块中,粘贴以下代码(阅读注释以了解每一行的含义):
// 由于 JavaScript 区分大小写,我们将比较大写地址
const address = "Wallet-Address".toUpperCase();
// 定义帐户 1(我们的钱包)
let account_1 = "";
// 定义帐户 2(我们的钱包正在发送/接收的用户)
let account_2 = "";
// 定义在消息中使用“to”或“from”
let t_or_f = "";
let f_or_t = "";
if (inputData.fromAddress.toUpperCase() == address) {
// 如果 Wallet 正在发送,那么它是 fromAddress
account_1 = inputData.fromAddress;
account_2 = inputData.toAddress;
t_or_f = "from";
f_or_t = "to";
} else if (inputData.toAddress.toUpperCase() == address) {
// 如果 Wallet 正在接收,那么它是 toAddress
account_1 = inputData.toAddress;
account_2 = inputData.fromAddress;
t_or_f = "to";
f_or_t = "from";
}
//` 输出要在电子邮件中使用的字段
`output = [{account_1: account_1, account_2: account_2, t_or_f: t_or_f, f_or_t: f_or_t}];`
同样,请记住 将 Wallet-Address 替换为 你的 MetaMask 钱包地址。在测试操作时,如果它没有将任何内容分配给输出变量,请不要担心。
最后,转到 Send Channel Message in Slack 操作,然后单击 设置操作 部分。
我们现在将消息文本中来自 webhook 响应的通用字段替换为来自我们的 Javascript 代码的更动态的输出,这些输出是根据我们的 Wallet 是发送还是接收 tokens 自定义的:
单击 Continue 并测试你的操作。然后发布!
恭喜!你刚刚完成了创建 Optimism webhooks!
Supercharged | Alchemy | Substack
获取免费的 Optimism RPC 和开发人员工具 获取你的 API 密钥
📚 目录
分享:
\
\
Layer 2\
\
Rollup-as-a-Service 提供商比较:如何选择合适的 RaaS 合作伙伴\
\
探索行业领先的 RaaS 提供商以及选择 RaaS 时要考虑的因素。
\
\
Layer 2\
\
什么是 ZKsync Era?以太坊开发人员概览\
\
了解 ZKsync Era - 为以太坊扩展提供支持的 EVM 兼容 ZK rollup。
\
\
Layer 2\
\
什么是 Rollups-as-a-service (RaaS)?\
\
了解 Rollups as a Service 在以太坊 Layer 2 生态系统中的位置
Alchemy 将最强大的 web3 开发者产品和工具与资源、社区和传奇支持相结合。
- 原文链接: alchemy.com/overviews/op...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!