Как Blocknet обеспечивает приватность платежей

· 5 мин чтения

Эта статья идёт глубже, чем краткий обзор приватности в статье Что такое Blocknet?, и разбирает каждый уровень приватности в транзакции Blocknet: что он скрывает, как работает и что это значит, когда вы в следующий раз отправите или получите BNT.

Как Blocknet обеспечивает приватность платежей?

Краткий ответ

Blocknet скрывает отправителя с помощью кольцевых подписей CLSAG по 16 выходам, получателя — с помощью одноразовых стелс-адресов, а сумму — с помощью обязательств Педерсена и доказательств диапазона Bulletproofs. Ретрансляция Dandelion++ скрывает, где транзакция вошла в сеть, а каждый выход несёт зашифрованное 128-байтовое мемо. Всё это обязательно, прозрачного режима нет.

Blocknet использует то же проверенное семейство криптографии, что и Monero: кольцевые подписи, стелс-адреса и доказательства диапазона Bulletproofs, построенные на группе Ristretto над Curve25519. Сверх этого он добавляет оплату по имени и зашифрованные мемо. Каждый уровень закрывает свою часть платежа, и вместе они почти ничего не оставляют тому, кто читает блокчейн.

Кольцевые подписи скрывают, кто заплатил

Когда вы тратите монеты, ваш кошелёк подписывает группу из 16 выходов: тот, которым вы владеете, и 15 других, выбранных из блокчейна в качестве ложных (decoy). Эта подпись — кольцевая подпись CLSAG. Любой может проверить, что подписал один из участников кольца, но подпись не раскрывает, какой именно.

Размер кольца закреплён консенсусом. Каждый вход должен содержать ровно 16 участников кольца, каждый из которых — настоящий выход, уже находящийся в блокчейне, а всё остальное сеть отклоняет. Поскольку все входы в сети используют один и тот же размер, по размеру кольца нельзя выделить транзакцию или кошелёк, который её создал. Код демона фиксирует размер, «чтобы предотвратить утечку информации из-за переменного размера колец».

Чтобы одни и те же монеты нельзя было потратить дважды, каждый вход также содержит образ ключа (key image). Он уникален для настоящего выхода, который тратится, но не раскрывает, какой это участник кольца. Если образ ключа появляется второй раз, сеть отклоняет транзакцию как двойную трату.

Стелс-адреса скрывают, кому заплатили

Адрес Blocknet содержит два публичных ключа: ключ траты и ключ просмотра. Когда вам платят, кошелёк плательщика объединяет ваши ключи со свежим случайным числом и создаёт одноразовый адрес, который используется только для этого выхода. Адрес, которым вы поделились, никогда не появляется в блокчейне.

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

То же верно и для имён Blocknet ID. Короткое имя вроде @name публично по своей сути, потому что отправитель находит его на blocknet.id, чтобы вам заплатить. Но платежи на него всё равно идут на новые одноразовые адреса, поэтому имя ничего не говорит о том, сколько вы получили.

Как Blocknet скрывает суммы транзакций?

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

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

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

Dandelion++ скрывает, откуда пришла транзакция

Если бы нода объявляла свою транзакцию всем своим пирам сразу, тот, кто наблюдает за многими нодами, мог бы угадать её источник, отметив, кто услышал о ней первым. Чтобы этого не допустить, Blocknet ретранслирует транзакции с помощью Dandelion++.

Новая транзакция сначала идёт по «стеблю» (stem), передаваясь от одного пира к одному следующему пиру. На каждом переходе с вероятностью 90% она продолжает путь по стеблю; иначе она «распускается» (fluff) и с этой точки расходится по всей сети. К тому моменту, когда большинство нод видят транзакцию, она выглядит пришедшей от ноды, которая может находиться за много переходов от вашей. Маршруты стеблей перетасовываются каждые 10 минут.

Кто может прочитать мемо Blocknet?

Каждый выход несёт 128-байтовое зашифрованное мемо, вмещающее до 124 байт текста. Оно шифруется тем же секретом, который есть у отправителя и получателя для этого выхода, поэтому прочитать его можете только вы двое. Используйте его для номера счёта, номера заказа или короткой заметки тому, кому вы платите. Руководство по зашифрованным мемо показывает, как добавить мемо и где найти полученные.

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

