Expose config options for cleartext stratum port
This commit is contained in:
Executable
+73
@@ -0,0 +1,73 @@
|
||||
#!/bin/bash
|
||||
# Kamado Pool — ckpool daemon wrapper for StartOS 0.4.0.
|
||||
#
|
||||
# main.ts renders /etc/ckpool/ckpool.conf.template into the subcontainer
|
||||
# rootfs with everything resolved except the coinbase-builder self-test
|
||||
# address, which depends on the active network. This script:
|
||||
#
|
||||
# 1. Blocks until bitcoind answers getblockchaininfo, so ckpool is never
|
||||
# launched into a wall. When kamado-api kills ckpool on bitcoind
|
||||
# failure (letting miners fail over to a backup pool), StartOS
|
||||
# restarts this daemon and the wait re-arms until bitcoind recovers —
|
||||
# the 0.3.x supervised-restart loop, expressed as a daemon.
|
||||
# 2. Detects the chain and substitutes a network-valid self-test address.
|
||||
# CKPool-solo uses the worker's stratum username as the payout address;
|
||||
# the conf `btcaddress` is only consulted once at startup to build and
|
||||
# validate a sample coinbase transaction against bitcoind. Since no
|
||||
# worker has connected yet at that point, we hand it the genesis block
|
||||
# coinbase address for the active network — always valid, and solo
|
||||
# mode never credits it a satoshi.
|
||||
# 3. Renders the final conf and execs ckpool.
|
||||
#
|
||||
# Env (set by main.ts): BITCOIN_RPC_URL, BITCOIN_RPC_USER,
|
||||
# BITCOIN_RPC_PASSWORD, CKPOOL_SOCKDIR.
|
||||
set -euo pipefail
|
||||
|
||||
TEMPLATE=/etc/ckpool/ckpool.conf.template
|
||||
CONF=/etc/ckpool/ckpool.conf
|
||||
SOCKDIR="${CKPOOL_SOCKDIR:-/run/ckpool}"
|
||||
|
||||
# CKPool loglevel: 6 = LOG_INFO, required for share-level logging
|
||||
# (Accepted/Rejected client lines) used by the stats feature.
|
||||
CKPOOL_LOGLEVEL="${CKPOOL_LOGLEVEL:-6}"
|
||||
|
||||
rpc() {
|
||||
curl -sf --max-time 5 \
|
||||
-u "${BITCOIN_RPC_USER}:${BITCOIN_RPC_PASSWORD}" \
|
||||
-d "{\"jsonrpc\":\"1.0\",\"method\":\"$1\",\"params\":[]}" \
|
||||
-H 'Content-Type: application/json' \
|
||||
"${BITCOIN_RPC_URL}"
|
||||
}
|
||||
|
||||
echo "kamado-ckpool: waiting for bitcoind at ${BITCOIN_RPC_URL}..."
|
||||
backoff=2
|
||||
until CHAIN_INFO=$(rpc getblockchaininfo); do
|
||||
echo "kamado-ckpool: bitcoind not reachable (retry in ${backoff}s)"
|
||||
sleep "${backoff}"
|
||||
backoff=$(( backoff < 30 ? backoff * 2 : 30 ))
|
||||
done
|
||||
|
||||
CHAIN=$(printf '%s' "${CHAIN_INFO}" | jq -r '.result.chain // "main"')
|
||||
case "${CHAIN}" in
|
||||
main)
|
||||
# Satoshi's genesis block coinbase address.
|
||||
SELFTEST_ADDRESS="1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
|
||||
;;
|
||||
test|testnet4|signet|regtest)
|
||||
# Testnet genesis coinbase address — valid P2PKH on testnet-family
|
||||
# networks (testnet3/testnet4/signet/regtest share address prefixes).
|
||||
SELFTEST_ADDRESS="mipcBbFg9gMiCh81Kj8tqqdgoZub1ZJRfn"
|
||||
;;
|
||||
*)
|
||||
echo "kamado-ckpool: unknown chain '${CHAIN}', assuming mainnet" >&2
|
||||
SELFTEST_ADDRESS="1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
|
||||
;;
|
||||
esac
|
||||
|
||||
sed "s|@SELFTEST_ADDRESS@|${SELFTEST_ADDRESS}|g" "${TEMPLATE}" > "${CONF}"
|
||||
|
||||
mkdir -p "${SOCKDIR}"
|
||||
|
||||
echo "kamado-ckpool: starting ckpool (solo, chain=${CHAIN}), loglevel ${CKPOOL_LOGLEVEL}"
|
||||
exec /usr/local/bin/ckpool --btcsolo --config "${CONF}" \
|
||||
--sockdir "${SOCKDIR}" --log-shares -l "${CKPOOL_LOGLEVEL}"
|
||||
Reference in New Issue
Block a user