Делегированный Харвестинг


 

Харвестинг

Что такое харвестинг

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

 

Алгоритм харвестинга

Алгоритм харвестинга, применяемый в NEM, назвали POI — доказательство значимостью. Собственно харвестингом занимается не узел как физическая единица или NIS, работающая на узле, а аккаунты через эту NIS. На одном IP может работать только одна NIS, т.е. один узел это одна NIS, но через одну NIS может харвестить любое количество аккаунтов. При поощрении аккаунта учитываются три фактора:

  • количество монет на аккаунте
  • активность аккаунта в транзакциях
  • время нахождения монет на аккаунте

В итоге вычисляется интегральный коэффициент значимости аккаунта (Importance of account to the NEM cloud), который показывает, с какой вероятностью данный аккаунт “найдёт” очередной блок для блокчейна; комиссии с транзакций, включённых в этот блок, зачисляются на его счёт. Коэффициент значимости аккаунта выражается в продецимилле, он же базисный пункт, экзотическая единица измерения долей, 1‱ = 0,01% = 0,0001.

При больших суммах на аккаунте бóльшую роль играет 1-й параметр, а 2-й и 3-й параметры слабо действуют, и POI работает почти как POS. Чем меньше сумма, тем сильнее влияние 2-го и 3-го параметров. Таким образом, аккаунт например со 100k XEM может увеличить свой коэффициент значимости до 3 раз за счёт своей активности и стабильности присутствия в сети, в то время как аккаунт со 100M XEM не сможет сделать этого.
https://forum.nem.io/t/i-dont-fully-understand-why-poi-is-sustainable/3194/9

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

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

 

Время созревания монет

Фактический баланс, сумма, которую вы видите в браузере, делится на две части: активную (vested) и пассивную (unvested). Для харвестинга активная часть баланса должна быть ≥ 10.000 XEM. В определённые моменты времени (на блоках, абсолютные номера которых кратны 1440 плюс 1: 1*1440+1, 2*1440+1, 3*1440+1 , …), 1/10 пассивной части баланса превращается в активную часть баланса. Поэтому большие суммы начинают харвестить быстро, а «небольшим» суммам (в пределах от 10k XEM до 100k XEM) потребуется несколько суток, чтобы накопить достаточную активную часть.

Процесс перехода монет из пассивной части в активную называется созреванием монет.

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

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

 

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

Например (см. график), если сумма:
___>100k XEM, то харвестинг начнётся не более чем через сутки,
___=50k XEM, то харвестинг начнётся через промежуток времени от 2 до 3 суток,
___=20k XEM, то харвестинг начнётся через промежуток времени от 6 до 7 суток и т.д.

Если активная часть баланса < 10k XEM, то при попытке начать харвестинг будет получена ERROR 700 (в NCC).
Если активная часть баланса ≥ 10k XEM, но уже харвестит другой аккаунт, то будет сообщение ERROR 306 (в NCC).

Два типа харвестинга

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

Запуск локального харвестинга возможен сразу как только возникает в этом необходимость. В этой оперативности его плюс, и поэтому его запуск был сделан возможным в NCC, первом официальном кошельке NEM. Но при запуске локального харвестинга аккаунт, который харвестит, передаёт NIS непосредственно свой приватный ключ. Что небезопасно, и это его огромный минус, поэтому в последующих кошельках эта опция отсутствует. Для снижения риска в NCC локальный харвестинг мог запускаться только на локальном компьютере, т.е. рассматривалась только NIS по адресу localhost. Отсюда и название этого типа харвестинга.

При делегированном харвестинге право харвестинга передаётся аккаунту-посреднику, который автоматически создаётся при активации делегированного харвестинга. Процесс активации (и деактивации в дальнейшем) занимает примерно 6 часов времени (360 тайм-блоков) и за его регистрацию в блокчейне взимается небольшая комиссия. Зато при запуске  делегированного харвестинга основной аккаунт передаёт NIS не свой приватный ключ, а приватный ключ пустого аккаунта-посредника. Таким образом достигается абсолютная безопасность для основного аккаунта, его приватный ключ «не светится». Все монеты, добываемые в процессе харвестинга, поступают непосредственно на основной аккаунт, аккаунт-посредник остаётся пустым.

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

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

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

