![[[alloc] init] представила пропозицію Shielded Bitcoin для приватних транзакцій із біткоїнами [[alloc] init] представила пропозицію Shielded Bitcoin для приватних транзакцій із біткоїнами](https://www.masterinvest.info/uploads/posts/2026-09/1790260582_alloc-init-releases-shielded-bitcoin-proposal-for-private-bitcoin-transactions.jpg)
Bitcoin Magazine
[[alloc] init] представляє пропозицію Shielded Bitcoin для приватних транзакцій у Bitcoin
Shielded Bitcoin — це пропозиція дослідників [[alloc] init] Клари Шихельман, Міші Комарова та Олексія Москвіна щодо нового метапротоколу конфіденційності на базовому рівні Bitcoin, який дасть змогу здійснювати захищені транзакції в Bitcoin без операторів, софтфорків чи інших змін консенсусу Bitcoin. Білу книгу можна знайти тут, а оголошення в блозі — тут.
Протокол визначає структуру транзакцій і протокол індексування для транзакцій із надійним захистом конфіденційності, водночас покладаючись на PIPEs Bitcoin для введення коштів у систему та виведення з неї. Докладніше про механізм PIPEs — наприкінці статті.
За задумом система багато в чому є віддзеркаленням Bitcoin: тут є аналог UTXO (нота), транзакції використовують ноти як вхідні дані, подібно до звичайної транзакції Bitcoin, свідчення доводить, що використання вхідних даних належним чином авторизоване, вузли (у разі метапротоколу — індексатори) розбирають історію транзакцій і формують поточний стан із переліком витрачених і невитрачених монет тощо.
Однак усі деталі суттєво відрізняються.
Захищена біткойн-транзакція — це просто блок даних із префіксом (наприклад, «shbtc:»), вбудований у біткойн-транзакцію за допомогою OP_RETURN, поля witness або якогось іншого способу передавання даних. Для біткойна вона не має жодного значення: мережа біткойна ніяк її не перевіряє й не застосовує щодо неї жодних правил. Цілком можливо, що недійсні захищені біткойн-транзакції потраплять у блокчейн. Ігнорувати такі транзакції, якщо вони не проходять перевірку, та відмовлятися враховувати їх під час оновлення стану балансів мережі має індексатор захищеного біткойна, який пасивно відстежує блокчейн (тобто ноду).
Індексатор не видаляє нотатки з набору невитрачених нотаток, як це робить Bitcoin із UTXO. Замість цього він використовує набір нуліфікаторів. Це дає змогу користувачеві публічно оприлюднити зашифрований доказ і нуліфікатор, які підтверджують, що нотатку витрачено, не розкриваючи, яку саме нотатку було витрачено. Ідея полягає в тому, що замість того, щоб перевіряти, чи є нотатка в «наборі невитрачених нотаток», перевіряють, чи не використовувався вже нуліфікатор. Індексатори будують дерево Меркла, яке постійно зростає і до якого можна лише додавати елементи: у ньому містяться всі створені виходи нотаток, а також набір нуліфікаторів.
Щоб користуватися цим протоколом, потрібні лише нода Bitcoin та індексатор захищеного біткойна. Щоб відновити кошти, не потрібні ані постачальник послуг, ані координатор, ані будь-який позаланцюговий стан. Це працює так само, як біткойн у блокчейні: потрібні лише ваша нода/індексатор і ваші ключі.
Гаманець кожного користувача генерує головний секретний ключ, на основі якого створюються всі інші задіяні набори ключів.
Це дуже схоже на HD-гаманець у Bitcoin. Завдяки цьому зв’язку можна генерувати багато наборів адрес. Sk_spend — це ваш приватний ключ, sk_nf використовується для анулювання виходів нотаток, vk_in використовується для розшифрування та перегляду вхідних нотаток, vk_out — для перегляду ваших вихідних транзакцій, а sk_view використовується для генерації адреси отримання коштів.
Коли користувач хоче надати комусь адресу, щоб отримати від нього кошти, він генерує значення диверсифікатора d подібне до значення деривації, а потім множить це значення на свій ключ sk_view Отриманий відкритий ключ, pk_d і d є адресою користувача.
Відправник потім генерує випадкове значення — r_seed, яке потрібне для шифрування вихідних даних ноти, а також для її анулювання (до цього ми ще за мить повернемося). Транзакційні виходи містять лише три зашифровані речі: значення виходу, d значення, яке отримувач передав відправнику, і значення r_seed. Відправник використовує секретну ефемерну пару ключів і відкритий ключ отримувача, щоб створити спільний секрет. Обидві сторони можуть отримати однаковий секрет, помноживши свій закритий ключ на відкритий ключ іншої сторони. Вихідні дані ноти шифруються за допомогою цього спільного секрету, а ефемерний ключ sk_eph передається у незашифрованому вигляді, щоб отримувач міг згенерувати спільний секрет.
Щоб транзакція була коректною, з боку входу на схемі потрібні дві речі: публічний нуліфікатор для використаних вихідних даних нот і доказ із нульовим розголошенням, який підтверджує, що 1) вихідні дані ноти включені до дерева Меркла нот; 2) транзакцію авторизовано відповіднимsk_spend ключ, 3) нуліфікатор правильно виведено, і 4) інфляції не сталося.
Якщо ви помітили на зображенні вище, нуліфікатор використовує sk_nf ключ, значення ρ, виведене з r_seed, і позицію нотатки в дереві Меркла вихідних нотаток. Доказ із нульовим розголошенням гарантує все це, тож замість видалення витрачених нотаток можна просто перевіряти, чи не повторюються нуліфікатори. Хоча ви ніколи не знаєте, якому виходу нотатки відповідає нуліфікатор, докази з нульовим розголошенням у кожній транзакції гарантують, що кожен нуліфікатор, доданий до набору, походить від дійсного виходу нотатки. Якщо повторів немає, це забезпечує такий самий захист від подвійного витрачання.
Отже, протокол дає змогу фактично вбудовувати зашифровані транзакції метапротоколу в блокчейн Bitcoin, водночас гарантуючи, що кошти не витрачаються двічі й не виникають із нічого.
З погляду властивостей конфіденційності це справді дуже добре спроєктована система, порівнянна, наприклад, із захищеними пулами Zcash. Під час входу в метапротокол і виходу з нього слід враховувати певні аспекти конфіденційності; їх буде детально розглянуто в майбутній публікації статті. Тут немає потреби вимірювати конфіденційність чи періодично перемішувати кошти, як у CoinJoin.
Отже, про прив’язку. Ідея полягає в тому, щоб створити механізм прив’язки за допомогою PIPEs v2 — схеми шифрування зі свідком. PIPEs дають змогу зашифрувати приватний ключ за допомогою програми/механізму, який не розкриє ключ, доки ви не надасте ZK-доказ того, що певну умову виконано (наприклад, про стан певного UTXO, підтвердження транзакції тощо). Це дало б змогу механізму прив’язки працювати без оператора, федерації чи будь-якої третьої сторони, яка зберігає кошти.
Для цього не потрібні софтфорки чи зміни протоколу Bitcoin, і все відбувається поза блокчейном.
План Shielded Bitcoin і наступний етап їхньої роботи передбачають механізм прив’язки, який дасть користувачам змогу вносити кошти до Shielded Bitcoin за допомогою ключів, криптографічно контрольованих PIPEs; ці кошти можна буде «розблокувати», згенерувавши ZK-доказ законних транзакцій виведення з прив’язки, підтверджених у блокчейні.
Наразі триває робота над документом, що описує цей аспект системи; його мають опублікувати найближчим часом.
Ця публікація [[alloc] init] оприлюднює пропозицію Shielded Bitcoin щодо приватних транзакцій Bitcoin; уперше вона з’явилася в Bitcoin Magazine. Автор — Shinobi.
Джерело: BitcoinMagazine



