Ця стаття заглиблюється далі, ніж короткий огляд конфіденційності в статті Що таке Blocknet?, і розбирає кожен рівень конфіденційності в транзакції Blocknet: що він приховує, як працює і що це означає, коли ви наступного разу надсилатимете чи отримуватимете BNT.
Як Blocknet зберігає платежі приватними?
Blocknet приховує відправника за допомогою кільцевих підписів CLSAG по 16 виходах, отримувача за допомогою одноразових стелс-адрес, а суму за допомогою зобов’язань Педерсена й доказів діапазону Bulletproofs. Ретрансляція Dandelion++ приховує, де транзакція увійшла в мережу, а кожен вихід містить зашифроване 128-байтове мемо. Усе це обов’язкове, прозорого режиму немає.
Blocknet використовує ту саму перевірену родину криптографії, що й Monero: кільцеві підписи, стелс-адреси й докази діапазону Bulletproofs, побудовані на групі Ristretto над Curve25519. Понад це він додає оплату за іменем і зашифровані мемо. Кожен рівень охоплює окрему частину платежу, і разом вони залишають тому, хто читає блокчейн, дуже мало зачіпок.
Кільцеві підписи приховують, хто заплатив
Коли ви витрачаєте монети, ваш гаманець підписує групу з 16 виходів: той, що належить вам, і 15 інших, вибраних із блокчейну як підставні. Підпис є кільцевим підписом 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, ваш гаманець виконує кожен крок за вас, і нічого не треба вмикати:
- Він вибирає з блокчейну 15 підставних виходів і підписує ваш вхід кільцем із 16.
- Він створює нову одноразову адресу для отримувача.
- Він створює зобов’язання для суми й додає доказ діапазону.
- Він шифрує ваше мемо або випадкове доповнення, якщо мемо порожнє.
- Він передає транзакцію для ретрансляції через Dandelion++.
Той, хто читає блокчейн, бачить входи, кожен з яких вказує на 16 можливих виходів, виходи на одноразові адреси, яких ніхто раніше не бачив, зобов’язання замість сум і поле мемо з байтами, що виглядають випадковими. Людина, якій ви заплатили, бачить у своєму гаманці платіж, суму й вашу нотатку.
Якщо хочете заробити свої перші BNT, їх можна намайнити на власному комп’ютері. Посібник з майнінгу допоможе запустити seine на bntpool.com за кілька хвилин, і ви можете майнити прямо на свою адресу або свій @name.
Що далі: оновлення Faraday
Blocknet планує оновлення мережі під назвою Faraday з активацією приблизно 2027-02-16, як зазначено на blocknetcrypto.com. Сайт називає дві зміни, які ще більше посилять конфіденційність:
- Усі виходи блокчейну в кожному витрачанні. Словами сайту: «Сьогодні витрачання ховається серед 16 виходів. Після Faraday воно ховатиметься серед усіх виходів у блокчейні».
- Докази витрачання, розраховані на стійкість до квантових комп’ютерів. Faraday переведе докази витрачання з еліптичних кривих на докази на основі хешів, а для виявлення платежів використовуватиметься ML-KEM.
Сайт також зазначає, що 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-байтове мемо на кожному виході.