В этом руководстве объясняется, что такое приватная монета, что обычный блокчейн раскрывает о ваших платежах и какую криптографию используют приватные монеты, чтобы скрыть отправителя, получателя и сумму. В конце разобран пример Blocknet и показано, как заработать свои первые приватные монеты майнингом.
Что такое приватная монета?
Приватная монета (монета конфиденциальности) — это криптовалюта, устроенная так, чтобы платежи не выставляли напоказ отправителя, получателя или сумму. Она использует криптографию — кольцевые подписи, одноразовые стелс-адреса и скрытые суммы, — поэтому каждая нода по-прежнему может проверить каждый платёж, а тот, кто читает блокчейн, узнаёт о нём очень мало.
Каждая криптовалюта ведёт общий реестр — блокчейн, — который копируют и проверяют множество независимых компьютеров. Именно эта открытость позволяет незнакомым людям договориться о том, кому что принадлежит, без банка посередине. Вопрос, на который отвечает приватная монета, — сколько информации о каждом платеже этот реестр должен показывать.
Bitcoin показывает большую часть. Его вайтпейпер описывает модель приватности одной фразой: «Публика может видеть, что кто-то отправляет сумму кому-то другому, но без информации, связывающей транзакцию с кем-либо». Имён там нет, но адреса и суммы публичны. Приватная монета идёт дальше и не выносит подробности каждого платежа в публичную запись, но при этом доказывает, что платёж соответствует правилам.
Что публичный блокчейн раскрывает о вас?
В прозрачном блокчейне, таком как Bitcoin, любой, кто знает один из ваших адресов, может найти его в обозревателе блоков и увидеть:
- Его баланс — до последней единицы.
- Каждый входящий и исходящий платёж — с суммами и датами.
- Куда деньги ушли дальше — потому что каждый платёж указывает адрес, с которого он пришёл, и адрес, на который он идёт.
Ваше имя там не записано, но адреса редко долго остаются ни с кем не связанными. Оплата в магазине, вывод с биржи или публикация адреса для пожертвований связывают его с вами, и с этого момента вся история читается. Это примерно как вывесить выписку по своему банковскому счёту на общественной доске объявлений, указав номер счёта вместо имени. Любой, кому вы платите, видит, сколько у вас есть, а любой, кто платит вам, может наблюдать, что вы делаете с деньгами.
Приватная монета устроена так, чтобы доска объявлений показывала только то, что действительные платежи состоялись.
Как приватные монеты скрывают отправителя, получателя и сумму?
Многие приватные монеты сочетают три техники. Кольцевые подписи скрывают отправителя, смешивая настоящую монету с ложными входами (decoy), одноразовые стелс-адреса скрывают получателя, давая каждому платежу новый адрес, а обязательства с доказательствами диапазона скрывают сумму, доказывая при этом её корректность. Многие также защищают сетевой уровень, так что источник транзакции остаётся скрытым.
Каждая техника закрывает одну часть платежа. Вот как они работают, простыми словами.
Кольцевые подписи скрывают, кто заплатил
Кольцевая подпись позволяет подписать от имени группы, не раскрывая, какой участник подписал. Рон Ривест, Ади Шамир и Яэль Тауман описали эту идею в 2001 году, а схема CryptoNote 2013 года принесла её в криптовалюты. Когда вы тратите монеты, ваш кошелёк выбирает другие выходы из блокчейна в качестве ложных входов и подписывает за всю группу. Любой может проверить, что был потрачен один из них, но подпись не говорит, какой именно.
Приватные монеты используют связываемые кольцевые подписи, которые добавляют образ ключа: метку, уникальную для настоящей тратимой монеты, которая ничего не говорит о том, какой это участник кольца. Если один и тот же образ ключа появляется дважды, сеть отклоняет вторую трату, поэтому приватные монеты по-прежнему нельзя потратить дважды. Monero и Blocknet используют компактную версию под названием CLSAG.
Стелс-адреса скрывают, кому заплатили
В схеме стелс-адресов адрес, который вы сообщаете, никогда не появляется в блокчейне. Ваш адрес содержит два публичных ключа: ключ просмотра и ключ траты. Для каждого платежа кошелёк отправителя смешивает эти ключи с новым случайным значением и получает адрес, который используется один раз и больше никогда. На вашей стороне приватный ключ просмотра позволяет кошельку сканировать блокчейн и находить адресованные вам выходы, а приватный ключ траты позволяет их тратить.
Если десять человек заплатят на адрес с вашего сайта, блокчейн покажет десять отдельных одноразовых адресов без видимой связи между ними, так что никто не сможет подсчитать, сколько вы получили.
Обязательства и доказательства диапазона скрывают сумму
Суммы хранятся в виде обязательств Педерсена, которые фиксируют число, не показывая его. Обязательства можно складывать, поэтому каждая нода может убедиться, что то, что входит в транзакцию, совпадает с тем, что из неё выходит, включая комиссию, не видя ни одной цифры. Затем доказательство диапазона показывает, что ни одна скрытая сумма не отрицательна, так что никто не может создать монеты из воздуха. Bulletproofs, опубликованные Бюнцем и соавторами в 2018 году, сделали эти доказательства намного меньше.
Сетевая приватность скрывает, откуда пришёл платёж
Даже идеально приватную транзакцию можно было бы отследить до компьютера, который её разослал, наблюдая, какая нода объявила её первой. Dandelion++, опубликованный в 2018 году, противодействует этому: сначала новая транзакция незаметно передаётся от одного пира к другому вдоль «стебля», а затем распространяется по всей сети из случайной точки дальше по пути.
Некоторые приватные монеты идут другим путём. Zcash, запущенный в 2016 году, использует доказательства с нулевым разглашением под названием zk-SNARK: его экранированные адреса скрывают отправителя, получателя и сумму, а доказательство показывает, что транзакция действительна, не раскрывая ничего из этого.
Почему важна приватность по умолчанию?
Когда приватность — это функция, которую нужно включить, использующие её транзакции образуют меньшую группу, а меньшую группу проще изучить. Когда каждая транзакция устроена одинаково, приватный платёж выглядит как любой другой платёж в блокчейне, и никому не нужно помнить о том, чтобы его защитить.
Приватность по умолчанию также сохраняет взаимозаменяемость всех монет — свойство, которое называется фунгибельностью. В прозрачном блокчейне монета несёт всю свою историю, и к двум монетам одинакового номинала могут относиться по-разному из-за того, где они побывали. Когда ни у одной монеты нет видимого прошлого, одна монета так же хороша, как любая другая, — именно этого люди и ждут от денег.
Повседневные причины просты. Компания не хочет, чтобы конкуренты читали её платежи поставщикам. Сотрудник не хочет, чтобы его зарплата была видна каждому, у кого он покупает кофе. Тот, кто жертвует на какое-то дело, может предпочесть держать это при себе. Наличные и обычные банковские счета уже дают людям такую приватность, а приватная монета приносит её в цифровые платежи.
Blocknet как пример приватной монеты
Blocknet — это приватная монета, которая применяет кольцевые подписи, стелс-адреса, скрытые суммы и сетевую приватность к каждому платежу. У её формата транзакций нет прозрачного режима:
- Отправитель: каждый вход подписывается кольцом CLSAG ровно из 16 выходов — настоящего и 15 ложных, — а консенсус отклоняет любой другой размер.
- Получатель: каждый платёж идёт на одноразовый стелс-адрес.
- Сумма: суммы — это обязательства Педерсена с 64-битными доказательствами диапазона Bulletproofs.
- Сеть: транзакции распространяются через Dandelion++, а стебли перестраиваются каждые 10 минут.
- Мемо: в каждом выходе есть место для зашифрованной заметки длиной до 124 байт, которую могут прочитать только отправитель и получатель; она дополняется до фиксированных 128 байт, так что платёж с заметкой выглядит так же, как без неё.
Кроме того, в Blocknet можно платить по имени. Короткое имя Blocknet ID, например @alice, заменяет адрес длиной более 90 символов, а платежи на это имя по-прежнему попадают на новые стелс-адреса, поэтому публичное имя ничего не говорит о доходах владельца. Подробно о каждом уровне читайте в статье о том, как Blocknet сохраняет платежи приватными, а общую картину даёт статья что такое Blocknet?
Запланированное обновление Blocknet под названием Faraday расширит группу, в которой скрывается каждая трата. Как сказано на blocknetcrypto.com: «Сегодня трата скрывается среди 16 выходов. После Faraday она будет скрываться среди всех выходов в блокчейне».
Как получить приватную монету?
Её можно заработать майнингом. Доказательству работы Blocknet, Argon2id, нужно около 2 GB памяти на каждый хеш, поэтому майнят обычные CPU и ОЗУ настольных компьютеров, ноутбуков и серверов. Выплаты пула приходят к вам как любой другой платёж Blocknet — на одноразовые стелс-адреса со скрытыми суммами.
- Заведите кошелёк. Руководство по кошельку Blocknet для майнинга показывает, как его создать, сделать резервную копию сид-фразы и скопировать адрес.
- Скачайте seine. Это бесплатный майнер Blocknet с открытым исходным кодом для Windows, macOS и Linux, он находится в разделе загрузки. Он майнит на вашем CPU и, в Windows и Linux, одновременно на любой видеокарте NVIDIA, а также настраивается сам во время работы.
- Начните майнить на bntpool.com. Вставьте свой адрес или
@name, примите пул по умолчанию, и выплаты будут приватно поступать в ваш кошелёк. Руководство как майнить Blocknet проводит через каждый шаг.
Часто задаваемые вопросы
Чем приватная монета отличается от Bitcoin?
Bitcoin записывает каждый адрес и каждую сумму в открытом виде, поэтому любой может проследить монеты от одного адреса к другому и прочитать каждый баланс. Приватная монета использует криптографию — кольцевые подписи, одноразовые адреса и скрытые суммы, — поэтому блокчейн по-прежнему доказывает, что каждый платёж действителен, но посторонним почти ничего не показывает о том, кто кому заплатил и сколько.
Во всех ли приватных монетах приватность обязательна?
Нет, схемы различаются. Некоторые монеты, такие как Monero и Blocknet, применяют приватность к каждой транзакции, поэтому публичного режима нет вовсе. Zcash предлагает экранированные адреса, которые скрывают отправителя, получателя и сумму с помощью доказательств с нулевым разглашением, наряду с прозрачными адресами, работающими почти как адреса Bitcoin. Пользователи могут переводить средства между ними.
Как сеть может проверять платежи, которых не видит?
Криптография позволяет нодам проверить платёж, не читая его подробностей. Кольцевая подпись доказывает, что был потрачен один из нескольких выходов, образ ключа блокирует повторную трату тех же монет, а обязательства сумм складываются, так что ноды могут убедиться, что входы равны выходам плюс комиссия. Доказательства диапазона показывают, что ни одна скрытая сумма не отрицательна.
Можно ли майнить приватную монету на обычном компьютере?
Да, если монета использует требовательное к памяти доказательство работы. Blocknet использует Argon2id, которому нужно около 2 GB памяти на каждый хеш, поэтому майнят обычные настольные компьютеры, ноутбуки и серверы. Скачайте seine, укажите свой адрес Blocknet или @name, и он будет майнить в пуле bntpool.com на вашем CPU и любой видеокарте NVIDIA.