CoinJoin и InstantSend#

CoinJoin#

В этой документации описано, как использовать функцию CoinJoin для создания транзакций CoinJoin с помощью Dash для обеспечения конфиденциальности потребительского уровня.

Справочный материал#

CoinJoin - это бездоверительный (т.е. не хранимый) метод проведения последовательности транзакций, при котором наблюдателю сложно отследить историю транзакций. Текущая реализация CoinJoin в кошельке Dash Core позволяет обрабатывать любое количество Dash. CoinJoin также доступен в кошельке Dash Electrum.

Знание точного количества раундов CoinJoin оказывает количественное влияние на уверенность противника при попытке угадать историю транзакций. По этой причине рекомендуемое (и используемое по умолчанию) число раундов CoinJoin равно четырем, а некоторые вводимые данные могут проходить дополнительные раунды для дальнейшего повышения конфиденциальности.

Более подробно о теории и процессах CoinJoin можно прочитать здесь.

Конфигурация#

  1. Откройте кошелек Dash Core, перейдите в раздел Настройки и выберите пункт Опции. Перейдите на вкладку CoinJoin.

    ../../../../_images/options-coinjoin.png
  2. Рядом с пунктом Раунды смешивания введите значение в диапазоне от 2 до 16.Каждый раунд CoinJoin выполняет одну транзакцию CoinJoin, называемую деноминацией. Большее число раундов повышает общий уровень конфиденциальности и одновременно снижает вероятность обнаружения через сговор узлов. Наибольшее количество раундов, доступное в настоящее время, составляет 16.

    ПРИМЕЧАНИЕ: Для предотвращения злоупотреблений в системе в среднем за каждый десятый патрон взимается плата в размере .0001 DASH.

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

  4. Нажмите OK для сохранения настроек.

  5. По умолчанию при открытии кошелька функция CoinJoin отключена. Он запустится только после того, как вы установите количество раундов и количество Dash для обработки в разделе настроек и нажмете кнопку Start CoinJoin на вкладке Overview вашего кошелька.

На этом экране также доступны несколько дополнительных опций для пользователей, которым требуется больше контроля:

  • Значения Входы на один номинал позволяют ограничить количество создаваемых входов. Это может быть полезно, если в итоге получается слишком много мелких номиналов.

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

Начала CoinJoin#

Процесс CoinJoin инициируется нажатием кнопки Start CoinJoin на вкладке Overview кошелька Dash Core. CoinJoin возможен при выполнении следующих условий:

  • Кошелек содержит достаточное количество неденоминированных средств для создания минимально необходимых деноминированных значений.

  • Пользователь не отключил CoinJoin в диалоговом окне «Параметры».

  • Целевое значение для обработанных средств в диалоговом окне «Параметры» больше нуля.

Если ваш кошелек зашифрован (что настоятельно рекомендуется), вам будет предложено ввести кодовую фразу. Установите флажок Только для смешивания через CoinJoin, чтобы разблокировать кошелек только для CoinJoin.

../../../../_images/mixing-password.png

Ввод пароля только для обработки CoinJoin#

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

../../../../_images/mixing.png

Интерфейс CoinJoin после нажатия кнопки Start CoinJoin. Обратите внимание на Статус - Включено.#

CoinJoin начнет создавать транзакции, и ваш баланс CoinJoin будет постепенно увеличиваться. Этот процесс может занять некоторое время, поэтому будьте терпеливы. Более подробно этот процесс можно отслеживать, как описано в следующем разделе.

Любое из следующих действий приведет к прерыванию процесса. Поскольку транзакции являются атомарными (они либо выполняются полностью, либо не выполняются вообще), можно безопасно прервать CoinJoin в любой момент.

  • Нажатие кнопки Stop CoinJoin на вкладке Overview (Обзор)

  • Закрытие клиента до завершения CoinJoin

  • Отправка средств CoinJoin с кошелька до завершения раундов CoinJoin

  • Отключение CoinJoin до завершения процесса

Мониторинг CoinJoin#

Для более детального мониторинга CoinJoin необходимо включить некоторые дополнительные возможности кошелька. Перейдите в раздел Настройки, выберите пункт Опции и перейдите на вкладку Кошелек. Установите флажок Включить расширенный интерфейс. Это позволит вам следить за ходом работы и видеть, какие отдельные операции CoinJoin выполняет в фоновом режиме.

../../../../_images/mixing-progress.png

Мониторинг хода выполнения смешивания CoinJoin#

Поскольку CoinJoin создает большое количество новых адресных ключей для отправки и получения деноминаций, вы можете получить предупреждение, когда количество оставшихся ключей закончится. В этом нет ничего страшного, поскольку кошелек просто будет создавать новые ключи по мере необходимости. Однако для кошельков, не являющихся HD-кошельками, эти ключи не будут существовать в предыдущих резервных копиях вашего кошелька. По этой причине при использовании не HD-кошелька необходимо повторно создать резервную копию кошелька после завершения процесса. При использовании HD-кошелька все ключи будут получены из мнемоники кошелька, поэтому дополнительное резервное копирование в процессе CoinJoin не требуется. Чтобы определить, используете ли вы HD-кошелек или нет, можно посмотреть в строке состояния на значок «HD».

Вы также можете следить за ходом выполнения CoinJoin, просматривая созданные в процессе транзакции на вкладке Транзакции.

../../../../_images/coinjoin-transactions.png

Транзакции, созданные CoinJoin, на вкладке Транзакции#

