Введение.
Все криптовалюты, начиная с Биткоина и заканчивая Nxt :-)) - децентрализованные, никому не подвластные, т.е. дают каждому полный контроль над своими деньгами, убирая посредников в виде банков и центробанков.
Но цена за это - полная прозрачность всех транзакций, т.к. база блокчейна доступна всем. Поэтому для каждого адреса типа NXT-DJ68-PG7W-4JEU-2LU5T можно отследить всю историю движения монет на нём, и, возможно, связать его с реальной личностью (деанонимизировать).
Поэтому ещё во времена биткоина :-)) начали возникать централизованные (т.е. требующие доверия к владельцам) сервисы - перемешивальщики монет ("миксеры"), позволяющие существенно затруднить отслеживание транзакций человека. Но централизованный характер этих сервисов противоречит самой распределённой и независимой ни от кого природе криптовалют.
И вот впервые в криптоистории платформа Nxt реализовала Перемешивание монет (Shuffling) прямо в ядре платформы. Теперь нет нужды доверять свои монеты третьей стороне, которая, к тому же, берёт за это немалый процент. Проект Nxt подтвердил свою репутацию по-настоящему децентрализованной, независимой и надёжной криптоплатформы.
Человечество теперь может безопасно анонимизировать свои NXT, и даже биткоины при помощи полностью децентрализованной цепочки BTC -> mgwBTC -> миксованные mgwBTC -> BTC, то есть человечество получило в том числе супер дешёвый не требующий доверия к 3-ей стороне миксер BTC.
Насчет миксера. Как он будет реализован не известно? Мастерноды, как в DASH?
- никаких мастернод, встроенный в ядро Nxt миксер (
Coin Shuffling) будет основан на вот этой научной работе:
http://crypsys.mmci.uni-saarland.de/projects/CoinShuffle/coinshuffle.pdf , и описан вот здесь:
https://bitbucket.org/JeanLucPicard/nxt/issues/135/coin-shuffling-monetary-systemПримерно так: в миксе может участвовать от 4-х до 10-ти и более аккаунтов. Алиса затевает микс, посылая в сеть особую транзакцию. Боб, Чарли и Дэйв видят эту затею в своих Nxt клиентах, и регистрируются в этом миксе, посылая особую транзакцию (содержащую в зашифрованном виде новый номер аккаунта-назначения). Сеть резервирует микс-суммы из их аккаунтов-источников.
После того, как желаемое (Алисой) количество миксантов наберётся, она запускает микс ещё одной особой транзакцией, которая вычисляет специальный токен, и передаёт его Бобу, тот дошифровывает его, и передаёт Чарли, а тот - Дейву. После этого микс переходит в стадию подтверждения.
Каждый из участников по очереди криптографически проверяет результат первого этапа, и после подтверждения, Алиса запускает распределительную транзакцию, которая и направляет зарезервированные монеты на новые аккаунты.
Проще говоря в сеансе миксинга участвуют те, кто хочет смиксовать (анонимизировать) определённую сумму, например, 10k NXT.
Величину этой суммы устанавливает инициатор сеанса, также он устанавливает необходимое и достаточное количество участников (например, 10) и период (в блоках т.е. минутах), за который это количество участников должно набраться. С каждого участника списывается (резервируется) 10k NXT. Если за установленное количество блоков не наберётся 10 участников, то сеанс отменяется, и все зарезервированные NXT возвращаются.
Если (как только) набралось 10 участников, сразу начинается миксинг (он длится довольно долго, т.к. аккаунты обмениваются шифрованными сообщениями), в результате которого каждому из участников на его тайный аккаунт от кого-то (он не знает от кого) перечисляется 10k NXT.
Ещё раз - в миксинге участвуют только те, кому
реально нужно анонимизировать свои NXT, точнее создать анонимный аккаунт.
Если вдруг кто-то в порядке "помощи" решит поучаствовать в миксинге из 5-ти аккаунтов, а затем перешлёт смикшенные NXT обратно на свой аккаунт, то он
окажет медвежью услугу остальным 4-м участникам, т.к. каждый из них, зная свой "вход" и "выход" сможет деанонимизировать каждого из оставшихся участников с вероятностью 1/3.
Amount
в экранной форме Миксинга - это конкретная сумма сеанса Миксинга, которую устанавливает инициатор сеанса, например, 10k NXT. Если в сеансе участвует 5 аккаунтов, то суммарно перетасуется 50k NXT, то есть по 10k каждого из участников уйдёт на их новые тайные аккаунты. Лично каждый участник миксинга ничего никому не пересылает, система сама резервирует 10k у каждого участника, а затем сама перераспределяет случайным образом их на тайные счета.
В самом в миксинге ничего нелегального нет- аккаунты просто обмениваются монетами (NXT). А вот дальше со своего анонимного аккаунта кто-то может сделать что-то нелегальное, но это уже будет его аккаунт и его действия (транзакции).
Пример использования миксинга.
У Алисы есть Nxt-аккаунт "А", с него она шлёт "спасибки"
(в виде NXT) своим знакомым в социальных сетях, участвует в краудфандинговых проектах по спасению шкур животных, льдов Арктики и т.п., и её знакомые, конечно, знают номер её аккаунта ("А").
Но вот Алисе понадобилось оплатить услуги врача, скажем, психиатра по имени Боб. Это очень востребованный врач, оплату он, естественно, принимает только в NXT, и благодаря популярности и рекламе его Nxt-аккаунт "Б" широко известен.
Алиса не хочет, чтобы в блокчейне был виден платёж с её аккаунта "А" на аккаунт "Б". Она присоединяется к сеансу миксинга, при этом в своём Nxt-клиенте указывает пароль от своего будущего тайного аккаунта "В". Через какое-то время по окончании сеанса миксинга, на её новом аккаунте "В" оказываются NXT, часть из которых она переводит Бобу, а другие затем использует в интернет-аптеке для покупки прописанных ей антидепрессантов (за них она тоже не хочет платить со своего публичного аккаунта "А").
---------------
Для успешного завершения миксинга нужна работа Nxt-сервера, к которому (через web-клиент) подключился пользователь, и затем присоединился к сеансу миксинга. Если пользователь подключается к удалённому VPS с Nxt-сервером, то должен работать VPS. Если пользователь подключается к своему локальному Nxt-серверу (через localhost:7876), то должен работать локальный сервер.
Если по каким-то причинам Nxt-сервер отключился ("упала" Java ...), то его нужно срочно перезапустить, войти в него из web-клиента, и снова присоединиться к тому же сеансу миксинга (при этом повторно будет запрошен пароль его нового тайного аккаунта).
Тот пользователь (аккаунт), из-за кого сеанс миксинга провалился, штрафуется на 1000 NXT. Это потому, что невозможно доказать - умышленно кто-то сорвал сеанс, или по объективным причинам (завис/умер/выключился его Nxt-сервер).
UPD: описание Миксера из версии 1.7.0e:
Миксер монет. Функционал основан на работе Tim Ruffing,
http://crypsys.mmci.uni-saarland.de/projects/CoinShuffle/coinshuffle.pdf .
Миксовать можно следующие активы: NXT, MS-валюту (если она не создана с признаком "немиксуемая"), AE-ассеты. Любой аккаунт может инициировать новый микс, указав актив, сумму, требуемое количество участников, финальный блок для регистрации участников (API-функция shufflingCreate). Последующие миксинг-шаги можно осуществлять вручную (
API shufflingRegister,
shufflingProcess,
shufflingVerify/
shufflingCancel), либо, что более удобно, посредством автоматизированного Миксера - API-функции
startShuffler. После запуска Миксер отслеживает в блокчейне транзакции, относящиеся к инициированному миксу, и автоматически посылает требуемые транзакции от имени пользователя, выполняя микс, проверку или отмену по мере необходимости. Для этого Миксер должен держать пароль пользователя в памяти, т.е. он должен выполняться только на проверенном локальном компьютере. Перезагрузка сервера требует повторного запуска Миксера, т.к. он никогда не должен сохранять пароль на диск.
Чтобы участвовать в миксе, необходимо внести депозит в 1000 NXT вдобавок к сумме валюты или ассета; если миксуются монеты NXT, то миксируемая сумма должна превышать 1000 NXT. Если микс состоялся, то эта величина добавляется к аккаунту-получателю, чтобы у того для последующих транзакции были NXT для покрытия комиссии сети (поскольку аккаунтами-получателями могут быть только абсолютно новые аккаунты). Если микс не удаётся из-за того, что зарегистрировавшийся не выполняет требуемые шаги, или посылает ложные данные, то участник, отменяющий микс наказывается удержанием этого депозита (в пользу форжера финишного миксо-блока). Если микс отменяется из-за недостатка участников, никто не наказывается, и все депозиты возвращаются.
Для получения информации о текущих миксах и их участниках используются следующие API-функции:
getAllShufflings,
getAccountShufflings,
getAssignedShufflings,
getHoldingShufflings,
getShufflers,
getShuffling, и
getShufflingParticipants.
При желании, нода может удалить из своей базы данных закончившиеся миксы, выставив параметр
nxt.deleteFinishedShufflings=true (по умолчанию -
false).
Комиссия за создание микса, или подключение к нему составляет 1 NXT, за транзакцию миксования либо отмены - 10 NXT, и за транзакцию проверки - 1 NXT.
См. также:
One can tell from the "Assignee" account whose fault it was when a shuffling fails. To document its meaning in each shuffling stage:
* REGISTRATION: last currently registered participant
* PROCESSING: next participant in turn to submit processing data
* VERIFICATION: 0, not assigned to anyone
* BLAME: the participant who initiated the blame phase
* CANCELLED: the participant who got blamed for the shuffling failure, if any
* DONE: 0, not assigned to anyone
In the transaction info for the shuffling one can also see the state of each participant, who submitted processing or verification data and who not yet. For more details about why a shuffling failed, need to look in the log.
Также имейте в виду это:
Обратите внимание на комментарии на той же странице. Если в миксе участвуете вы + 3 других аккаунта, принадлежащих одному человеку, то он знает какой из четырех результирующих аккаунтов ваш.
Также имейте в виду ньюансы миксеров как явления:
Миксинг не обеспечивает полную анонимность транзакций. Если исключить Sybil-атаку, в которой атакующий участвует в большинстве миксов, сводя практически к нулю пользу миксинга, то все равно в какой-то момент в будущем можно деанонимизировать участников микса. Это происходит из-за того, что каждая последующая транзакция, использующая смиксенные монеты, может приводить к утечке некоторого количества бит информации. Написать алгоритм, "собирающий" все воедино, можно. При этом нет нужды в получении 100% результатов. Если алгоритм сообщит что с 78% вероятности та транзакция оплаты за гексоген принадлежит Васе, то можно сконцентрироваться на анализе данных с других каналов, чтобы уточнить эту вероятность.
Значительный минус миксинга в том, что его безопасность определяется поведением всех участников. Если, к примеру, Вася, Петя и Маша смиксили свои монеты вместе, а потом Маша попалась на подпольном аборте и во время допроса созналась что та транзакция оплаты за аборт принадлежит ей, то вероятность принадлежности транзакции за гексоген Васе подскочит с 33% до 50%.
Также граждане, покупающие травку, могут отказаться от использования миксинга, если система активно используется антиединороссами, просто чтобы не привлекать чрезмерного внимания к своей персоне. Что произойдет, если единороссы начнут анализировать систему, чтобы выявлять своих врагов.
Понимание всех этих нюансов - важный момент в безопасности использования Shuffling.
Краткая инструкция по миксингу:
1] установите Nxt-сервер ("
Правильный способ" в первом сообщении этой темы);
2.1] в файле
nxt.properties заполните свойство
nxt.adminPassword= каким-нибудь паролем;
2.2] запустите Nxt-сервер;
2.3] в меню "Настройки"
(под верхним значком шестерёнки) в поле "пароль администратора" укажите тот же пароль;
(п. 2] можно и не делать, но тогда невозможно будет любоваться состоянием своего Миксера)3] слева в пункте меню "Shuffling" --> "Active Shufflings" нажмите кнопку "Join" в одном из миксов;
4] в поле "Recipient Passphrase" вбейте пароль к вашему будущему смиксированному аккаунту
(запишите его!) и нажмите "Start Shuffler";
5] не останавливайте свой Nxt-сервер
(браузер можно закрыть) пока ваш микс не наберёт нужно число участников и не окажется в "My Shufflings".