Стейкинг ассетов в Komodo

Стейкинг ассетов в Komodo

Поговорим о стейкинге на платформе Komodo. Для тех кто не знает - технически платформа Komodo позволяет создавать блокчейны с гибридным PoW/PoS консенсусом, т.е. определяя параметры нового блокчейна с помощью параметра -ac_staked вы можете задать соотношение PoW/PoS блоков. После того как блокчейн создан и запущен - пользователи могут не только майнить новые монеты, но и стейкить их.

Фактически, стейкинг в Komodo - это так называемый "low-diff майнинг", который выполняется на CPU. Звучит страшно и, возможно, несколько непонятно, но на деле все гораздо проще. Постараемся коротко и доступно объяснить суть этого процесса. Как вы знаете, KMD и все его ассеты используют алгоритм хеширования Equihash 200.9. Раньше заниматься майнингом Komodo можно было на CPU, затем, по мере возрастания сложности на GPU, и с выходом Antminer Z9 и старше от Bitmain - процесс добычи использует только ASIC устройства, т.к. с их появлением сложность сети значительно возросла. Стейкинг на платформе Komodo (не путать с 5.1% rewards) возможен только для ассетчейнов (ассетов) и использует тот же самый алгоритм хеширования, но с пониженной сложностью (low diff). Для того чтобы к стейкингу применялись правила пониженной сложности - вы должны обладать определенным количеством монет, чем больше у вас будет разных UTXO, и чем большего объема они будут - тем вероятность стейкинга выше. Например у вас есть некоторое количество монет RICK, разбив все свои монеты на несколько различных UTXO (неизрасходованных выходов), например по 500 монет в каждом - вы существенно повышаете свои шансы стейкинга. Если у вас будет такое же количество UTXO, но скажем не по 500 монет, а по 1000, то шансы будут еще выше и т.п.

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

Различные варианты разбиения UTXO в кошельке
Различные варианты разбиения UTXO в кошельке
  • Вариант 1: 1 UTXO с 10000 монет
  • Вариант 2: 4 UTXO с 2500 монет в каждом
  • Вариант 3: 10 UTXO по 1000 монет

Самый простой способ сделать это - открыть второй кошелек и, например, для создания варианта 2 - отправить 4 транзакции по 2500 RICK в каждой на разные адреса из кошелька (1). Так вы создадите четыре разные UTXO. Обратите внимание, что в качестве первого кошелька на который вы будете отправлять монеты и в котором вы будете стейкить их может выступать только native / full-node кошелек, например, Komodo-Qt или komodod (CLI).

Теперь представим себе что каждый UTXO представляет из себя лотерейный билет. Если билет "выигрывает", то нода (кошелек) генерирует новый блок, в качестве награды за его создание вы получаете определенное количество монет. Так вот, чем больше у вас лотерейных билетов, а также чем большего они "номинала", и чем дольше вы их храните - тем шансов на то что один из ваших билетов выиграет больше. Определить эти шансы количественно - довольно затруднительно, например, имея 10000 RICK в одном UTXO вы можете сгенерировать, к примеру, 50 блоков в день (цифры условные, т.к. реальное количество зависит от сложности сети, активности других участников и т.п.), однако, перейдя к варианту 2 и разбив ваши 10000 на 4 UTXO по 2500 - вы увеличиваете ваши шансы и, скажем, будете генерировать не 50, а 100 блоков в день. А вариант 3 - может дать вам еще лучшее распределение (или не дать), вы можете определить лучшее разбиение сами, экспериментально.

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

Запуская стейкинг фактически вы будете майнить Equihash 200.9, но с минимальной сложностью, и новый блок будет генерироваться только в том случае, если один из ваших UTXO окажется "выигрышным" в данный конкретный момент. Т.е. грубо говоря, ПО будет периодически просматривать все имеющиеся в вашем кошельке UTXO, определять есть ли среди них "выигрышные" и если есть - то генерировать новый блок с минимальной сложностью. При этом математически этот процесс построен так, что другие ноды (узлы) в сети смогут проверить, а действительно ли у вас был данный UTXO, действительно ли в данный момент времени его можно было признать "выигрышным" и т.п. Т.е. возможность "обмана" исключена.

Как вы понимаете, процесс стейкинга фактически сводится к майнингу на CPU с минимальной сложностью. Хоть это и не будет отбирать значительное количество ресурсов процессора, но вам придется постоянно держать ПК и кошелек включенным. Для стейкинга достаточно одного потока, как вы знаете современные процессоры обладают большим количеством потоков - 4, 8, 16, 24 и т.п., так что 100% утилизация одного из них вполне допустима и, обладая например CPU, который поддерживает 8 потоков, вы скорее всего просто не заметите что 1 из них постоянно занят какой-то работой.

Теперь, немного разобравшись с теорией, давайте попробуем перейти к практике.

На данный момент существует несколько активных ассет- (смарт-) чейнов, поддерживающих стейкинг (PoS):

  • COQUICASH (50% PoS)
  • GLEEC (100% PoS)
  • MORTY (10% PoS, тестовый ассетчейн)
  • RICK (10% PoS, , тестовый ассетчейн)
  • MCL (Marmara Credit Loops) - обратите внимание, для этого чейна существует свой собственный демон и своя собственная версия Marmara-Qt, запустить блокчейн MCL на стандартном ПО Komodo (например - komodod, или komodo-qt - не получится). Также эта монета использует специальные правила стейкинга, он возможен только для активированных монет и монет находящихся в LCL.