Делегированный харвестинг, общие положения

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

Активация делегированного харвестинга

Прежде чем запустить делегированный харвестинг, его надо активировать. Активация может быть произведена через любую NIS, но делегированный харвестинг активируется для конкретного аккаунта и в привязке к конкретному файлу wlt. Процесс активации инерционен и занимает 360 тайм-блоков (≈ 6 часов). За активацию взимается комиссия 6 XEM. Этим действием активируется не только делегированный харвестинг, но и сам аккаунт, если он не был активирован до этого.

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

Однажды активированный для данного аккаунта делегированный харвестинг остаётся таковым независимо ни от чего до тех пор, пока не будет деактивирован (см. ниже «Деактивация»).

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

Запуск/остановка

Когда харвестинг активирован, его можно запускать/останавливать произвольное количество раз на любых NIS. Но, стартованный на конкретной NIS, остановлен он может быть только на этой NIS. Старт/стоп будет возможен только из того кошелька (точнее, открытого файла wlt), из которого он был активирован, и только для того аккаунта, для которого он был активирован. Харвестинг начинается/прекращается с ближайшего блока, т.е. практически сразу.

Делегированный харвестинг будет запущен (при условии, что он является активированным):

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

Делегированный харвестинг будет остановлен:

  • если он будет остановлен (Stop) из кошелька
  • если NIS, на которой он запущен, будет отключена (= Stop)

В случае деактивации стартованного делегированного харвестинга он также будет остановлен.

Деактивация делегированного харвестинга

Активированный делегированный харвестинг можно деактивировать. Процесс деактивации инерционен и занимает 360 тайм-блоков (≈ 6 часов). За деактивацию взимается комиссия 6 XEM. Деактивацию можно производить через любую NIS, но обязательно из того кошелька (точнее, открытого файла wlt), из которого была произведена активация.

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

Параметры делегированного харвестинга привязаны к файлу кошелька

Если деактивировать / активировать делегированный харвестинг аккаунта, то адрес, публичный и приватный ключи делегированного харвестинга не меняются. Но при условии что работа продолжается в том же кошельке. Если аккаунт перенести в другой кошелёк (это может произойти например в случае утери файлов wlt&adb кошелька), то все параметры делегированного харвестинга (адрес, публичный и приватный ключи делегированного харвестинга) будут другими, даже если применять к новому кошельку тот же самый пароль. Вот почему в ряде случаев важно сохранять не только приватные ключи важных аккаунтов, но и файл кошелька wlt (Nanowallet) или файл кошелька и адресной книги wlt&adb (NCC), в которых они находятся:

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

 

Делегированный харвестинг в кошельке Nanowallet
(смотреть видео которые выше)

 

Подключение кошелька Nanowallet к определённой NIS

При входе в кошелёк Nanowallet, он автоматически подсоединится к NIS одной из супернод, имеющихся в его списке. Если нода рабочая, то рядом с кнопкой Node будет зелёный кружок (в случае проблемной ноды он будет красным и ноду следует сменить). NIS можно изменить, кликнув по кнопке Node и выбрав в открывшемся окне любую ноду из списка Nodes list или указав IP своей ноды в строке Custom node (например 213.136.86.202). Переключение ноды происходит мгновенно.

Активация делегированного харвестинга в кошельке Nanowallet

Замечание. Управление делегированным харвестингом для мультиподписных аккаунтов в Nanowallet пока не реализовано (и в NCC тоже).

Заходим в раздел
Services > Delegated Harvesting > Manage delegated account
Сервис > Делегированный сбор блоков > Управление делегированным аккаунтом

В панели
Harvesting panel
Панель  сбора блоков

первоначально увидим
Remote status
Удалённый статус
INACTIVE

