monerod


Демон Monero называется monerod и поддерживает синхронизацию вашего компьютера с сетью Monero.

Эта программа загружает блокчейн через p2p сеть и подтверждает его правильность.

Программе не известны ваши приватные ключи

monerod никак не связан с вашим кошельком.

monerod не имеет доступа к вашим приватным ключам, программе не известно ничего о ваших транзакциях и вашем балансе.

Что позволяет использовать monerod как на отдельном компьютере, так и в облаке.

Фактически вы можете подсоединиться к удалённому monerod, доступ к которому будет обеспечивать полудоверенная третья сторона. У такой стороны не получится похитить ваши средства. Это очень удобно с точки зрения обучения и проведения экспериментов.

Тем не менее использование удалённого (не доверенного) узла подразумевает возможные осложнения с точки зрения приватности и надёжности. Если у вас свой бизнес, то обязательно используйте собственный полный узел.

Синтаксис

./monerod [options] [command]

Работа демона определяется опциями. Их названия соответствуют шаблону --option-name.

Команды обеспечивают доступ к определённым сервисам демона. Их названия соответствуют шаблону command_name.

Запуск

Перейдите в директорию, в которую были распакованы файлы Monero.

Для обучения и экспериментов следует использовать отладочную сеть.

./monerod --stagenet --detach                # run as a daemon in background
tail -f ~/.bitmonero/stagenet/bitmonero.log  # watch the logs
./monerod --stagenet exit                    # ask daemon to exit gracefully

Основная сеть используется для реальных XMR.

./monerod --detach                           # run as a daemon in background
tail -f ~/.bitmonero/bitmonero.log           # watch the logs
./monerod exit                               # ask daemon to exit gracefully

Опции​

Опции определяют работу демона. Их названия соответствуют шаблону --option-name.

Опции сгруппированы для простоты понимания. Сам демон не группирует опции каким бы то ни было образом.

Помощь и версия:

ОпцияОписание
--helpВыводит список доступных опций.
--versionПоказывает версию monerod в stdout. Пример:
OS: Linux #1 SMP PREEMPT Wed, 27 May 2020 23:42:26 +0000 5.6.15-arch1-1.
--check-updatesОдин из вариантов: отключить обновления disabled | уведомлять об обновлениях notify | скачивать обновление download (по умолчанию кошелёк находится в режиме уведомления об обновлениях). Проверяет на наличие новых версий Monero и загружает их при необходимости. Возможно, лучше будет настроить менеджер пакетов ОС, чтобы он производил обновление, если это, конечно, возможно. Также существует опция нереализованных обновлений, которая отображается в меню помощи системы.

Выбор сети:

ОпцияОписание
(missing)По умолчанию monerod выбирает основную сеть.
--stagenetЗапускает monerod в отладочной сети. Следует помнить, что кошелёк также следует запускаеть при помощи флага --stagenet.
--testnetЗапускает monerod в тестовой сети. Следует помнить, что кошелёк также следует запускаеть при помощи флага --testnet.

Журнал регистрации:

ОпцияОписание
--log-fileПолный путь к регистрационному файлу журнала. Пример (следует помнить о разрешениях для файла):
./monerod --log-file=/var/log/monero/mainnet/monerod.log
--log-levelОт 0 до 4, где 0 обозначает минимальную регистрацию данных в журнале, а 4 запись всех регистрационных данных. По умолчанию имеет значение 0. Это общие предварительные настройки, которые не связаны напрямую с уровнями сложности. Например, при минимальном значении 0, можно увидеть только некоторые важные данные INFO. Временное изменение значения на 1 позволяет лучше понять, как работает полный узел. Пример:
./monerod --log-level=1
--max-log-file-sizeЗапрограммированный и выраженный в байтах размер для регистрационного файла (по умолчанию равен 104850000, что составляет менее 100 Мб). Как только размер регистрационного файла вырастет сверх этого предела, monerod создаст следующий регистрационный файл с постфиксной временной меткой в формате UTC -YYYY-MM-DD-HH-MM-SS.

В реальных условиях, вы скорее всего предпочтёте использовать проверенные решения, такие как logrotate. В этом случае вам следует установить флаг --max-log-file-size 0, чтобы запретить возможность управлять файлами журнала.
--max-log-filesПредельное количество регистрационных файлов (50 по умолчанию). Старые файлы журнала удаляются автоматически. Вероятно, что вместо этого параметра вы предпочтёте использовать проверенные решения, такие как logrotate.

Серверная часть:

Настройки, используемые monerod по умолчанию, можно корректировать, чтобы периодически запускать программу на том же компьютере, на котором установлен кошелёк Monero.

