
Из этой статьи вы узнаете:
- Как поднять майнинг пул
- Как добавить монетку, которую найденный на просторах GitHub пул не поддерживает (но поддерживает нужный алгоритм)
- Как собрать майнер из исходного кода
- Linux, я сделал всё на Ubuntu 20.04 (можно и на винде, но не мой профиль)
- UFO core https://github.com/fiscalobject/ufo
- Пул Miningcore https://github.com/oliverw/miningcore
- Майнер для Nvidia https://github.com/tpruvot/ccminer
- Майнер для AMD https://github.com/ghostlander/nsgminer
Код: Выделить всё
wget https://github.com/fiscalobject/ufo/releases/download/v0.18.1/ufo-0.18.1-linux64.tar.gz
tar -xvf ufo-0.18.1-linux64.tar.gz
Код: Выделить всё
mkdir ~/.ufo
nano ~/.ufo/ufocoin.conf
Код: Выделить всё
zmqpubhashblock=tcp://127.0.0.1:15101
# юзернейм
rpcuser=ufocore
# пароль
rpcpassword=ufocore
deprecatedrpc=accounts
addresstype=legacy
changetype=legacy
Код: Выделить всё
./ufod
# или запускаем в screen, если используется серверный дистрибутив
screen -dmS ufo ./ufod
# в логе ноды нужно дождаться progress=1.000000
# посмотреть лог: screen -r ufo
# выйти из скрина: последовательно нажать ctrl+A, ctrl+D
Код: Выделить всё
./ufo-cli getnewaddress
./ufo-cli getnewaddress
# адреса будут Legacy формата B или C, с ними работает пул, а вот в майнере можно указывать любой
Код: Выделить всё
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo apt install ./packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt update
sudo apt install postgresql dotnet-sdk-6.0 git cmake build-essential libssl-dev pkg-config libboost-all-dev libsodium-dev libzmq5 libzmq3-dev nginx gcc g++ make
Код: Выделить всё
git clone https://github.com/oliverw/miningcore
Код: Выделить всё
sudo -u postgres psql
# пароль от базы данных указывается после PASSWORD внутри одинарных кавычек
CREATE ROLE miningcore WITH LOGIN ENCRYPTED PASSWORD 'miningcore';
CREATE DATABASE miningcore OWNER miningcore;
\q
sudo -u postgres psql -d miningcore -f miningcore/src/Miningcore/Persistence/Postgres/Scripts/createdb.sql
# если вы получили ошибку вида:
# could not change directory to "/home/user": Permission denied
# psql: error: miningcore/src/Miningcore/Persistence/Postgres/Scripts/createdb.sql:
# No such file or directory
# то необходимо добавить юзера postgres в группу вашего пользователя
# и повторить команду
sudo usermod -a -G $USER postgres
Код: Выделить всё
cd ~/miningcore/src/Miningcore
dotnet publish -c Release --framework net6.0 -o ../../build
Код: Выделить всё
cd ~/miningcore/build
nano coins.json
Код: Выделить всё
"ufocoin": {
"name": "UFOcoin",
"symbol": "UFO",
"family": "bitcoin",
"website": "",
"market": "",
"twitter": "",
"telegram": "",
"discord": "",
"coinbaseHasher": {
"hash": "sha256d"
},
"headerHasher": {
"hash": "neoscrypt",
"args": [ 0 ]
},
"blockHasher": {
"hash": "reverse",
"args": [ { "hash": "sha256d" } ]
},
"shareMultiplier": 65536,
"explorerBlockLink": "https://chainz.cryptoid.info/ufo/block.dws?$height$.htm",
"explorerTxLink": "https://chainz.cryptoid.info/ufo/tx.dws?{0}.htm",
"explorerAccountLink": "https://chainz.cryptoid.info/ufo/address.dws?{0}.htm"
},
Код: Выделить всё
{
"logging": {
"level": "info",
"enableConsoleLog": true,
"enableConsoleColors": true,
"logFile": "core.log",
"apiLogFile": "api.log",
"logBaseDirectory": "./logs",
"perPoolLogFile": false
},
"banning": {
"manager": "Integrated",
"banOnJunkReceive": false,
"banOnInvalidShares": false
},
"notifications": {
"enabled": false,
"email": {
"host": "smtp.example.com",
"port": 587,
"user": "user",
"password": "password",
"fromAddress": "info@yourpool.org",
"fromName": "pool support"
},
"admin": {
"enabled": false,
"emailAddress": "user@example.com",
"notifyBlockFound": true
}
},
"persistence": {
"postgres": {
"host": "127.0.0.1",
"port": 5432,
"user": "miningcore",
"password": "miningcore", // пароль от БД, заданный в psql
"database": "miningcore"
}
},
// Generate payouts for recorded shares and blocks
"paymentProcessing": {
// ставим значение false, если майните в одиночку и не нужны выплаты
// на другой кошелек
"enabled": true,
"interval": 600,
"shareRecoveryFile": "recovered-shares.txt"
},
"api": {
"enabled": true,
"listenAddress": "0.0.0.0",
"port": 4000,
"metricsIpWhitelist": [],
"rateLimiting": {
"disabled": true,
"rules": [
{
"Endpoint": "*",
"Period": "1s",
"Limit": 20
}
],
"ipWhitelist": []
}
},
"pools": [
{
"id": "ufo",
"enabled": true,
"coin": "ufocoin",
// здесь указывается один из адресов, полученных с помощью ufo-cli
"address": "B.................",
"rewardRecipients": [
{
// здесь указывается второй адрес, полученный с помощью ufo-cli
"address": "B.................",
// комиссия пула в %, обязательно указывать отличную от нуля,
// если осуществляются выплаты
"percentage": 0.5
}
],
"blockRefreshInterval": 0,
"jobRebroadcastTimeout": 10,
"clientConnectionTimeout": 600,
"banning": {
"enabled": false,
"time": 600,
"invalidPercent": 50,
"checkThreshold": 50
},
"ports": {
// Порт, на который будет коннектиться майнер
"8888": {
"listenAddress": "0.0.0.0",
// Сложность подбирается индивидуально, в зависимости от
// хэшрейта оборудования
"difficulty": 10.0,
"tls": false,
"tlsPfxFile": "/var/lib/certs/mycert.pfx",
"varDiff": {
"minDiff": 10.0,
"maxDiff": null,
"targetTime": 15,
"retargetTime": 90,
"variancePercent": 30,
"maxDelta": 500
}
}
},
"daemons": [
{
"host": "127.0.0.1",
// rpc-порт ноды, узнать его можно так: ./ufod -h | grep rpcport
"port": 9888,
// юзернейм из ufocoin.conf
"user": "ufocore",
// пароль из ufocoin.conf
"password": "ufocore",
"zmqBlockNotifySocket": "tcp://127.0.0.1:15101",
}
],
"paymentProcessing": {
// ставим значение false, если майните в одиночку и не нужны выплаты
// на другой кошелек
"enabled": true,
"minimumPayment": 0.1,
"payoutScheme": "PPLNS",
"payoutSchemeConfig": {
"factor": 0.5
}
}
},
]
}
Код: Выделить всё
./Miningcore -c config.json

