Как запустить свой собственный ассет на платформе Komodo?

Decker
7 min readFeb 26, 2019

--

В предыдущих статьях мы немного коснулись темы ассетов (assetchains), теперь пришло время рассмотреть ассеты чуть более подробно, а также попробовать создать собственный assetchain и посмотреть насколько это просто. Что нам потребуется?

  • Немного свободного времени и два ПК на базе Linux (предпочтительнее) или Windows. Минимальные системные требования каждого из ПК такие же, как собственно и для запуска самого KMD - т.е. минимум 2-х ядерный CPU, 4 Gb свободной памяти (RAM) и 64-bit ОС.
  • Предварительное знакомство с документами Creating a new Blockchain using Komodo’s technology и Parameters to customize Blockchains created using Komodo’s technology. (это необязательно, т.к. основы мы рассмотрим в этой статье, но все же желательно).

Ну что ж … приступим. Для начала мы должны придумать название для нашего нового ассета / монеты / блокчейна и определить его базовые параметры, т.е. например, будет ли это полностью PoW ассет, или 100% PoS ассет, или же к примеру 50% PoW и 50% PoS. Также мы должны определиться с PoW алгоритмом (Equihash или VerusHash), начальным supply (количеством премайна), размером награды майнерам, халвингом и т.п.

Для простоты решим что наш новый ассет будет называться MEDIUM, размер премайна будет 500000 MEDIUM, а награда майнерам будет равняться 1 MEDIUM, при этом halving’а (уменьшения награды майнерам после достижения определенной высоты блока) у нас не будет. Ознакомившись со списком параметров приходим к выводу что строкой для запуска демона в данном случае будет:

-ac_name=MEDIUM -ac_supply=500000 -ac_reward=100000000

Запустим komodod с указанными параметрами на первом ПК (предполагается что он у вас уже установлен тем или иным образом или же собран из исходников). Также, если вы читали статью Обзор программных кошельков для Komodo (KMD), то знаете, что вместо консольного демона komodod, можно также использовать komodo-qt, который объединяет в себе демона и графическую оболочку. В этой статье для наглядности я буду использовать именно komodo-qt.

Запуск komodo-qt с выбранными нами параметрами

Как видно, все вроде бы получилось. Однако, естественно, komodo-qt не синхронизируется с сетью, т.к. фактически сейчас в сети находится только один узел (он сам), а также в сети отсутствуют блоки, кроме genesis блока. Для того чтобы запустить блокчейн, нужно запустить демон с аналогичными параметрами на втором ПК, указать ему IP первого ПК в качестве seed ноды и запустить майнинг блоков. Но для начала давайте посмотрим на вывод getinfo (меню Help -> Debug Window -> Console в komodo-qt, и там набираем команду getinfo), либо запускаем:

komodo-cli -ac_name=MEDIUM getinfo

Вывод getinfo для нашего созданного ассета

Здесь мы видим что на данный момент наша сеть действительно не имеет блоков (поле blocks), премайн составляет 500000 MEDIUM (поле premine), а награда за блок равна 100000000 сатоши или 1 MEDIUM. Т.е. так, как мы и планировали. Также мы видим, что rpcport вновь созданного ассета равен 64471, а p2pport 64470. Эта информация потребуется нам в дальнейшем, когда мы будем готовы выпустить наш ассет в большой мир (если в двух словах, то нам придется открыть p2pport для доступа извне). Но давайте по порядку.

Берем второй ПК и запускаем на нем komodod или komodo-qt с теми же параметрами, но дополнительно указываем параметр -addnode и IP первого ПК. В моем случае первый ПК имеет IP 192.168.0.2, соответственно я запускаю komodo-qt на втором ПК с параметрами:

-ac_name=MEDIUM -ac_supply=500000 -ac_reward=100000000 -addnode=192.168.0.2

После чего захожу в меню Help -> Debug Windows -> Console и запускаю майнинг с помощью команды setgenerate true 2 (где 2 это желаемое количество ядер CPU, которые будут использоваться для майнинга).

Запускаем майнинг в 2 потока

Аналогичного эффекта можно было достичь с помощью команды:

komodo-cli -ac_name=MEDIUM setgenerate true 2

В случае если вы используете консольную версию.

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

Рождение нового блокчейна

Теперь достаточно дождаться пока в сети будет сгенерировано 128+ блоков (узнать текущее количество блоков в сети можно с помощью команды getinfo, или при использовании komodo-qt в меню Help -> Debug Window -> Information):

Генерация 128 блоков

Процесс генерации необходимого количества блоков займет некоторое время, в зависимости от мощности вашего CPU и количества задействованных в генерации ядер. Чтобы ускорить процесс генерации 128 блоков при желании в нем можно задействовать более 1 ПК. Для сравнения на Core i7–6700k с использованием только двух ядер генерация 128 блоков заняла около ~25 минут.

После генерации 128 блоков ваш вновь созданный ассет (блокчейн) готов к реальному использованию, т.е. для тех целей, для которых вы его и создавали. ПК #1, который использовался для создания блокчейна может быть использован в качестве seed-ноды. Если вы планируете использовать ваш блокчейн в интернете, вам необходимо открыть p2pport (в данном случае 64470/tcp) наружу, а также сообщить всем остальным участникам сети параметры запуска демона:

-ac_name=MEDIUM -ac_supply=500000 -ac_reward=100000000 -addnode=WAN_IP

Где WAN_IP - внешний IP адрес вашего сервера (ПК) с запущенным демоном и созданным блокчейном. Если вы планируете использовать ассет только в локальной сети, то вместо WAN_IP указываете LAN_IP ПК #1 . Далее все участники сети синхронизируют блокчейн с seed узла и становятся полноценными участниками p2p сети.

