-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathstart
More file actions
executable file
·98 lines (84 loc) · 2.98 KB
/
start
File metadata and controls
executable file
·98 lines (84 loc) · 2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/usr/bin/env zsh
# Mempool.Space CKSolo Pool Start Script - PortlandHODL
#
# Options for base CKSolo config [No Failover / Proxy]
# $1 - NETWORK
# $2 - Port (optional, defaults to 3333)
# Initialize variables
DAEMON=$1
NETWORK=${DAEMON} # Context Alias
COINBASE_PAYOUT_ADDRESS="" # Empty payout address because it will be overwritten by network based config,
PORT=${2:-3333} # Use port provided as 3rd argument, or default to 3333 if not specified
RPC_PORT=8332 # Default to mainnet RPC port, will be updated based on network
# Check that the NETWORK provided is correct
# 'bitcoin' is mainnet and needs an mainnet address
if [ "$NETWORK" = "bitcoin" ] || [ "$NETWORK" = "testnet3" ] || [ "$NETWORK" = "testnet4" ]; then
echo "Setting up Mempool.space CKPool with NETWORK $NETWORK"
if [ "$NETWORK" = "bitcoin" ]; then
RPC_PORT=8332 # Mainnet RPC port
COINBASE_PAYOUT_ADDRESS="1wizSAYSbuyXbt9d8JV8ytm5acqq2TorC"
elif [ "$NETWORK" = "testnet3" ]; then
RPC_PORT=18332 # Testnet3 RPC port
COINBASE_PAYOUT_ADDRESS="tb1qjfplwf7a2dpjj04cx96rysqeastvycc0j50cch"
elif [ "$NETWORK" = "testnet4" ]; then
RPC_PORT=48332 # Testnet4 RPC port
COINBASE_PAYOUT_ADDRESS="tb1q548z58kqvwyjqwy8vc2ntmg33d7s2wyfv7ukq4"
else
echo "Network setting unsupported for magic coinbase payout address replacement"
fi
else
echo "Invalid network selected: $NETWORK, please use bitcoin, testnet3, testnet4"
exit 1
fi
echo "Starting Mempool.space CKSolo using ${NETWORK} network with payout address ${COINBASE_PAYOUT_ADDRESS}"
echo "Using Bitcoin RPC port: ${RPC_PORT} and CKPool port: ${PORT}"
# Fetch Bitcoin node credentials from the Bitcoin.conf file
DAEMON_CONF="/bitcoin/${DAEMON}.conf"
echo "[*] Getting RPC credentials from ${DAEMON_CONF}"
RPC_USER=$(grep 'rpcuser=' "${DAEMON_CONF}"|cut -d = -f2|head -1)
RPC_PASS=$(grep 'rpcpassword=' "${DAEMON_CONF}"|cut -d = -f2|head -1)
# Create ckpool config file
CONFIG_DIR="${HOME}/.ckpool/${NETWORK}"
CONFIG_FILE="${CONFIG_DIR}/ckpool.conf"
mkdir -p "${CONFIG_DIR}"
cat > "${CONFIG_FILE}" << EOF
{
"btcd" : [
{
"url" : "127.0.0.1:${RPC_PORT}",
"auth" : "${RPC_USER}",
"pass" : "${RPC_PASS}",
"notify" : true
}
],
"btcaddress" : "${COINBASE_PAYOUT_ADDRESS}",
"btcsig" : "/@wiz/",
"blockpoll" : 100,
"nonce1length" : 4,
"nonce2length" : 8,
"update_interval" : 30,
"version_mask" : "1fffe000",
"serverurl" : [
"127.0.0.1:${PORT}"
],
"mindiff" : 1,
"startdiff" : 42,
"maxdiff" : 0,
"logdir" : "logs"
}
EOF
echo "[*] Created config file at ${CONFIG_FILE}"
# run in loop in case of crash
until false
do
# reset CWD
cd "${CONFIG_DIR}"
# disable making core files
ulimit -c 0
echo "[*] Starting ckpool..."
# Run ckpool with the config
ckpool "${CONFIG_FILE}"
# Wait a bit before restarting
echo "[*] ckpool exited, restarting in 1 second..."
sleep 1
done