Код: Выделить всё
cd
git clone https://github.com/minernl/Miningcore.WebUI webui/
nano webui/js/miningcore.js
# в открывшемся файле преобразуем 33 строку следующим образом
var API = "http://192.168.XX.XX:4000/" + "api/";
# где 192.168.XX.XX - адрес вашей машины в локальной сети
# узнать его можно, например, с помощью команды ifconfig
# для красоты можно закинуть png-иконку UFO по пути ~/webui/img/coin/icon/ufo.png
Код: Выделить всё
sudo nano /etc/nginx/sites-available/default
# удаляем всё и прописываем следующую конфигурацию
server {
listen 0.0.0.0:4001;
root /home/LINUX_ЮЗЕРНЕЙМ/webui;
index index.html;
}
# сохраняем и перезапускаем nginx
sudo systemctl restart nginx.service
# открываем порты API, веб-сервера и stratum
sudo ufw allow 4000
sudo ufw allow 4001
sudo ufw allow 8888
Если в браузере получили ошибку "403 Forbidden", то необходимо добавить юзера www-data в группу вашего пользователя, перезапустить nginx, и обновить страницу в браузере через ctrl+F5:
Код: Выделить всё
sudo usermod -a -G $USER www-data
sudo systemctl restart nginx.service
Сборка ccminer.
Устанавливаем CUDA 11.3 с сайта Nvidia:
Код: Выделить всё
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run
sudo sh cuda_11.3.0_465.19.01_linux.run
# в появившихся настройках отключите установку драйвера Nvidia
rm cuda_11.3.0_465.19.01_linux.run
cd /usr/lib/x86_64-linux-gnu
sudo ln -s /usr/local/cuda-11.3/targets/x86_64-linux/lib/stubs/libcuda.so libcuda.so
Код: Выделить всё
cd
git clone https://github.com/tpruvot/ccminer
cd ccminer
nano Makefile.am
# для поддержки последних архитектур Nvidia найдите и раскоментируйте строки:
nvcc_ARCH += -gencode=arch=compute_75,code=\"sm_75,compute_75\"
nvcc_ARCH += -gencode=arch=compute_70,code=\"sm_70,compute_70\"
nvcc_ARCH += -gencode=arch=compute_61,code=\"sm_61,compute_61\"
# и добавьте пару новых:
nvcc_ARCH += -gencode=arch=compute_86,code=\"sm_86,compute_86\"
nvcc_ARCH += -gencode=arch=compute_80,code=\"sm_80,compute_80\"
sudo apt install libcurl4-openssl-dev libssl-dev libjansson-dev automake autotools-dev build-essential
./build.sh
Код: Выделить всё
./ccminer -a neoscrypt -o stratum+tcp://192.168.XX.XX:8888 -u U-любой-адрес-кошелька.Имя-воркера
Код: Выделить всё
cd
sudo apt install build-essential autoconf automake libtool pkg-config libcurl4-gnutls-dev
git clone https://github.com/ghostlander/nsgminer
cd nsgminer/bitstreams/src/
git clone https://github.com/luke-jr/X6000_ztex_comm4
cd ../../
nano autogen.sh
# закомментировать следующие строки:
#if test -z "$NOSUBMODULES" ; then
# echo 'Getting submodules...'
# ( # cd "${bs_dir}"
# git submodule update --init
# )
#fi
./autogen.sh
make
Код: Выделить всё
./nsgminer -o stratum+tcp://192.168.XX.XX:8888 -u U-любой-адрес-кошелька.Имя-воркера -p x --neoscrypt --no-getwork



На данный момент список такой:
UPD 1autolykos2 – ERG
blake2s – XVG
cpupower – CPU
equihash 96.5 – MNX
equihash 144.5 – BTG, FLUX, BTH
equihash 200.9 – ZEC, BTCP, ZEN
ethash – ETHW, CLO
geek – GEEK
ghostrider – RTM, THOON, YERB
groestl – GRS
groestlmyriad – DGB, AUR, SMLY, XVG
heavyhash – OBTC
lyra2rev2 – MONA, XVG
lyra2z – ACM, ALPS
minotaur – LCC, RNG
neoscrypt – FTC, LUCKY, SPK
phi5 – CBE
qubit – DGB, AUR, SMLY
randomx – XMR
scrypt – LTC, DOGE, AUS, BCC, FLAPX, FLO, HFR, MNC, MOON, NTBC, PAK, PHC, ROC, ROGER, TLT, VIA, VPC, WDC, DGB, AUR, BUTK, PYRK, SMLY, VLS, XVG
sha256d – BTC, BCH, BSV, BCON, BFL, DANE, XEC, DEM, XRG, ETIT, LANA, MAZA, NMC, PPC, PIC, PLC, SUSU, TRC, TDC, TIT, WCN, ZET, DGB, AUR, BUTK, PYRK, SMLY, VLS
skein – DGB, AUR, SMLY
verthash – VTC, BRWN
verushash – VRSC
x11 – DASH, AXE, BOLI, CANN, EMRALS, LEVO, PAC, PYRK, SCC, SWP, XNC, XAZAB
x13 – FCH
x13bcd – BCD
x16r – EXO, HTH
x16rv2 – VGC, FOXD, IDX, SHRX
x17 – XVG
yescrypt – BSTY
yescryptR16 – ELI, GOLD, REAN
yespower – VECO
yespowerarwn – ARWN
yespowermgpc – MGPC
yespowerr16 – LTFN, YTN
yespowersugar – BUTK, SUGAR
yespowertide – TDC
На настоящий момент пул не поддерживает обновление MimbleWimble Extension Blocks в Litecoin, то есть нельзя использовать ноду версии 0.21+.
Имеется баг в монете eCash (XEC), блоки отвергаются нодой по неизвестной причине.
Zcash также не поддерживается после хардфорка NU5.
UPD 2
Как выяснилось, пул может не собираться на некоторых моделях процессоров, по крайней мере на данный момент. Если вы получили ошибку сборки, то нужно закомментировать строки с упоминанием cryptonote, cryptonight, RandomX и RandomARQ в файле src/Miningcore/build-libs-linux.sh. К слову, miningcore - не лучший выбор для майнинга монеро и криптонайтов, но об этом в следующих сериях.
Код: Выделить всё
#(cd ../Native/libcryptonote && make clean && make) && mv ../Native/libcryptonote/libcryptonote.so "$OutDir"
#(cd ../Native/libcryptonight && make clean && make) && mv ../Native/libcryptonight/libcryptonight.so "$OutDir"
#((cd /tmp && rm -rf RandomX && git clone https://github.com/tevador/RandomX && cd RandomX && git checkout tags/v1.1.10 && mkdir build && cd build && cmake -DARCH=native .. && make) && (cd ../Native/librandomx && cp /tmp/RandomX/build/librandomx.a . && make clean && make) && mv ../Native/librandomx/librandomx.so "$OutDir")
#((cd /tmp && rm -rf RandomARQ && git clone https://github.com/arqma/RandomARQ && cd RandomARQ && git checkout 14850620439045b319fa6398f5a164715c4a66ce && mkdir build && cd build && cmake -DARCH=native .. && make) && (cd ../Native/librandomarq && cp /tmp/RandomARQ/build/librandomx.a . && make clean && make) && mv ../Native/librandomarq/librandomarq.so "$OutDir")