Продолжаем знакомство с тем, как устроена и как работает децентрализованная электронная денежная система Биткоин. Начало смотрите здесь: Введение в Биткоин: Краткое техническое руководство.
Ранее мы рассмотрели устройство и работу Биткоин-сети, а также зачем нужен Майнинг, как он работает, и что такое Блокчейн и его составляющие — Блоки. Кроме того мы рассмотрели механизм регулирования времени, необходимого для «добычи» блока, в основе которого лежит Сложность (difficulty). Также было рассказано о Транзакциях и Выходах (Outputs).
Сейчас мы остановимся подробнее на механизме Блокировки выходов (Output locks).
Что такое блокировка выхода?
Блокировка выхода — это набор требований, предъявляемых к выходу. Эти требования должны быть выполнены, чтобы иметь возможность использовать выход в транзакции.
Например, наиболее распространенная блокировка выхода — это требование использовать приватный ключ, соответствующий биткоин-адресу отправителя средств в транзакции.
Именно эти блокировки мешают нам тратить выходы друг друга в транзакции, так как каждый выход защищен блокировкой.
Откуда берутся блокировки выходов?
Как мы уже знаем, транзакция — это процесс получения существующих выходных данных и создания из них новых:
И именно во время создания этих новых выходов мы «навешиваем» на каждый из них «замок», т.е. блокируем:
Создание новых выходов и установление на каждый из них блокировки.
Поэтому, когда мы хотим отправить кому-то биткоины, мы создаем новый выход и добавляем ему блокировку, которая сообщает: «только владелец этого адреса (получатель или отправитель) может использовать этот вывод».
Все это хранится в данных транзакции.
В результате этот новый выход будет «принадлежать» только получателю, потому что он является единственным человеком, у которого есть закрытый ключ для этого адреса. Поэтому никто другой не сможет потратить этот выход.
Как вы, возможно, заметили, вы никогда не «отправляете» собственно биткоины в транзакции.
Вместо этого вы создаете транзакцию, которая создает новые выходы (с новыми блокировками), отправляя данные этой транзакции в Биткоин-сеть и ожидая, когда она будет добавлена в блокчейн.
Поэтому, хотя блокчейн — это база данных транзакций, на практическом уровне можно воспринимать его как способ хранения единиц выходов, поскольку каждая транзакция сообщает вам о новых выходах.
И когда вы хотите отправить свои биткоины кому-то, вы просто ссылаетесь на выходы в блокчейне, которые вы можете разблокировать. При этом выходы могут находиться в разных блоках.
И когда эта новая транзакция будет добавлена в блокчейн, выходы, которые были использованы отправителем (в качестве входов), не смогут использоваться снова, поскольку на них не будет монет.
Каждый новый блок транзакций добавляет множество новых выходов в блокчейн.
Таким образом, блокчейн хранит все выходы, и вы можете использовать любой непотраченный из этих выходов (UTXO) в любое время. Разумеется, если вы сможете разблокировать его своим приватным ключом.
Как создать блокировку выхода?
Выходные блокировки записываются на базовом языке программирования, называемом SCRIPT.
Немного сложно объяснить работу всего языка программирования на одной диаграмме, но попробуем:
Программируемая блокировка называется сценарием блокировки (locking script).
Самая интересная часть этого сценария блокировки — функция CHECKPRIVATEKEY, которую мы используем, чтобы помочь установить требования к блокировке.
Для конкретного выхода мы установили блокировку, которая хочет сравнить биткоин-адрес 1EUXSxuUVy2PC5enGXR1a3yxbEjNWMHuem с закрытым (приватным) ключом владельца этого адреса.
Если у нас есть соответствующий приватный ключ для этого адреса, то мы сможем разблокировать этот выход и использовать его в своей транзакции.
* * *
В следующей публикации будет подробнее рассмотрено, как разблокируются Выходы (Outputs) в транзакциях Биткоина.
Подписывайтесь на мой аккаунт @uanix и голосуйте за меня, как делегата Голоса: https://golos.id/~witnesses
@uanix, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество голосов
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
@uanix, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество голосов
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
@uanix, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество голосов
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
@uanix, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество голосов
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
@uanix, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество опубликованных постов
Награда за количество голосов
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Репост!
Искренне ваш @fomka