Harvesting status
Статус харвестинга
INACTIVE

Активировать делегированный харвестинг можно:

  • при любом уровне активного баланса и общего баланса, лишь бы на общем балансе хватило средств для комиссии 6 XEM
  • через любую NIS (можно подключиться для активации к любому узлу)

Для того, чтобы активировать делегированный харвестинг, в панели
Importance transfer transaction
Транзакция передачи важности

выберем
Select a mode > Activate
Password > Enter your wallet password or passphrase
Send
Выбрать режим > Активация
Пароль > Введите пароль или кодовую фразу от кошелька
Отправить

Будет запущен процесс активации  делегированного харвестинга.
Теперь состояние статусов
Remote status
Удалённый статус
ACTIVATING

Harvesting status
Статус харвестинга
INACTIVE

Активация произойдёт через 360 тайм-блоков (примерно 6 часов).
Состояние статусов активированного аккаунта будет такое
Remote status
Удалённый статус
ACTIVE

Harvesting status
Статус харвестинга
INACTIVE

После того, как активация состоялась, и активная (vested) часть баланса ≥ 10k XEM, делегированный харвестинг можно запустить.

Старт/стоп делегированного харвестинга в кошельке Nanowallet

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

Start Delegated Harvesting / Stop Delegated Harvesting

Делегированный харвестинг также может быть остановлен его деактивацией, а это действие можно произвести через любой узел. Но если остановка делегированного харвестинга бесплатна, то деактивация стоит 6 XEM.

Деактивация делегированного харвестинга в кошельке Nanowallet

Деактивировать делегированный харвестинг можно

  • при любом уровне активного баланса и общего баланса, лишь бы на общем балансе хватило средств для комиссии 6 XEM
  • через любую NIS (можно подключиться для деактивации к любому узлу)
  • при любом состоянии делегированного харвестинга, неважно, продолжает работает он или остановлен

Для того, чтобы деактивировать делегированный харвестинг, заходим в раздел
Services > Delegated Harvesting > Manage delegated account
Сервис > Делегированный сбор блоков > Управление делегированным аккаунтом
и в панели
Importance transfer transaction
Транзакция передачи важности

выберем
Select a mode > Deactivate
Password > Enter your wallet password or passphrase
Send
Выбрать режим > Деактивация
Пароль > Введите пароль или кодовую фразу от кошелька
Отправить

Будет запущен процесс деактивации делегированного харвестинга.
Пока продолжается процесс деактивации, состояние статусов таково
Remote status
Удалённый статус
DEACTIVATING

Harvesting status
Статус харвестинга
INACTIVE или ACTIVE

Активация произойдёт через 360 тайм-блоков (примерно 6 часов).
Состояние статусов деактивированного аккаунта станет такое
Remote status
Удалённый статус
INACTIVE

Harvesting status
Статус харвестинга
INACTIVE

Делегированный харвестинг в кошельке NCC

 

Настройка подключения кошелька NCC к определённой NIS

Запускаем NCC (runNcc.bat), в браузере идём по адресу http://localhost:8989/, откроется стартовая страница кошелька. Настройка кошелька NCC и соответственно задание IP узла NIS, к которой намерены подключиться, производится до входа в кошелёк. В GUI NCC открываем окно Settings:

Код:
Вкладка Remote Server:
Protocol > HTTP
Host > <здесь IP узла NIS или localhost, если NIS крутится на этом же компе>
Port > Use default port > Yes [по умолчанию используется порт 7890]

Автозагрузка NIS нам не нужна, т.к. предполагается подключение к уже работающей NIS:

Код:
Вкладка Auto-boot:
Node name > [оставляем поле пустым, хотя это неважно, т.к. автозагрузка не будет активирована]
Account > [оставляем Primary Account, хотя это неважно, т.к. автозагрузка не будет активирована]
Auto boot when a wallet opened > No [галочки нет]

