#stellar #multi-threaded #ingestion #events #engine #blockchain #futurenet

bin+lib ingest

针对 Stellar Futurenet 的单线程和多线程自定义摄入 crate,用 Rust 编写

6 个版本

0.1.0 2024 年 8 月 10 日
0.0.3 2023 年 10 月 4 日
0.0.3-alpha.0.12023 年 8 月 31 日

#286 in 神奇豆

Download history 1/week @ 2024-05-20 5/week @ 2024-07-01 38/week @ 2024-07-29 102/week @ 2024-08-05 24/week @ 2024-08-12

164 次每月下载

Apache-2.0

80KB
1.5K SLoC

Crates.io

rs-ingest

为 Futurenet 编写的 Rust 摄入库

此软件包提供构建 Futurenet 上自定义摄入引擎的原语。它受到 stellars go/ingest 软件包的启发。

通常,开发者可能需要 Horizon 范围之外的摄入功能,或者需要更高的数据可用性。例如,一个协议的前端可能需要将事件摄入到自己的数据库中,具有非常具体的筛选或大量数据,或者他们可能还需要回放历史记录以查看是否错过了某些事件。

本 crate 就是基于这种需求设计的,并且可以在 futurenet 上工作!

注意:您还可以使用此 crate 用于 pubnet,请参阅 示例

注意:此 crate 仍在开发中。当前的 crate 功能有限。

注意:目前仅支持 POSIX 系统。

特性

目前,您可以同时回放历史记录和在线运行。目前在线运行不支持从给定账本开始回放历史记录。

注意:当前的实现是实验性的,并且没有涵盖摄入 crate 应该具有的所有功能,包括但不限于故障安全机制、归档器交互、自定义 toml 配置、读取器以及更优化的代码库。

离线运行

离线运行意味着可以通过追赶回放历史。回放历史将允许您处理在指定范围内的网络中发生的一切。

rs-ingest 允许您以两种模式离线运行

  • 单线程
  • 多线程

单线程模式

以单线程模式运行是使用 rs-ingest 的最直接方式。此模式将等待核心子进程完成同步,然后允许检索账本元数据。

单线程模式将存储每个账本的元数据。

多线程模式

多线程模式运行也很简单,但返回一个 Receiver<MetaResult> 对象,它在新账本元数据(已解码)发射时接收它。

当您运行多线程模式时,您将负责如何存储元数据或由此派生的对象。

在运行多线程模式时,您还需要手动调用 关闭机制

在线运行

在线运行意味着能够与 Futurenet 同步并关闭账本,从而接收账本关闭元数据。此模式更适合用于构建使用实时数据(例如事件流)的应用。

多线程模式

在线运行只能在多线程模式下进行。您将收到一个 Receiver<MetaResult> 对象,它在 stellar-core 关闭账本时接收账本关闭元数据。

在运行多线程模式时,您还需要手动调用 关闭机制

关闭机制

rs-ingest 具有关闭机制,该机制删除执行期间创建的临时存储桶并清除对象。关闭操作在重新初始化对 rs-ingest 的操作之前非常重要。在单线程模式下运行时,关闭机制在 rs-ingest 模块内部触发,而在多线程模式下,实现者必须决定何时触发关闭机制。

试试看

该包是一个工作版本,但您已经可以开始尝试它目前提供的功能。例如,查看 示例

该包可在 crates.io 上找到

ingest = "0.0.3"

stellar-core 设置

在使用该包之前,您需要 stellar-core 可执行文件。要安装目前与 futurenet 兼容的核心

git clone https://github.com/stellar/stellar-core

cd stellar-core

git checkout v20.0.0rc1

git submodule init

git submodule update

./autogen.sh

CXX=clang++-12 ./configure --enable-next-protocol-version-unsafe-for-production

make

make install [this one might need root access on some machines]

注意。根据机器的不同,您可能需要与 CXX=clang++-12 不同的 cmake 环境变量。

学习

查看 LEARN.md

依赖项

~8–16MB
~210K SLoC