Транзакция с несколькими входами, имеющими одинаковый адрес

Почему транзакции имеют несколько входов с одним и тем же адресом? Это потому, что суммы были получены в адрес через несколько отдельных транзакций. Не должны ли суммы быть объединены в один вход, поскольку адреса одинаковы. Пример вот этот .

Разве входные данные не должны быть 1LS1h8UJFgAFqRsw8WqjszBdJWDQg3hj6d with 0.01580432 BTCвместо повторения одного и того же адреса с 0.00396188 BTC and 0.01184244 BTC.

Спасибо.

Хотя вопрос в другом, мой ответ здесь объясняет, почему входные данные не рушатся: может ли получение денег сделать транзакцию неудачной?
@Murch Из вашего ответа видно, что UTXO с одним и тем же адресом не сливаются вместе, поскольку они по-прежнему различаются по своим индексам транзакций.
Да, это кортежи (txid, vout), где первый относится к транзакции, из которой произошел UTXO, а второй указывает позицию в выходном списке. Адрес не является частью идентификатора UTXO. Он только определяет, кто сможет потратить UTXO, поскольку он ограничивает, какая подпись будет действительной.
Подумав, я сделал это ответом. :)

Ответы (3)

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

Адрес не является частью идентификатора UTXO. Это часть контента, определяющая, кто сможет потратить UTXO, поскольку она ограничивает, какая подпись будет действительной.

Список вывода транзакций должен храниться с порядком в реестре. Почему бы не указать его как кортеж (txid, address)?
Это не было бы гарантированно уникальным. Вы можете иметь несколько выходов в одной транзакции на один и тот же адрес. Кроме того, существуют другие типы транзакций, в которых не используется адрес для идентификации получателя.

Входные данные относятся не к адресам, а к неизрасходованным выходным транзакциям (UTXO). Если есть несколько UTXO, подлежащих оплате на один и тот же адрес, то транзакция, расходующая эти UTXO, должна будет перечислить их по отдельности и не может объединить их в один ввод. Тот факт, что все UTXO оплачиваются на один и тот же адрес, не имеет значения; они по-прежнему должны быть перечислены как входные данные отдельно.

Это было дизайнерское решение в биткойнах. Биткойн делает выводы транзакций первичными и делает адреса, по сути, удобными без реального понятия учетной записи. Другие системы принимают противоположное решение. Например, Ripple делает учетные записи первичными, а транзакции корректируют балансы учетных записей. У каждой модели есть преимущества и недостатки.
@DavidSchwartz Интересно, не могли бы вы подробно рассказать о плюсах и минусах двух моделей здесь .

В транзакции, которую вы только что указали, 1LS1h8UJFgAFqRsw8WqjszBdJWDQg3hj6d является одновременно адресом ввода и адресом изменения.

Большая часть средств транзакции была отправлена ​​на 187SRqCeXctTbfaqErNqUN5kDzv2PjHVeQ, а остальные вернулись на 1LS1h8UJFgAFqRsw8WqjszBdJWDQg3hj6d.

с 0,01580432 BTC, https://blockchain.info/tx/4d3ec229677ec9f6bf2a85c57c691bc648e7f4911453d3167a2e8d2fed44dc94

Это плохая практика из соображений конфиденциальности. Кто-то наблюдающий может сказать, что отправитель контролирует 1LS1h8UJFgAFqRsw8WqjszBdJWDQg3hj6d (используется в качестве адреса ввода и изменения).

Если бы повторное использование адреса не присутствовало, то кто-то не мог бы сказать, какой адрес был адресом назначения, а какой адресом изменения.

Всегда создавайте новые адреса для изменений.