December 17, 2022

Trustless стейкинг Dash

Одним из основных принципов Web3, является отсутствие необходимости доверять третей стороне, то есть trustless решения и услуги...

Интро

Недавно в офицальный мобильный кошелек Dash, правда на момент написания статьи, только на андроид, был интегрирован стейкинг через CrowdNode, хоть это решение и требует доверия третей стороне, но имеет ряд преимуществ. Люди которые имеют менее 1000 Dash, а говоря точнее хотя бы 0.5 Dash, могут за пару минут начать стейкать свои средства и получать доход.

Подробнее об этом можно почитать в этой статье (https://telegra.ph/Integraciya-CrowdNode-v-koshelek-06-23)

Ну а теперь, CrowdNode предоставил другое, trustless решение для стейкинга Dash.

CrowdNode предлагает пользователям объединить монеты в мастерноды (минимальное кол-во Dash для стейкинга таким образом - 100 монет; на момент написания статьи), решение основано на P2SH адресах, а также адресах с мультиподписью.

Адрес с мультиподписью - это адрес, к которому привязано сразу несколько пар ключей. Каждая пара состоит из публичного и приватного ключа. Можно установить условия, при которых нужно будет предоставить несколько подписей, чтобы потратить монеты с адреса.
P2SH адрес - это адрес, в котором присутствует возможность задать правила траты монет не открытым скриптом, где вы подряд прописываете операнды и некоторые данные, которые потом выполняются рассмотренным нами образом, а в виде хеш-значения от нужного вам скрипта, то есть контрольной суммы от этих операндов. Смысл таких адресов в том, что, чтобы привести средства в движения, нужно доказать, что вы знаете условия, и удовлетворить этим условиям.

Ваш Dash остается вашим и у вас есть полный доступ к адресу где он находится, и в любой момент его можно вывести, и даже при полном отключение инфраструктуры CN или попытки скама с её стороны, ваши средства останутся в безопастности.


Правда стоит отметить то, что лишь при выводе после прошествия определенного количества времени (закладывается изначально участниками стейкинга), можно будет получить полную сумму за вычетом коммисии. Так сказать, "экстренный" вывод тоже возможен, но в таком случае сумма которую вы получите, будет равна сумма вклада минус коммисия и минус 2,5 Dash

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


Поэтому, если у вас еще нет аккаунта на CN, вам нужно будет сначала создать учетную запись (не забывайте тщательно хранить закрытый ключ для связанного DASH-адреса!) и внести достаточное количество Dash, чтобы участвовать в trustless мастерноде (на момент написания статьи это означает не менее 100 DASH, но это может измениться).

Как только вы будете готовы к стейкингу, нужно будет выполнить несколько простых шагов.

1. Подготовка

Dash Core

Установка и настройка Dash Core

Первым делом нам понадобится рабочий десктопный кошелек Dash Core, установить его можно отсюда (https://www.dash.org/downloads/#desktop).

Рекомендуется перед тем как стейкать свой Dash, потренироваться в тестовой сети: для запуска Dash Core в тестовой сети нужно прописать команду:

dash-qt -testnet

Когда кошелек Dash Core запущен, нужно выберать в меню Settings -> Options, выберите вкладку wallet в диалоговом окне Options, затем установите флажок напротив "Enable coin control features". Эта опция понадобится вам позже в процессе настройки.

Выберите вкладку "Получение", введите дополнительный ярлык, например, CN Bank или Funding Address для CrowdNode (это просто для справки), затем нажмите кнопку "Создать новый адрес получения" (в дальнейшем в этой статье он будет называться адресом CN Bank).
Щелкните правой кнопкой мыши новую строку в таблице "История запрошенных платежей" с меткой, которую вы только что ввели (CN Bank), и выберите "Копировать адрес".

  • Важно: нужно будет предоставить этот адрес CrowdNode и отправлять средства на CrowdNode именно с него


Если вы пробуете в тестовой версии, то посетите кран тестовой сети, например https://testnet-faucet.dash.org/ или http://faucet.testnet.networks.dash.org/, чтобы добавить средства на новый адрес CN Bank (для получения большого кол-ва tDash в поле промокод напишите "masternode").

CrowdNode

Первоначальная регистрация аккаунта CrowdNode

Для регестрации обязательно использовать реальный адрес электронной почты и не пользоваться услугами временных почти. Вместе с почтой нужно ввести пароль и настроить двухфакторную аутентификацию. После этого нужно проверить почту и войти в систему приняв условия предоставления услуг. Далее, следуем руководству по профилю и заполняем все обязательные поля. Когда дело дойдет до адреса, введите свой адрес Dash (tDASH в testnet) (CN Bank, если вы следовали инструкциям выше).

CrowdNode - (https://crowdnode.io/) testnet - (https://test.crowdnode.io/)

2. Вклад

Перейдите на вкладку "Trustless" и сделайте вклад; на этом этапе вам нужно решить, сколько Dash и на какой срок вы хотите положить в стейкинг (на момент написания статьи, единственный вариант - 10 дней).

После внесения средств вы должны использовать кошелек Dash Core для создания адреса подписи для следующих шагов. Это обычный DASH-адрес, который вы можете создать с помощью команды getnewaddress.

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

После этого необходимо дождаться присоединения других участников, чтобы сформировать пул из 1000 Dash. Как только другие участники присоединятся, пул будет заблокирован (это означает, что вы не сможете отозвать свой залог).

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

3. Подписание транзакций возврата и их анализ

Важным шагом в создании trustless мастернод является подписание возвратных транзакций и безусловно понимание того, что вы подписываете.

Анализ

Если вам интересно, что делает транзакция, которую вы собираетесь подписать, то выполните команду decoderawtransaction в HEX payload.

Пример:
decoderawtransaction 0200000001c39da9f425e33d6a4294ad4a012bd814b338d49a417f33e26f426e0d48a091dd0100000000feffffff02784447f80d0000001976a914f448d78f7e7b4914466d9fe2e0aa5d1a7a6f4c4688ac787c2f50090000001976a914766001fed6690efdb468ea88e0be2e8b0f0e86df88ace57e2163 

Это приведет к следующему результату:

Результат расшифровки

Если вы хотите убедиться, что время блокировки соответствует. Вы можете использовать конвертер времени Unix(https://unixtime.org/) чтобы увидеть его в читаемом виде.

Вы можете увидеть платежи участников в разделе "vout", как показано выше. Найдите платеж с вашим адресом и убедитесь, что сумма соответствует вашему вкладу. Обратите внимание, что из суммы вашего взноса была вычтена небольшая комиссия за транзакцию.

Если все это правильно сформировано, вам нужно будет подписать транзакцию.

Подписание

Подписание транзакций

Для подписания транзакции вам понадобится приватный ключ адреса с мультиподписью для мастерноды, на котором хранятся ваши Dash.

  • Важно: Это не (и не должен быть) приватный ключ для вашего основного адреса на CrowdNode (тот, на который приходят выплаты с CN / CN bank).

Для его получения используйте команду dupmpprivkey:

Example:dumpprivkey yX7MbaTCsSNpfticSqSgkSCkSaRWDyv4sM
Response:cRBTwNKzqhYhUVAvZYQjjgYpk6Tr5uXZ7JUzTSeFDSHjpompyuwo

Для подписи у вас есть команда с портала CrowdNode:

Просто замените INSERT_PRIVKEY_FOR_[YOURADDRESS]_HERE на ваш закрытый ключ, указанный выше, и выполните команду.

  • Важно: оставьте на месте [\" перед ключом и \"] после вашего ключа.

Если все в порядке, то в результате вы получите ответ в виде черного или белого текста. Тогда все в порядке, несмотря на то, что может появиться сообщение об ошибке, подобное этому:

"error": "Unable to sign input, invalid stack size (possibly missing key)"

или

"error": "Signature must be zero for failed CHECK(MULTI)SIG operation"

Несмотря на формулировку, все в порядке.

Если что-то будет не так, вы получите красное сообщение об ошибке.

Затем вы используете этот приватный ключ с командой signrawtransactionwithkey, чтобы применить свою подпись ко всем версиям транзакции, которая в конечном итоге будет использована для остановки мастерноды и прямого возврата всех Dash участникам.

Каждый участник пула в конечном итоге получит две транзакции.

  • Обычную транзакцию возврата, в которой вы получаете обратно весь свой депозит (за вычетом некоторой суммы за tx-fee), но только по истечении определенного времени - а именно времени, которое вы заложили на первом этапе.
  • Транзакцию экстренного возврата, при которой вы получаете обратно свой депозит за вычетом штрафа в 2,5 DASH (который делится между другими участниками мастерноды и CrowdNode). Транзакция экстренного возврата предназначена только для ситуации, когда вам срочно нужно вернуть свой депозит (за вычетом штрафа), и вы можете воспользоваться ею в любое время после запуска мастерноды. Это означает, что при пуле, например, из 4 участников вам придется подписать 1+4 = 5 различных транзакций возврата. Нет проблем - просто некоторые упражнения по копированию-вставке.

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

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

4. Заключительное подписание

На третьем этапе вам нужно будет подписать сообщение о том, что вы получили невыполненые транзакции возврата, как это было сделано на первом этапе.
Финальное подписание

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

Теперь на странице доступны две заключительные транзакции:

Хэш возвратных транзакций
  1. Ваша личная операция по возврату средств в чрезвычайных ситуациях.
  2. Обычная транзакция возврата, которая может быть выполнена после периода блокировки.

Их также можно проверить, воспользовавшись методом для анализа, описанном предыдушем пункте.

И не забудьте скачать обе транзакции, чтобы не зависеть от CrowdNode) Эти предварительно подписанные транзакции, позволят вам вывести средства.

На последнем этапе вам нужно подписать итоговое сообщение. Вы просто делаете это, копируя текст и вставляя его в консоль Dash Core. Затем вы вставляете ответ, и все готово.

Система проверяет финальную подпись, и когда все подписи подтверждены, CrowdNode переведет залог в размере 1000 Dash на адрес с мультиподписью, запускающий мастерноду.

Поздравляем, мастернода запущена)

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

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

Вы можете транслировать транзакцию из Dash Core, тогда вы просто заходите в консоль кошелька и набираете текст:

sendrawtransaction INSERT_YOUR_RAW_TRANSACTION_HERE

Но также можете просто сделать это с нескольких сайтов блокчейн-проводников:

BlockCypher (https://live.blockcypher.com/dash/pushtx/)

Blockchair (https://blockchair.com/broadcast)

Заключение.

Пробуйте в тестнете, стейкайте в основной сети и пользуйтесь Dash.

Первая trustless мастернода уже в сети)

Полезные ссылки