Давайте начнем с объяснения, что такое нода (она же «Узел») в сети Блокчейн или в конкретной криптовалюте, как Ethereum.
В общем понимании, каждый участник сети криптовалюты является нодой.
Нода — это просто компьютер, на котором запущена программа (например, кошелек Биткоина). Ноды связаны с другими компьютерами (с той же установленной программой) для создания криптовалютной сети.
Другой термин для описания нод — это «клиенты», которые предоставляют функции кошелька.
Активные ноды Ethereum:
Карта нод по типам кошельков
Трекер нод по странам
Интерактивная карта нод Эфириума
Что такое нода
Нода — это подключенный к блокчейн-платформе компьютер-сервер с запущенной программой, например, кошелька биткоина. В сети она работает через протокол P2P, наподобие торрент-клиента, обмениваясь данными об операциях. Нода сохраняет часть либо всю информацию, связанную с блокчейн. Для узлов данного типа существует карта, на которой можно посмотреть географические точки планеты с активными в настоящее время полными нодами.
Например, сервис биткоин находится по адресу Bitnodes. Карта показывает концентрацию доступных сетевых узлов, найденных в разных странах по всему миру. Доступна «живая» карта нод в режиме реального времени. Дополнительные инструменты на сайте дают возможность проверить, принимает ли ваш клиент входящие соединения от других узлов, посмотреть таблицу лидеров, статус общедоступного узла.
Многообразие нод на криптовалютных полях
В зависимости от полномочий участника и объема хранимой на ПК информации различают следующие разновидности нод:
- Полные – компьютеры круглосуточно подключены к блокчейну и хранят всю информацию блочной конструкции. Независимые компоненты поддерживают работоспособность системы, загружают блоки и проверяют достоверность хранимых данных (отклоняют транзакции, не отвечающие консенсуальным алгоритмам).
- Облегченные ноды, посредством приложения, хранят заголовки блоков, подтверждают достоверность переводов. Зависимость от «полных» собратьев чревата вероятностью их дезинформации, что приведет к потерям финансов пользователей.
Блокчейн-технология действительно несовершенна, но со временем контролирующие алгоритмы буду доработаны крипто-сообществом и поддержаны майнерами.
Мастернода – привилегированный частичка криптовалюты
По своей структуре это «полная» разновидность «торрент-клиента», также запускающая процесс майнинга, проверяющая достоверность транзакций. За тяжелый труд мастернода взымает символическую плату с найденных в блоке средств.
Отличительные особенности участников системы заключаются в:
- структуре узла – для старта работы мощностей ПК недостаточно, требуется серверная реализация;
- пороге входа – на пользовательском кошельке хранится минимальный размер криптосредств;
- многофункциональности – особые ноды ускоряют работу системы, способствуют ее децентрализации и анонимности финансовых операций.
Технологию мастернод поддерживают не все криптовалюты, среди наиболее перспективных выделяются следующие:
- ZenCash – для старта работы требуется 42 токена ZEN, разработчики планируют создать децентрализованную систему (TOR) и анонимный мессенджер.
- Сибирский червонец (SIB) – российский стартап предлагает уникальный алгоритм хеширования вкупе с поддержкой многофункциональных компонентов.
- Bitradio – монеты зарабатываются путем прослушивания онлайн-радио. Для создания мастерноды требуется 2 500 BRO.
Сравнительно небольшой перечень расширяется еженедельно, однако новым криптовалютам нужно пробиться сквозь информационный шум и условия конкурирующего рынка.
Подробнее об универсальных компонентах блокчейна расскажет следующее видео:
Классификация нод
В качестве основных выделяют полную, облегченную, майнинг и мастер ноды.
Полная нода
Компьютер, подсоединенный к сети и полностью синхронизированный с блокчейн-системой. Хранит в себе все важные данные блокчейна с доступом к нему. Основная задача полной ноды — бесплатное обслуживание сети конкретной криптовалюты, загрузка и проверка блоков транзакций с соблюдением принципов консенсуса (установленных в сети правил) цифровой системы, а также «отключение» всех противоречивых блоков и мошеннических финансовых операций.
Такая нода — полностью независимый объект, за счет чего есть возможность сделать сеть максимально безопасной и децентрализованной. Чем большее число нод в сети, тем выше ее безопасность. Данное условие также снижает риск доступа с последующим управлением отдельных заинтересованных лиц к системе блокчейн вне зависимости от цифровой платформы.
Полные ноды имеют право голосовать за внесение изменений в сети, тем самым улучшая систему криптовалюты. Запрос игнорируется, если более 51 процента из них не согласны с предложением. Если сообщество не приходит к консенсусу, возможно создание цепочек — форков. Например, Bitcoin Cash.
Облегченная нода
Компьютер со специализированным ПО, подсоединенный к системе блокчейн определенной криптовалюты. Главная особенность данного типа узла состоит в невозможности хранения всех данных децентрализованной сети, допустимы лишь заголовки блоков для подтверждения истинности той или иной финансовой операции.
Облегченная нода находится в прямой зависимости от полной ноды, по этой причине у нее периодически могут возникать проблемы с подтверждением транзакций, противоречащих консенсусу блокчейн. Ее запуск не требует мощных ресурсов, это также не лучшим образом отражается на безопасности.
Майнинг нода
Полный или облегченный узел, целью которого является подтверждение выполнения необходимой работы по созданию блока. Принятое общее имя такой ноды — Proof of Work.
Для выполнения задачи майнеры должны относится к полным нодам. В ином случае возможен прием данных от аналогичных сторонних узлов в сети. Делается это с целью определения текущего состояния цепочки блоков и необходимых параметров для следующих блоков.
Вовлеченные в процесс участники могут использовать свои аппаратные элементы — графическая карта, ЦП, отдельный интегральный майнинг-блок — с целью решения криптографических задач. Пользователь, решивший задачу первым, передает свой результат в сеть для его проверки полными нодами. При достижении консенсуса ему дается возможность добавить блок в систему.
Справка! Работа майнера здесь поощряется заранее определенным числом монет дополнительно к комиссии за поддержание функционирования сети.
Мастернода
В отличие от полного узла, сама по себе не имеет возможность добавлять в блокчейн блоки. Ее единственной целью является ведение учета транзакций и их проверка. Дополнительное преимущество мастерноды заключается не только в защите сети, но и в получении доли вознаграждений за предоставленные услуги.
Для установки и запуска узла данного типа потребуется заблокировать определенную залоговую сумму средств. При этом подразумевается, что узел будет функционировать в постоянном режиме 24 часа, 7 дней в неделю. Допустимо открытие хостинга в том числе на виртуальном частном сервере.
DASH — самая известная криповалюта, работающая с протоколом мастерноды, и поддерживаемая тысячами пользователей по всему миру. Другие примеры:
- NEO — китайский аналог сети Ethereum;
- ZCoin — протокол Zerocoin, позиционирующий полную анонимность;
- Crown — платформа с поддержкой обмена сообщениями.
Системные требования для ноды криптовалюты
Размер блокчейна
Обращаю сразу внимание на самое основное. Внимательно следите за размером блокчейна валюты, ноду которой вы будете настраивать. Покупайте сервер с большим запасом, так как блокчейн некоторых криптовалют может стремительно расти. Из недавнего примера — эфир. До нового года, если не ошибаюсь, ее блокчейн был менее 100 гб, а сейчас что-то в районе 500 гб. У меня все ноды посыпались из-за этого, пришлось срочно решать вопрос со свободным местом.
Производительность дисков
Далее нужно обращать внимание на производительность дисков. Нода криптовалюты — это огромное количество мелких, зачастую очень мелких файлов, счет которых может идти на миллионы. Далее я подробно на этом остановлюсь, когда будем cardano устанавливать. Сейчас дам универсальный совет. Если у вас обычные SATA диски, то один диск нормально тянет одну ноду. Если ставить 2-3 ноды криптовалюты, то будет плохо, со временем сервер может зависать из-за огромного iowait.
Это очень условные примеры, потому что разные ноды по разному нагружают систему. Эфир больше всех, биткоин поменьше, остальные примерно одинаково.
Процессор и память
Я поднимаю ноды в виртуальных машинах. Обычно придерживаюсь таких параметров. Для ноды Etherium выделяю 4 ядра процессора, 8 гигабайт памяти. Для bitcoin 2 ядра, 8 памяти. Для всех остальных 2 ядра, 4 гб памяти. Если память есть свободная, то лучше всем по 8 давать.
Операционная система
Я буду устанавливать криптовалютные ноды на Ubuntu 16. Хоть я и не очень люблю эту систему, но так проще всего. Обычно разработчики нод объявляют поддержку именно этой системы. Под нее всегда есть готовые сборки и скрипты установки. С другой версией линукс придется тратить больше времени.
Самый простой вариант — использовать готовые образы docker. Я не знаю, легко ли они находятся под все криптовалюты и насколько актуальны. Сам я не использую докер в данном случае, потому что установка очень простая и лишняя прослойка в виде докера не нужна. Если вам реально нужны контейнеры докер для нод криптовалют, сможете собрать их сами, если умеете работать с docker.
Какие задачи решают ноды
Ноды разных типов решают определенные задачи, но имеются три основополагающих позиции:
- Следование сетевому консенсусу.
- Предоставление информации о количестве средств и транзакциях.
- Хранение копии подтвержденных транзакций.
В свою очередь майнеры создают новые блоки, облегченные и полные ноды отправляют новые транзакции и могут определять баланс своего кошелька. Последняя, кроме того, знает все транзакции и хранит копию блокчейна в целях безопасности.
Так как, большинство сетей не имеет выделенных серверов и в них отсутствуют централизованные управляющие органы, пользователи вынуждены соблюдать определенные правила, следование которым имеет решающее значение для целостности и безопасности сети криптовалют.
Немного о блокчеине
Криптовалюты и блокчейн
Большинство криптовалют основаны на технологии блокчейна. Грубо говоря, это означает следующее: база данных сети не централизована, а распределена по множеству блоков. Копии блоков распределены по всем держателям полной ноды — компьютера, подключенного к сети блокчеина. Как правило, держатель ноды получает вознаграждение от сети в виде комиссии. Для примера, для Bitcoin вознаграждение получает каждый держатель специальной ноды, который занимается майнингом. Таким образом, сеть блокчеина, благодаря своему самокопированию в каждую из нод и широкому географическому распространению становится децентрализованной и устойчивой к атакам. Так как все ноды замкнуты в единую сеть и синхронизация записи блоков идет одновременно для всех участников, попытка злоумышленника «подделать» криптовалюту и изменить запись на одном компьютере сразу же будет обнаружена и предотвращена другими нодами, чьи копии блокчейна отличаются от фальсификата.
Сама схема транзакций в сети блокчеина может быть описана вот как. Допустим, владелец кошелька X переводит свои активы в кошелек Y. Операция перевода разбивается на блоки. У каждого блока есть свой номер и хэш-сумма от предыдущего блока. Далее в дело вступают ноды. Они сначала проверяют, нет ли в операции ошибок. А потом каждый участник сети записывает операцию в свою копию базы данных. Наконец, проверенный блок добавляют к единой сети блокчейна. В нем содержится вся информация обо всех транзакциях, которые завершены ранее. Перевод средств завершен!
Как запустить ноду
Развертывание ноды может осуществить любой пользователь с доступом к компьютеру с удовлетворяющими минимальным техническим требованиям параметрами и стабильным скоростным соединением с интернетом. Например, для биткоин-среды это:
- десктоп или ноутбук под управлением самой свежей версии Windows, MacOS X или Linux (например, Ubuntu);
- 220 Гб свободного пространства на жестком диске с минимальной скоростью чтения/записи 90 – 100 МВ/с;
- оперативная память (RAM) — 2 – 4 Гб;
- широкополосное интернет-соединение (скорость загрузки не менее 400 Кб/с) с неограниченными высокими лимитами загрузки.
В случае с полной нодой устройство должно работать в постоянном режиме, минимальное значение — 6 часов в сутки.
Установка клиента кардинально не отличается от инсталляции обычного программного обеспечения на компьютер. В случае с биткоином это Bitcoin Core — самая популярная программа с поддержкой широким сообществом разработчиков. Большая часть инсталляции сводится к установке непосредственно кошелька. Для скачивания программы необходимо зайти на официальный сайт и загрузить последнюю версию Bitcoin Core.
Справка! Полную ноду можно развернуть как на обычном персональном компьютере с соответствующими характеристиками, так и на виртуальном сервере. Кроме того, можно приобрести специализированное отдельное физическое устройство, которых с каждым годом становиться все больше.
Технические особенности
Экосистема блокчейн построена на сетевой архитектуре P2P (peer-to-peer). Это значит, что все узлы сети равноправны. Правда, в некоторых криптовалютах система более сложная и есть ноды с особыми полномочиями, но об этом давайте поговорим чуть позже.
Сам термин peer-to-peer, вовсе не нов, протокол для прямого обмена пакетами данных использовался меломанами в сети Napster еще в Миллениум. А еще раньше была создана сеть по обмену информацией между радиотелескопами, установленными в разных точках планеты для поиска внеземной цивилизации. Конечно, блокчейн-экосистема — это совсем другой уровень, намного более высокий технологический уровень прямого обмена файлы, но принцип действия у них один и тот же.
В каждой P2P-сети отдельная единица оборудования называется нодой. Каждый узел обеспечивает предоставление сетевых услуг и, взаимодействуя с другими узлами, гарантирует стабильное функционирование сети.
Значит, мы пришли к выводу, что блокчейн-экосистема — это группа равноправных узлов, исполняющих условия P2P-протокола для данной криптовалюты. Все операции управляются и координируются по канонам децентрализованной распределенной сети, что требует постоянного взаимодействия узлов. Если нода отключится, она на некоторое время выпадет из сети и для восстановления функциональности потребуется ресинхронизация. Чем больше узлов, тем выше масштабируемость сети и скорость обработки операций.
Каждый участник добровольно предоставляет свое оборудование для поддержки работы блокчейна и эти услуги ему не оплачиваются. Он просто устанавливает специальный софт, разработанный под конкретную криптовалюту. Полная нода, выполняет функции маршрутизации, наполнения базы и поддержки образа глобального блокчейна.
У молодых криптопроектов нода имеет функции майнинга, но все же для этого лучше использовать специальные приложения. Хотя без кошелька в любом случае не обойтись. Проверка транзакций и генерация новых блоков, зачастую требует больше вычислительных ресурсов, чем есть в обычном ПК. Поэтому чтобы зарабатывать на предоставлении услуг сети, требуется специальное железо, майнинг-фермы и АСИКи.
Однако существует достаточно много «экологичных» блокчейн-сетей, в которых можно зарабатывать деньги установив специальную программу на компьютере или виртуальном сервере. И, конечно, запуск ноды при этом обязателен. Сетевые узлы используют один и тот же консенсусный протокол, и должны регулярно обновляться для сохранения совместимости.
Что такое мастернода
Это определенным образом настроенная полная нода, которая делит с майнерами вознаграждения за обслуживание и поддержку сети и предлагающая системе свои вычислительные ресурсы. Самая известная криптовалютная единица, работающая с системой мастернод, — Dash. Другие примеры, — Syscoin, PIVX. В такой системе, как NEM мастерноды носят название «суперноды» и функционируют без задействованных криптовалютных средств путем конечной API-точки.
Основной задачей мастернод является обеспечение и поддержка повышенной анонимности блокчейн-платформы, где данные о блоках и транзакциях не записываются. По этой причине большинство анонимных цифровых монет нуждаются в участниках, готовых стать независимыми мастернодами.
На май 2022 года в системе DASH активны 5000 мастернод. Их количество определенно сказывается на сетевой безопасности. Рост числа мастернод увеличивает спрос на монеты и соответственно делает атаку на сеть неоправданно дорогостоящей.
Виртуальные частные серверы (VPS) и их использование с нодами
Независимо от того, решили вы использовать виртуальный частный сервер или нет, зависит от ваших личных предпочтений.
Если вы решите запустить мастерноду, узел Lightning или даже узел холодного хранения монет, VPS будет выгоден, поскольку вы платите небольшую плату в обмен на защиту от DDoS-атак, не требуя покупки какого-либо оборудования и не заботясь о пропускной способности.
С другой стороны, если вы не примете достаточных мер безопасности, вы рискуете подвергнуть взлому ваш сервер и хищению ваших средств, если вы храните свои монеты в этих кошельках.
Это основы, но мы бы рекомендовали подробно изучить серверы VPS, прежде чем принимать решение о том, покупать ли его или нет.
Как запустить мастерноду
Создание и запуск мастерноды можно осуществить, выбрав из двух вариантов:
- Покупка места на одном из специализированных хостингов.
- Самостоятельная настройка сервера.
Установка и запуск мастерноды — обширная и достаточно сложная тема. Алгоритм для запуска узла для DASH:
- Покупаем виртуальный сервер или специализированный хостинг либо проводим процедуру настройки собственной машины.
- Устанавливаем файл кошелька на домашнее устройство, синхронизируемся с блокчейн-платформой.
- Генерируем ключи посредством команд masternode_genkey и getaccountaddress_0 в меню Tools.
- Шифруем кошелек через использование пароля.
- Обязательно создаем резервные копии на отдельных носителях в нескольких экземплярах (можно использовать флешку, внешний жесткий диск, прочие переносные устройства).
- Отправляем 1000 DASH по своему адресу. Это приблизительно 74 тысяч долларов по курсу на конец мая 2022 года.
- Устанавливаем и настраиваем на виртуальном сервере dashcore, при приобретении специализированного хостинга установка данного пакета не потребуется.
- Копируем файл-конфигуратор masternode.conf из виртуального сервера в директорию с кошельком на домашнем устройстве.
- Генерируем ключ кошелька Dash Core.
Выполнив все необходимое, закрываем кошелек на локальной машине — он необходим лишь для хранения средств, когда как компьютер с мастернодой функционирует полностью независимо.
От пользователя потребуется на постоянной основе отслеживать обновления системы. Большая или меньшая часть программных компонентов при выходе свежих версий претерпевают серьезные изменения.
В связи с этим становится невозможным использование более ранних инструкций. Актуальная информация по настройке сервера и кошелька для мастерноды доступна в руководствах на официальном форуме DASH.
Настройка мастерноды на собственном сервере или VPS — еще более сложная процедура, требующая от пользователя умения работы с командной строкой в операционной системе среды Linux. Самый простой способ — приобрести место на специализированном хостинге для мастернод. В этом случае рекомендуется пользоваться услугами проверенных компаний.
Следует сказать, что такие сервисы предлагают тарифы, стоимость которых почти в два раза больше по сравнению с арендой VPS. Но при этом пользователю не придется самостоятельно настраивать сервер — для запуска мастерноды нужно всего лишь загрузить файл настроек в виде masternode.conf, после чего подключиться к кошельку на локальной машине.
Определение
Углубимся немного в историю, первая в мире криптовалюта появилась в 2009 году, всем известно, что это был Bitcoin. Именно Bitcoin является наиболее перспективным и востребованным инвестиционным инструмент, он является более или менее понятным для потенциального пользователя. На самом деле виртуальная монета представляет собой пять основных составляющих:
- транзакции виртуальной валюты осуществляется с одного адреса на другой, для этого лишь нужно получить уникальный шифр и приватный ключ;
- операции с виртуальными монетами представляют собой программу сценариев, то есть скриптов, сложенных последовательно в блоке транзакции, они между адресами зашифрованы;
- все транзакции складываются в блоке, а они, в свою очередь, в блокчейн;
- блокчейн представляет собой сводный отчет, в котором сохраняются блоки операций, все они взаимосвязаны и подписаны;
- криптовалюту добывают пользователи или майнеры, которые благодаря мощности электронно-вычислительной машины решают сложные математические задачи, и отвечают за корректность информации в блокчейне, затем получают вознаграждение в виде виртуальных монет.
Каждый компьютер, который добывает виртуальную монету может обмениваться информацией с другими такими же компьютерами, и они между собой образуют большую сеть. Именно она и называется нодой. Кстати, в переводе с английского нода – это узел, постольку, поскольку система криптовалюты децентрализованная, отсюда следует, что чем больше нод в сети, тем лучше.
Что касается виртуальной валюты, то ее транзакция — это часть файла, которая должна попасть в блок, а потом блокчейн. Но разница с торрентом заключается в том, что здесь сложнее алгоритм проверки корректности данных. И нельзя не сказать о том, что Bitcoin значительно отличается от программы торрент благодаря тому, что здесь протокол не ограничивается блокчейном.
И все же, ноды в криптовалюте — что это? Ноды различают полные и неполные. Полную ноду мы только что описали выше, она хранит в себе копию блокчейна и имеет возможность проверить правильность приведенных в блоках операциях. Неполная нода отличается тем, что она используется для перевода виртуальных денег в качестве клиента, для блокчейна она не имеет никакой пользы и ее легко ввести в заблуждение.
Нужно сказать, что система блокчейна сама по себе не идеальна, по той простой причине, что для проведения внутри нее транзакций нужно хранить всю цепочку блоков. Но при этом транзакции зашифрованы, и неизвестно, какой адрес биткоина, кому принадлежит. Говоря простыми словами, пользователям блока транзакции видно все операции по счету, но неизвестен лишь, кто его владелец. Например, при оплате какой-либо покупки с банковской карты видно, кому принадлежит пластик, в данном случае гарантирована полная анонимность, однако можно получить адрес пользователя и посмотреть все его операции.
Для криптовалюты это является большой проблемой, поэтому создатели попытались предпринять некоторые действия, чтобы от нее избавиться. При совершении операций пользователь должен указывать новый адрес, чтобы распределить средства на разные адреса, которых может быть сотня
Но такая мера осторожности является лишь инициативой самого пользователя
В общем в итоге хочется сказать, что для решения проблемы анонимности, были разработаны специальные Bitcoin миксеры, которые работают по определенному принципу. Например, для того чтобы совершить транзакцию анонимно, то есть, чтобы пользователи цепочки не смогли установить отправителя, нужно обратиться к одному из сервисов, перевести ему деньги и сообщить номер получателя. Схема довольно простая: сервис получает деньги от нескольких пользователей одновременно, перемешивает виртуальные монеты и получателю уже переводит нужную сумму, но только от своего имени.
Используя миксер, трудно будет определить, кто, кому и сколько перевел виртуальных монет. Хотя, с другой стороны, сервис данную информацию сохраняет. Здесь нужно сказать, что появление криптовалюты было связано с тем, что все денежные операции в реальной валюте легко отслеживаются, и могут быть установлены контролирующими органами, благодаря шифрованию, данная проблема была решена. Но вместе с тем появилось и другая проблема, криптовалюта не признается в мире, как платежное средство, хотя в некоторых государствах уже рассматривается правительством.
Как получать доход от мастерноды
Для получения дохода от мастерноды необходимо вложить собственные средства. Например, минимальное количество для создания узла для криптовалюты DASH составляет 1000 монет. Награда за создание блока в рассматриваемой системе криптовалют распределяется в пропорциях:
- вознаграждение майнера — 45 процентов;
- выплата всем владельцам мастернод — 45 процентов;
- пополнение и поддержка системы Dash — 10 процентов.
Более конкретно, по состоянию на конец мая 2022 года вознаграждение за создание блока составило сумму, эквивалентную примерно 3,35 DASH. В это же время в сети функционировало 4850 активных мастернод и каждый владелец соответствующего узла получил приблизительно 0,0007 DASH с каждого блока, что эквивалентно 0,05 доллара США при текущем курсе криптовалюты 74 доллара.
В Dash новый блок генерируется один раз в 150 секунд в среднем. Это означает, что в сутки владельцы мастернод получают приблизительно по 29 долларов каждый.
Прогнозируемое время окупаемости мастерноды в Dash, если отталкиваться от указанного ранее момента и ориентироваться на текущий курс, составляет приблизительно 7 — 8 лет.
Владельцы мастернод могут получать весомый «внеплановый» доход при скачкообразном росте курса криптовалют. Например, пользователи, заморозившие 1000 DASH в 2015 году, в течение следующих двух лет получали 500 – 1000 процентов прибыли ежегодно. И нельзя исключить, что в 2022 году покупатели мастернод получат не менее весомую прибыль благодаря продвижению и росту рынка криптовалют.
Более конкретную информацию по получению доходов от мастерноды можно получить на сайте masternode.online. Сервис показывает данные по монете: ее цена, капитализация, объем торгов, возврат инвестиций (ROI), число нод и число монет, необходимых для участия в ставке.
Мастерноды в современных криптовалютах
Было бы странно, если идею мастернод не подхватили и не понеслись штамповать форки. Дело даже не только и не столько в преимуществах этой технологии, а в том, что для открытия мастерноды вам необходимо намайнить или купить нужную криптовалюту.
Если вы её намайнили для мастерноды и не слили, не сбив тем самым курс, — это для молодой монеты плюс. Если вы её купили — вообще, отлично — вы вложили в крипту реальные деньги, повысив её стоимость и став «долгосрочным инвестором». Технология мастернод и необходимость «холдить» ощутимые суммы на счетах сильно помогает криптовалюте на старте.
Учитывая вышесказанное, стоит открывать мастерноду только той монетки, достоинства которой не ограничиваются возможностью открыть мастерноду. Иначе есть риск остаться с крупной суммой стремительно дешевеющей крипты, купленной для мастерноды.
Естественно, стоит учитывать стоимость содержания мастерноды. Возможно, содержание её будет равно получаемому с её помощью доходу, или же будет его превышать. Система саморегулирующаяся — как только прибыль начинает расти, начинают подниматься новые мастерноды — получать сверхприбыли вам никто не даст.
В общем, к выбору криптовалюты для мастерноды нужно подходить так же, как и к выбору криптовалюты для инвестирования.
Чтобы удачно определиться с выбором, каждый начинающий инвестор должен задать себе следующие вопросы:
Когда монета выбрана, можно посчитать, выгодно ли вам будет содержать мастерноду для неё — формула суточного дохода, приведённая выше для DASH, подходит для подавляющего большинства криптовалют с мастернодами. Переменные для формулы можно узнать на официальном сайте валюты или из анонсов на форумах.
Посмотрим на несколько современных представителей валют с мастернодами.
ZenCash (ZEN) — Форк Zcash classic. У разработчиков глобальные планы по построению на мастернодах децентрализованной сети типа TOR и децентрализованного мессенджера. Для поднятия мастерноды необходимо иметь на счетах 42 монеты, что на сегодня составляет 1050 USD. Между всеми нодами распределяется 3,5% награды за намайненный блок. Посмотреть количество нод и посчитать прибыльность можно на сервисе SecurenodesNaZensystem или же произвести рассчёты по вышеприведённой формуле. На данный момент мастернода приносит 0,0378 монеты в день, 33% годовых от необходимых для поднятия мастерноды средств.
Exclusive Coin (EXCL) — монета с доказательством работы PoS. 1 монета за блок, из которой ровно половина делится между мастернодами. Для открытия мастерноды требуются 5 000 монет.
Сибирский червонец (SIB) — криптовалюта с уникальным алгоритмом хэширования. Мастерноды в ней используются для «анонимных платежей» как в Dash. Текущую доходность мастернод (а также все необходимые данные для самостоятельных расчётов) можно получить на Sibinform.
Можно продолжать, но за время описания существующих монет появится с десяток новых, так что дело это неблагодарное. Большинство разработчиков не изобретают ничего нового, лишь добавляя мастерноды в существующие алгоритмы. Прибыльность рассчитывается по приведённой выше формуле.
Многопоточный сервер
Веб-приложения, написанные следуя клиент/серверной архитектуре, работают по следующей схеме — клиент запрашивает нужный ресурс у сервера и сервер отправляет ресурс в ответ. В этой схеме сервер, ответив на запрос, прерывает соединение.
Такая модель эффективна поскольку каждый запрос к серверу потребляет ресурсы (память, процессорное время и т.д.). Для того чтобы обрабатывать каждый последующий запрос от клиента, сервер должен завершить обработку предыдущего.
Значит ли это, что сервер может обрабатывать только один запрос за раз? Не совсем! Когда сервер получает новый запрос он создаёт отдельный поток для его обработки.
Поток, если простыми словами, это время и ресурсы, что CPU выделаят на выполнение небольшого блока инструкций. С учётом сказанного, сервер может обрабатывать несколько запросов одновременно, но только по одному на поток. Такая модель так же называться thread-per-request model.
Для обработки N запросов серверу нужно N потоков. Если сервер получает N+1 запросов, тогда он должен ждать пока один из потоков не станет доступным.
На рисунке выше, сервер может обрабатывать до 4 запросов (потоков) единовременно и когда он получает следующие 3 запроса, эти запросы должны ждать пока любой из этих 4 потоков не станет доступным.
Один из способов избавиться от ограничений — добавить больше ресурсов (памяти, ядер процессора и т. д.) на сервер, но это не самое лучшее решение….
И, конечно, не забываем о технологических ограничениях.
Блокирующий ввод/вывод
Ограниченное число потоков на сервере не единственная проблема. Возможно, Вам стало интересно почему один поток не может обрабатывать несколько запросов одновременно? всё из-за блокирующих операций ввода/вывода.
Допустим, Вы разрабатываете онлайн магазин и Вам нужна страница где пользователь может просматривать список всех товаров.
Пользователь стучится на https://yourstore.com/products и сервер рендерит HTML файл со всеми продуктами с базы данных в ответ. Совсем не сложно, да?
Но, что же происходит за кулисами?
- Когда пользователь стучится на /products особый метод или функция должна выполниться, что бы обработать запрос. Маленький кусочек кода (Ваш или фреймворка) анализирует URL-адрес запроса и ищет подходящий метод или функцию. Поток работает.
- Теперь нужный метод или функция выполняется, так как и в первом пункте — поток работает.
- Так как Вы хороший разработчик, Вы сохраняете все системные логи в файл, ну и конечно же, что бы быть уверенными, что роутер выполняет нужный метод/функцию — Вы так же логируете строку “Method X executing!!». Но всё это блокирующие операции ввода/вывода. Поток ждёт.
- Все логи сохранены и следующие строки функции выполняются. Поток работает снова.
- Время обращаться к базе данных и получать все продукты — простой запрос, вроде SELECT * FROM products, выполняет свою работу, но угадайте что? Да-да, это блокирующая операция ввода/вывода. Поток ждёт.
- Вы получили массив или список всех продуктов, но убедитесь, что Вы всё это залогировали. Поток ждёт.
- Теперь у Вас есть все продукты и пришло время рендерить шаблон для будущей страницы, но перед этим Вам нужно их прочитать. Поток ждёт.
- Движок рендеринга делает свою работу и шлёт ответ клиенту. Поток работает снова.
- Поток свободен, словно птица в небесах.
На сколько медленны операции ввода/вывода? Ну это зависит от конкретной. Давайте обратимся к таблице:
Операции сети и чтения с диска слишком медленные. Представьте сколько запросов или обращений к внешним API ваша система могла бы обработать за это время.
Подбивая итоги: операции ввода/вывода заставляют поток ждать и тратить ресурсы впустую.
Плата за создание мастерноды
Создание мастерноды — дорогой процесс, доступный далеко не каждому инвестору. Так как эти узлы обладают расширенным набором прав, они должны управляться ограниченным числом участников, настроенных на ответственную работу в сети. В результате каждый, кто хочет настроить мастерноду, должен пройти своеобразный финансовый ценз — купить большое количество криптовалюты.
Сумма, определенная правилами работы сети, замораживается на кошельке владельца мастерноды. Только после этого можно приступать к настройке узла и получать вознаграждение. Финансовый ценз при создании masternode можно сравнить с работой алгоритма консенсуса Proof-of-Stake, в котором вероятность получения награды зависит от количества монет, находящихся на кошельке владельца. Однако при создании мастерноды требуется лишь факт заморозки конкретной суммы: ее увеличение никак не повлияет на размер вознаграждения.
Рисунок 3. Главный принцип механизма консенсуса Proof-of-Stake.
Несмотря на то, что принцип работы мастернод во многом похож на алгоритм Proof-of-Stake, важно понимать разницу между этими понятиями. PoS применяется ко всем без исключения транзакциям в блокчейне, в то время как мастерноды могут работать в связке с любым механизмом консенсуса. Например, криптовалюта Dash поддерживает мастерноды, но для создания блоков использует алгоритм Proof-of-Work, основанный на классическом майнинге.
Каждая криптовалюта обладает собственным порогом вхождения для создания мастерноды. Например, в Dash владелец такого узла должен держать на своем кошельке ровно 1 тысячу монет. На сегодня эта сумма примерно равна $ 390 тысячам, что исключает возможность создания мастерноды для большинства пользователей. Однако, именно в этом и состоит цель разработчиков: стабильность главных узлов обеспечивается высокой стоимостью их создания и подкрепляется интересами серьезных инвесторов.
Цикл событий
Цикл событий — это магия, которая происходит внутри Node.js. Это буквально бесконечный цикл и на самом деле один поток.
Libuv — C библиотека которая реализует этот паттерн и является частью ядра Node.js. Вы можете узнать больше о libuv здесь.
Цикл событий имеет 6 фаз, каждое исполнение всех 6 фаз называют tick-ом.
- timers: в этой фазе выполняются коллбэки, запланированные методами setTimeout() и setInterval();
- pending callbacks: выполняются почти все коллбэки, за исключением событий close, таймеров и setImmediate();
- idle, prepare: используется только для внутренних целей;
- poll: ответственен за получение новых событий ввода/вывода. Node.js может блокироваться на этом этапе;
- check: коллбэки, вызванные методом setImmediate(), выполняються на этом этапе;
- close callbacks: например, socket.on(‘close’, …);
Хорошо, есть только один поток, и этот поток и есть цикл событий, но тогда кто выполняет все операции ввода/вывода?
Обратите внимание!!! Когда циклу событий нужно выполнить операцию ввода/вывода он использует поток ОС с тредпула (thread pool), а когда задача выполнена, коллбэк ставится в очередь во время фазы pending callbacks.
Разве это не круто?
Node.js кажется идеальным! Вы можете создавать всё, что захотите.
Давайте напишем API для вычислений простых чисел.
Простое число — это целое (натуральное) число больше единицы и делимое только на 1 и на само себя.
Дано число N, API должен вычислять и возвращать первые N простых чисел в список (или массив).
primes.js index.js
prime.js это реализация нужных вычислений: функция isPrime проверяет является ли число простым, а nthPrime возвращает N таких чисел.
Файл же index.js отвечает за создание сервера и использует модуль prime.js для обработки каждого запроса на /primes. Число N прокидывается через строку запроса в URL-адресе.
Что бы получить первых 20 простых чисел нам нужно сделать запрос на https://localhost:8080/primes?n=20
Предположим, к нам стучатся 3 клиента и пытаются получить доступ к нашему не блокирующемуся вводом/выводом API:
- Первый запрашивает 5 простых чисел каждую секунду.
- Второй запрашивает 1000 простых чисел каждую секунду
- Третий запрашивает 10 000 000 000 простых чисел, но…
Когда третий клиент шлёт запрос — главный поток блокируется и это главный признак проблемы CPU-ёмких задач. Когда главный поток занят исполнением «тяжёлой» задачи он становится недоступен для других задач.
Но как насчёт libuv? Если Вы помните, эта библиотека помогает Node.js исполнять операции ввода/вывода с помощью потоков ОС избегая блокировки главного потока и Вы абсолютно правы, это решение нашей проблемы, но для того, что бы это стало возможным, наш модуль должен быть написан на языке C++, что бы libuv могла с ним работать.
К счастью, начиная с v10.5 в Node.js добавлен нативный модуль Worker Threads.
Как говорит нам документация:
Воркеры полезны для выполнения CPU-ёмких JavaScript операций; не используйте их для операций ввода/вывода, уже встроенные в Node.js механизмы более эффективно справляться с такими задачи, чем Worker thread.
Проблема
C10k (англ. C10k; 10k connections — проблема 10 тысяч соединений)
В ранние 2000-е, серверные и клиентские машины были медленными. Проблема возникала при параллельной обработке 10 000 клиентских соединений к одной машине.
Но почему традиционная модель thread-per-request (поток на запрос) не могла решить эту проблему? Что ж, давайте используем немного математики.
Нативная реализация потоков выделаят больше 1 Мб памяти на поток, выходя из этого — для 10 тысяч потоков требуется 10 Гб оперативной памяти и это только для стека потоков. Да, и не забывайте, мы в начале 2000-х!!
В наши дни серверные и клиентские компьютеры работают быстрее и эффективней и почти любой язык программирования или фреймворк справляются с этой проблемой. Но фактически проблема не исчерпана. Для 10 миллионов клиентских соединений к одной машине проблема возвращается вновь (но теперь она C10M Problem).
Node.js
Node.js это серверная платформа, что работает на движке Google Chrome — V8, который умеет компилировать JavaScript код в машинный код.
Node.js использует событийно-ориентированную модель и неблокирующую ввод / вывод архитектуру, что делает его легковесным и эффективным. Это не фреймворк, и не библиотека, это среда выполнения JavaScript.
Давайте напишем маленький пример:
Non-blocking I/O
Node.js использует неблокирующие ввод/вывод операции, что же это значит:
- Главный поток не будет блокироваться операциями ввода/вывода.
- Сервер будет продолжать обслуживать запросы.
- Нам придётся работать с асинхронным кодом.
Давайте напишем пример, в котором на запрос к /home сервер в ответ шлёт HTML страницу, а для всех других запросов — ‘Hello World’. Что бы отослать HTML страницу сначала ее нужно прочитать из файла.
home.html index.js
Если запрашиваемый url-адрес /home, тогда используется нативный модуль fs для чтения файла home.html.
Функции что попадают в http.createServer и fs.readFile как аргументы — колбэки. Эти функции будут выполнены в какой-то из моментов в будущем (Первая, как только сервер получит запрос, а вторая — когда файл будет прочитан с диска и помещён в буфер).
Пока файл считывается с диска, Node.js может обрабатывать другие запросы и даже считывать файл снова и всё это в одном потоке… но как?!