﻿---
title: "Модель UTXO"
description: "Как Bitcoin представляет доступную для расходования стоимость через неизрасходованные выходы транзакций, проверяет расходы, создаёт сдачу и связывает выбор монет с комиссиями и конфиденциальностью."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Модель UTXO

> Материал предназначен только для обучения и не является инвестиционной рекомендацией. Инвестиции могут привести к убыткам.

<a id="answer"></a>

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

Модель неизрасходованных выходов транзакций (UTXO) представляет доступную для расходования стоимость как отдельные выходы, а не как единый баланс, записанный за счётом. В Bitcoin вход обычной транзакции указывает на предыдущий выход с помощью идентификатора транзакции и индекса выхода. В таком выходе записаны сумма и блокирующий скрипт. Баланс в кошельке — это вычисленная сумма выходов, которые он способен потратить, а не поле баланса внутри одного адреса.

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

<a id="mechanism"></a>

## Как это работает

Чтобы обычная, не coinbase, транзакция была действительной, каждый указанный выход должен существовать и оставаться неизрасходованным, каждый вход должен выполнять условия блокировки соответствующего выхода, а общая стоимость выходов не должна превышать общую стоимость входов. Разница доступна в качестве комиссии транзакции:

`fee = sum(inputs) - sum(outputs)`

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

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

Место в блоке Bitcoin оценивается главным образом по весу транзакции и ставке комиссии, а не по переводимой сумме. BIP 141 определяет `virtual size = ceil(weight / 4)`. Входы обычно добавляют больше данных, чем выходы, поэтому расходование множества мелких UTXO при одной ставке может стоить дороже одного крупного UTXO. Точный размер зависит от типов используемых скриптов и witness.

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

UTXO не обеспечивают анонимность. Объединение входов может указывать на общее управление, а шаблоны распознавания сдачи и повторное использование адресов — связывать действия. Это эвристики, а не криптографические доказательства, но консолидация способна раскрыть отношения, незаметные при раздельных расходах.

В отличие от модели счетов, модель UTXO явно показывает каждый доступный для расходования объект и путь его потребления. Системы счетов обычно обновляют общее состояние, например балансы и nonce. Ни одна модель не лучше во всех случаях: они по-разному решают задачи представления состояния, программируемости, параллельности и устройства кошелька.

<a id="example"></a>

## Расчётный пример

Alice контролирует UTXO на `0.08 BTC`, `0.12 BTC` и `0.50 BTC`. Чтобы заплатить Bob `0.15 BTC`, кошелёк выбирает первые два входа на общую сумму `0.20 BTC` и оценивает комиссию в `0.0002 BTC`. Он создаёт следующие выходы:

- Bob: `0.15 BTC`
- Сдача Alice: `0.0498 BTC`

Расчёт: `0.20 - 0.15 - 0.0002 = 0.0498 BTC`. После подтверждения выходы на `0.08 BTC` и `0.12 BTC` потрачены; выход Bob и сдача Alice становятся новыми UTXO; выход на `0.50 BTC` остаётся нетронутым.

Если бы транзакция создала только выход Bob на `0.15 BTC`, пропущенные `0.05 BTC` стали бы комиссией, а не автоматическим возвратом. Кошелёк может выбрать другой набор входов, объединить несколько платежей или консолидировать мелкие выходы при более низких ставках. Здесь приходится сопоставлять текущие и будущие комиссии, надёжность подтверждения и конфиденциальность.

<a id="risks"></a>

## Риски и меры контроля

- **Риск комиссии:** раздробленные UTXO увеличивают вес входов; перед трансляцией следует оценить подписанную транзакцию и её ставку.
- **Риск конфиденциальности:** объединение входов и узнаваемая сдача могут связать адреса; новый адрес не гарантирует невозможность такой связи.
- **Риск подтверждения:** конфликтующие транзакции, правила замены и реорганизации делают неподтверждённые поступления обратимыми.
- **Риск восстановления:** цепочка хранит UTXO, а кошелёк хранит или выводит ключи и данные поиска, необходимые для их обнаружения и расходования; нужно резервировать все обязательные факторы восстановления.

<a id="misconceptions"></a>

## Распространённые заблуждения

### Адрес — это постоянный счёт

Адрес кодирует или представляет условия расходования. Кошелёк может контролировать выходы, отправленные на множество адресов получения и сдачи, поэтому один адрес не отражает всё его состояние.

### Комиссия пропорциональна сумме платежа

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

### Протокол создаёт сдачу автоматически

Сдача — обычный выход, который кошелёк плательщика создаёт намеренно. Любая стоимость входов, не распределённая по выходам, доступна майнеру как комиссия.

### Неподтверждённая означает рассчитанную

Mempool — предварительное представление узла, а не консенсусный реестр. Политики допуска, замены и удаления различаются; риск подтверждения снижается со временем, но не исчезает при трансляции.

<a id="related"></a>

## Связанные темы

- [Модель счетов](/ru/crypto/account-based-model/)
- [Bitcoin](/ru/crypto/bitcoin/)
- [Подтверждение блока](/ru/crypto/block-confirmation/)
- [Mempool](/ru/crypto/mempool/)
- [Пылевая атака](/ru/crypto/dust-attack/)

<a id="sources"></a>

## Источники

- [Bitcoin: A Peer-to-Peer Electronic Cash System](https://bitcoincore.org/bitcoin.pdf) - Satoshi Nakamoto (дата обращения: 2026-08-22)
- [Transactions — Bitcoin Developer Guide](https://developer.bitcoin.org/devguide/transactions.html) - Bitcoin.org (дата обращения: 2026-08-22)
- [Block Chain — Bitcoin Developer Guide](https://developer.bitcoin.org/devguide/block_chain.html) - Bitcoin.org (дата обращения: 2026-08-22)
- [BIP 141: Segregated Witness (Consensus layer)](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki) - Bitcoin Improvement Proposals (дата обращения: 2026-08-22)
- [BIP 125: Opt-in Full Replace-by-Fee Signaling](https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki) - Bitcoin Improvement Proposals (дата обращения: 2026-08-22)

Source: https://wiki.fcontext.com/ru/crypto/utxo-model/index.mdx
