> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monad.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 在实时数据上运行示例程序，以及后续步骤

如果您按顺序完成本指南，您应已经构建了其中一个示例程序（[C](/zh/execution-events/getting-started/c) 或 [Rust](/zh/execution-events/getting-started/rust)），使用[快照文件](/zh/execution-events/getting-started/snapshot)运行了它，并安装了自己的本地 [Monad 节点](/zh/execution-events/getting-started/setup-node)。

现在我们将再次运行示例程序，但这次它将打印我们本地 Monad 节点发布的实时事件。

## 使用实时数据运行

### 步骤 1：准备 Monad 节点

运行前，请确保执行层守护进程正在运行并且[已启用执行事件](/zh/node-ops/events-and-websockets)。特别是，请确保您已向执行层守护进程传递了命令行参数 `--exec-event-ring`

### 步骤 2：运行示例程序

在快照示例中，我们将快照文件名作为命令行参数传递给程序。在 C 和 Rust 示例程序中，如果我们不传递任何文件名，它将使用执行层守护进程使用的默认文件名，将我们连接到实时事件流。

* 对于 C，运行不带参数的 `eventwatch`
* 对于 Rust，运行命令 `cargo run -- -d`

您将看到类似快照场景的数据，但这次是执行发布的实时数据。如果您停止执行层守护进程，示例程序将检测到数据源已消失并退出。

## 后续步骤

至此，开始使用指南完成！如果您有兴趣使用 SDK 开发自己的实时数据处理软件，从这里应去何处？

以下是推荐的资源列表，大致按对开发实际应用最有帮助的顺序：

1. 如果您还没读过，请阅读[概述](/zh/execution-events/overview)和您刚才运行的示例程序的源代码
2. 一旦理解了示例中的基本思路，[SDK 文档的其余部分](/zh/execution-events#execution-events-documentation)应该很容易理解
3. 使用 SDK 之前，请确保您理解[共识事件](/zh/execution-events/consensus-events)及其含义
4. 尝试一个更复杂的程序并查看其源代码
   * 对于 Rust，尝试上游 [`monad`](https://github.com/category-labs/monad/tree/release/exec-events-sdk-v1.1/rust/crates/monad-exec-events/examples/explorer.rs) 仓库中的 "Block Explorer" TUI 示例。您可以使用 `cargo run -p monad-exec-events --example explorer` 运行它，然后浏览 `explorer.rs` 中的源代码
   * 对于 C，查看上游 [`monad`](https://github.com/category-labs/monad/tree/release/exec-events-sdk-v1.1/category/event/tools/event-cli) 仓库中 `monad-event-cli` 程序的代码；此程序是执行事件系统的 "tcpdump"，展示了 API 的多种不同用法。您可能还想阅读下一节关于编译此程序的内容

## 可选：构建 `monad-event-cli` 工具

`monad-event-cli` 是处理事件系统的实用工具。与 Rust 的 `eventwatch` 示例一样，它可以将执行事件负载解码为人类可读形式。它还执行开发者工作流中有用的其他任务，例如记录事件捕获以及为测试用例创建快照 event ring 文件。

<Warning>
  `monad-event-cli` 需要 gcc 15.2 或更高版本，无法用 gcc 15.1 构建。目前，在其软件包仓库中提供 gcc 15.2 的唯一 Ubuntu 版本是 Ubuntu 25.10，本指南编写时它刚刚发布。

  如果您的 Linux 发行版没有提供 gcc 15.2 而您也不想手动安装，则可以改用 clang-19（或更新版本），*但要使用 libc++ 而不是 libstdc++*。Linux 上 clang 默认使用 gcc C++ 标准库 (libstdc++)。

  如果您指定 `-stdlib=libc++`，它将改用 LLVM 标准库，该库具有所需的 `<format>` 支持。您可能需要安装它，因为在某些发行版中它不是 clang 包的一部分。在 Ubuntu 上，安装 `libc++-19-dev` 时会添加 clang-19 libc++ 运行时和开发包。

  使用 libc++-19 时，还必须指定 `-fexperimental-library` 编译器标志以在 `<chrono>` 中启用 C++20 时区支持；事件 CLI 工具使用它以本地时间打印事件时间戳。在某些未来版本的 libc++ 中这将不再需要。
</Warning>

要构建 `monad-event-cli`，您还需要 [CLI11](https://github.com/CLIUtils/CLI11) C++ 命令行解析器库和 OpenSSL 开发文件。虽然是可选的，您还应该安装 [GNU 多精度库](https://gmplib.org/) 的开发文件，以便 `uint256` 值以十进制形式打印。

说明还使用了 [ninja](https://ninja-build.org/) 构建工具。您可以在 Ubuntu 上使用以下命令一次性安装所有内容：

```text theme={null}
$ sudo apt install libcli11-dev libssl-dev libgmp-dev ninja-build
```

现在克隆[执行仓库](https://github.com/category-labs/monad.git)并检出 `release/exec-events-sdk-v1.1` 分支，然后构建以 `category/event` 为根的 CMake 项目。

使用 clang-19 配合 libc++ 和上述选项：

```shell theme={null}
$ git clone -b release/exec-events-sdk-v1.1 https://github.com/category-labs/monad.git \
  ~/src/monad-event-cli
$ CC=clang-19 CFLAGS="-march=x86-64-v4" \
  CXX=clang++-19 CXXFLAGS="-stdlib=libc++ -fexperimental-library -march=x86-64-v4" cmake \
  -S ~/src/monad-event-cli/category/event -B ~/build/monad-event-cli-v1.1-release -G Ninja \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMONAD_EVENT_BUILD_CLI=ON
$ cmake --build ~/build/monad-event-cli-v1.1-release
```

您现在应该能够运行：

```shell theme={null}
$ ~/build/monad-event-cli-v1.1-release/monad-event-cli --help
```

<Note>
  `-march=x86-64-v4` 是启用 CPU 指令级某些原子操作所需的，以避免需要链接 libatomic.a；如果没有它，会发出性能警告，由于 `-Werror` 而变成编译错误
</Note>

为简化使用所有这些设置运行 cmake，您可能希望创建 CMake 工具链文件而不是使用环境变量。为此，创建一个内容如下的名为 `clang19-libcxx.cmake` 的文件：

```CMake theme={null}
set(CMAKE_C_COMPILER clang-19)
set(CMAKE_CXX_COMPILER clang++-19)
set(CMAKE_ASM_FLAGS_INIT -march=x86-64-v4)
set(CMAKE_C_FLAGS_INIT -march=x86-64-v4)
set(CMAKE_CXX_FLAGS_INIT "-march=x86-64-v4 -stdlib=libc++ -fexperimental-library")
```

现在您可以运行这个稍简洁的命令：

```shell theme={null}
$ cmake --toolchain <path-to-toolchain-file> -S ~/src/monad-event-cli/category/event \
  -B ~/build/monad-event-cli-v1.1-release -G Ninja \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMONAD_EVENT_BUILD_CLI=ON
```
