О главных плюсах и минусах добавления нефинансовых данных в блокчейн биткоина.
Код биткоина написан на простом, намеренно ограниченном языке программирования — Script. Он не поддерживает бесконечные циклы и сложные конструкции для обеспечения безопасности и эффективности. Операции обрабатываются в стеке, действующем по принципу «последним пришел — первым вышел» (LIFO).
Опкоды (operation codes, opcodes) — это инструкции, с помощью которых можно задать условия выполнения транзакции по определенной команде.
В сети биткоина каждый опкод записывается в виде команды с префиксом OP (OP_RETURN) для выполнения функций в разных категориях: вычисления, валидация или отмена транзакций, добавление, удаление или перемещение элементов в стеке. Некоторые примеры:
Хотя архитектура блокчейна первой криптовалюты допускает до 256 различных опкодов, на данный момент активны менее половины из них.
В 2010 году Сатоши Накамото намеренно удалил 16 таких инструкций по соображениям безопасности. Одна из них — OP_CAT — способна значительно расширить возможности смарт-контрактов на базе биткоина и сделать их программируемыми, как в Ethereum. После активации софтфорка Taproot в конце 2021 года была ликвидирована потенциальная уязвимость большой траты памяти — главная причина устранения опкода Сатоши. Возвращение OP_CAT активно обсуждается в сообществе с 2023 года.
OP_RETURN — это стандартный шаблон скрипта блокировки, который позволяет записывать произвольные данные или сообщения в биткоин-транзакции. Как одна из имплементаций NULLDATA он обычно создает явный, проверяемый, непригодный для траты и подлежащий удалению выход.
Проще говоря, опкод помечает транзакции как однозначно удаляемые или непригодные для использования, оставляя прикрепленные сообщения — в силу неизменяемой природы блокчейна — навсегда. Он позволяет хранить 83 байта данных вроде «надписей на чеке», не нарушая финансовую основу сети.
OP_RETURN представлен в 2014 году в Bitcoin Core 0.9.0. как компромиссное решение для предотвращения потока спама, связанного с сообщениями в UTXO.
Дело в том, что на ранних этапах для прикрепления данных требовалось отправить биткоин на один из нерабочих адресов — сжечь монеты. Но в таком случае с каждой транзакцией накапливалось количество выходов в набор UTXO, угрожая рано или поздно перегрузить ноды валидаторов и всю сеть.
OP_RETURN исключает создание новых неизрасходованных выходов, делая опкод более эффективной формой отправки данных в блокчейн первой криптовалюты. При использовании технологии необходимо проявлять бдительность: биткоин, отправленный с этой функцией, теряется навсегда.
Первоначально лимит на прикрепленные данные составлял 40 байт, но в 2015 году был увеличен до 80 байт, а в 2016 — до 83 байт. Такие ограничения выбраны намеренно, чтобы стимулировать использование хешей вместо самих данных.
27 апреля 2025 года разработчик Bitcoin Core Питер Тодд представил Pull Request #32359 в репозиторий Bitcoin Core. Предложение включало полную отмену ограничений на размер выходов OP_RETURN вплоть до 4 Мб.
9 июня разработчики Bitcoin Core приняли решение: они снимут лимит на объем публикуемых данных OP_RETURN в релизе клиента v30, запланированного на октябрь. При этом пользователи смогут временно устанавливать лимит вручную.
Противоборствующий лагерь Bitcoin Knots предлагает альтернативные биткоин-ноды с консервативным лимитом. Число валидаторов таких узлов в июне 2025 года приблизилось к 10%.
Впервые прикрепить сообщение к биткоин-транзакции удалось основателю сети — Сатоши Накамото. Он встроил в генезис-блок фразу: «The Times 03/Jan/2009 Chancellor on brink of second bailout for banks».
Сатоши использовал доступный тогда вариант размещения информации в поле scriptSig coinbase-транзакции. В нем и сейчас можно оставить произвольное сообщение вроде названия пула, версии софта или данные хешрейта.
Для размещения информации в блокчейне используется система кодировки. В стандарте ASCII каждая буква, цифра или другой знак представляется уникальным числом от 0 до 127.
Например, буква F в десятеричной форме (dec) ASCII соответствует числу 70, а запятая — 44.
Слово ForkLog в dec будет выглядеть как 70 111 114 107 76 111 103, а шестнадцатеричная (hex) форма для вставки в код биткоина приобретет вид 466F726B4C6F67.
При просмотре блокчейна с помощью специализированного программного обеспечения или ИИ-ассистента вроде ChatGPT можно легко декодировать hex-данные обратно в читаемый текст. Таким образом блокчейн биткоина хранит множество закодированных сообщений.Поле OP_RETURN на данном этапе позволяет записывать до 83 байт данных. Поскольку каждый символ в ASCII занимает 1 байт, это дает возможность разместить около 83 единиц в одной транзакции. Пользователям приходится проявлять изобретательность — выбирать лаконичные, но выразительные фразы или просто оставить закодированную IPFS-ссылку на Web-ресурс.
OP_RETURN как более эффективный способ хранения малых данных можно использовать в различных сферах. Учитывая, что в скором времени лимит увеличится до размера блока в 4 Мб, это расширит векторы применения.
К существующим юзкейсам можно отнести следующие:
децентрализованные приложения и сети второго уровня (L2). Сайдчейны или сети с каналами состояний вроде Lightning Network могут использовать OP_RETURN для встраивания сводной информации об офчейн-состоянии в блокчейн биткоина. Это помогает масштабируемым решениям, которым нужно периодически взаимодействовать с основной цепочкой и которым приходится выпускать два UTXO из-за лимита.
Разнообразные способы использования OP_RETURN для хранения данных в блокчейне подтверждают инновационный характер технологии. Несмотря на это, раскол комьюнити сигнализирует об обратной стороне медали.
Многие считают, что основное назначение биткоина — быть цифровым золотом, а не платформой для хранения данных. Избыточное использование OP_RETURN может привести к излишнему увеличению размера блокчейна. Чем больше каждый узел в сети — тем выше требования к оборудованию, что в перспективе может повысить уровень централизации.
Некоторые минусы OP_RETURN: