4 个版本 (2 个重大变更)
0.4.0 | 2024 年 7 月 30 日 |
---|---|
0.2.5 | 2024 年 6 月 26 日 |
0.2.0 | 2024 年 3 月 19 日 |
0.1.0 | 2024 年 3 月 18 日 |
#1 in #data-processor
每月 138 次下载
74KB
965 行
赫罗多特斯数据处理器 (HDP)
警告:此代码库为实验性质且未经审计。请自行承担风险。
HDP 通过 zkVMs 增强链下计算能力,以实现可验证的链上数据集成。更多信息,请访问我们的 文档。
简介
数据处理器 CLI 是为与 Cairo 程序和 zkVM 环境一起工作的开发者提供的一项基本工具。其主要功能是将可读请求转换为与 Cairo 程序兼容的格式,使命令可以在 Cairo VM 上执行并生成可执行输出。这种转换是预处理的关键步骤,为 zkVM 环境中的链下计算准备数据。
特性
- 开发工具:编码和解码数据湖和计算任务。
- 核心处理:从各种来源编译数据并计算聚合函数。
- 可扩展性:计划支持多种区块链集成和各种 ZKVM 后端。
- 易用性:提供 CLI 以轻松与系统交互。
安装 HDP
使用 cargo 安装
# Install with cargo
❯ cargo install --git https://github.com/HerodotusDev/hdp --tag v0.2.6 --locked --force
从源码构建
# clone repo
❯ git clone https://github.com/HerodotusDev/hdp.git
# install hdp
❯ cargo install --path cli -f
入门指南
要启动交互式 CLI
# Start the HDP
❯ hdp start
Welcome to Herodotus Data Processor interactive CLI! 🛰️
_ _ ____ ____
| | | | | _ \ | _ \
| |_| | | | | | | |_) |
| _ | | |_| | | __/
|_| |_| |____/ |_|
? Step 1. What's your datalake type?
用法示例
首先找到像以下示例中的 .env
文件。
其次,运行以下命令
注意,这将经过预处理的 -> 处理步骤。
hdp run -r ${Request file path} -p ${Pre-processor output} -c ${PIE file after process} -o ${Output file after process}
有关 hdp run
上可用的命令的更全面指南
❯ hdp run --help
Run batch of tasks base on request json file
Usage: hdp run [OPTIONS] --request-file <REQUEST_FILE> --preprocessor-output-file <PREPROCESSOR_OUTPUT_FILE>
Options:
-r, --request-file <REQUEST_FILE>
Pass request as json file
--rpc-url <RPC_URL>
The RPC URL to fetch the data.
Can be overwritten by `RPC_URL` environment variable.
--dry-run-cairo-file <DRY_RUN_CAIRO_FILE>
dry run contract bootloader program. only used for module task
-p, --preprocessor-output-file <PREPROCESSOR_OUTPUT_FILE>
Path to save output file after pre-processing
--sound-run-cairo-file <SOUND_RUN_CAIRO_FILE>
hdp cairo compiled program. main entry point
-o, --output-file <OUTPUT_FILE>
Path to save output file after process
This will trigger processing(=pie generation) step
-c, --cairo-pie-file <CAIRO_PIE_FILE>
Path to save pie file
This will trigger processing(=pie generation) step
-h, --help
Print help (see a summary with '-h')
集成测试
HDP 中的集成测试确保了如 SUM
、AVG
、MIN
、MAX
和 COUNT
等聚合函数在区块链数据结构中的各种数值字段上正确运行。这些函数专门针对数值数据类型设计,确保准确可靠的计算。
集成测试
HDP的核心稳健性依赖于生成正确的输入文件和运行Cairo程序。为确保这一点,需要完整的集成测试流程来连接预处理程序和处理器版本。对于持续集成测试,请参阅hdp-test存储库,其中包含以下表格中所有支持的特性的所有用例。
支持的聚合函数
- SUM, AVG, MIN, MAX, COUNT:这些函数仅支持具有数值字段的字段。
- SLR:用Cairo 1编写的简单线性回归。输入数组应包含超过2个元素。
所需操作环境
有关如何实现上下文相关操作的实用示例,请参阅COUNT
函数的实现。该示例显示了如何传递和使用额外的上下文进行操作,这对于条件处理或复杂计算非常有用。
在SLR
计算期间,我们还需要一个上下文作为计算的目标索引。由于在预处理步骤中不支持SLR
,我们只需传递包含函数上下文的编码任务,Cairo程序将根据提供的索引处理此计算。
函数支持矩阵
以下是支持矩阵,表明每个聚合函数测试了哪些区块链元素。该矩阵突出了这些函数适用的字段。
字段描述 | SUM | AVG | MIN | MAX | COUNT | SLR |
---|---|---|---|---|---|---|
account.nonce |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
account.balance |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
account.storage_root |
- | - | - | - | - | - |
account.code_hash |
- | - | - | - | - | - |
storage.key (数值) |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
storage.key (哈希值) |
- | - | - | - | - | - |
header.difficulty |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
header.gas_limit |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
header.gas_used |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
header.timestamp |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
header.base_fee_per_gas |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
header.blob_gas_used |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
header.excess_blob_gas |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
header.nonce |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
其他header 元素 |
- | - | - | - | - | - |
tx.nonce |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tx.gas_price |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tx.gas_limit |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tx.value |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tx.v |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tx.r |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tx.s |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tx.chain_id |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tx.max_fee_per_gas |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tx.max_priority_fee_per_gas |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tx.max_fee_per_blob_gas |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
其他tx 元素 |
- | - | - | - | - | - |
tx_receipt.success |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tx_receipt.cumulative_gas_used |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
其他tx_receipt 元素 |
- | - | - | - | - | - |
注意:标记为“-”的字段不适用于指定的聚合函数,因为这些字段不包含数值数据或数据类型不适合这些计算。
附加说明
- 请确保应用这些函数的数据字段包含数值,以避免计算错误。
- 有关如何执行这些测试或如何为测试的进一步开发做出贡献的详细信息,请参阅集成测试指南。
开发
# CI check
cargo make run-ci-flow
本地运行
要在本地稳定环境中运行HDP,您需要安装cairo-run
,并在正确的路径中包含必要的工具,并找到编译的Cairo程序。如果您觉得这些步骤很复杂,只需使用Docker镜像。
为了在容器环境中挂载,您需要在运行之前在宿主机的根目录中创建空的input.json
、output.json
和cairo.pie
文件。
并在根目录中找到包含预期请求格式的requeset.json
文件。
docker-compose build
docker-compose up
如果您正在寻找已构建的Docker镜像,可以从这里拉取。
许可证
hdp
采用 GNU 通用公共许可证 v3.0 授权。
Herodotus Dev Ltd - 2024
依赖项
~48–66MB
~1M SLoC