Defender 允许你使用 Action Workflow 快速定位并激活链上活动。本教程展示了如何创建一个工作流,该工作流监控 Box 合约中的对象数量,并在向其添加对象时执行一个 action。

先决条件

  • OpenZeppelin Defender 账户。

1. Action 设置

在本教程中,你将监控 Sepolia 中的这个合约,该合约存储了多个对象,同时允许任何人分别使用 addObject()removeObject() 函数来添加或删除对象。对于添加的每个对象,你的工作流将执行一个 action,该 action 会删除一个对象并将总数减少一。要设置该 action,请按照下列步骤操作:

  1. 在 web 浏览器中打开 Defender Relayers

  2. 使用以下参数填写表单,然后单击 Create

    • Name: Relayer Sepolia

    • Network: Sepolia

  3. 将一些 Sepolia ETH 转移到上一步中创建的中继器地址。

  4. 导航到 Defender Address Book 以导入 BoxV2 合约。

  5. 使用以下参数填写表单,然后单击 Create

    • Name: BoxV2

    • Network: Sepolia

    • Address: 0xC64f7ace6127bc7B0bAb23bD1871aC81e6AEC074

  6. 导航到 Defender Workflows Transaction Template 创建页面

  7. 使用以下参数填写 General Information 部分:

    • Name: Remove object

    • Contract: BoxV2

  8. Function 部分的下拉菜单中选择 removeObject 函数。

  9. 展开 Approval Process 部分的下拉菜单,然后单击 Create Approval Process

  10. 使用以下参数填写表单,然后单击 Save Changes

    • Name: BoxV2 IR Sender

    • Relayer: Relayer Sepolia(在第一步中创建)

  11. 选择 BoxV2 IR Sender 作为审批流程,然后单击 Save Transaction Template

    带有 Transaction Template 的工作流页面

2. Workflow 设置

配置好 action 后,现在需要创建工作流。为此,请按照下列步骤操作:

  1. 打开 Defender Workflows 创建页面

  2. 将工作流重命名为 Remove from BoxV2 if Object is Added

  3. Remove object action 拖到第一行。

  4. 单击 Save

    BoxV2 工作流

3. Monitor 设置

创建工作流后,你需要配置一个 monitor,以跟踪 BoxV2 合约中的对象数量以触发该工作流。为此,请按照下列步骤操作:

  1. 打开 Defender Monitor 创建页面

  2. 使用以下参数填写 General Information 部分:

    • Name: BoxV2 Objects Monitor

    • Risk Category: Suspicious Activity

    • Contract: BoxV2

    • Confirmation Blocks: Confirmed (1 blocks)

    工作流 Monitor 常规信息
  3. Transaction Filters 部分,为 Transaction properties 字段添加 status == "success"

  4. Function 部分,选择 addObject()

  5. Alerts 部分中,为 Execute a Workflow 选项选择 Remove from BoxV2 if Object is Added 工作流。

    工作流 BoxV2 Objects monitor
  6. 单击 Save Monitor,这将开始运行。

4. 实际应用

当 monitor 运行时,它将检测任何与 addObject() 函数匹配的交易以触发工作流。要手动执行此类交易,请按照下列步骤操作:

  1. 打开 Defender Transaction Proposal 创建页面

  2. 使用以下参数填写表单:

    • Name: BoxV2 Add Object Trigger

    • Contract: BoxV2

    • Function: addObject

    • Approval Process: BoxV2 IR Sender

  3. 单击 Submit Transaction Proposal

    Transaction Proposal 触发器
  4. 单击交易提案以打开其页面。

  5. 单击右上角的 Approve and Execute 按钮以执行交易,这将通过 monitor 触发工作流。

  6. 等待交易执行完毕并打开 Defender Workflows 页面

    活动工作流
  7. 单击 View Active Run 并检查工作流响应的详细信息。

  8. 成功执行运行后,你可以通过检查 Etherscan 上的合约活动来验证响应。它应该看起来像这样:

    工作流 Etherscan 响应

下一步

恭喜!你现在有了一个完整的工作流,它将运行并检查每个已确认的区块。工作流可以通过并行 action 进行扩展,以实现更多技术组合。如果你对高级用例感兴趣,我们正在编写与 Workflow 相关的指南。