Output
sf.substreams.sink.database.v1.DatabaseChanges
Inputs
Package ref
substreams-nftmarketplace@v0.1.4Run package
CLI
Run db_out from the command line.
substreams run substreams-nftmarketplace@v0.1.4 db_out -e bsc --start-block -1substreams auth or directly on thegraph.market (see docs).README
这是一个使用 Substreams 技术构建的 NFT Marketplace 数据索引项目,用于替代传统的 The Graph subgraph,以提供更快的数据同步速度。
本项目索引 BSC 网络上的 NFT Marketplace 合约(地址:0x5842Eec744Dd4a50b32399611E6Fdc421820Db26),追踪以下事件:
substreams-nftmarketplace/
├── Cargo.toml # Rust 依赖配置
├── substreams.yaml # Substreams 配置文件
├── build.rs # 构建脚本
├── schema.sql # 数据库模式
├── deploy.sh # 部署脚本
├── proto/ # Protobuf 定义
│ ├── events.proto # 事件数据结构
│ └── database.proto # 数据库变更结构
└── src/ # 源代码
├── lib.rs # 主要逻辑
├── events.rs # 事件处理
└── pb/ # 生成的 protobuf 代码
└── mod.rs
Orders 表
Trades 表
相比传统 subgraph,Substreams 提供:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add wasm32-unknown-unknown
# Install from https://github.com/streamingfast/substreams/releases
cd packages/substreams-nftmarketplace
cargo build --target wasm32-unknown-unknown --release
substreams protogen ./substreams.yaml --exclude-paths="sf/substreams,google"
substreams pack ./substreams.yaml
substreams run -e bsc.streamingfast.io:443 ./substreams-nftmarketplace-v0.1.0.spkg map_events --start-block=61229970 --stop-block=+100
substreams auth
substreams deploy ./substreams.yaml
或者直接运行部署脚本:
./deploy.sh
项目配置为 BSC 主网:
bsc61229970bsc.streamingfast.io:4430x5842Eec744Dd4a50b32399611E6Fdc421820Db26src/events.rs部署后,可以通过以下方式查询数据:
-- 查询活跃订单
SELECT * FROM orders WHERE status = 'Active';
-- 查询最近的交易
SELECT * FROM trades ORDER BY timestamp DESC LIMIT 10;
query {
orders(condition: {status: "Active"}) {
nodes {
orderId
seller
price
createdAt
}
}
}
Substreams 提供详细的执行日志,可以监控:
关键指标包括:
构建失败:
部署失败:
数据不一致:
# 查看详细日志
substreams run --debug
# 验证事件解析
substreams run map_events --start-block=61229970 --stop-block=61229975
# 检查数据库变更
substreams run db_out --start-block=61229970 --stop-block=61229975
| 功能 | Subgraph | Substreams |
|---|---|---|
| 同步速度 | 慢 | 快 (3-5x) |
| 资源使用 | 高 | 低 |
| 并行处理 | 否 | 是 |
| 实时性 | 延迟大 | 延迟小 |
| 开发复杂度 | 低 | 中等 |
MIT License
Modules
Output
sf.substreams.sink.database.v1.DatabaseChanges
Inputs
Output
nftmarketplace.v1.Events