Table of Contents
- Merge Mining Manual
- Stałe
- Ważne uwagi
- Wspólny verifier Peyi
- Monero
- 1. Wygeneruj parentowy adres regtest
- 2. Odpal parent daemon
- 3. Odpal proxy
- 4. Uderz w proxy z parentowym adresem Monero
- Zephyr
- Ważne
- 1. Wygeneruj parentowy adres testnet
- 2. Odpal fastfork parent daemon
- 3. Podnieś parent ponad fastforkowe HF
- 4. Odpal proxy
- 5. Uderz w proxy z testnetowym adresem Zephyra
- Salvium
- Ważne
- 1. Wygeneruj parentowe adresy testnet
- 2. Odpal parent daemon
- 3. Podnieś parent ponad HF11
- 4. Odpal proxy
- 5. Uderz w proxy z carrotowym adresem Salvium
- XMRig
- 1. Zbuduj xmrig-salvium
- 2. Minimalny testowany setup Salvium -> Peya
- 3. Uruchom xmrig-salvium przeciwko proxy
- 4. Co powinieneś zobaczyć
- 5. Szybka diagnostyka przy XMRigu
- Szybka diagnostyka
- Cleanup
Merge Mining Manual
Manual do ręcznego odpalania testów Peya + merge_mining_proxy z trzema parent chainami:
- Monero
- Zephyr
- Salvium
Instrukcja jest oparta na działających setupach użytych w bieżących testach.
Stałe
Aux wallet Peyi do proxy:
PtYaM1rSTrt33yeVBcUPtceo2yKJRFCTTczsoyADsxDhD8QFhs83F2VNxtF9VuznCWQ9bKATxfGZ5Qhxv8gM16vd5VRszexWGk7
Auth key do restricted merge mining:
/mnt/duzy/sal11v4/peya-mm-testnet-auth.key
Binarki:
Peya daemon: /mnt/duzy/sal11v4/salvium/build/bin/peyad
Peya proxy: /mnt/duzy/sal11v4/salvium/build/bin/peya-merge-mining-proxy
Monero daemon: /mnt/duzy/sal11v4/monero/monero-x86_64-linux-gnu-v0.18.4.6/monerod
Monero wallet-cli: /mnt/duzy/sal11v4/monero/monero-x86_64-linux-gnu-v0.18.4.6/monero-wallet-cli
Zephyr daemon: /mnt/duzy/sal11v4/zeph/zephyr-fastfork/build-fastfork/bin/zephyrd
Zephyr wallet-cli: /mnt/duzy/sal11v4/zeph/zephyr-cli-linux-v2.3.0/zephyr-wallet-cli
Salvium daemon: /mnt/duzy/sal11v4/sal/salviumd
Salvium wallet-cli: /mnt/duzy/sal11v4/sal/salvium-wallet-cli
Ważne uwagi
- Proxy nie ma flagi
--testnet. - Proxy bierze sieci i chain state z daemonów, do których się łączy.
- Jeśli po rebuildzie coś zachowuje się dziwnie, najpierw zrestartuj:
peyadpeya-merge-mining-proxy
- W naszych testach fałszywy błąd Salvium wynikał właśnie ze starego procesu
peyad. - Dla ręcznych testów share przez proxy warto zawsze wysyłać z nagłówkiem
X-Hash-Difficulty. - W requestach
getblocktemplatedo proxy polewallet_addressjest parentowym adresem miningowym, nie adresem Peyi. - Świeży verifier Peyi z genesis nie jest od razu gotowy do aux merge miningu.
- Jeśli startujesz nowy
peyad --testnetod zera, najpierw podnieś go przynajmniej ponad wysokość5. - W praktyce do testów wygodnie jest dobić go od razu trochę wyżej, np. do
8+.
Wspólny verifier Peyi
Najprostszy wspólny verifier:
/mnt/duzy/sal11v4/salvium/build/bin/peyad \
--testnet \
--offline \
--fixed-diff 10 \
--data-dir /tmp/peya-mm-verify \
--rpc-bind-port 47980 \
--zmq-rpc-bind-port 47981 \
--log-level 1 \
--non-interactive
Szybki check:
curl -s http://127.0.0.1:47980/get_height
curl -s -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"get_info"}' \
http://127.0.0.1:47980/json_rpc
Jeśli to świeży chain od genesis, podnieś go lokalnym miningiem:
curl -s -H 'Content-Type: application/json' \
-d '{"miner_address":"PtYaM1rSTrt33yeVBcUPtceo2yKJRFCTTczsoyADsxDhD8QFhs83F2VNxtF9VuznCWQ9bKATxfGZ5Qhxv8gM16vd5VRszexWGk7","threads_count":8,"do_background_mining":false,"ignore_battery":true}' \
http://127.0.0.1:47980/start_mining
Sprawdzaj wysokość:
curl -s http://127.0.0.1:47980/get_height
Po dojściu przynajmniej do 8 zatrzymaj mining:
curl -s -H 'Content-Type: application/json' -d '{}' http://127.0.0.1:47980/stop_mining
Monero
1. Wygeneruj parentowy adres regtest
printf 'y\n' | \
/mnt/duzy/sal11v4/monero/monero-x86_64-linux-gnu-v0.18.4.6/monero-wallet-cli \
--regtest \
--generate-new-wallet /tmp/monero-mm-wallet \
--password '' \
--mnemonic-language English \
--command address
Użyj wygenerowanego adresu Monero z pliku:
cat /tmp/monero-mm-wallet.address.txt
2. Odpal parent daemon
/mnt/duzy/sal11v4/monero/monero-x86_64-linux-gnu-v0.18.4.6/monerod \
--regtest \
--offline \
--fixed-difficulty 30 \
--data-dir /tmp/monero-mm-parent \
--rpc-bind-port 28291 \
--p2p-bind-port 28290 \
--zmq-rpc-bind-port 28292 \
--non-interactive
Check:
curl -s http://127.0.0.1:28291/get_height
3. Odpal proxy
/mnt/duzy/sal11v4/salvium/build/bin/peya-merge-mining-proxy \
--rpc-bind-ip 127.0.0.1 \
--rpc-bind-port 37780 \
--monero-daemon-address http://127.0.0.1:28291 \
--aux-daemon-address http://127.0.0.1:47980 \
--aux-wallet-address PtYaM1rSTrt33yeVBcUPtceo2yKJRFCTTczsoyADsxDhD8QFhs83F2VNxtF9VuznCWQ9bKATxfGZ5Qhxv8gM16vd5VRszexWGk7 \
--parent-chain monero \
--mm-auth-key-file /mnt/duzy/sal11v4/peya-mm-testnet-auth.key
Check:
curl -s http://127.0.0.1:37780/get_height
4. Uderz w proxy z parentowym adresem Monero
Podstaw swój wygenerowany adres Monero zamiast MONERO_REGTEST_ADDRESS:
curl -s -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"getblocktemplate","params":{"wallet_address":"MONERO_REGTEST_ADDRESS","reserve_size":60}}' \
http://127.0.0.1:37780/json_rpc
Zephyr
Ważne
- Do sensownych testów używaj
zephyr-fastfork, nie stockowego testnetu. - Stockowy Zephyr testnet nie odtwarza nowoczesnego stanu forków.
1. Wygeneruj parentowy adres testnet
printf 'y\n' | \
/mnt/duzy/sal11v4/zeph/zephyr-cli-linux-v2.3.0/zephyr-wallet-cli \
--testnet \
--generate-new-wallet /tmp/zephyr-mm-wallet \
--password '' \
--mnemonic-language English \
--command address
Adres:
cat /tmp/zephyr-mm-wallet.address.txt
2. Odpal fastfork parent daemon
/mnt/duzy/sal11v4/zeph/zephyr-fastfork/build-fastfork/bin/zephyrd \
--testnet \
--offline \
--fixed-difficulty 30 \
--data-dir /tmp/zephyr-fastfork-mm-parent \
--rpc-bind-port 17897 \
--p2p-bind-port 17896 \
--zmq-rpc-bind-port 17898 \
--non-interactive
3. Podnieś parent ponad fastforkowe HF
Podstaw swój testnet address Zephyra:
curl -s -H 'Content-Type: application/json' \
-d '{"miner_address":"ZEPHYR_TESTNET_ADDRESS","threads_count":32,"do_background_mining":false,"ignore_battery":true}' \
http://127.0.0.1:17897/start_mining
Sprawdzaj:
curl -s http://127.0.0.1:17897/get_height
curl -s -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"hard_fork_info"}' \
http://127.0.0.1:17897/json_rpc
Zatrzymaj mining po wejściu na nowoczesny stan fastforkowy.
4. Odpal proxy
/mnt/duzy/sal11v4/salvium/build/bin/peya-merge-mining-proxy \
--rpc-bind-ip 127.0.0.1 \
--rpc-bind-port 37904 \
--monero-daemon-address http://127.0.0.1:17897 \
--aux-daemon-address http://127.0.0.1:47980 \
--aux-wallet-address PtYaM1rSTrt33yeVBcUPtceo2yKJRFCTTczsoyADsxDhD8QFhs83F2VNxtF9VuznCWQ9bKATxfGZ5Qhxv8gM16vd5VRszexWGk7 \
--parent-chain zephyr \
--mm-auth-key-file /mnt/duzy/sal11v4/peya-mm-testnet-auth.key
5. Uderz w proxy z testnetowym adresem Zephyra
curl -s -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"getblocktemplate","params":{"wallet_address":"ZEPHYR_TESTNET_ADDRESS","reserve_size":60}}' \
http://127.0.0.1:37904/json_rpc
Salvium
Ważne
- Salvium testnet ma realne przejście adresów miningowych:
- na niskiej wysokości działa legacy
SaLvT... - od HF10 przy wysokości
1100getblocktemplatewymaga jużCarrotSC1T...
- na niskiej wysokości działa legacy
- Dla współczesnych testów merge mining po wejściu na
HF10/HF11używaj już tylko adresuSC1T....
1. Wygeneruj parentowe adresy testnet
printf 'y\n' | \
/mnt/duzy/sal11v4/sal/salvium-wallet-cli \
--testnet \
--generate-new-wallet /tmp/salvium-mm-wallet \
--password '' \
--mnemonic-language English \
--command address
Plik wyjściowy zawiera dwa adresy:
- pierwszy to legacy
SaLvT... - drugi to
CarrotSC1T...
cat /tmp/salvium-mm-wallet.address.txt
2. Odpal parent daemon
/mnt/duzy/sal11v4/sal/salviumd \
--testnet \
--offline \
--fixed-difficulty 30 \
--data-dir /tmp/salvium-mm-parent \
--rpc-bind-port 38481 \
--p2p-bind-port 38480 \
--zmq-rpc-bind-port 38482 \
--non-interactive
3. Podnieś parent ponad HF11
Od startu z genesis:
- kop do
1100na legacySaLvT... - po dojściu do
1100przełącz mining naSC1T... - dobij przynajmniej powyżej
1200
Start mining na legacy:
curl -s -H 'Content-Type: application/json' \
-d '{"miner_address":"SALVIUM_LEGACY_ADDRESS","threads_count":32,"do_background_mining":false,"ignore_battery":true}' \
http://127.0.0.1:38481/start_mining
Check wysokości:
curl -s http://127.0.0.1:38481/get_height
curl -s -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"hard_fork_info"}' \
http://127.0.0.1:38481/json_rpc
Po dojściu do 1100 przełącz mining na carrot:
curl -s -H 'Content-Type: application/json' -d '{}' http://127.0.0.1:38481/stop_mining
curl -s -H 'Content-Type: application/json' \
-d '{"miner_address":"SALVIUM_CARROT_ADDRESS","threads_count":32,"do_background_mining":false,"ignore_battery":true}' \
http://127.0.0.1:38481/start_mining
Po dojściu powyżej 1200 zatrzymaj mining:
curl -s -H 'Content-Type: application/json' -d '{}' http://127.0.0.1:38481/stop_mining
4. Odpal proxy
/mnt/duzy/sal11v4/salvium/build/bin/peya-merge-mining-proxy \
--rpc-bind-ip 127.0.0.1 \
--rpc-bind-port 37906 \
--monero-daemon-address http://127.0.0.1:38481 \
--aux-daemon-address http://127.0.0.1:47980 \
--aux-wallet-address PtYaM1rSTrt33yeVBcUPtceo2yKJRFCTTczsoyADsxDhD8QFhs83F2VNxtF9VuznCWQ9bKATxfGZ5Qhxv8gM16vd5VRszexWGk7 \
--parent-chain salvium \
--mm-auth-key-file /mnt/duzy/sal11v4/peya-mm-testnet-auth.key
Na obecnym VPS-owym układzie produkcyjnym poprawny wzorzec wygląda analogicznie:
/home/pool3/finaltest/bin/peya/peya-merge-mining-proxy \
--rpc-bind-ip 127.0.0.1 \
--rpc-bind-port 39936 \
--aux-daemon-address http://127.0.0.1:17750 \
--aux-wallet-address PEYaFi7SjGeJs3exrGeKLJKqdYMbu4hP2626E7hRKtoLZe9Kj72CUqA9LcNDRcE6h8CzghWreEN7t8jeyp9CyKqS2wZ5BEtoxh5 \
--parent-chain salvium \
--monero-daemon-address http://127.0.0.1:19081 \
--mm-auth-key-file /home/pool3/finaltest/configs/mm-auth.key
5. Uderz w proxy z carrotowym adresem Salvium
Tu używaj już tylko SC1T...:
curl -s -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"getblocktemplate","params":{"wallet_address":"SALVIUM_CARROT_ADDRESS","reserve_size":60}}' \
http://127.0.0.1:37906/json_rpc
XMRig
Ta sekcja opisuje testowany flow z xmrig-salvium przeciwko peya-merge-mining-proxy.
1. Zbuduj xmrig-salvium
Source tree:
/mnt/duzy/sal11v4/xmrig
Build:
cmake -S /mnt/duzy/sal11v4/xmrig -B /mnt/duzy/sal11v4/xmrig/build
cmake --build /mnt/duzy/sal11v4/xmrig/build -j8
Binarka:
/mnt/duzy/sal11v4/xmrig/build/xmrig
2. Minimalny testowany setup Salvium -> Peya
Sprawdzony runtime był na takim układzie:
peyadtestnet verifier z--fixed-diff 10salviumdtestnet parent z--fixed-difficulty 30peya-merge-mining-proxy --parent-chain salvium- parent chain już powyżej
HF11 - parent mining address typu
CarrotSC1T...
Ważne:
- jeśli verifier Peyi startuje od genesis, najpierw podnieś go ponad wysokość
5 - dla Salvium parenta na nowoczesnym HF używaj już tylko adresu
SC1T...
3. Uruchom xmrig-salvium przeciwko proxy
Przykład działającej komendy:
/mnt/duzy/sal11v4/xmrig/build/xmrig \
--daemon \
--coin SAL \
-o 127.0.0.1:37906 \
-u SALVIUM_CARROT_ADDRESS \
--threads 2 \
--donate-level 0 \
--daemon-poll-interval 500 \
--daemon-job-timeout 15000 \
--no-color \
--print-time 5
Na potrzeby naszych testów SALVIUM_CARROT_ADDRESS może być np.:
SC1TotQbgBa8JHDY6QvbymRviS7CWz9rKjoasZCmajFP7hL7EehF1RpUADNxTzg33iH3WPvLn1RiQJ2tr56c2iN9KD2Gx9GcpGh
4. Co powinieneś zobaczyć
Prawidłowy start wygląda mniej więcej tak:
net use daemon 127.0.0.1:37906new job ... coin Salviumcpu accepted ... diff 10
Praktycznie zweryfikowane:
xmrig-salviumpoprawnie pobieragetblocktemplatez naszego proxy- parser Salvium blocktemplate z
protocol_txdziała - submit wraca
acceptedpo stronie XMRiga - w krótkim runie testowym wysokości ruszyły na obu chainach:
- parent
Salvium 1597 -> 1599 - aux
Peya 447 -> 448
- parent
To potwierdza realny end-to-end flow:
xmrig-salvium -> peya-merge-mining-proxy -> salviumd + peyad
5. Szybka diagnostyka przy XMRigu
Sprawdzenie wysokości w trakcie runu:
curl -s http://127.0.0.1:38481/get_height
curl -s http://127.0.0.1:47980/get_height
Jeśli XMRig łączy się, ale aux nie rośnie:
- sprawdź, czy verifier Peyi jest już powyżej aktywacji MM
- sprawdź, czy proxy jest świeżo po rebuildzie
- sprawdź, czy parent Salvium jest już na carrotowym stanie
HF10/HF11+ - sprawdź, czy do XMRiga podajesz
SC1T..., a nie legacySaLvT...
Szybka diagnostyka
Status proxy:
curl -s http://127.0.0.1:37780/get_height
curl -s http://127.0.0.1:37904/get_height
curl -s http://127.0.0.1:37906/get_height
Status parentów:
curl -s http://127.0.0.1:28291/get_height
curl -s http://127.0.0.1:17897/get_height
curl -s http://127.0.0.1:38481/get_height
Status aux Peyi:
curl -s http://127.0.0.1:47980/get_height
curl -s -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"get_info"}' \
http://127.0.0.1:47980/json_rpc
Cleanup
Najprostsze sprzątanie po testach:
pkill -f peya-merge-mining-proxy || true
pkill -f '/mnt/duzy/sal11v4/salvium/build/bin/peyad --testnet --offline' || true
pkill -f '/mnt/duzy/sal11v4/monero/monero-x86_64-linux-gnu-v0.18.4.6/monerod' || true
pkill -f '/mnt/duzy/sal11v4/zeph/zephyr-fastfork/build-fastfork/bin/zephyrd' || true
pkill -f '/mnt/duzy/sal11v4/sal/salviumd' || true
Jeśli chcesz zaczynać kompletnie od zera, skasuj też odpowiednie data-dir z /tmp.