Simply Kaspa Indexer开源项目已发布
用Rust实现的高性能Kaspa PostgreSQL索引器。
https://github.com/supertypo/simply-kaspa-indexer
第一个开源版本也标志着性能改进和新功能的引入,因此请务必阅读README(和--help)以获得概述。
闭源kaspa-db-filler-ng的用户只需拉取最新版本,因为改进的索引器与之向后兼容,新版本将被推送到两个docker存储库。
根据资金池中的条款,所选的许可证是ISC,这意味着它可以根据任何特定需求自由修改并重新分配(在某些条款下)。
简单的 Kaspa 索引器
用 Rust 实现的高性能 Kaspa PostgreSQL 索引器。
大约
索引器是通过派生 kaspa-db-filler 的功能规范从头开始实现的。
作为此过程的一部分,数据库架构经过重新设计,以更好地支持并发性。
这意味着必须迁移由 lAmeR1/kaspa-db-filler 填充的数据库才能兼容。
已开发架构迁移脚本,可在此处获取。
此处提供了 kaspa-rest-server 的兼容版本。
重要说明
可选表
为了最大限度地提高性能以满足您的特定需求,您应该注意通过命令行标志禁用您不需要的任何可选表。
目前支持 --skip_resolving_addresses 和 --skip_block_relations,将来将添加更多。
可选字段
除了可选表之外,如果您的使用案例不需要许多字段,则可以将许多字段留空。
使用 include_fields 或 exclude_fields 参数进行微调。有关可选字段的列表,请参阅 --help。
请注意,必填字段可能随时更改,因此在升级索引器时要特别小心!
Postgres 调优
确保将 Postgres 调整到您的特定硬件,以下是具有 12GB RAM 和 SSD 存储的服务器的示例:
shared_buffers = 2GB work_mem = 128MB effective_io_concurrency = 32 checkpoint_timeout = 5min max_wal_size = 4GB min_wal_size = 80MB effective_cache_size = 8GB
此外,我强烈建议在使用 compression=lz4 的 ZFS 上运行 Postgres,以节省空间并提高性能。确保同时设置 recordsize=8k。
Tn11 (10bps) 票据
只要 Postgres 在足够高端的 NVMe 上运行,索引器就能够在满负载 (2000+tps) 下跟上 10bps 测试网 (TN11)。
如果在较小的硬件上运行,您可以考虑禁用可选表和字段以降低要求。
史料
索引器将从启动时的时间点开始收集数据。
如果您有存档节点,则可以使用 --ignore_checkpoint 参数指定 start-block 并指定较旧的 start 块。
如果您需要 pg_dump 历史记录文件,请在 Kaspa Discord 上与我们联系。
许可证
国际学校。请参阅 LICENSE。
捐款
kaspa:qrjtsnnpjyvlmkffdqyayrny3qyen9yjkpuw7xvhsz36n69wmrfdyf3nwv67t
开始
使用预编译的 Docker 镜像运行
请参阅 Docker Hub 页面。
从源构建和运行
这些说明适用于 Ubuntu 24.04,其他发行版(或版本)可能需要进行调整。
1. 安装依赖项
sudo apt update && sudo apt install -y git curl build-essential pkg-config libssl-dev
2. 安装 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
3. 更新路径
source ~/.bashrc
4. 克隆此存储库
git clone <repository-url>
5. 构建工作区
cargo build
6. 运行索引器
cargo run -- -s ws://<kaspad_host>:17110 -d postgres://postgres:postgres@<postgres_host>:5432
帮助
Usage: simply-kaspa-indexer [OPTIONS] Options: -s, --rpc-url <RPC_URL> The url to a kaspad instance, e.g 'ws://localhost:17110'. Leave empty to use the Kaspa PNN -n, --network <NETWORK> The network type and suffix, e.g. 'testnet-11' [default: mainnet] -d, --database-url <DATABASE_URL> PostgreSQL url [default: postgres://postgres:postgres@localhost:5432/postgres] -l, --log-level <LOG_LEVEL> error, warn, info, debug, trace, off [default: info] --log-no-color Disable colored output -b, --batch-scale <BATCH_SCALE> Batch size factor [0.1-10]. Adjusts internal queues and database batch sizes [default: 1.0] -t, --cache-ttl <CACHE_TTL> Cache ttl (secs). Adjusts tx/block caches for in-memory de-duplication [default: 60] -i, --ignore-checkpoint <IGNORE_CHECKPOINT> Ignore checkpoint and start from a specified block, 'p' for pruning point or 'v' for virtual --vcp-before-synced Start VCP as soon as the filler has passed the previous run. Use with care --skip-resolving-addresses Reduces database load by not tracking an address's transactions in a separate table --skip-block-relations Reduces database load by not tracking block relations in a separate table -u, --upgrade-db Auto-upgrades older db schemas. Use with care -c, --initialize-db (Re-)initializes the database schema. Use with care --exclude-fields <EXCLUDE_FIELDS> Exclude specific (non-required) fields. If include_fields is specified this argument is ignored. [possible values: none, block_accepted_id_merkle_root, block_merge_set_blues_hashes, block_merge_set_reds_hashes, block_selected_parent_hash, block_bits, block_blue_work, block_daa_score, block_hash_merkle_root, block_nonce, block_pruning_point, block_timestamp, block_utxo_commitment, block_version, tx_hash, tx_mass, tx_payload, tx_block_time, tx_in_signature_script, tx_in_sig_op_count, tx_in_block_time, tx_out_script_public_key_address, tx_out_block_time] --include-fields <INCLUDE_FIELDS> Only include specific (non-required) fields. Be aware that the required fields can change, so take care when upgrading and specify every field you need. [possible values: none, block_accepted_id_merkle_root, block_merge_set_blues_hashes, block_merge_set_reds_hashes, block_selected_parent_hash, block_bits, block_blue_work, block_daa_score, block_hash_merkle_root, block_nonce, block_pruning_point, block_timestamp, block_utxo_commitment, block_version, tx_hash, tx_mass, tx_payload, tx_block_time, tx_in_signature_script, tx_in_sig_op_count, tx_in_block_time, tx_out_script_public_key_address, tx_out_block_time] -h, --help Print help
感动 | 同情 | 无聊 | 愤怒 | 搞笑 | 难过 | 高兴 | 路过 |
- 上一篇:Kaspa地址类型科普
- 下一篇:没有了!
相关文章
-
没有相关内容