Как создать свой пул на SEMUX

gost111
SEMUX на русском
6 min readJun 26, 2019

Немного теории

Semux — это блокчейн-платформа, основанная на консенсусном алгоритме Semux BFT.

Делегаты — это учетные записи (аккаунты), которые доступны для голосования и могут получить статус валидатора.

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

Чтобы стать валидатором, делегату необходимо иметь достаточное кол-во голосов для попадания в Топ-100 списка делегатов. На сегодняшний день это более 85 тыс. голосов. Актуальную информацию можно увидеть на https://semux.info/delegates.

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

Организовать работу пула не так сложно, как кажется на первый взгляд. Вам понадобится запустить узел валидатора и дополнительно установить специальное программное обеспечение — пул-менеджер, позволяющий управлять пулом и автоматизировать выплаты. Т.е. пул-менеджер запускается и работает параллельно с клиентом SEMUX на узле валидатора. При этом клиент добывает блоки, а пул-менеджер рассчитывает и распределяет доходы пула на основе количества голосов, отданных каждым участником.

Узел валидатора

Узел валидатора должен работать бесперебойно 24/7 чтобы постоянно создавать (форжить) новые блоки блокчейна. Поэтому для запуска узла лучше использовать VPS (англ. virtual private server) или VDS (англ. virtual dedicated server) сервер, с установленной операционной системой Windows или Linux (x64), а также установленным JAVA OpenJDK Runtime Environment (x64). Для Windows дополнительно потребуется установить Microsoft Visual C++ 2012 Redistributable Package (x64).

Узел валидатора должен соответствовать системным требованиям, чтобы обеспечивать надежность протокола Semux BFT.

Минимальные:
— 8GB Memory
— Dual Core CPU
— 100 Mbps Bandwidth

Рекомендованные:
— 16GB Memory
— Quad Core CPU
— 200 Mbps Bandwidth

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

Актуальную версию клиента Semux (или просто — кошелек) скачайте здесь: https://github.com/semuxproject/semux-core/releases. Для начала работы необходимо дождаться полной синхронизации (занимает примерно 2–3 часа). На дисковом пространстве должно быть не менее 30 Гбайт свободного места (размер базы блоков на данный момент ~15 Гбайт).

Регистрация делегата

Если у вас нет аккаунта, зарегистрированного делегатом, то самое время его зарегистрировать. Для этого вам придется сжечь 1000 монет, отправив в сеть специальную транзакцию. Соответственно на балансе вашего аккаунта должно быть не менее 1000.005 SEM.

  1. Убедитесь, что на балансе вашего аккаунта достаточно средств.
  2. Переходите на вкладку “ Делегаты”. В средней правой части окна находите блок регистрации, в окошко вписываете имя своего делегата (допускается только латиница нижний регистр, цифры и знак подчеркивания, длина 4-16 символов) и нажимаете кнопку “Зарегистрировать делегата”.
    Внимательно читаем примечание: при регистрации делегата ваши 1000 SEM будут списаны и сожжены, так же будет списана комиссия 0.005 SEM.
  3. Ждём подтверждения транзакции~30 сек и ваш делегат зарегистрирован. Теперь он отображается в общем списке делигатов и валидаторов.

Пул-менеджер

Для начала работы необходимо скачать последний релиз с сайта https://github.com/orogvany/semux-pool/releases и распаковать файлы в отдельную папку. На данный момент актуальной является версия semux-pool-1.5.1.

Затем необходимо настроить клиент Semux. Для этого, зайдите в папку кошелька ./config и в файле semux.properties в пункте API включаете api.enabled = true, придумайте и установите имя и пароль для доступа к вашему кошельку:

Сохраните изменения и перезапустите клиент Semux.

Теперь переходим к настройке непосредственно пул-менеджера. В папке ./config программы открываем файл semuxpool.properties и вносим необходимые настройки параметров.

Параметры соединения с клиентом

apiUser = user — имя которое вы установили в файле конфигурации клиента Semux

apiPass = pass — пароль который вы установили в файле конфигурации клиента Semux

Основные параметры:

delegateAddress = <FILL IN DELEGATE ADDRESS> — адрес вашего делегата.

poolProfitsAddress = <FILL IN PAYMENT ADDRESS> — здесь указываете на какой адрес будет уходить прибыль пула, этот адрес может совпадать с адресом вашего делегата. Также, вы можете указать несколько адресов и соотношение распределяемой прибыли, если у вашего пула несколько владельцев или операторов.

