Я что-то путаюсь. Я надеюсь, что вы можете прояснить это для меня...
Допустим, я хочу совершить транзакцию. Так что мой биржевой кошелек делает это за меня. Он делает это так: сначала берет список UTXO (скажем, он есть на диске D ), выбирает те, которые можно использовать, и с помощью этих UTXO создает транзакцию с допустимыми входными данными. Затем эта транзакция попадает в мемпул узла. Затем, когда начинается майнинг блока, узел захватывает эти транзакции, помещает их в блок, и начинается майнинг.
Вопрос 1) когда будет обновлен список UTXO на диске D ? Перед тем, как поместить транзакцию в мемпул, или после того, как майнер решит блок, или, может быть, в то время, когда майнер захватывает транзакции из мемпула?
Если ответ таков: прежде чем поместить транзакцию в мемпул, тогда все усложняется, потому что, если этот узел не решает блок, есть шанс, что обновление UTXO не должно было произойти, поэтому это означает, что узел вернет utxo вернуться к тому, что было.
Если ответ: после того, как майнер решит блок, то, возможно, моя нода позволит мне сделать одну и ту же транзакцию дважды, так как перед созданием транзакции она проверяет список UTXO.
Если ответ таков: когда майнер захватывает транзакции из мемпула, то это довольно неправильно, так как мемпул уже содержит проверенные транзакции.
Что вы думаете?
ОБНОВЛЕНИЕ ВОПРОС:
Допустим, у меня есть 1 BTC, и я опубликовал транзакцию в 1 BTC для Боба на узле A и такую же транзакцию в 1 BTC для Алисы на узле B.
Итак, допустим, трансляция транзакций не происходила, поэтому они (узел A, узел B) не знают транзакцию друг друга.
Теперь nodeA сначала добывает блок и транслирует блок. nodeB получил этот блок. Теперь nodeB использует множество разных UTXO, как вы сказали. Одна проверка, которая выполняется, — это то, что nodeB перебирает транзакции блока nodeA, и если какая-либо транзакция может быть найдена (сравнивается идентификатор транзакции) в его мемпуле, он удаляет ее. Теперь, как nodeB удалит транзакцию Алисе (которая теперь является двойной тратой)? Как он приходит к такому выводу?
Это зависит от реализации, но в Bitcoin Core существует не только один набор UTXO:
chainstate/
каталоге в базе данных. Он соответствует состоянию на момент последнего сброса блока (и не включает эффекты какой-либо транзакции мемпула или любого блока после последнего сброса).Наконец, важно отметить, что каждый узел имеет свой собственный набор UTXO. Ваш собственный кошелек/узел не будет ничего обновлять, когда майнер (какой именно?) начнет включать вашу транзакцию в свои блоки-кандидаты — у вас даже нет возможности узнать, что они это делают.
Ника Курашвили
Питер Уилле
Ника Курашвили
Ника Курашвили
Питер Уилле
Ника Курашвили
Питер Уилле
Ника Курашвили
Питер Уилле
Ника Курашвили
Питер Уилле
Ника Курашвили
Питер Уилле