1 个不稳定版本
0.4.1 | 2021 年 4 月 17 日 |
---|
#8 in #electrum
640KB
9K SLoC
Esplora - Electrs 后端 API
这是从 Blockstream/electrs 分支出来的。因此,功能和规范几乎与原始版本相同。您可以在tapyrus 文档中找到关于扩展规范的文档。
API 文档在这里提供。
数据库模式和索引过程的文档在这里提供。
安装和索引
安装 Rust、Tapyrus Core(不需要 txindex
)以及 clang
和 cmake
软件包,然后
$ git clone https://github.com/chaintope/esplora-tapyrus && cd esplora-tapyrus
$ cargo run --release --bin electrs -- -vvvv --daemon-dir ~/.tapyrus/prod-1 --network-id 1
有关更详细的说明,请参阅electrs 的原始文档。请注意,我们的索引与 electrs 的不兼容,必须单独创建。
索引在压缩后需要 610GB 的存储空间(截至 2020 年 6 月),但在索引压缩过程中,您需要大约两倍的可用空间。在配备 SSD 的强大机器上创建索引可能需要几个小时。
要使用 Docker 部署,请遵循这里的说明。
轻模式
对于个人或低流量使用,您可以将 --lightmode
设置为减少约 50% 的磁盘存储需求,但会牺牲较慢和更昂贵的查找。
在此选项设置的情况下,原始交易以及与区块相关的元数据不会保留在 rocksdb(T、X 和 M 索引)中,而是根据需求从 tapyrusd 中查询。
与 Electrs 的显著变化
-
除了 Electrum JSON-RPC 协议外,还有 HTTP REST API,并提供了扩展的交易信息(以前的输出、支出交易、脚本汇编等)。
-
扩展索引和数据库存储,以在负载高时提高性能
- 在数据库中保留了映射 txid 到原始交易的完整交易存储,前缀为
t
。 - 所有可花费交易输出的索引保存在前缀
O
下。 - 所有地址(编码为字符串)的索引保存在前缀
a
下,以实现按前缀地址搜索。 - 区块哈希到txid的映射保存在数据库中,前缀为
X
。 - 区块统计数据元数据(交易数量、大小和权重)保存在数据库中,前缀为
M
。
有了这些新的索引,tapyrusd不再被查询来处理用户请求,只定期轮询新块和同步内存池。
- 在数据库中保留了映射 txid 到原始交易的完整交易存储,前缀为
CLI选项
除了electrs的原有配置选项外,还有一些新的选项可供使用
--http-addr <addr:port>
- 监听HTTP服务器地址/端口的地址/端口(默认:127.0.0.1:3000
)。--lightmode
- 启用轻模式(见上文)--cors <origins>
- 允许发起跨站请求的来源(可选,默认为无)。--address-search
- 启用按前缀地址搜索索引。--index-unspendables
- 启用对可证明不可花费输出的索引。--utxos-limit <num>
- 每个地址返回的最大utxos数量。--electrum-txs-limit <num>
- 在electrum服务器中每个地址返回的最大交易数量(不适用于http api)。--electrum-banner <text>
- electrum服务器的欢迎横幅文本。
带有liquid
功能的附加选项
--parent-network <network>
- 此链绑定到的父网络。
带有electrum-discovery
功能的附加选项
--electrum-hosts <json>
- Electrum服务器可访问的公共主机json映射,格式为server.features
。--electrum-announce
- 在electrum p2p服务器发现网络上宣布electrum服务器。
有关完整选项列表,请参阅 $ cargo run --release --bin electrs -- --help
许可证
MIT
依赖关系
~70MB
~1M SLoC