Приватность в Blocknet необязательна?

Краткий ответ

Нет. Приватность в Blocknet обязательна. В формате транзакций нет прозрачного режима, а консенсус требует, чтобы каждый вход содержал кольцо ровно из 16 участников, поэтому каждый платёж использует кольца, стелс-адреса, скрытые суммы и зашифрованное мемо. Поскольку отказаться никто не может, приватные платежи выглядят как все остальные платежи в блокчейне.

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

Что это значит, когда вы кому-то платите

Когда вы отправляете BNT на адрес или @name, кошелёк выполняет все шаги за вас, и ничего включать не нужно:

  1. Он выбирает 15 ложных выходов из блокчейна и подписывает ваш вход кольцом из 16.
  2. Он создаёт новый одноразовый адрес для получателя.
  3. Он создаёт обязательство для суммы и прикладывает доказательство диапазона.
  4. Он шифрует ваше мемо или случайное заполнение, если вы оставили мемо пустым.
  5. Он передаёт транзакцию Dandelion++ для ретрансляции.

Тот, кто читает блокчейн, видит входы, каждый из которых указывает на 16 возможных выходов, выходы, отправленные на никем ранее не виданные одноразовые адреса, обязательства вместо сумм и поле мемо со случайными на вид байтами. Тот, кому вы заплатили, видит платёж, сумму и вашу заметку в своём кошельке.

Если хотите заработать первые BNT, их можно намайнить на своём компьютере. Руководство по майнингу поможет за несколько минут запустить seine на bntpool.com, и майнить можно прямо на свой адрес или свой @name.

Что дальше: обновление Faraday

По данным blocknetcrypto.com, Blocknet планирует обновление сети Faraday с активацией примерно на 16 февраля 2027 года. На сайте перечислены два изменения, которые ещё больше усилят приватность:

На сайте также сказано, что Faraday не принесёт новой монеты и перезапуска, а ваша история сохранится. Проектирование, тестирование и проверка на устойчивость к атакам продолжаются, а даты являются плановыми, а не окончательными, поэтому следите за обновлениями на blocknetcrypto.com.

Часто задаваемые вопросы

Blocknet приватен по умолчанию?

Да. Каждая транзакция Blocknet использует кольцевую подпись по 16 выходам, одноразовый стелс-адрес для каждого получателя, скрытые суммы с доказательствами диапазона Bulletproofs и 128-байтовое зашифрованное мемо на каждом выходе. В формате транзакций нет прозрачного режима, поэтому нет ни настройки, которую нужно включать, ни способа, которым платёж мог бы обойти эту защиту.

Какой размер кольца использует Blocknet?

Каждый вход транзакции Blocknet подписывается кольцом CLSAG ровно из 16 выходов: настоящего и 15 ложных, взятых из блокчейна. Консенсус отклоняет любой другой размер, и каждый участник кольца должен быть настоящим выходом, уже находящимся в блокчейне. Поскольку все входы используют один и тот же размер, по размеру кольца никогда нельзя выделить кошелёк.

Кто может прочитать мемо Blocknet?

Только отправитель и получатель. Каждое мемо шифруется секретом, общим для двух кошельков для этого выхода, и всегда занимает в блокчейне ровно 128 байт, вмещая до 124 байт текста. Короткие или пустые мемо заполняются случайными данными, поэтому никто другой не может понять, в каких платежах есть заметка.

Могут ли другие увидеть, сколько получил мой адрес Blocknet?

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

Использует ли Blocknet ту же криптографию, что и Monero?

Blocknet использует то же проверенное семейство криптографии, что и Monero: кольцевые подписи CLSAG с кольцом из 16, одноразовые стелс-адреса, обязательства Педерсена с доказательствами диапазона Bulletproofs и ретрансляцию транзакций Dandelion++. Сверх этого он добавляет оплату по имени через короткие имена Blocknet ID и зашифрованное 128-байтовое мемо на каждом выходе.