Введение в язык сценариев Биткойн

В следующем введении 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) После этого первые две инструкции такой транзакции подпись и открытый ключ, используемые для создания этой подписи. Эта информация идентифицируется как «» и «» и помещается в стек. Митчелл определяет эти значения, поскольку он является получателем. Эта первая половина транзакции часто называется «scriptSig» или «Unlocking Script». В этом разделе операции есть также ссылка на ранее существовавшие выходные данные неизрасходованных транзакций (UTXO). Включение UTXO гарантирует, что автору действительно принадлежит количество биткойнов, которые он хочет отправить Митчеллу. Сеть Биткойн завершает эту проверку с помощью майнеров и полных узлов Биткойн. В «Освоении биткойна» автор Андреас Антонопулос объясняет это так: «Каждый вход содержит скрипт разблокировки и ссылается на ранее существовавший UTXO. Программное обеспечение для проверки копирует сценарий разблокировки, извлекает UTXO, на который ссылаются входные данные, и копирует сценарий блокировки из этого UTXO. »Вторая часть транзакции,« Сценарий блокировки »или« scriptPubkey », затем выполняется автором , Основываясь на приведенном выше изображении, следующая инструкция «OP_DUP» выскакивает из стека, дублирует его, а затем возвращает его в стек. Инструкция OP_DUP. (Источник: Coursera) Это верхнее значение, или дубликат , затем криптографически хэшируется инструкцией «OP_HASH160» и становится «.» PubKeyHash. (Источник: Coursera) Специальная хеширующая функция, используемая для транзакций в биткойнах, называется SHA-256 (алгоритм безопасного хэширования) и является частью большой группы функций, известной как SHA-2, созданной в 1993 году Агентством национальной безопасности. Другие К членам семейства SHA-2 относятся SHA-224, SHA-256, SHA-384 и SHA-512, причем каждое число представляет длину в битах сообщения, которое они создают. Приложения обширны в области информационной безопасности, наиболее актуальными из которых являются механизм консенсуса Bitcoin и Haschash Proof-of-Work (PoW). Наиболее примечательной особенностью SHA-256 является его способность предотвращать DoS-атаки, как упомянуто выше. (Источник: ResearchGate) Возвращаясь к транзакции между автором и его коллегой, пользователям по-прежнему необходимо добавить еще один фрагмент данных в стек. Следующий бит информации — это открытый ключ, который автор указал в начале транзакции. Это необходимо для генерации подписи, чтобы выкупить запрошенный биткойн. На данный момент на вершине стека находятся две критически важные части хэшированных данных: хэш открытого ключа, указанный автором, и хэш открытого ключа, используемый Митчеллом. Оттуда включается команда «OP_EQUALVERIFY», которая гарантирует, что автор действительно использовал правильные открытые ключи. После нескольких неудачных операций с биткойнами в его ранние годы автор трижды проверил, что открытые ключи принадлежат Митчеллу. Когда открытые ключи совпадают, команда OP_EQUALVERIFY увеличивает эти точки данных. Пользователи теперь остаются только с подписью и открытым ключом. Последний шаг — проверка правильности подписи этой транзакции. Подпись и стек открытых ключей. (Источник: Coursera). Здесь очень полезен язык сценариев Биткойн, так как его не нужно извлекать из обширной библиотеки для подтверждения действительности подписи. Все это встроено в язык. Инструкция «OP_CHECKSIG» в конце, затем выталкивает оставшиеся два элемента из стека, и если совпадает с , то операция будет считаться действительной. Хотя следующее введение было кратким, оно должно дать базовое представление о том, как выполняется биткойн-транзакция. Опираясь на это, разработчики и энтузиасты могут начать экспериментировать с более сложными операциями, о которых пойдет речь в следующих заметках. В следующих статьях, основанных на этом, мы углубимся в цифровые подписи (ECDSA), операции с несколькими подписями, Pay-to-Script-Hash (P2SH) и Timelocks. Для получения дополнительной информации о других языках блокчейна, пожалуйста, обратитесь к освещению BTCManager платформ программирования EOS, Ethereum и TRON.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here