137 / 736UTXØ

Utreexo

Перевірка з меншою базою даних

Вузол Bitcoin має знати, які виходи ще не витрачені. Utreexo пропонує перевіряти їх без великої локальної бази всіх записів: зберігати невеликий криптографічний стан і отримувати потрібні дані разом із доказами. Це економить місце та роботу диска, але частину вимог переносить на передавання й доступність даних.

Utreexo дає вузлу Bitcoin змогу перевірити, що суму, яку намагаються витратити, ще не використали, без зберігання повного списку невитрачених виходів. Вузол — програма, що перевіряє транзакції та блоки й обмінюється даними з іншими учасниками мережі. Він тримає невеликі контрольні відбитки й отримує конкретні записи з перевірюваними доказами. Правила витрачання та кількість біткоїнів не змінюються; це не стандартна модель Bitcoin Core.

Анна хоче надіслати Петру біткоїни, отримані раніше. Тому її транзакція посилається на попередній платіж. Окремий запис суми й умов її витрачання називають виходом; поки його не витрачено, це UTXO. Вхід нової транзакції містить посилання на цей попередній вихід і дані, потрібні для його витрачання. Вузол має перевірити, що запис справді існує й Анна ще його не витратила. Зазвичай він веде UTXO set — базу всіх поточних невитрачених виходів, а не особистих рахунків із балансами. З її зростанням збільшується навантаження на диск. Thaddeus Dryja представив Utreexo у 2019 році як спосіб зменшити це локальне навантаження. [1] [6] [8]

Спочатку для кожного запису обчислюють хеш — короткий контрольний відбиток даних. У дереві Меркла відбитки об’єднують попарно й знову хешують, доки не отримають верхній відбиток, корінь. Utreexo використовує кілька таких дерев; вузол-перевіряльник може зберігати їхні корені замість усього списку. Для виходу Анни він отримує дані й доказ із потрібними сусідніми відбитками. За ними він обчислює шлях до кореня та порівнює результат зі станом, який уже відстежує. Отже, самого твердження відправника недостатньо. Таку структуру називають криптографічним акумулятором: вона доводить належність запису до множини. Але корені — не стиснена резервна копія. З них не можна розгорнути всі початкові записи. [1] [2]

Отримані дані хешуються, а доказ дозволяє перевірити їхній зв’язок зі станом, який відстежує вузол. Недійсний доказ не можна приймати лише тому, що він надійшов зі знайомого сервера. Цифровий підпис підтверджує дозвіл на платіж за допомогою приватного ключа — секретного числового значення, яке при цьому не розкривається. Скрипт — набір умов, які треба виконати для витрачання виходу. Навіть правильний доказ належності не замінює перевірки підписів, скриптів, сум та інших правил транзакції й блоку. Utreexo змінює зберігання стану, але не дозволяє пропускати ці перевірки. [2] [5] [8]

Хтось і далі має зберігати достатньо даних для побудови доказів. Документація бібліотеки розрізняє prover, який утримує весь набір дерев, і verifier, якому вистачає коренів. Перевіряльник може кешувати частину доказів, але самих коренів недостатньо для створення довільного доказу. Отже, дані не зникають; змінюється їхній розподіл між учасниками. [2]

Блок об’єднує транзакції в пакет, який додають до спільної історії. Витрачений вихід видаляється з відстежуваної множини, а нові невитрачені виходи додаються. Разом із цим змінюються докази. Доказ, збережений для старого стану, після наступних блоків може потребувати оновлення. Під час реорганізації мережа приймає іншу дійсну гілку ланцюга, замінюючи частину попередньої історії блоків. Реалізація має обробляти оновлення доказів, одночасні транзакції та повернення назад під час реорганізації ланцюга. Це не сертифікат, який завантажили раз і використовують завжди. [2] [3]

Pruned Node після перевірки видаляє старі дані блоків, але традиційно зберігає поточну базу UTXO. Utreexo працює саме з цією базою. Це різні способи економії, які можна поєднувати. Самі по собі ні обрізання, ні малий акумулятор не означають, що вузол перевірив минуле, не обробивши його. Історія блоків, поточний стан і спосіб початкової перевірки — три різні речі. [6] [5]

Уявіть новий вузол, що починає з чужого опису стану замість перевірки блоків від початку. Він припускає, що початковий стан правильний. Малий акумулятор не усуває цієї довіри: подальші докази перевіряють саме щодо прийнятого стану. Тому в AssumeUTXO прийняття snapshot, тобто знімка стану на певний момент, відокремлюють від подальшої фонової перевірки історії. Документація utreexod описує типовий запуск зі стану, закладеного в програму. Сам по собі він не є власною перевіркою всіх попередніх блоків. Спосіб запуску — окремий вибір, а не невіддільна властивість Utreexo. [7] [3]

Реалізація utreexod використовує Utreexo для перевірки мережі Bitcoin. Під час огляду 17 жовтня 2026 року її документація позначала програму як beta й не рекомендувала працювати з нею в mainnet із суттєвими сумами. Також указано параметр --noassumeutreexo для вимкнення старту з прийнятого на довіру стану. Це не рекомендація встановлювати програму: спершу перевірте актуальну версію, режим, походження програми та можливості відновлення. [3]

Базова концепція не потребує переписування грошових правил Bitcoin або зміни наявних блоків. Проте докази треба створювати, передавати й оновлювати, тому вузлам-учасникам потрібне відповідне програмне забезпечення та обмін даними. Менший локальний стан може допомогти дешевшим пристроям. Це не означає автоматично більше транзакцій у блоці, нижчі комісії для всіх або перехід усіх вузлів на новий формат. [1] [4]

Менше даних на диску може означати більше мережевого трафіку й залежність від своєчасної доступності даних. Вузол із правильною перевіркою відхилить підроблений доказ. Проте постачальник може не надати потрібні дані й затримати перевірку. Тому оператор оцінює весь режим: сховище, передавання, кеш, перевірку початкового стану та поведінку при збоях. Utreexo може здешевити власну перевірку, але не робить відсутні дані несуттєвими. [3] [4]

Для повної картини прочитайте також UTXO, Full Node, Pruned Node, AssumeUTXO, Merkle Tree, Bitcoin Core.

DOC · 001Utreexo paperПервинне джерело DOC · 002Utreexo accumulator libraryДокументація DOC · 003utreexod implementationПервинне джерело DOC · 004Bitcoin Optech — UtreexoДокументація DOC · 005Bitcoin Core — validation.cppДокументація DOC · 006Bitcoin Developer Reference — Blockchain validationДокументація DOC · 007Bitcoin Core — AssumeUTXO designДокументація DOC · 008Bitcoin Developer Reference — TransactionsДокументація
Переглянуто: Спочатку джерела · Не інвестиційна порада