‹ ГЛАВА 16, ВСЕ УРОКИ

МАСТЕР · ГЛАВА 16 · УРОК 1 ИЗ 5

Скрипт и обновления

Bitcoin Script

Что на самом деле написано в выходе для его блокировки? 6 мин

Каждый выход содержит небольшую программу, скрипт блокировки. Чтобы потратить его, вход предоставляет часть для разблокировки. Узлы запускают их вместе: если программа заканчивается true, трата действительна.

Стековая машина

Скрипт работает на стеке: элементы помещаются, а операции берут элементы сверху и помещают результаты. Классическая запись для оплаты в старом формате выглядит так: OP_DUP OP_HASH160 <хеш публичного ключа> OP_EQUALVERIFY OP_CHECKSIG. В переводе: скопируй предоставленный публичный ключ, получи его хеш, проверь, совпадает ли он с тем, что в выходе, затем проверь подпись относительно него.

Ограничен намеренно

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

  • Мультиподпись: требуется несколько подписей из набора ключей.
  • Хеш-блокировки: требуется раскрытие секрета, хеш которого известен, как это делает Lightning.
  • Временные блокировки: запрещают трату до определенной даты или высоты блока.

Что запомнить

  • Выходы блокируются небольшими программами на основе стека.
  • В скрипте нет циклов: каждая проверка завершается предсказуемо.
  • Подписи, хеши и время являются его строительными блоками.

Быстрая проверка

Когда трата действительна на уровне скрипта?

Почему в скрипте нет циклов?

Bitcoin Script · Bitcoin University