10% PoS - значит, что 10% блоков от общего количества стейкятся, а остальные 90% - добываются с помощью майнинга. 50% PoS - означает что это соотношение 50 на 50. Ну и 100% PoS - означает что цепочку можно только стейкить, майнинг исключен.

Самое время потренироваться. Скачаем последнюю версию Komodo-Qt и запустим его со следующими параметрами:

-ac_name=RICK -ac_supply=90000000000 -ac_reward=100000000 -ac_cc=3 -ac_staked=10 -addnode=95.217.44.58 -addnode=138.201.136.145

Для ускорения первоначальной синхронизации мы можем воспользоваться bootstrap'ом:

Скачиваем bootstrap RICK'а с сайта dexstats.info
Скачиваем bootstrap RICK'а с сайта dexstats.info

Более подробно о том как воспользоваться bootstrap'ом вы можете прочитать в этой статье в разделе "Как ускорить процесс первоначальной синхронизации?". Обратите внимание, что в случае с RICK содержимое архива нужно распаковывать не в %APPDATA%\Komodo (в случае Windows), а в %APPDATA%\Komodo\RICK.

Меняем на AtomicDEX какое-то количество RICK и отправляем себе на разные адреса, чтобы получилась примерно следующая картина (включаем в Setting -> Options -> Wallet пункт [x] Enable coin control features и на вкладке Send нажимаем кнопку Inputs...) :

Набор utxo в кошельке RICK
Набор utxo в кошельке RICK

Здесь мы просто решили сделать максимальное количество UTXO по одному RICK (хотя можно было попробовать сделать не по 1, а использовать большее количество).

Монеты есть, разбивка на UTXO тоже, самое время запустить стейкинг. Заходим в меню Help -> Debug Window -> Console (или нажимаем Ctrl-Shift-C в главном окне Komodo-Qt) и в консоли набираем:

setgenerate true 0
Запуск стейкинга в Komodo-Qt
Запуск стейкинга в Komodo-Qt

Через некоторое время у нас начинают генерироваться новые блоки:

Стейкинг RICK в Komodo-Qt
Стейкинг RICK в Komodo-Qt

Поздравляем, вы настроили стейкинг.

Подведем некоторые итоги:

  • Стейкинг в Komodo возможен только для ассетов (ассет- или смарт- чейнов). Это значит что стейкить сам KMD вы не можете, однако, независимые монеты, блокчейны которых созданы на платформе Komodo (ассеты) и правила консенсуса которых допускают PoS - вполне. Т.е. технически платформа Komodo поддерживает стейкинг, однако, можно ли стейкить какую-то конкретную монету или нет - определяют её владельцы.
  • Найти монеты поддерживающие стейкинг можно по наличию параметра -ac_staked в параметрах их запуска. Посмотреть актуальные аргументы для запуска той или иной монеты всегда можно здесь - assetchains.old .
  • Стейкинг в Komodo - это майнинг с минимальной сложностью (low-diff майнинг), шанс того "выиграете" вы блок или нет, зависит от количества ваших UTXO, их размера / номинала, а также времени, которое вы их храните. Чем больше каждый из этих параметров - тем больше вероятность найти блок и тем больше монет вы настейките. Если посмотреть на это с точки зрения логики - то холдер у которого 50000 монет имеет больший шанс "выиграть" блок, чем холдер у которого 1000 монет. Выбирая лучшее разбиение - руководствуйтесь правилом "больше = лучше", для количества UTXO, их номинала и т.п.
  • Исходя из предыдущего пункта, т.к. стейкинг это вычислительный процесс - вам необходимо обязательно держать кошелек и ПК включенным. При этом вы должны использовать native / full-node кошелек, например Komodo-Qt или komodod (CLI). SPV-кошельки вроде AtomicDEX и т.п. - не подойдут. Стейкить можно только на десктопе, на мобильных устройствах стейкить нельзя. К слову, VSRC (VerusCoin) использует примерно аналогичный алгоритм стейкинга. За исключением алгоритма хеширования (там он не Equihash 200.9, а VerusHash) - все описанное в статье остается верным и для VRSC.
  • Повторимся еще раз, стейкить сам KMD нельзя, запомните, в KMD нет стейкинга. Есть начисление rewards, но это другое, подробнее о rewards можно прочитать тут.
  • Выполнять какие-то специальные действия с монетами, которые стейкятся не нужно. Т.е. здесь нет такого понятия как "поместить в стейкинг" и т.п., монеты участвующие в стейкинге не блокируются, вы по прежнему можете их использовать по своему усмотрению. Например, отправить кому-то некоторое количество при необходимости. Однако, учитывайте - меньше монет, меньше шансов поймать блок.

На этом на сегодня у нас все. Оставайтесь с нами и не забывайте делиться ссылками на наши статьи в социальных сетях и мессенджерах. Если у вас есть вопросы или интересная тема для будущих статей - свяжитесь с нами, контакты для связи указаны в разделе "О проекте", внизу каждой страницы.