Почему нет OP_CODE для запроса блокчейна и извлечения данных в стек?

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

Вы можете быть более конкретным? Что вы воображаете запрашивать и с какой целью?

Ответы (1)

Есть несколько причин, по которым я думаю, что это было бы ужасной идеей.

  • Масштабируемость. Если скрипты могут получить доступ к произвольным частям блокчейна, для полной проверки узлов потребуется (быстрый!) доступ ко всей цепочке. В настоящее время это не так — полностью проверяющим узлам не нужна полная цепочка, а только небольшая база данных неизрасходованных выходов транзакций (которая меньше 3 ГиБ и растет намного медленнее).

  • Управление мемпулом. Если действительность скрипта может зависеть от состояния блокчейна, неподтвержденные транзакции могут быть аннулированы новыми блоками. Можно сконструировать эти гипотетические коды операций проверки блокчейна так, чтобы новые блоки никогда не аннулировали вещи (например, имели только коды операций, которые извлекаются из блока, и если этот блок не найден, вызовет немедленный сбой сценария). Однако даже в этом случае реорганизация может повлиять на действительность. Фактически это означало бы, что весь мемпул нужно будет перепроверять после каждой реорганизации.

  • Взаимозаменяемость. Что касается предыдущего пункта, это даже тот случай, когда реорганизация глубже 1 может повлиять на действительность уже подтвержденных транзакций. Это означает, что программное обеспечение кошелька должно быть особенно осторожным при приеме платежей с транзакциями, действительность которых зависит от состояния блокчейна, поскольку реорганизация имеет повышенную вероятность их уничтожения, даже если отправитель полностью честен. Сейчас это не так для транзакций — транзакции, удаленные во время реорганизации, всегда могут быть повторно приняты в новых блоках в новой ветке.

Спасибо за этот подробный ответ, Питер. Спасибо за все, что вы делаете для биткойнов.