Как биткоин спасается от двойной траты?

Я почитал про scriptSig и scriptPubKey, понял, как оно работает, но вопрос в том, почему нельзя один и тот же vout какой-то транзакции потратить дважды, например в 10 блоке и 15?
Я получил n монет в 9 блоке, средства заблокировались с помощью моего публичного ключа; я создал транзакцию с этим конкретным vout той транзакции, предоставил приватный ключ, транзакция совершилась, так как скрипт сработал, ведь я владею нужным приватным ключом от публичного, и я отправил эти n монет своему другу. Почему мне не позволят создать точно такую же транзакцию с тем же самым vout, чтобы снова отправить n монет своему другу? Ну и в обозревателе блокчейна биткоина на blockchain.com потраченные vouts помечаются красным
Техническая часть интересует. Если при проверке каждой транзакции постоянно проходят по всему блокчейну на поиск траты этого vout, то я пойму, почему не позволят заюзать снова этот vout, но навряд ли это работает так, так как это майнеру нужно найти среди 70к блоков этот самый vout, который я пытаюсь заново заюзать + тогда это делается для каждого блока для каждой в нем транзакции, которых около 2к вроде
  • Вопрос задан
  • 762 просмотра
Решения вопроса 1
@KingstonKMS
Есть chainstate leveldb база, которая хранит информацию о транзакциях, в соответствии с ней и происходит проверка на двойную трату.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
1MK-Ultra
@1MK-Ultra
программист
Так как же? Нельзя в блокчейн зафигачить две транзакции с одинаковым хэшем одновременно. Либо одна пройдет, либо другая.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы