Запуск и майнинг с помощью узла P2Pool

Тема в разделе "Мануалы", создана пользователем Mr. Pickles, 9 окт 2021.

  1. Mr. Pickles

    Команда форума Модератор Редактор

    Регистрация:
    11 сен 2017
    Сообщения:
    979
    Симпатии:
    246
    Введение

    Примечание. Значительная часть в начале данного руководства взята из другого руководства, написанного мной, «Запуск узла Monero», но это было необходимо, поскольку для использования P2Pool, как правило, требуется наличие собственного узла.

    Настоящее руководство призвано предельно упростить для вас создание и запуск собственного узла Monero, а также узла P2Pool для децентрализованного майнинга Monero без комиссий. P2Pool является серьёзным прорывом, позволяющим отдельным майнерам полностью контролировать процесс майнинга. При этом исчезает необходимость в доверии к пулам и операторам пулов, и абсолютно любой теперь может заниматься децентрализованным майнингом, стабильно получая выплаты в отличие от соло-майнинга.

    Дополнительную информацию, разъясняющую, чем P2Pool лучше обычного майнинг-пула, можно найти в данном разделе: «Почему лучше настроить P2Pool и использовать его для майнинга вместо обычного пула Monero?»

    Требования

    Данное руководство предполагает, что вы купили и применили SSH к выбранному вами VPS/хосту. Тем не менее, если вам требуется помощь, чтобы начать, вот несколько хороших ссылок, которые помогут вам:
    Если вы пользуетесь собственным домашним оборудованием, это руководство в целом касается и вас, если на этом оборудовании установлена Ubuntu/Debian.

    Рекомендуемые параметры аппаратного обеспечения

    - Полный узел:
    • 2+ vCPU/ядра;
    • 4GB+ RAM;
    • 175GB+ SSD.
    - Обрезанный узел (*):
    • 2+ vCPU/ядра;
    • 4GB+ RAM;
    • 75GB+ SSD.
    Зачем запускать собственный узел Monero?

    В основе сети Monero лежит распределённая сеть узлов Monero, каждый из которых подтверждает транзакции и транслирует их остальным участникам сети, а также помогает новым узлам просто и быстро синхронизироваться согласно текущему состоянию сети.

    Запуск собственного узла Monero помогает не только усилить гарантии своей приватности на сетевом уровне, но также и повысить уровень децентрализации, стабильность и скорость сети Monero.

    Каждый узел может реализовывать два разных сервиса, каждый из которых уникальным образом положительно влияет на работу сети:
    • одноранговый (p2p) порт (18080 по умолчанию): этот порт позволяет другим узлам сети соединяться с вашим узлом, чтобы скачать блокчейн и отправить вам транзакции, которые прошли валидацию и которых у вас ещё нет. Это также повышает уровень приватности сети, так как узел участвует в трансляции транзакции в соответствии с протоколом Dandelion++;
    • порт удаленного вызова процедур (RPC) (18089 по умолчанию с ограниченным доступом): доступ к этому порту (особенно с аргументом публичного узла) позволяет другим пользователям сети, особенно тем, которые используют мобильные кошельки или GUI-кошелёк в «простом» режиме, подключаться к вашему узлу, чтобы синхронизировать свои кошельки, не запуская при этом собственный полный узел локально.
    В данном руководстве мною приводятся только те конфигурационные файлы и команды Docker, которые открывают порт p2p, поскольку это ключевым образом помогает сети. Вы можете смело использовать один из указанных ниже конфигурационных файлов с аргументом публичного узла, если вы также хотите, чтобы другие тоже узнали о вашем порте RPC с ограниченным доступом.

    Вы можете либо развернуть monerod в виде контейнера Docker, либо настроить узел посредством systemd и при помощи «официальных» двоичных файлов, указанных ниже.

    Примечание. Если вы хотите воспользоваться исходным кодом, а не скачивать и верифицировать двоичные файлы, ознакомьтесь с великолепным руководством от tannerdsilva.
    Почему лучше настроить P2Pool и использовать его для майнинга вместо «обычного» пула Monero?

    Майнинг Monero всегда происходил в одной из самых децентрализованных PoW сетей в криптовалютном пространстве. Но досадная проблема, характерная для Monero (и всех других криптовалют, использующих алгоритм PoW), всегда состояла в том, что даже при большом количестве и географическом разнообразии майнеров пулы, которые использовались этими майнерами, в целом оставались немногочисленными, были близко расположены географически и, по сути, являлись централизованными.

    Оператор пула, обычного майнинг-пула, контролирует шаблон блоков, производимых всеми майнерами, ссылающимися на него, что позволяет им повысить хешрейт в бесчестных целях, если они того пожелают. Обычные пулы также занимаются кастодиальным хранением средств, поскольку все добываемые средства сперва отправляются пулам, которые затем (при условии честности пула) выплачивают их майнерам в зависимости от работы последних.

    Пулы и их операторы представляют собой один из самых уязвимых аспектов майнинга Monero, но, к счастью, сообществом Monero (в частности, sech1, также известным как SChernykh) с нуля создало P2Pool, и в этом варианте реализации присутствует множество улучшений, если сравнивать с P2Pool, разработанного для Bitcoin и других блокчейнов.

    P2Pool позволяет участвовать в работе второго блокчейна, используемого для децентрализации нормального функционирования пула, способствуя при этом работе основной сети Monero в целом.

    Подробную информацию, касательно того, что такое P2Pool, и почему стоит пользоваться им, можно найти в официальном репозитории на GitHub: https://github.com/SChernykh/p2pool.

    Обновление и установка необходимых пакетов

    Прежде всего нам потребуется установить несколько инструментов, которые понадобятся нам позже:

    1. Следует установить несколько инструментов, которые понадобятся нам впоследствии:
    Код:
    sudo apt-get update && sudo apt-get upgrade -y
    sudo apt-get install -y ufw curl
    2. Затем необходимо установить Docker:
    Код:
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    sudo usermod -aG docker $USER
    su - $USER
    3. После этого устанавливается Docker Compose:
    Код:
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    Примечание. Эта команда загружает скрипт и запускается как корневая напрямую из Docker. Следует быть уверенным в том, что у вас получится сделать это, и осторожным, если используется персональный компьютер. Если вы не хотите делать этого, следуйте официальной документации, которую можно найти здесь, чтобы установить всё непосредственно из репозитория.​

    Начальное усиление защиты посредством UFW

    Мы гарантируем простую защиту системы, ограничивая брандмауэр доступом только к тем портам, что необходимы для SSH и monerod, используя UFW.

    Отличная инструкция, которая поможет начать работу с UFW, опубликована на сайте DigitalOcean.

    Чтобы добавить некоторые основные правила UFW и включить брандмауэр, выполните следующие команды:
    Код:
    # Отключение всех не обозначенных в качестве разрешённых портов
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    
    # Открытие доступа SSH
    sudo ufw allow ssh
    
    # Открытие доступа к p2p порту monerod
    sudo ufw allow 18080/tcp
    
    # Открытие ограниченного доступа к RPC порту monerod
    sudo ufw allow 18089/tcp
    
    # Включение UFW
    sudo ufw enable
    Скачивание и запуск monerod и P2Pool посредством Docker

    В данном разделе подразумевается, что используется простой конфигурационный файл Docker Compose, который точно указывает Docker, как должна быть конфигурирована каждая из частей, и как они должны быть соединены.

    Это позволяет запустить monerod и P2Pool при помощи нескольких простых команд.

    1. Скопируйте и вставьте приведённый ниже конфигурационный файл в любое место на VPS. В данном случае я использовал ~/p2pool:
    Код:
    mkdir ~/p2pool
    nano ~/p2pool/docker-compose.yml
    Примечание. Чтобы выйти из оболочки nano и сохранить файл, нажмите ctrl+x.​
    Код:
    version: '3.5'
    services:
      monerod:
        image: sethsimmons/simple-monerod:p2pool-api-v0.17
        restart: unless-stopped
        container_name: monerod
        volumes:
          - bitmonero:/home/monero
        ports:
          - 18080:18080
          - 18083:18083
          - 18089:18089
        command: >-
          --rpc-restricted-bind-ip=0.0.0.0 --rpc-restricted-bind-port=18089
          --public-node --no-igd --enable-dns-blocklist --prune-blockchain
          --zmq-pub=tcp://0.0.0.0:18083 --in-peers=50 --out-peers=50
    
      p2pool:
        image: sethsimmons/p2pool:latest
        restart: unless-stopped
        container_name: p2pool
        tty: true
        stdin_open: true
        volumes:
          - p2pool-data:/home/p2pool
          - /dev/hugepages:/dev/hugepages:rw
        ports:
          - 3333:3333
          - 37889:37889
        command: >-
          --wallet "468ydghFfthE3UTc53eF5MP9UyrMcUiAHP5kizVYJsej5XGaXBoAAEzUHCcUF7t3E3RrYAX8Rs1ujhBdcvMpZSbH8qkb55R"
          --stratum "0.0.0.0:3333" --p2p "0.0.0.0:37889"
          --addpeers "65.21.227.114:37889,node.sethforprivacy.com:37889" --host "monerod" --rpc-port "18089"
    
      tor:
        image: goldy/tor-hidden-service:latest
        container_name: tor
        restart: unless-stopped
        links:
          - monerod
          - p2pool
        environment:
          MONEROD_TOR_SERVICE_HOSTS: 18089:monerod:18089
          MONEROD_TOR_SERVICE_VERSION: '3'
          P2POOL_TOR_SERVICE_HOSTS: 3333:p2pool:3333
          P2POOL_TOR_SERVICE_VERSION: '3'
        volumes:
          - tor-keys:/var/lib/tor/hidden_service/
    
      watchtower:
        image: containrrr/watchtower:latest
        container_name: watchtower
        restart: unless-stopped
        volumes:
          - "/var/run/docker.sock:/var/run/docker.sock"
    
    volumes:
        bitmonero:
        tor-keys:
        p2pool-data:
    Примечание. Не забудьте заменить адрес Monero (468y…b55R) на ваш собственный. В противном случае я получу от вас щедрое пожертвование в виде хешрейта!

    Подробная информация по контейнерам, используемым в приведённом выше файле docker-compose.yml:
    • monerod: демон Monero, реализующий процессы соединения с блокчейном Monero, синхронизации с другими узлами сети, а также валидации и отслеживания транзакций, проводимых в блокчейне Monero.
    • p2pool: демон p2pool отвечает за соединение с monerod, который отвечает за получение данных блокчейна Monero, необходимых для майнинга, а также за соединение с блокчейном p2pool с целью синхронизации и публикации данных работы, проделанной во время майнинга.
    • tor: этот контейнер отвечает за публикацию демонов monerod и p2pool в качестве скрытых сервисов Tor, если вы желаете соединиться с ними напрямую через Tor. Вы можете удалить этот раздел, если вам этого не нужно.
    • autoheal: данный контейнер попытается перезапустить другие контейнеры в случае их отказа, что, вероятнее всего, позволит поддержать надлежащую работу всех остальных сервисов.
    • watchover: этот контейнер следит за появлением новых образов всех остальных работающих контейнеров, обновляя эти образы по мере их появления. Также данный контейнер гарантирует, что вам никогда не придётся обновлять monerod или p2pool вручную, и что у вас всегда будет установлена их последняя версия.
    2. Установите большие страницы для monerod и p2pool.
    Код:
    sudo sysctl vm.nr_hugepages=3072
    sudo bash -c "echo vm.nr_hugepages=3072 >> /etc/sysctl.conf"
    3. Запустите monerod и позвольте ему полностью синхронизироваться:
    Код:
    cd ~/p2pool
    docker-compose up -d monerod
    Полная синхронизация monerod может занять от 4 до 6 дней. Всё будет зависеть от используемого вами аппаратного обеспечения.

    Если у вас возникнут какие-либо дополнительные вопросы, связанные с monerod, ознакомьтесь с моим руководством «Запуск узла Monero».

    4. В docker-compose.yml замените --wallet address на ваш собственный.

    Примечание: убедитесь в том, что вы действительно создали новый кошелёк для использования с p2pool. Это защитит вашу приватность. Также следует использовать только «стандартный» адрес, начинающийся с 4. Подадреса пока не поддерживаются.

    5. Как только monerod будет полностью синхронизирован, следует запустить другие сервисы:
    Код:
    cd ~/p2pool
    docker-compose up -d
    5. Необходимо следить за файлами журнала p2pool. Это гарантирует надлежащую синхронизацию:
    Код:
    cd ~/p2pool
    docker-compose logs --follow p2pool
    Вы должны видеть такие строки, как строка верификации блоков (SideChain verified block). А через несколько минут после синхронизации вы должны увидеть такую строку, как строка начала новой цепочки SideСhain (SideChain new chain tip).

    Если вы уже запустили и используете узел Monero

    Если вы уже запустили и используете узел и не хотите переходить к указанным настройкам Docker Compose, просто добавьте флаг --zmq-pub tcp://0.0.0.0:18083 в вашу копию monerod и перезапустите её, укажите номер порта 18083/tcp, а затем используйте нижеуказанный файл docker-compose и замените значение --host на IP-адрес или адрес DNS вашего существующего узла:
    Код:
    vim ~/p2pool/docker-compose.yml
    
    Код:
    version: '3.5'
    services:
        p2pool:
            image: sethsimmons/p2pool:latest
            restart: unless-stopped
            container_name: p2pool
            tty: true
            stdin_open: true
            volumes:
            - p2pool-data:/home/p2pool
            - /dev/hugepages:/dev/hugepages:rw
            ports:
            - 3333:3333
            - 37889:37889
            command: >-
            --wallet "468ydghFfthE3UTc53eF5MP9UyrMcUiAHP5kizVYJsej5XGaXBoAAEzUHCcUF7t3E3RrYAX8Rs1ujhBdcvMpZSbH8qkb55R"
            --stratum "0.0.0.0:3333" --p2p "0.0.0.0:37889"
            --addpeers "65.21.227.114:37889,node.sethforprivacy.com:37889" --host "node.sethforprivacy.com"
    
        tor:
            image: goldy/tor-hidden-service:latest
            container_name: tor
            restart: unless-stopped
            links:
                - monerod
                - p2pool
            environment:
                MONEROD_TOR_SERVICE_HOSTS: 18089:monerod:18089
                MONEROD_TOR_SERVICE_VERSION: '3'
                P2POOL_TOR_SERVICE_HOSTS: 3333:p2pool:3333
                P2POOL_TOR_SERVICE_VERSION: '3'
            volumes:
                - tor-keys:/var/lib/tor/hidden_service/
    
        watchtower:
            image: containrrr/watchtower:latest
            container_name: watchtower
            restart: unless-stopped
            volumes:
                - "/var/run/docker.sock:/var/run/docker.sock"
    
    volumes:
        tor-keys:
        p2pool-data:
    Примечание. Не забудьте заменить адрес Monero (468y…b55R) на ваш собственный. В противном случае я получу от вас щедрое пожертвование в виде хешрейта!

    Как только вышеуказанный файл будет создан, начните с выполнения шага 4 из раздела выше.

    Соединение ваших майнеров с p2pool

    Теперь, когда monerod и p2pool настроены и работают, вам остаётся только направить ваши майнеры на новый сервер p2pool, соединение с которым только что было установлено!

    Для того, чтобы сделать это в XMRig достаточно просто ввести следующую команду, заменив адрес 127.0.0.1 на IP-адрес / адрес DNS узла p2pool / VPS, с которым вы работаете:
    Код:
    ./xmrig -o 127.0.0.1:3333
    Если вы хотите использовать с XMRig конфигурационный файл, то вы можете воспользоваться конфигурационным файлом, приведённым ниже, заменив адрес 127.0.0.1 на IP-адрес / адрес DNS узла p2pool / VPS, с которым вы работаете:
    Код:
    {
    
        "autosave": true,
        "donate-level": 5,
        "cpu": true,
        "opencl": false,
        "cuda": false,
        "pools": [
            {
                "coin": "monero",
                "algo": null,
                "url": "127.0.0.1:3333",
                "user": "",
                "pass": "",
                "tls": false,
                "keepalive": true,
                "nicehash": false
            }
        ]
    }
    Более подробную информацию по конфигурации майнера можно найти в моём руководстве «Майнинг Monero».

    Просмотр вашей статистики майнинга

    Хочется выразить благодарность DataHoarder за подсказку по этому вопросу, размещённую через Matrix/IRC.

    Поскольку стандартного пула для проверки вашей статистики не существует, вас может озадачить, как можно увидеть общий хешрейт пула, найденные доли, примерный совокупный размер вознаграждения и так далее.

    К счастью в p2pool предусмотрена команда, позволяющая делать всё это! Чтобы проверить свою текущую статистику, необходимо просто подсоединиться к командной строке контейнеров, ввести команду status и получить результат:
    Код:
    docker attach p2pool
    status
    На экране появится подобная информация:
    Код:
    2021-09-10 13:36:14.9805 SideChain status
    Main chain height         = 2446358
    Main chain hashrate       = 2.689 GH/s
    Side chain height         = 87443
    Side chain hashrate       = 50.160 MH/s
    Your hashrate (pool-side) = 12.831 KH/s
    PPLNS window              = 2160 blocks (+67 uncles, 2 orphans)
    Your shares               = 2 blocks (+0 uncles, 0 orphans)
    Block reward share        = 0.091% (0.000796295367 XMR)
    2021-09-10 13:36:14.9805 StratumServer status
    Hashrate (15m est) = 12.046 KH/s
    Hashrate (1h  est) = 12.046 KH/s
    Hashrate (24h est) = 12.046 KH/s
    Total hashes       = 6770128
    Shares found       = 5
    Average effort     = 40.000%
    Current effort     = 1.310%
    Connections        = 2 (2 incoming)
    2021-09-10 13:36:14.9805 P2PServer status
    Connections    = 9 (1 incoming)
    Peer list size = 99
    Для выхода из командной строки необходимо посредством клавиатуры ввести две команды в следующем порядке:
    Код:
    Control + P
    Control + Q
    Это будет командой для Docker, означающей, что вы хотите отключиться, не прерывая процесса p2pool.

    Проверка выплат

    Чтобы увидеть выплаты, полученные в результате майнинга, просто проверьте свой любимый кошелёк Monero (Cake Wallet или Monerujo).

    Чтобы ознакомиться с общей статистикой пула для текущей тестовой версии p2pool основной сети, перейдите по следующей ссылке: https://p2pool.io/.

    Примечание: на момент написания данного поста Cake Wallet ещё не обновился до версии v0.17.2.3 Monero, и поэтому кошелёк не отображал выплаты надлежащим образом.

    Альтернативные способы запуска p2pool

    Если вам не нравится данный подход, или же вы хотите построить всё самостоятельно на основе исходного кода, попробуйте следующие два подхода:
    • использование других настроек Docker Compose, позволяющих создавать образы локально, исключая фактор доверия к образам Docker: https://github.com/WeebDataHoarder/p2pool-compose.
    Существует множество способов запустить всё самостоятельно, но в данном руководстве я попытался изложить подход, упрощающий данный процесс с точки зрения пользователей. Вы можете использовать наиболее удобный для вас подход, который также будет подходить для вашей модели угрозы!

    Отказ от ответственности

    Несмотря на то, что данный вариант программного обеспечения хорошо показал себя при работе в основной сети, он, безусловно, не защищён от неумелого обращения и по-прежнему находится на стадии активной разработки. Следует помнить о возможности наличия в нём ошибок, и что p2pool пока находится на раннем этапе использования.

    Я не несу никакой ответственности за потерю каких-либо средств и проблемы. Которые могут возникнуть у вас в связи с конфигурацией или использованием p2pool. Тем не менее я окажу посильную помощь в решении возможных проблем.

    Заключение

    Надеюсь, у меня получилось (относительно) простое руководство, которое позволит вам заняться майнингом Monero посредством p2pool! p2pool — это важный инструмент, который позволит устранить фактор доверия, характерный для см существующих ныне пулов, а также исключит возможность регулирования в будущем. Поэтому я более чем восхищён тем, что это наконец стало возможным и довольно хорошо работает.

    Если у вас есть какие-либо вопросы, или же вам нужна помощь, вы можете связаться со мной через Twitter, Matrix или по электронной почте.

    Спасибо!

    ---

    Источник: Run and mine on a p2pool Node

    Перевод:
    Mr. Pickles (@v1docq47)
    Редактирование:
    Agent LvM (@LvMi4)
    Коррекция:
    Kukima (@Kukima)
     
    #1 Mr. Pickles, 9 окт 2021
    Последнее редактирование: 9 окт 2021
  • О нас

    Наш сайт является одним из уникальных мест, где русскоязычное сообщество Monero может свободно общаться на темы, связанные с этой криптовалютой. Мы стараемся публиковать полезные мануалы и статьи (как собственные, так и переводы с английского) о криптовалюте Monero. Если вы хорошо владеете английским (или можете писать собственные статьи/мануалы) и хотите помочь в переводах и общем развитии Monero для русскоязычной аудитории - свяжитесь с одним из администраторов.