Следующие опции помогут, если вы хотите, чтобы у вас был постоянно работающий узел (наиболее вероятно, на удалённом сервере или на вашем отдельном ПК).

ОпцияОписание
--config-fileПолный путь к файлу конфигурации. По умолчанию monerod ищет bitmonero.conf в директории данных Monero.
--data-dirПолный путь к директории данных. Это место, где хранится копия блокчейна, регистрационные файлы журнала и находится известные p2p сети. Информацию по настройкам, используемым по умолчанию, и другую соответствующую информацию можно найти в разделе директория данных.
--pidfileПолный путь к PID файлу. Работает только с --detach. Пример:
./monerod --detach --pidfile=/run/monero/monerod.pid
--detachПереход к работе в фоновом режиме (отсоединение от оконечного устройства). Эта опция полезна с точки зрения долгосрочных сценариев и сценариев с использованием сервера. Возможно, что вам хочется управлять демоном monerod, используя systemd или подобный инструмент. По умолчанию monerod работает в интерактивном режиме.
--non-interactiveНе требует tty в интерактивном режиме. Полезная опция при работе в составе контейнера. По умолчанию monerod работает в интерактивном режиме и открывает stdin для чтения, который нарушает контейнеризацию, поскольку не происходит назначения tty, и процесс monerod завершается с ошибкой. monerod можно запустить в фоновом режиме, используя --detach, но это неудобно при работе в контейнере, так как каноническое использование подразумевает, что контейнер ждёт ответ от основного процесса (а разветвление всё усложняет).
--no-zmqОтключение ZMQ RPC сервера. Эту опцию следует использовать, чтобы ограничить возможность атаки и количество без надобности открытых портов (работа над ZMQ сервером продолжается, и вряд ли вы когда-либо будете использовать его).
--no-igdОтключение распределения UPnP порта маршрутизатора (протокол Internet Gateway Device). Эта опция добавляется для повышения уровня безопасности, если вы не пользуетесь NAT (вы можете привязаться напрямую к публичному IP или использовать Tor).
--max-txpool-weightЗадаёт максимальный размер пула транзакций (в байтах). По умолчанию этот размер составляет 648000000 (~618 Мб). Это транзакции, ожидающие подтверждения (ещё не включённые в какой-либо блок).
--enforce-dns-checkpointingАктивирует экстренные контрольные точки, устанавливаемые операторами MoneroPulse. Такую опцию стоит применять к не сопровождаемым (автоматическим) узлам.

Если встречается хеш блока, не соответствующий определённой контрольной точке, произойдёт «откат» локального блокчейна на несколько блоков, в результате чего, текущее направление будет заблокировано операторами MoneroPulse и они сочтут его недействительным форком. В журнале появится запись: ERROR Local blockchain failed to pass a checkpoint, rolling back! (ОШИБКА Локальный блокчейн не прошёл контрольную точку, откат!). В конечном счёте альтернативный («исправленный») форк станет актуальным направлением, и узел переключится на него, переключившись с «недействительного» форка.

По умолчанию при такой расстановке контрольных точек в журнале только появляется следующее уведомление о расхождении: ERROR WARNING: local blockchain failed to pass a MoneroPulse checkpoint, and you could be on a fork. You should either sync up from scratch, OR download a fresh blockchain bootstrap, OR enable checkpoint enforcing with the --enforce-dns-checkpointing command-line option (ПРЕДУПРЕЖДЕНИЕ ОБ ОШИБКЕ: локальный блокчейн не прошёл контрольную точку MoneroPulse, и вы можете находиться в форке. Вам необходимо либо синхронизироваться с самого начала, ЛИБО активировать контрольную точку, используя опцию командной строки --enforce-dns-checkpointing).

Ссылка: исходный код.
--disable-dns-checkpointsКонтрольные точки MoneroPulse, заданные разработчиками, будут сброшены. Тем не менее, очевидно, что контрольные точки будут по-прежнему активны.

P2P cеть:

TСледующие опции определяют участие вашего узла в одноранговой сети Monero. Данные опции отвечают за связь между узлами и не влияют на интерфейс между кошельком и узлом.

Слово «узел» (node) и словосочетание «одноранговый узел» (peer) в данном контексте равнозначны и взаимозаменяемы.

ОпцияОписание
--p2p-bind-ipIPv4 сетевой интерфейс p2p сети. Значение 0.0.0.0, используемое по умолчанию, позволяет связаться со всеми сетевыми интерфейсами.

