Pool-0: welcome carries software_dev_fee_percent beside the pool fee, the page's Fees row and site/miner.html say pool-0 charges the same 1 percent as the solo dev fee; jobs and seeds carry the latency ladder's rung for 0.3.19.
TLS (pool/src/tls.rs): --tls-cert/--tls-key or --tls-self-signed (a P-256 pair under the data dir, the certificate pin printed at start); the binding is the member's BLS signature over this connection's exporter (label EXPORTER-igneum-pool-binding, context the chain id), refused on any other connection; testnet and mainnet refuse the clear without --allow-plain. HiveOS: pools:// and POOL_PIN.
Page rows: node state in words (Q68), one formatter set and luck in MiningPoolStats' convention (Q69), samples and check costs persisted (Q70), payments under the lookup (Q71), hourly history with a sparkline, --alert-webhook, /metrics, /health on the node (Q72), the network's finality state beside "payouts follow blue confirmation, not finality" (Q73).
The open pool (pool/src/sidechain.rs, open.rs, p2p.rs; igneum-pool --open): the member's own node and daemon, no payout key, no balance; every coinbase carries the member's own address, the share chain's parent (IGNS) and the window's split (IGNP); templates re-stamped on a new chain tip without a node call; shares gossiped and checked by every member (structure, the node's seeds, the PoW); heaviest work wins, a fork's loser is stale; the dev fee as one split entry; shares.log and verify-share for the drop proof; the gate harness pool/tools/open-gate.mjs. The node side (the executor's split from pool_split_activation_daa) is on the fork branch pool-finish-node.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 57954a43eb)
61 lines
2.6 KiB
TOML
61 lines
2.6 KiB
TOML
[package]
|
|
name = "igneum-pool"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
description = "Igneum mining pool v0: spec 09 pool protocol over newline JSON, vardiff, CPU warp-verified shares, PPLNS payouts on the EVM side, the stats API WhatToMine and MiningPoolStats read"
|
|
license = "MIT"
|
|
publish = false
|
|
|
|
# A standalone workspace. The node fork is read by path from ../vendor/igneum-node (the fork checkout, or a symlink
|
|
# to the fork worktree that carries the pool-mode miner); igneum-pow is the repository's own crate.
|
|
[workspace]
|
|
|
|
[[bin]]
|
|
name = "igneum-pool"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
kaspa-grpc-client = { path = "../vendor/igneum-node/rpc/grpc/client" }
|
|
kaspa-rpc-core = { path = "../vendor/igneum-node/rpc/core" }
|
|
kaspa-consensus-core = { path = "../vendor/igneum-node/consensus/core" }
|
|
kaspa-hashes = { path = "../vendor/igneum-node/crypto/hashes" }
|
|
kaspa-addresses = { path = "../vendor/igneum-node/crypto/addresses" }
|
|
kaspa-notify = { path = "../vendor/igneum-node/notify" }
|
|
kaspa-pow = { path = "../vendor/igneum-node/consensus/pow", features = ["igneum-pow"] }
|
|
igneum-pow = { path = "../igneum-pow" }
|
|
tokio = { version = "1.42", features = ["rt-multi-thread", "macros", "time", "net", "io-util", "sync", "signal", "fs"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
hex = "0.4"
|
|
rand = "0.8"
|
|
async-channel = "2"
|
|
k256 = { version = "0.13", features = ["ecdsa"] }
|
|
sha3 = "0.10"
|
|
alloy-consensus = { version = "2.5", default-features = false, features = ["k256", "std"] }
|
|
alloy-primitives = { version = "1.7", default-features = false, features = ["std", "k256", "rlp"] }
|
|
alloy-eips = { version = "2.5", default-features = false, features = ["std"] }
|
|
alloy-signer = { version = "2.5", default-features = false }
|
|
alloy-signer-local = { version = "2.5", default-features = false }
|
|
# TLS 1.3 on the member port (spec 9.3): rustls with ring, the tokio adapter, PEM reading, a self-signed pair on first start
|
|
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12", "logging"] }
|
|
tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12"] }
|
|
rustls-pki-types = { version = "1", features = ["std"] }
|
|
rcgen = { version = "0.13", default-features = false, features = ["ring", "pem"] }
|
|
|
|
[profile.release]
|
|
lto = "thin"
|
|
overflow-checks = true
|
|
|
|
# The share verifier fills a 256 MiB cache; unoptimised tests would take minutes
|
|
[profile.dev.package.igneum-pow]
|
|
opt-level = 3
|
|
[profile.dev.package.kaspa-pow]
|
|
opt-level = 2
|
|
[profile.dev.package.kaspa-consensus-core]
|
|
opt-level = 2
|
|
[profile.dev.package.kaspa-hashes]
|
|
opt-level = 2
|
|
[profile.dev.package.kaspa-math]
|
|
opt-level = 2
|
|
[profile.dev.package.blake2b_simd]
|
|
opt-level = 2
|