Согласитесь, достаточно просто, не так ли? Мы потратили всего 25 минут свободного времени (из которых большую часть просто наблюдали за процессом автоматической генерации 128 блоков) и создали ассет без каких-либо навыков программирования, глубокого знания блокчейна и без привлечения сторонних специалистов, просто использовав платформу, предоставляемую Komodo.

UTXO, неизрасходованные выходы по окончании генерации 128 блоков

Давайте посмотрим, что у нас получилось по результатам генерации 128 блоков на том узле (ПК), который у нас использовался для майнинга. Мы видим что наш премайн в 500.000 MEDIUM оказался на адресе RHoaj1GUaPFnZVJLJAh31srvo6juo6ovMH, а каждый coinbase средства от генерации каждого нового блока по 1 MEDIUM были помещены на свои собственные адреса. Чтобы не потерять premine после завершения генерации блоков крайне желательно сделать резервную копию кошелька (wallet.dat) или послать все сгенерированные средства на выделенный адрес, приватный ключ от которого у вас сохранен в надежном месте, если вы не планируете пользоваться этими токенами прямо сейчас (обратите внимание, что если вы отправили средства на выделенный адрес, то при совершении расходной транзакции с него сдача может вернуться на совершенно другой адрес, если вы дополнительно не указали адрес для сдачи). В данном случае, если я например не планирую пользоваться premine’ом прямо сейчас, я сохраняю wallet.dat и на всякий случай приватный ключ от адреса RHoaj1GUaPFnZVJLJAh31srvo6juo6ovMH с помощью команды:

komodo-cli -ac_name=MEDIUM dumpprivkey RHoaj1GUaPFnZVJLJAh31srvo6juo6ovMH

Надеюсь что после ознакомления с данной статьей большинство часто возникающих вопросов, касающихся создания ассетов должны разрешиться. Как видите, это действительно просто, и для большинства задач, когда вы не планируете сложное распределение reward’ов за блок или дополнительные правила, в виде отчисления founder’ам с каждого блока и т.п. для создания собственного ассета вам хватит и знаний приведенных в этой статье. Если же вы хотите ознакомиться со всеми возможностями и ключами запуска демона для создания ассетов более подробно, все необходимое есть в руководстве.

Скептически настроенные читатели наверняка спросят, а зачем? В смысле зачем что-то создавать, ведь и так уже есть тонна альткоинов, различных блокчейн проектов и т.п. Не проще ли использовать их? Или сделать форк какой-нибудь уже существующей монеты и т.п. Да, естественно, можно пойти и этим путем, не привязываясь к “готовой платформе”. Но такой вариант решения сопряжен с дополнительными сложностями, создание форка требует определенных знаний или привлечения сторонних специалистов, плюс дополнительные затраты ресурсов на сопровождение проекта. В случае же с готовой платформой (которая постоянно поддерживается и обновляется) мы получаем в руки “универсальный конструктор” на базе которого за несколько минут можно создать практически все что угодно. Ну а как это применить к реальной жизни - отдельный вопрос, возможности предоставляемые Komodo Platform всего лишь инструмент для воплощения ваших идей.

К слову об идеях. Не так давно, на форуме BitcoinTalk (к сожалению ссылку на конкретный пост я сейчас уже не найду) прозвучала идея одного из руководителей компании (как я понял близкой к IT), что мол, неплохо было бы ввести в компании какой-то свой “внутренний токен”, который все сотрудники смогли бы использовать внутри компании. Например, получать какое-то количество единиц токена за успешно выполненные планы, расплачиваться ими в местной столовой за обеды и т.п. С моей точки зрения - это вполне работоспособная идея … бонусная система мотивации сотрудников на блокчейне. Почему нет? Например, можно по итогам месяца раздавать премии основываясь на балансе этого токена у каждого из сотрудников (предполагается что все сотрудники имеют как минимум по одному адресу в сети, однозначно идентифицирующему их), а токены сотрудники могут получать от руководителей своих отделов за выполнение планов / задач и т.п. Плюс, также они могут использовать токены для внутреннего обращения, например, когда один сотрудник хочет выразить благодарность другому за помощь и т.д. и т.п. Варианты для проявления фантазии тут практически безграничны. Или же построение системы принятия управленческих решений в организации на базе внутреннего токена (ассета), внутренних голосований по ключевым корпоративным вопросам и т.п. Например, есть какая-то важная проблема внутри компании решение которой требует подсчета голосов каждого из сотрудников. Исходя из того что каждый сотрудник имеет свой собственный уникальный адрес, руководство рассылает каждому из сотрудников ровно по 1 токену, после чего создаются несколько адресов отвечающих за выбранное решение (ну например, вопрос о распределении прибыли компании по итогам квартала, А1 - распределить полученную прибыль в качестве премии между сотрудниками, А2 - приобрести новую оргтехнику и обновить мебель в офисе, А3 - использовать полученные средства на покупку оформление полисов ДМС для всех сотрудников). Где А1, А2 и А3 - это адреса для “голосования”. Далее все сотрудники отправляют ранее распределенные голоса в поддержку того или иного варианта, результаты тут же просматриваются руководством в публичном explorer’е, после чего принимается соответствующее решение. Все просто и прозрачно. Для решения же вопросов по которым необходимо “анонимное голосование”, т.е. когда публичность в принятии решения (кто и за что проголосовал) не нужна - можно использовать z-транзакции. Так что, как видите, вариантов применения блокчейна и подобных технологий в реальной жизни масса.

Было бы желание … ) Желаю всем успехов в изучении новых технологий!

--

--