Если же вам необходимо ограничить какую-то сеть, например, чтобы сконфигурировать соединение Tor посредством torsocks, то необходимо изменить это значение:
DNS_PUBLIC=tcp://1.1.1.1 TORSOCKS_ALLOW_INBOUND=1 torsocks ./monerod --p2p-bind-ip 127.0.0.1 --no-igd --hide-my-port
--p2p-bind-portTCP порт «отслеживает» соединения p2p сети. По умолчанию используются следующие значения: 18080 для основной сети (mainnet), 28080 для тестовой сети (testnet) и 38080 для отладочной сети (stagenet). Как правило, эти значения не изменяются. Это позволяет запустить на вашей машине несколько узлов, моделируя приватную p2p сеть Monero (что подобно использованию тестовой сети). Пример:
./monerod --p2p-bind-port=48080
--p2p-external-portTCP порт «отслеживает» соединения p2p сети через ваш маршрутизатор. Опция актуальна, если вы используете NAT, но вам требуется отслеживать входящие соединения. Для этого необходимо установить соответствующий порт на вашем маршрутизаторе. Это делается для того, чтобы monerod знал, что необходимо слушать из вашей сети. Значение, используемое по умолчанию, — 0
--p2p-use-ipv6Включение IPv6 для p2p (по умолчанию отключено)
--p2p-bind-ipv6-addressПривязка сетевого интерфейса IPv6 к сетевому протоколу p2p. Значение, используемое по умолчанию :: привязывает его ко всем сетевым интерфейсам
--p2p-ignore-ipv4Игнорировать неудачную привязку IPv4 к p2p. Эта опция пригодится только в том случае, если вы захотите использовать IPv6.
--igdНастройка распределения портов UPnP на маршрутизаторе («Шлюз интернет-устройства»). Один из вариантов: отключён disabled | подключён enabled | с задержкой delayed (по умолчанию установлен режим задержки). Используется, если вы работаете за NAT и хотите принимать входящие P2P соединения. Задержка означает, что подключение входящих соединений будет ожидаться в надежде, что UPnP не понадобится. Через некоторое время, если входящие соединения обнаружены не будут, будет осуществлена попытка распределить порты посредством UPnP. Если вы уверены в том, что вам необходим UPnP, подключите его, чтобы ускорить процесс.
--hide-my-portmonerod по-прежнему будет открыт и будет отслеживать p2p порт. Тем не менее он не будет заявлять о себе как о кандидате для попадания в список одноранговых узлов. Технически он вернёт порту нулевое значение в ответ на попытку сопряжения (node_data.my_port = 0 в функции get_local_node_data). В сущности, узлы, к которым вы подключаетесь, не будут сообщать ваш IP-адрес другим одноранговым узлам (это не совсем «сокрытие», скорее, это «неразглашение»).
--seed-nodeСоединение с узлом с целью получения адресов других узлов и последующее разъединение. При отсутствии заданных узлов monerod в первую очередь будет использовать предварительно закодированные начальные узлы, а также одноранговые узлы, сохраненные на диске.
--add-peerРучное добавление узла в список одноранговых.
--add-priority-nodeУказывает список узлов, к которым следует подключатся, и затем попытаться держать соединения открытым.

Чтобы добавить несколько узлов, следует использовать опцию несколько раз. Пример:
./monerod --add-priority-node=178.128.192.138:18081 --add-priority-node=144.76.202.167:18081
--add-exclusive-nodeУказывает список только тех узлов, к которым следует подключатся. Если задана эта опция, опции --add-priority-node и --seed-node игнорируются.

Чтобы добавить несколько узлов, следует использовать опцию несколько раз. Пример:
./monerod --add-exclusive-node=178.128.192.138:18081 --add-exclusive-node=144.76.202.167:18081
--out-peersЗадаёт максимальное количество исходящих соединений с другими узлами. Значение, используемое по умолчанию, — 8. Значение -1 указывает на ошибку в коде.
--in-peersЗадаёт максимальное количество входящих соединений с другими узлами. По умолчанию значение не ограничено. Значение -1 указывает на ошибку в коде.
--limit-rate-upЗадаёт лимит скорости передачи исходящих данных [Кбайт/с]. По умолчанию значение составляет 2048 Кбайт/с. Значение -1 указывает на ошибку в коде.
--limit-rate-downЗадаёт лимит скорости передачи входящих данных [Кбайт/с]. По умолчанию значение составляет 8192 Кбайт/с. Значение -1 указывает на ошибку в коде.
--limit-rateЗадаёт одно и то же предельное значение для передачи входящих и исходящих данных. Во избежание путаницы лучше использовать --limit-rate-up и --limit-rate-down.
--offlineНе принимать данные от одноранговых узлов и запретить исходящие подключения. Полезная опция для работы с локальной копией блокчейна.
--allow-local-ipПозволяет добавить локальный IP в список одноранговых узлов. Полезная опция с точки зрения отладки, если вам захочется запустить множество узлов на одном компьютере.