Если настройки редактировались, то Save.
Выключение NCC: если вошли в кошелёк (open), то Close Program. Если не вошли в кошелёк, то дважды Ctrl+C в терминальном (чёрном) окне NCC. В обоих случаях терминальное окно NCC закроется.

Активация делегированного харвестинга в кошельке NCC

Нажимаем «Delegated harvesting», в открывшемся окне заполняем строки

Код:
Wallet’s password > …
Due by (hours) > 1 (время жизни транзакции, активирующей делегированный харвестинг, до включения в блок; от 0 до 24 часов. Это не время действия делегированного харвестинга, как можно подумать по причине нечёткой формулировки названия параметра. Делегированный харвестинг прекратит свое действие только тогда, когда мы его целенаправленно отключим и/или деактивируем, см. далее.)

За активацию делегированного харвестинга с аккаунта снимается комиссия 6 XEM. В графе Sender/Recipient транзакции активации фиксируется адрес автоматически сгенерированного аккаунта-посредника, который собственно и будет харвестить, его адрес можно увидеть в View Account Details > (R) Address.
Далее появляется надпись «Activating delegated harvesting…». Теперь должно пройти 360 тайм-блоков (это примерно 6 часов), и тогда делегированный харвестинг можно будет запустить. Работа компьютеров с NCC и с NIS на этом промежутке времени роли не играет, они могут работать, а могут быть отключены.

По прошествии 360 тайм-блоков в NCC видим «Delegated harvesting is active». Если перед этим работал локальный харвестинг, то он автоматически отключится. Но активация делегированного харвестинга ещё не запускает его автоматически.

Старт/стоп делегированного харвестинга в кошельке NCC

Для запуска делегированного харвестинга нажимаем «Start delegated harvesting». После чего NCC можно выключить «Close Program», как впрочем и сам компьютер.

На вкладке Harvested blocks аккаунта наблюдаем находимые блоки. Однако, если открыть Blockchain Explorer, то увидим, что эти блоки принадлежат аккаунту-посреднику с нулевым количеством XEM (это адрес аккаунта делегированного харвестинга (R) Address).

Деактивация делегированного харвестинга в кошельке NCC

Делегированнный харвестинг будет оставаться активированным до тех пор, пока не запустим процесс его деактивации. Для этого нажимаем «Deactivate delegated harvesting». За деактивацию делегированного харвестинга снимается комиссия 10 XEM. Далее в течение 360 тайм-блоков наблюдаем надпись «Deactivating delegated harvesting…». В течение этого времени делегированный харвестинг будет оставаться активированным и может продолжать харвестить (если NIS работает и харвестинг был запущен).

Публичные NEM узлы и суперузлы

Все узлы в сети NEM, на которых работает NIS, являются публичными, видимы и их IP можно взять здесь:
https://www.nodeexplorer.com/
http://explorer.ournem.com/#/nodelist (суперноды отмечены)
http://www.nemnodes.org/nodes/ (суперноды отмечены)
Но среди публичных узлов есть узлы, запускаемые эпизодически или работающие на слабых компьютерах, а есть высокопроизводительные узлы, работающие круглосуточно, ежесуточно контролируемые по специальной программе (контроль 4 раза в сутки, с интервалом примерно в 6 часов) и поощряемые за стабильность и производительность работы. Эти высокопроизводительные узлы назвали суперузлами или супернодами.

Суперузлы работают круглосуточно и имеют достаточную производительность, и их можно использовать для оперативного подключения любых NEM кошельков без необходимости запуска своей NIS. При условии, что не исчерпан лимит подключаемых к ним аккаунтов. Можно ли харвестить делегированно на суперузлах? Да. Стоит ли харвестить на них делегированно? Нет, потому что будет зависимость от стабильности работы публичного узла. Любое его отключение (например для обновления софта или для проведения профилактических работ) потребует повторного старта делегированного харвестинга на стороне NCC. Поэтому для стабильного харвестинга надо запустить свой узел NIS и настроить его в соответствии со своими потребностями.

Дополнительные ссылки:
How Local and Delegated Harvesting Works
How to Use Delegated Harvesting
Connecting to a Remote Server