В следующей таблице описаны транзакции, связанные с CoinJoin, которые отображаются в колонке Тип на вкладке Транзакции:

Типы транзакций

Описание транзакции

CoinJoin Внести залоговые средства

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

CoinJoin Создание деноминаций

Средства кошелька были разбиты на деноминации CoinJoin (Шаг 1 :ref: здесь <coinjoin>)

CoinJoin смешивание

На мастерноду была отправлена транзакция для участия в сессии CoinJoin (Шаг 3 тут)

Залоговый платеж CoinJoin

Залог сессии CoinJoin был востребован. Эта плата взимается в ~10% сессий для предотвращения спам-атак.

Отправка CoinJoin

Средства в деноминации были использованы для отправки кому-либо платежа. Примечание: В отличие от предыдущих 4 типов транзакций, эта транзакция не является транзакцией CoinJoin.

Вы также можете воспользоваться функцией контроля монет, чтобы узнать, на каких адресах хранятся деноминации, готовые к использованию в транзакциях CoinJoin. Перейдите на вкладку Отправить вашего кошелька и нажмите Вводы, чтобы просмотреть возможные адреса ввода для ваших транзакций. Вы можете увидеть, что на каждом адресе хранятся заданные деноминации Dash и сколько раундов было завершено. Это сделано для того, чтобы обеспечить эффективную комбинацию адресов, которые можно использовать в качестве входов в транзакции CoinJoin без особых изменений, поскольку для полного расходования всех входов сумма в транзакции CoinJoin должна быть округлена в большую сторону. В настоящее время минимальный баланс для входа в транзакцию CoinJoin составляет 0,00100010 Dash.

../../../../_images/coinjoin-addresses.png

Диалог выбора монет показывает адреса, на которых хранятся балансы CoinJoin в различных деноминациях#

Переводы с CoinJoin#

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

Чтобы отправить платеж с помощью CoinJoin, перейдите на вкладку CoinJoin кошелька Dash Core. На вкладке Отправить отображается не общий баланс, а баланс CoinJoin. Затем вы можете ввести адрес Pay To, Label, Amount и нажать Send mixed funds. Сумма платежа будет округлена в большую сторону, чтобы полностью израсходовать наименьший возможный деноминированный остаток (в настоящее время с точностью до 0,001 DASH). Перед отправкой вам будет предложено ввести пароль и получить подробную информацию о структуре комиссии CoinJoin.

../../../../_images/coinjoin-send.png

Dash Core готов к отправке транзакции CoinJoin. Обратите внимание на использование вкладки CoinJoin и на то, что отправляемая сумма меньше доступного баланса CoinJoin#

Входы#

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

Из-за вероятностного характера процесса CoinJoin увеличение количества входов в транзакцию может незначительно снизить уровень конфиденциальности. По этой причине использование CoinJoin не рекомендуется пользователям, требующим высокого уровня конфиденциальности. Хотя невозможно с абсолютной уверенностью привязать транзакцию CoinJoin к одному адресу источника, использование большего количества входов может сделать транзакцию более уязвимой для различных потенциальных атак на привязку. Существует ряд компаний, занимающихся анализом цепочек <https://www.dash.org/regulatory#kyc>`__, которые обладают инструментами, позволяющими оценивать риски транзакций на блокчейне Dash, включая транзакции CoinJoin.

Вы можете уменьшить количество входов в транзакцию CoinJoin, определив сумму транзакции таким образом, чтобы она более эффективно расходовала имеющиеся у вас деноминации, или обработав большее количество Dash, чтобы обеспечить достаточное количество входов с соответствующими деноминациями. Используйте функцию Coin Control 1 на вкладке CoinJoin для просмотра, выбора или отмены выбора UTXO CoinJoin, доступных в данный момент для использования в качестве входов транзакции.

InstantSend#

Введение#

В этой документации описано, как использовать InstantSend для мгновенной отправки средств любому другому пользователю Dash по всему миру. С момента выпуска InstantSend на основе Long Living Masternode Quorums (LLMQ-IS) в Dash 0.14 сеть Dash сама будет пытаться генерировать блокировку InstantSend почти для каждой транзакции, обрабатываемой сетью, в соответствии с этими правилами 1. В отличие от предыдущей реализации InstantSend, которая требовала более высокой платы, LLMQ-IS блокирует транзакции без каких-либо действий со стороны пользователя. По этой причине только получателю необходимо следить за блокировкой транзакций в сети, чтобы иметь возможность получать средства и обрабатывать транзакции с немедленным расчетом.

Dash InstantSend поддерживается многими кошельками и продавцами, включая (но не ограничиваясь) следующие:

  • Кошелёк Dash Core

  • Кошелёк Dash для Android

  • Кошелёк Dash для iOS

  • My Dash Wallet

  • Kraken

  • Bitrefill

  • и многие другие…

Подробнее теоретическую часть и о процессах функции InstantSend вы можете почитать здесь.

Транзакции InstantSend#

Начиная с версии Dash 0.14, все возможности пользовательского интерфейса для создания транзакции InstantSend были удалены, поскольку все транзакции фактически являются транзакциями InstantSend. Как и прежде, получатель отвечает за мониторинг сети на предмет блокировки InstantSend и реализацию пользовательской логики и интерфейсов для продолжения обработки транзакции после получения платежа. Более подробную информацию о том, как отслеживать блокировки InstandSend, см. в документации InstantSend Integration.