Tor/I2P

Это экспериментальная опция. Возможно, было бы лучше всего начать с этого руководства.

ОпцияОписание
--tx-proxyОтправляет ваши локальные транзакции через прокси-сервер SOCKS5 (Tor или I2P). Формат:
<network-type>,<socks-ip:port>[,max_connections][,disable_noise]

Example:
./monerod --tx-proxy "tor,127.0.0.1:9050,10,disable_noise"

Эта опция была введена, чтобы упростить публикацию транзакций через Tor (отсутствие необходимости в torsocks), и в то же время обеспечить возможность одновременной передачи блоков (несмотря на то, что torsocks повлияли на всё).

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

Требуется несколько --add-peer. См. коммит и руководство.
--anonymous-inboundОбеспечивает возможность подключения анонимных входящих соединений к вашему луковому P2P интерфейсу. Формат:
<hidden-service-address>,<[bind-ip:]port>[,max_connections]

Example:
./monerod --anonymous-inbound "rveahdfho7wo4b2m.onion:18083,127.0.0.1:18083,100".

Очевидно, что сначала нужно настроить сервис в вашей конфигурации Tor. См. руководство.
--pad-transactionsЗаполняет ретранслируемые транзакции до следующих 1024 байт с целью защиты от анализа объёма трафика. Использовать эту опцию имеет смысл только в том случае, если вы используете Tor или I2P. См. коммит.

RPC API узла

Узел monerod имеет вариативный API, который служит 3 целям:

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

Этот API обычно называют RPC, поскольку он основан на стандарте JSON/RPC.

Поведение API определяется следующими опциями:

ОпцияОписание
--public-nodeСообщает другим пользователям, что они могут использовать этот узел как удалённый для подключения своих кошельков. Требует использования --restricted-rpc, --rpc-bind-ip и --confirm-external-bind. Без --public-node узел всё ещё может оставаться публичным (при условии, что установлены другие соответствующие опции), но он не будет виден другим как таковой в P2P сети. Эта опция позволяет кошелькам автоматически обнаруживать публичные узлы (то есть, пользователю не приходится искать их «вручную»).
--rpc-bind-ipIP, от которого следует принимать данные. По умолчанию используется 127.0.0.1, поскольку API даёт все административные возможности в отношении узла. Можно установить 0.0.0.0, чтобы получать информацию по всем интерфейсам, но только в сочетании с опциями *-restricted-* и --confirm-external-bind.
--rpc-bind-portTCP порт, от которого следует принимать данные. По умолчанию 18081 основная сеть (mainnet), 28081 тестовая сеть (testnet) и 38081 отладочная сеть (stagenet).
--rpc-bind-ipv6-addressУказывает IPv6, который нужно отслеживать. По умолчанию ::1 (localhost). В данном случае применимы все те же примечания, что и к `--rpc-bind-ip.
--rpc-use-ipv6Включает IPv6 для RPC сервера (по умолчанию отключено).
--rpc-ignore-ipv4Игнорирует неудачную попытку привязки IPv4 к RPC. Эта опция пригодится только в том случае, если вы захотите использовать IPv6.
--rpc-restricted-bind-portTCP порт, от которого следует принимать данные ограниченной версией API. Ограниченную версию API можно использовать для создания общедоступного узла. Как вариант, можно ограничить доступ к полному API, используя брандмауэр, и по-прежнему использовать локальные запросы или заниматься локальным администрированием.
--confirm-external-bindПодтверждает, что вы сознательно установили --rpc-bind-ip как IP не локального хоста и вы понимаете возможные последствия.
--restricted-rpcОграничивает API таким образом, что он слушает только команды и не выдаёт чувствительной или конфиденциальной информации. Следует отметить, что это не имеет работает вместе с опцией --rpc-restricted-bind-port, поскольку в конечном счёте у вас будет два ограниченных API.
--rpc-sslВключает протокол TLS для RPC соединений. Один из вариантов: включён enabled | отключён disabled | автоматическое обнаружение autodetect (по умолчанию установлен режим автоматического обнаружения). Эту опцию следует включать, если вы подключаете удалённый кошелёк.
--rpc-ssl-private-keyУказывает путь к приватному ключу сервера в формате PEM. Генерируется при помощи инструмента monero-gen-ssl-cert. Это облегчает аутентификацию на сервере клиентом.
--rpc-ssl-certificateУказывает путь к сертификату сервера в формате PEM. Генерируется при помощи инструмента monero-gen-ssl-cert. Это облегчает аутентификацию на сервере клиентом.
--rpc-ssl-allowed-fingerprintsПоказывает идентификационные метки сертификатов, которые нужно принять. Это способ аутентификации клиентов.
--rpc-ssl-allow-any-certРазрешает использовать любой сертификат для подключающегося клиента.
--rpc-ssl-ca-certificatesУказывает путь к файлу, содержащему объединённые сертификаты формата PEM для замены системных CA.
--rpc-ssl-allow-chainedПозволяет использовать пользовательские объединённые сертификаты. Опция применима только в том случае, если у пользователя есть «настоящий» сертификат CA.
--rpc-loginУказывает username[:password] required to connect to API.
--rpc-access-control-originsЗадаёт список источников (разделённых запятыми), которым разрешено совместное использование ресурсов. Эта опция будет полезна, если вы захотите использовать monerod напрямую в браузере, посредством JavaScript (скажем так, используя сценарий чистого сетевого приложения). Эта опция позволяет monerod создавать надлежащие заголовки ответов HTTP CORS. При использовании этой опции также будет необходимо установить rpc-login. Тем не менее обычно API используется конечным приложением напрямую, поэтому необходимость в этой опции отсутствует.

Получение Monero

Это сетевые уведомления, которые выводит monerod. Существуют также уведомления кошелька, такие как --tx-notify, которые выводит monero-wallet-rpc, как описано здесь.

ОпцияОписание
--block-notify <arg>Запуск информации для каждого нового блока. <arg> должен содержать полный путь. Если <arg> содержит %s, он будет заменён хешем блока. Пример:
./monerod --block-notify="/usr/bin/echo %s"

Уведомления о блоках хороши тем, что обеспечивают оперативную информацию. Тем не менее всегда необходимо помнить о возможности пропуска некоторых уведомлений, поэтому периодически следует самостоятельно опрашивать API.

Также следует помнить о реорганизации блокчейна. Уведомления блоков могут относиться к одной и той же высоте. Небольшая реорганизация является естественным процессом и происходит ежедневно.
--block-rate-notify <arg>Запуск программы в том случае, если количество полученных блоков за последнее время будет сильно отличаться от ожидаемого. <arg> должен содержать полный путь. <arg> может содержать любой из символов %t, %b, %e, где:

%t будет означать количество минут в текущем окне;

%b будет означать количество блоков в текущем окне;

%e будет идеальным количеством блоков, ожидаемым в текущем окне.

Данная опция позволяет узнать о серьёзном падении хешрейта сети. Например, это может свидетельствовать о том, что значительная часть майнеров, присутствовавших в сети, перешла в тестовую сеть. Следует отметить, что такое событие не будет неопровержимым доказательством того, что это происходит на самом деле. Это может быть случайностью. Чем шире окно (параметр %t) и чем больше разница между фактическим и ожидаемым количеством блоков, тем вероятнее, что это будет свидетельствовать о возможной подготовке к реорганизации блокчейна посредством атаки двойной траты.

Рекомендация: если вы не управляете экономически важной биржей Monero или являетесь оператором, не руководствуйтесь этими данными. Их трудно проверить и легко неверно истолковать. В случае реальной атаки её целью будут высоколиквидные предприятия, а не малый бизнес.
--reorg-notify <arg>Запуск программы в случае реорганизации сети (то есть, если по крайней мере один блок будет убран из цепочки блокчейна). <arg> должен содержать полный путь. <arg> может содержать любой из символов %t, %b, %e, где:

%s означает высоту, на которой происходит разветвление;

%h означает высоту нового блокчейна;

%d указывает количество блоков, которое будет выброшено из старого блокчейна;

%nуказывает количество блоков, которое будет добавлено.

Эта опция позволяет узнать, когда из блокчейна убирается один блок и заменяется другими. Это происходит при проведении атаки 51%, но небольшая реорганизация может произойти и при обычных обстоятельствах. Параметр %d устанавливается в значение количества блоков, которое удаляется из старого блокчейна (таким образом, если это количество будет больше, чем количество ожидаемых подтверждений по входящим платежам, то платёж может быть отменён). Параметр %n устанавливается в значение количества блоков в новом блокчейне (таким образом, если это количество будет больше, чем количество ожидаемых подтверждений по входящим платежам, то любой входящий платёж в первом блоке будет автоматически исполнен на вашей платформе).

Рекомендация: если вы не управляете экономически важной биржей Monero или являетесь оператором, не используйте эту опцию. Просто учитывайте возможность реорганизации и требуйте по крайней мере 10 подтверждений перед тем, как завершить вашу сделку.

Рабочие параметры (опции)

Эти продвинутые опции позволяют оптимизировать работу узла monerod (зачастую за счёт надёжности).

ОпцияОписание
--prune-blockchainОбрезание позволяет сэкономить до 2/3 дискового пространства без какого-либо ущерба для функциональности. Для максимальной эффективности опцию следует использовать уже при первой синхронизации. Если добавить эту опцию позже, прошлые данные будут обрезаны только логически, но размер файла не уменьшится, и улучшения не произойдёт.

Если у вас уже имеется необрезанный блокчейн, используйте инструмент monero-blockchain-prune.

Недостаток этой опции заключается в том, что вы будете вносить меньший вклад в поддержку P2P сети Monero с точки зрения помощи в синхронизации новых узлов (до 1/8 от обычного вашего обычного вклада). Тем не менее, вы всё ещё будете приносить пользу в отношении ретрансляции новых транзакций и блоков.
--sync-pruned-blocksДелает возможной синхронизацию с узлами, поддерживающими только обрезанные блоки.
--db-sync-modeУказывает опции синхронизации, используя формат:
`[safe
--max-concurrencyМаксимальное количество используемых при работе потоков. При нулевом значении (0), заданным по умолчанию, используется общее количество потоков CPU.
--prep-blocks-threadsМаксимальное количество потоков, используемое при вычислении хешей блоков (PoW) в группах. По умолчанию значение составляет 4. Задайте меньшее значение, если не хотите, чтобы monerod излишне перегрузил ваш компьютер при синхронизации.
--fast-block-syncСинхронизация большую часть времени происходит при помощи «известных» хешей блоков. Значение 1 передаётся для включения, значение 0 для выключения. По умолчанию установлено в 1. Обычно для каждого блока узел должен вычислить соответствующий хеш, чтобы проверить доказательство работы майнера. Поскольку алгоритм доказательства работы протокола CryptoNight, используемый Monero, довольно затратен (даже с точки зрения верификации), monerod предлагает пропустить эти вычисления для старых блоков. Другими словами, это механизм доверия двоичному файлу monerod в отношении действительности PoW старых блоков, повышающий скорость синхронизации.
--block-sync-sizeУказывает, сколько блоков обрабатывается в одной группе во время синхронизации блокчейна. По умолчанию это количество составляет 20 блоков (сейчас) и составляло 100 блоков (ранее, то есть до версии v4). Значение, используемое по умолчанию, — 0. Интуитивно чем больше блоков имеется, тем больший размер группы вы будете использовать. Пример:
./monerod --block-sync-size=500
--bootstrap-daemon-addresshost:port «начального узла загрузки», который подсоединённые к нему кошельки могут использовать, даже пока этот узел ещё не до конца синхронизирован. Пример:
./monerod --bootstrap-daemon-address=opennode.xmr-tw.org:18089. Узел будет перенаправлять запросы на RPC загрузочного узла и кошелёк будет обрабатывать их автоматически. Очевидно, такая фаза загрузки влияет на анонимность, как и в случае, когда удалённый узел используется напрямую.
--bootstrap-daemon-loginУказывает username:password учётной записи демона начальной загрузки (если это требуется). Обычно открытые узлы не требуют какой-либо регистрации.
--no-syncОстанавливает синхронизацию. Вместо этого продолжает использовать демон начальной загрузки (если таковой установлен). См. коммит.

Майнинг

Следующие опции используются для конфигурирования соло-майнинга посредством CPU со стандартным программным стеком monerod. Эти опции будут по большей части полезны в следующих случаях:

  • для получения монет в отладочной сети или тестовой сети;
  • для проведения экспериментов и обучения;
  • если у вас есть дешёвый доступ к ресурсам CPU.

Тем не менее помните о том, что реальный майнинг происходит в пулах и при помощи высокопроизводительных GPU и CPU.

ОпцияОписание
--start-miningУказывает адрес кошелька, для которого будет происходить майнинг. Этот адрес должен быть стандартным! Ни подадрес, ни интегрированный адрес использоваться не могут.
--mining-threadsУказывает количество потоков CPU для майнинга. По умолчанию используется только один поток CPU. Для получения наилучших результатов следует указывать количество потоков, равное количеству физических ядер вашего CPU.
--extra-messages-fileУказывает файл для включения дополнительных сообщений в coinbase-транзакцию.
--bg-mining-enableОбеспечивает возможность «скромного» майнинга. В этом режиме для майнинга будет использоваться небольшой процент ваших системных ресурсов, и работа вашего компьютера не будет замедляться. Эта опция должна мотивировать людей к майнингу и как следствие, повысить уровень децентрализации. К слову, шансы найти блок при соло-майнинге посредством CPU довольно низки, но выше, чем при использовании этой «скромной» версии. Вы можете улучшить компромисс между «скромным» майнингом и мощностью, используя опцию --bg-*, описание которой приводятся ниже.
--bg-mining-ignore-batteryВ значении true предполагает работу при отсутствии информации о питании системы.
--bg-mining-min-idle-intervalУказывает интервал опроса в секундах для определения состояния системных ресурсов.
--bg-mining-idle-thresholdУказывает минимальный средний процент состояния системных ресурсов за интервал обратного опроса.
--bg-mining-miner-targetУказывает максимальный процент использования CPU майнером (майнерами).

Тестирование

Эти опции предназначены для разработчиков и тестировщиков проекта Monero. Обычным пользователям эти опции не нужны.

ОпцияОписание
--keep-alt-blocksСохраняет альтернативные блоки при перезагрузке. Может помочь при рассмотрении возможности реорганизации и т. д. Коммит. Исследовательский проект www.noncesense.org.
--test-drop-downloadОпция предназначена для тестирования сети: загрузки, быстрого сброса ВСЕХ блоков вместо их проверки/сохранения.
--test-drop-download-heightРаботает так же, как --test-drop-download, но после достижения определённой высоты блока. Значение, используемое по умолчанию, — 0.
--regtestЗапуск в режиме регрессивного тестирования.
--keep-fakechainНе даёт удалить существующую базу данных в режиме fakechain.
--fixed-difficultyЗадаёт фиксированную сложность тестирования. Значение, используемое по умолчанию, — 0.
--test-dbg-lock-sleepВремя до ухода в «спящий» режим. Значение, используемое по умолчанию, — 0. Используется для отладки до/после блокировки компьютера. Для тестирования хорошо подходят значения от 100 до 1000.
--save-graphСохранение всех данных в директорию Monero.

Унаследованные опции

Необходимость в этих опциях уже отсутствует. Они сохраняются в monerod исключительно в целях обратной совместимости.

ОпцияОписание
--fluffy-blocksРетранслирует «пушистые» блоки. Используется по умолчанию. Пушистый блок включает в себя только заголовок и список идентификаторов (ID) транзакций.
--no-fluffy-blocksРетранслирует классические полные блоки. Классический блок включает в себя все транзакции.
--show-time-statsВ официальной документации написано: «Показывает временную статистику при обработке блоков/транзакций и синхронизации диска», но не даёт никакого результата при обычной синхронизации блокчейна.
--zmq-rpc-bind-ipIP-адрес, который будет отслеживать ZMQ RPC сервером. По умолчанию устанавливается как 127.0.0.1. Пока эта опция не получила широкого распространения, так как интерфейс ZMQ не обеспечивает значимого преимущества в сравнении с классическим интерфейсом JSON-RPC.
--zmq-rpc-bind-portПорт, который будет отслеживать ZMQ RPC сервер. По умолчанию устанавливается как 18082 для основной сети (mainnet), 38082 для отладочной сети (stagenet) и 28082 для тестовой сети (testnet).
--db-typeУказывает тип базы данных. По умолчанию используется lmdb (он же и является единственном доступным типом базы данных).

Команды​

Команды обеспечивают доступ к определённым сервисам демона. Команды выполняются при работающей программе. Их названия соответствуют шаблону command_name.

Команды сгруппированы для простоты понимания. Сам демон не группирует команды каким бы то ни было образом.

Пример использования приводится в разделе, посвящённом первому запуску Monero. Команды также можно вводить посредством командной строки работающего monerod (если программа будет доступна).

Помощь, версионирование, состояние:

ОпцияОписание
help [<command>]Помощь по .
versionИнформация о версии ПО. Пример:
Monero 'Boron Butterfly' (v0.14.0.0-release)
statusИнформация о текущем состояния. Пример:
Height: 186754/186754 (100.0%) on stagenet, not mining, net hash 317 H/s, v9, up to date, 8(out)+0(in) connections, uptime 0d 3h 48m 47s

P2P сеть:

ОпцияОписание
print_plВыводит полный список одноранговых узлов.
print_pl_statsОтображает статистику по полному списку одноранговых узлов (отношение белых и серых узлов). Белые узлы находятся онлайн и доступны. Серые узлы находятся оффлайн, но monerod запоминает их для организации последующих сессий.
print_cnПоказывает подключенные узлы и состояние соединения (входящее/исходящее), а также другую статистику.
ban <IP> [<seconds>]Блокирует определённый <IP> (IP-адрес) на заданное количество <seconds> (секунд). По умолчанию время блокировки составляет 24 часа. Пример:
./monerod ban 187.63.135.161.
unban <IP>Снятие блокировки с заданного <IP> (IP-адреса).
bansПоказывает заблокированные на данный момент <IP> (IP-адреса). Пример:
187.63.135.161 banned for 86397 seconds.
in_peers <max_number>Устанавливает <max_number> (максимальное количество) входящие соединения от других одноранговых узлов.
out_peers <max_number>Устанавливает <max_number> (максимальное количество) исходящих соединений к другим одноранговым узлам.
limit [<kB/s>]Устанавливает общий лимит скорости загрузки / передачи данных.
limit_down [<kB/s>]Устанавливает лимит скорости передачи данных.
limit_up [<kB/s>]Устанавливает лимит скорости на передачу данных.

Пул транзакций

ОпцияОписание
flush_txpool [<txid>]Исключает указанную транзакцию из пула транзакций или очищает весь пул транзакций, если отдельная транзакция не была указана.
print_poolОтображает информацию о пуле транзакций в полном формате.
print_pool_shОтображает информацию о пуле транзакций в кратком формате.
print_pool_statsОтображает статистические данные пула транзакций (количество транзакций, объём памяти, комиссии, попытки двойной траты и так далее).

Транзакции

ОпцияОписание
print_coinbase_tx_sum <start_height> [<block_count>]Показывает сумму всех выпущенных монет и уплаченных комиссии в заданном диапазоне. Пример:
./monerod print_coinbase_tx_sum 0 1000000000000
print_tx <transaction_hash> [+hex] [+json]Показывает указанную транзакцию в формате JSON и/или HEX.
relay_tx <txid>Запускает ретрансляцию транзакции. Полезная опция, если вы по какой-то причине пожелаете ретранслировать транзакцию или же, если транзакция была ранее создана с параметром do_not_relay:true.

Блокчейн

ОпцияОписание
print_heightПоказывает высоту локального блокчейна.
sync_infoПоказывает прогресс синхронизации блокчейна и подсоединённые одноранговые узлы вместе со статистикой скачивания/загрузки.
print_bc <begin_height> [<end_height>]Показывает блоки в диапазоне от <begin_height> до <end_height>. Отображаемая информация включает в себя идентификатор блока, высоту, временную метку, версию, размер, вес, количество транзакций, не являющихся coinbase-транзакциями, сложность, нонс и вознаграждение.
print_block <block_hash> / <block_height>Показывает информацию в ключе указанного блока.
hard_fork_infoПоказывает текущую версию алгоритма консенсуса и высоту блока, на котором произойдёт следующий хардфорк, если таковой планируется.
is_key_image_spent <key_image>Проверяет, был ли потрачен указанный образ ключа. Образ ключа является хешем.

Управление демоном

ОпцияОписание
exit, stop_daemonЗапрос надлежащего отключения демона. Опции exit и stop_daemon идентичны (одна является альтернативой для другой).
set_log <level>/<{+,-,}categories>Устанавливает уровень детализации журнала собрытий/категорий, где <level> число от 0 до 4.
print_statusПоказывает, запущен ли демон.
update (check/download)Показывает, доступно ли обновление, и при необходимости позволяет загрузите его (hash обозначает SHA-256). В операционых системах по типу Linux для верификации воспользуйтесь командной sha256sum. Пример:
Update available: v0.13.0.4: https://downloads.getmonero.org/cli/monero-linux-x64-v0.13.0.4.tar.bz2, hash 693e1a0210201f65138ace679d1ab1928aca06bb6e679c20d8b4d2d8717e50d6
Update downloaded to: /opt/monero-v0.13.0.2/monero-linux-x64-v0.13.0.4.tar.bz2

Майнинг

ОпцияОписание
show_hrЗапрос демона monerod об остановке отображения текущего хешрейта. Используется только в том случае, если monerod находится в режиме майнинга.
hide_hrЗапрос демона monerod об отображении текущего хешрейта. Используется только в том случае, если monerod находится в режиме майнинга.
start_mining <addr> [<threads>] [do_background_mining] [ignore_battery]Запрос демона monerod о запуске майнинга. Вознаграждение за вычисление блока будет направлено на <addr>.
stop_miningЗапрос демона monerod об остановке майнинга.

Тестирование Monero

ОпцияОписание
start_save_graphЗапуск сохранения данных в директорию Monero.
stop_save_graphОстановка сохранения данных в директорию Monero.

Унаследованные опции

ОпцияОписание
saveСброс данных блокчейна на диск. Как правило, этого не требуется, поскольку monerod сохраняет блокчейн автоматически при выходе.
output_histogram [@<amount>] <min_count> [<max_count>]Показывает количество выходов для каждой суммы. Опция использовалась только до реализации RingCT. Старый кошелёк использовал эту опцию, чтобы определить, какие выходы можно использовать для смешивания. После введения RingCT размер сумм стал не важен, поскольку сами суммы теперь скрывались. Больше информации можно найти здесь в разделе ответов на monero.stackexchange.com.