debugMode = true — режим true, это отладочный режим. Он позволяет проверить корректность настройки пула по отчету о выплатах, но сами выплаты при этом не производятся. После проверки, вам необходимо удалить отчеты из папки ./payouts и установить параметру значение false.

poolFeePercent = 0.20 — устанавливает размер комиссии пула в процентах. Формат записи 0.1 = 10%.

developerBeerFundPercent = 0,02 — дополнительно к вашей комиссии, 2% от прибыли пула будет пожертвовано разработчику этой замечательной программы (на пиво). Можно не жертвовать, установив значение “0”, или изменить процент на своё усмотрение.

payoutTime = 13:00 — время ежедневных выплат.

minPayoutSem = 0.25 — минимальная выплата в SEM. Если у какого-то участника голосования очень малая доля голосов, то его ежедневные выплаты могут быть соизмеримы с комиссией за транзакции. Чтобы избежать лишних трат, можно установить минимальное значение, и выплаты будут производиться только при накоплении достаточной суммы, полагающейся участнику (пропущенные выплаты суммируются).

startProcessingAtBlock = 0 — номер блока, начиная с которого считаются доли участников. Например, до блока N ваш валидатор не являлся пулом, соответственно вы не должны распределять награды за этот период. Или в процессе работы пула возникли сбои и вам необходимо перезапустить программное обеспечение для корректной работы. Вы можете удалить историю предыдущих выплат и указать номер блока, с которого история вашего пула начнется заново, чтобы не платить участникам дважды за ранние блоки.

dataDirectory = payouts — имя папки с отчетами по выплатам.

Дополнительные параметры

voterWhiteList = ( запись в формате формат 0xVoterOnesAddress, 0xVoter2sAddress, ...). Белый список — если вы настраиваете приватный пул, распределяющий награды только среди избранных участников, то укажите здесь их адреса. Все остальные участники не будут получать награду.

voterBlackList =( запись в формате формат 0xVoterOnesAddress, 0xVoter2sAddress, …). Черный список — если вы столкнулись с злоупотреблениями вашим пулом, вы можете прекратить платить им.

imumVoteAgeBeforeCounting = 200 Для предотвращения злоупотребления частым перемещением голосов сразу после найденного блока. Параметр задает минимальный возраст голосов. Голоса, отозванные до достижения минимального возраста полностью игнорируются при распределении наград.

dontPayPoolQuitters = false Параметр исключает участника из текущего распределения, если он полностью отозвал все свои свои голоса. Если параметр выключен, то такой участник получает положенные ему выплаты.

poolQuitterAddress = <SET IF ENABLED> адрес для нераспределенных между участниками остатков наград. Такие остатки возникают, если участники покидают пул, не преодолев минимальный порог выплат или параметр dontPayPoolQuitters был включен.

Сохраните изменения и запустите программу в Windows файлом semuxpool.bat, в Linux — файлом semuxpool.sh.

Окно работающего пул-менеджера в среде Windows

Дальнейшие шаги

Итак, вы запустили работу пула. Теперь вам необходимо привлечь участников, чтобы получить их голоса и статус валидатора. Это могут быть ваши друзья, с которыми вы заранее договорились о запуске приватного пула (private pool) — тогда включите их адреса в белый список, чтобы только они могли получать выплаты с вашего пула. Если вы запускаете публичный пул (public pool) и планируете платить всем участникам без исключений, то вам необходимо предпринять ряд действий:

  1. Необходимо разместить анонс на официальном сервере Discord в канале #pools. Например:
    New public pool: <имя валидатора>
    Minimum payout: <0.25> SEM
    Fee: <размер вашей комиссии>
    Payout is <11:00 UTC> — время, в которое производятся выплаты
    Welcome!
  2. После размещения анонса на официальном сервере, вас залистят в рейтинг публичных пулов http://pool.7u.org/
  3. Дополнительно вы можете разместить анонсы на других ресурсах сообщества Semux:
    ANN https://bitcointalk.org/index.php?topic=2159012.0
    Telegram https://t.me/Semuxru
    Discord: https://discordapp.com/invite/e3QYJBy
    Bitcointalk: https://bitcointalk.org/index.php?topic=5156021.0

На этом в принципе всё. Теперь самое главное и сложное — поддерживать бесперебойную работоспособность пула и контролировать статус вашего валидатора. Обязательно проверьте первые выплаты, что они совершаются вовремя и корректно. Для проверки вы можете использовать режим отладки debugMode = true. После отладки не забудьте вернуть параметр debugMode = false и удалить тестовые отчеты из папки ./payouts.

Спасибо за внимание и удачи вам. Присоединяйтесь к нашему сообществу https://discord.gg/qQVckKZ

--

--