5 个版本 (稳定版)
1.5.1 | 2024 年 7 月 3 日 |
---|---|
1.5.0 | 2024 年 6 月 7 日 |
1.4.0 | 2024 年 4 月 12 日 |
1.3.1 | 2023 年 12 月 27 日 |
0.0.0 | 2022 年 11 月 23 日 |
#3 在 #矿工
349 每月下载量
4.5MB
2.5K SLoC
波卡抵押矿工
这是使用 抵押矿工 和 subxt 重新编写的,以避免对每个运行时版本的硬依赖。
二进制本身嵌入 静态元数据,在编译时生成 Rust 代码生成,由 subxt 提供。
通过升级存储常量,由 polkadot-staking-miner 处理运行时升级,除非在 pallet-election-provider-multi-phase
或 frame_system
中有破坏性更改。
由于在使用 polkadot-staking-miner
连接到 RPC 节点时检测破坏性更改很困难,因此该存储库每天都会针对 polkadot master
执行集成测试,并且在大多数情况下,更新元数据 和修复编译错误就足够了。
还可以使用 info
命令来检查二进制中嵌入的元数据是否与远程节点兼容,请参阅 info 命令以获取更多信息
每个版本将指定其测试过的运行时版本,但无法提前知道它将与哪些运行时一起工作。
因此,订阅此存储库的版本或添加一些逻辑,以便在 polkadot-staking-miner 崩溃时触发警报非常重要。
使用方法
您可以使用以下命令查看帮助:
$ polkadot-staking-miner --help
监控
要“挖掘解决方案”并赚取奖励,请使用以下命令。在使用真实资金之前,请先在开发链上尝试此命令,因为可能会损失资金。
$ cargo run --release -- --uri ws://127.0.0.1:9944 monitor --seed-or-path //Alice --dry-run seq-phragmen
这是一个起点,将尝试计算新的解决方案集,这些解决方案集也会在提交之前验证该交易。
有关不同选项的更多信息,请运行
$ cargo run --release -- monitor --help
Dry run(干燥运行)
可以在本地挖掘解决方案而不提交任何内容到链上,但这仅在具有快照的块(当事件Phase::Signed → Phase::Off发出时)上有效。
$ cargo run --release -- --uri ws://127.0.0.1:9944 dry-run --at 0xba86a0ba663df496743eeb077d004ef86bd767716e0d8cb935ab90d3ae174e85 seq-phragmen
紧急解决方案
挖掘一个可以作为紧急解决方案提交的解决方案。
$ cargo run --release -- --uri ws://127.0.0.1:9944 emergency-solution --at 0xba86a0ba663df496743eeb077d004ef86bd767716e0d8cb935ab90d3ae174e85 seq-phragmen
Info命令
检查polkadot-staking-miner的元数据是否与远程节点兼容。
$ cargo run --release -- --uri wss://rpc.polkadot.io info
Remote_node:
{
"spec_name": "polkadot",
"impl_name": "parity-polkadot",
"spec_version": 9431,
"impl_version": 0,
"authoring_version": 0,
"transaction_version": 24,
"state_version": 0
}
Compatible: YES
准备你的SEED
虽然你可以直接将种子传递给命令行或Docker,但这强烈不推荐。相反,你应该使用ENV变量。
你可以使用以下方式手动设置
# The following line starts with an extra space on purpose, make sure to include it:
SEED=0x1234...
或者,为了开发,你可以将你的种子存储在.env
文件中,该文件可以被加载以使种子可用
.env
:
SEED=0x1234...
RUST_LOG=polkadot-staking-miner=debug
你可以使用source .env
来加载它。
Docker
应尽可能保持Docker容器安全,特别是那些包含你的SEED
的容器。尽管如此,如果恶意行为者获得了对容器的访问权限,他们仍然可能读取你的SEED
,但仍然建议以只读
模式运行此容器
docker run --rm -it \
--name polkadot-staking-miner \
--read-only \
-e RUST_LOG=info \
-e SEED \
-e URI=wss://your-node:9944 \
polkadot-staking-miner dry-run
更新元数据
静态元数据文件存储在artifacts/metadata.scale
要更新元数据,您需要连接到polkadot、kusama或westend节点。
# Install subxt-cli
$ cargo install --locked subxt-cli
# Download the metadata from a local node and replace the current metadata
# See `https://github.com/paritytech/subxt/tree/master/cli` for further documentation of the `subxt-cli` tool.
$ subxt metadata --pallets "ElectionProviderMultiPhase,System" -f bytes > artifacts/metadata.scale
# Inspect the generated code
$ subxt codegen --file artifacts/metadata.scale | rustfmt > code.rs
本地测试
由于选举发生相当少,如果您想本地测试,可以通过构建带有feature --fast-runtime
的polkadot二进制文件来确保选举发生得更频繁(以分钟为单位,而不是小时/天)。
$ cargo run --release --package polkadot --features fast-runtime -- --chain westend-dev --tmp --alice --execution Native -lruntime=debug --offchain-worker=Never --ws-port 9999
# open another terminal and run
$ cargo run --release -- --uri ws://127.0.0.1:9999 monitor --seed-or-path //Alice seq-phragmen
Prometheus指标
staking-miner在9999端口启动一个prometheus服务器,并且可以通过以下方式获取指标
$ curl localhost:9999/metrics
# HELP staking_miner_balance The balance of the staking miner account
# TYPE staking_miner_balance gauge
staking_miner_balance 88756574897390270
# HELP staking_miner_mining_duration_ms The mined solution time in milliseconds.
# TYPE staking_miner_mining_duration_ms gauge
staking_miner_mining_duration_ms 50
# HELP staking_miner_score_minimal_stake The minimal winner, in terms of total backing stake
# TYPE staking_miner_score_minimal_stake gauge
staking_miner_score_minimal_stake 24426059484170936
# HELP staking_miner_score_sum_stake The sum of the total backing of all winners
# TYPE staking_miner_score_sum_stake gauge
staking_miner_score_sum_stake 2891461667266507300
# HELP staking_miner_score_sum_stake_squared The sum squared of the total backing of all winners, aka. the variance.
# TYPE staking_miner_score_sum_stake_squared gauge
staking_miner_score_sum_stake_squared 83801161022319280000000000000000000
# HELP staking_miner_solution_length_bytes Number of bytes in the solution submitted
# TYPE staking_miner_solution_length_bytes gauge
staking_miner_solution_length_bytes 2947
# HELP staking_miner_solution_weight Weight of the solution submitted
# TYPE staking_miner_solution_weight gauge
staking_miner_solution_weight 8285574626
# HELP staking_miner_submissions_started Number of submissions started
# TYPE staking_miner_submissions_started counter
staking_miner_submissions_started 2
# HELP staking_miner_submissions_success Number of submissions finished successfully
# TYPE staking_miner_submissions_success counter
staking_miner_submissions_success 2
# HELP staking_miner_submit_and_watch_duration_ms The time in milliseconds it took to submit the solution to chain and to be included in block
# TYPE staking_miner_submit_and_watch_duration_ms gauge
staking_miner_submit_and_watch_duration_ms 17283
相关项目
- substrate-etl - 从基于substrate的链中提取状态的工具。
依赖关系
~35–50MB
~853K SLoC