Введение в технологию Блокчейн - страница 45

Шрифт
Интервал


Вход указывает предыдущую транзакцию с помощью хэша этой транзакции, который работает как хэш-указатель на предыдущую транзакцию.

Вход также содержит индекс выхода предыдущей транзакции, на которую идет ссылка.

И здесь еще есть подпись.

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

Теперь о выходах.

Выходы также представляют собой массив.

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

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

Также, у выхода есть строка, которая выглядит как адрес получателя.

Мы видим, что здесь есть хэш публичного ключа, а также есть набор команд.

Так что это поле на самом деле является скриптом.

Bitcoin скрипты

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

На самом деле он определяет скрипт.

Что такое скрипт и почему мы используем скрипты?

Далее мы рассмотрим язык Bitcoin скриптов и поймем, почему скрипт используется вместо простого указания открытого ключа.



Наиболее распространенным типом транзакции в биткойне является трата выхода предыдущей транзакции путем подписания с помощью правильного ключа.

В этом случае мы хотим, чтобы на выходе транзакции говорилось: «этот выход транзакции может быть потрачен с помощью подписи следующего владельца указанного адреса.»

Напомним, что адрес является хешем публичного ключа.

Поэтому просто указание адреса не дает нам публичный ключ, и не дает нам возможности проверить подпись!

Таким образом, вместо этого выход транзакции говорит нам: «этот выход транзакции может быть потрачен публичным ключом, который хешируется, а также подписью владельца этого публичного ключа».



Теперь, что происходит с этим скриптом?

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

Секрет в том, что входы также содержат скрипты вместо просто подписей.

Чтобы проверить, что новая транзакция правильно потребляет выход предыдущей транзакции, мы объединяем входной скрипт новой транзакции и выходной скрипт предыдущей транзакции.