Введение в язык сценариев Биткойн
В следующем введении BTCManager исследует простой, но мощный язык кодирования, используемый в сети Биткойн. Язык Биткойн-скриптов, или Биткойн-скрипт, был разработан с учетом лишь нескольких функций; она компактна, неполна по Тьюрингу и основана на стеке. Таким образом, язык служит этим целям эффективно и безопасно. Несмотря на свою минимальную функциональность, по сравнению с сетями, такими как Ethereum, он за десятилетие тем не менее зарекомендовал себя как достаточно мощный, чтобы адекватно поддерживать транзакции в стоимости. Язык программирования, стоящий за пионерской криптовалютой, по мнению многих, является прекрасным примером бритвы Оккама. Это элементарно, даже по сравнению с предкриптовалютными языками кодирования. Что еще более важно, Сатоши Накамото специально разработал эту простоту. Язык, который обладает множеством возможностей и допускает сложные транзакции данных, также допускает большее количество векторов атак. Критики объяснили, что такой язык, как Solidity, хотя и впечатляющий по своему объему, не обеспечивает достаточной безопасности. Двигаясь в этом направлении, Биткойн-сценарий является неполным по Тьюрингу. Для сравнения, Solidity является полным по Тьюрингу, то есть может воспроизводить любую машину Тьюринга или абстрактную машину, способную автономно следовать определенному алгоритму. Понимая эту концепцию, можно начать понимать, как работает умный контракт. Возвращаясь к основному фокусу, Биткойн-скрипт не предлагает эту функцию, или не таким же образом будет предмет более глубокого погружения в умные контракты с использованием Биткойн-блокчейна. из более поздних статей. Основным вариантом использования Биткойна всегда были криптовалюты и передача стоимости. Таким образом, дополнительные характеристики полных языков Тьюринга не были необходимы. Это, однако, не означает, что сценарий ограничен. Выборная цитата: «Кроме того, неполнота по Тьюрингу — даже не такое уж большое ограничение» — Виталик, не дающий эфира (@VitalikButerin) 18 апреля 2017 г. Кроме того, ограничения в биткойн-скрипте предотвращают «логическую бомбу» или бесконечный цикл из быть включенным в любую отдельную транзакцию. Это ограничение исключает возможность атаки типа «отказ в обслуживании» (DoS) в сети. Степень этих ограничений, таких как транзакции, которые выходят за рамки простой отправки значения X и Y, будут рассмотрены в следующих выпусках. Язык кодирования Биткойн использует «обратную полировку» в качестве системы обозначений, что означает, что такие строки, как «3 + 4», будут отображаться как «3 4+» с растущей сложностью. Еще одна функция восходит к корням Биткойн-скрипта в «Forth-like». Эта функция важна просто потому, что оба эти языка «основаны на стеке». Обратное изображение на польском языке. (Источник: Wikimedia) Стеки — это очень распространенная структура данных, которая По словам Андреаса Антонополуса, информация «на вершине стека» позволяет «вытолкнуть» или «выдвинуть». Первая операция объясняет процесс добавления информации в стек, а вторая — удаление информации из стека. Кроме того, порядок, в котором информация извлекается или проталкивается, следует принципу «LIFO», или Last-In, First-Out. (Источник: BlockGeeks) Операция, подобная «3 4+», будет вести себя следующим образом: В биткойн-скрипте эта операция будет следовать тем же шагам, но также будет включать префикс «OP» перед каждой переменной. Давайте в следующий раз рассмотрим, как весь этот новый словарь объединяется в реальной биткойн-транзакции. Большинство операций являются транзакциями подписи. Это включает в себя платежи, обмены и большинство работ с использованием открытых и закрытых ключей. Ради этой статьи давайте разберем обмен между автором и его коллегой Эдди Митчеллом. Здесь автор (отправитель) будет указывать открытый ключ Митчелла (получателя), который выкупит отправленный биткойн, указав подпись с использованием того же открытого ключа. (Источник: Coursera) После этого первые две инструкции такой транзакции подпись и открытый ключ, используемые для создания этой подписи. Эта информация идентифицируется как «