Где хранится изменение вывода?

Я узнаю, что у Биткойна нет способа представить баланс счета, а скорее это сумма UTXO, принадлежащая пользователям закрытого ключа. Тогда где хранится изменение вывода?

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

Сохраняется ли изменение обратно в UTXO?

Ответы (1)

Когда отправитель создает транзакцию, он явно определяет, какие биткойны он тратит. Мы называем такие части биткойн- неизрасходованных транзакционных выходов (UTXO), и вы можете думать о наборе UTXO как о распределенном реестре балансов биткойнов. Состояние UTXO троично: они либо еще не существуют, либо доступны для траты, либо были израсходованы. Вычесть из UTXO нельзя, они должны быть потрачены полностью за одну транзакцию.

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

После объявления о том, что UTXO потрачен, тратящий получает назначаемый баланс в виде суммы общей стоимости входов. Плательщик будет явно присваивать стоимость потребленных входов новым выходам. Любые не назначенные средства считаются комиссией за транзакцию и будут собираться майнером, который включает транзакцию в блок.

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

  • Σ(outputs) ≤ Σ(inputs)
  • transaction fees = Σ(inputs) - Σ(outputs)

Таким образом, явно определены только входы и выходы транзакций. Плата за транзакцию неявно определяется входами и выходами.

Из этого следует, что простая транзакция, отправляемая одному получателю, обычно имеет два выхода:

  • вывод получателя для проведения платежа
  • выход изменения для возврата оставшихся средств с входов отправителю

Я взял случайную транзакцию с blockchair.com, чтобы визуализировать:

транзакция с одним входом и двумя выходами из которых сумма одного круглого числа

Если бы кошелек Алисы не создал вывод сдачи для себя, Алиса заплатила бы 11 044… BTC в качестве дополнительных сборов. ;)

Обратите внимание, что я просто предполагаю, что 610 BTC являются выводом получателя из-за круглого числа, я не знаком с этой транзакцией близко.

Извините, я новичок в биткойнах, не могли бы вы уточнить? В данном случае похоже input - output - fee = 0, если не ошибаюсь. Что, если ввод больше, чем сумма вывода и комиссии, и сдача возвращается отправителю, где в блоке хранится этот баланс?
Плата неявно равна (вход-выход), явно не хранится. Таким образом, буквально невозможно написать транзакцию, в которой (ввод - вывод - комиссия = 0) не выполняется.
Спасибо за ваш ответ. Что значит сказать «Иногда стоимость монеты на выходе выше, чем то, что пользователь хочет заплатить» отсюда? ru.bitcoin.it/wiki/Изменить
Подразумевает ли это предложение относительно «сдачи», что ввод — вывод = плата + сдача?
Нет. Сдача — это результат, явно добавленный создателем транзакции. С точки зрения протокола это просто выход, неотличимый от других выходов, которые фактически выполняют платеж. Если входы больше, чем выходы + сборы, которые пользователь хочет заплатить, его кошелек должен (и, как правило, автоматически) добавить вывод сдачи для компенсации.
@Kevvv: я немного отредактировал свой ответ, чтобы лучше объяснить вопрос, который вы задали.