Право на получение степени важности

Для того чтобы важность начала расти, в первую очередь, вам необходимо, по крайней мере, иметь 10000 vested XEM. Вам нужно иметь больше, чем 10000 XEM. Как вы знаете, каждые 24 часа вам начисляется 10% от ваших non-vested XEM. Это говорит о том, что при 10000 XEM вы никогда не достигнете требуемого значения.

Общий объем XEM составляет 8 999 999 999 XEM, а это означает, что максимальное количество учетных записей, которые могут иметь ненулевое значение, может быть равным 8 99 999. Фактическое количество аккаунтов будет намного меньше, так как многие будут хранить более10000 XEM.

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

Частичный расчет важности

Есть несколько чисел, связанных с расчетом степени важности. Ниже показано, как они рассчитываются.

Одиночные результаты распределения (Outlink Matrix)

Для каждого пользователя, имеющего 10000 vested XEM или более, цепь находит все транзакции и аккаунты, которые отвечают следующим критериям:

  • Отправка как минимум 1000 XEM;
  • Отправка была осуществлена в течение последних 30 дней (43200 блоков);
  • Были отправлены другому приемлемому пользователю, которому принадлежит 10000 vested XEM или более.

Затем берется каждая из транзакций и проводятся небольшие расчеты. Расчеты могут быть довольно сложными для среднего пользователя, но они по существу учитывают, сколько ХЕМ было отправлено и насколько давно.

Как видно на этом графике, важность транзакции снижалась в течение долгого времени.

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

Предварительно окончательный расчет

Теперь, когда есть все эти оценки между людьми, он должен сделать еще больше математических расчетов! Принимая во внимание все начальные оценки одного перевода, происходит генерация числа, известного как NCDawareRank. Здесь математика работает аналогично PageRank алгоритма Google для определения того, какие результаты находятся на какой странице Google.

Окончательный результат

Окончательный результат рассчитывается, принимая во внимание следующие вещи:

  • Общая сумма переведенных ХЕМ;
  • Время перевода ХЕМ;
  • Результат NCDawareRank;
  • Различные алгоритмы.

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

Сопротивление манипуляциям

Существует несколько видов атак, с которыми система постоянно борется. В данном разделе перечислены некоторые из них, а также то, как NEM устраняет эти проблемы.

Атака Сибиллы (Sybil Attack)

В результате атаки Сибиллы, злоумышленник создает несколько аккаунтов, чтобы получить контроль над сетью.

В NEM аккаунты награждаются за сбор блоков (harvest), а аккаунты с более высоким приоритетом могут собрать (harvest) больше блоков. Те, кто пытаются провести атаку Сибиллы, делают это следующим способом:

  • Отправка транзакции между счетами, чтобы повысить результат NCDawareRank;
  • Отправка транзакций для случайных пользователей, а также злоумышленников;
  • Отправка ХЕМ в цикле, чтобы повысить один результат передачи.

NEM предохраняется от таких атак с помощью следующих стратегий:

  • Веб-страницы PageRank злоупотребляют путем создания обратных ссылок от многих других сайтов, чтобы сделать их более популярными. Часть этого алгоритма была изменена в NCDawareRank, чтобы сделать этот тип вещи менее ценным.
  • Ваш баланс ХЕМ переводится (vested) достаточно медленно, так для злоумышленника уйдет немало времени, чтобы получить большое количество vested ХЕМ и затем сразу же атаковать.
  • Используйте чистый убыток в расчете на результат. Это делает аккаунт получателя 10 000 ХЕМ менее важным, чем тот, который отправляет и не получает ничего.
  • Как видно на графике, в результате перевода стоимость отправленных ХЕМ в отношении к важности уменьшается с течением времени. Это означает, что нападение даст только временную поддержку на результат, а не на длительный срок.
  • Различные математические хитрости, с которыми можно ознакомиться в техническом справочнике, будет довольно нелегко понять среднему пользователю.

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

Share