OP_RETURN
OP_RETURN биткойн (bitcoin) изходите носят данни в трансакцията, а никой не може да ги похарчи. Вижте hex, правилото за нулева стойност и лимита по версия.
От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.
OP_RETURN е заключващ скрипт (scriptPubKey) в биткойн (bitcoin), който никога не може да се отключи. Започва с опкода OP_RETURN, който веднага прекратява скрипта и го прави невалиден. След него идват данните, всяка част с push опкод. Понеже изходът никога не може да се похарчи, единствената му роля е да носи данни. Всеки може да създаде такъв изход, а нодовете не са длъжни да го пазят в UTXO множеството, защото никоя по-късна трансакция не може да го използва.
Записването на данни във веригата е спорно. OP_RETURN е добавен, за да не стоят данните в изходи, които изглеждат похарчими. Това си остава основната му цел.
Как изглежда OP_RETURN изходът?
Заключващият скрипт на изхода е 13 байта:
6a0b68656c6c6f20776f726c64
6a е OP_RETURN, а 0b поставя в стека следващите 11 байта. Тези байтове са текстът hello world. Изход 2 на 6dfb16dd580698242bcfd8e433d557ed8c642272a368894de27292a8844a4e75 използва този скрипт.
Данните могат да са произволни байтове. Текстът е често срещан, но нищо не го изисква.
Какви са правилата за OP_RETURN изход?
- Скриптът може да съдържа само
OP_RETURNи след него поставяния с данни. ОпкодоветеOP_1доOP_16също се броят като поставяния. - Използвайте стойност 0 сатоши. Нодовете приемат всяка стойност, но сатошите в OP_RETURN изход се губят завинаги, защото никой не може да похарчи изхода.
Може ли да се похарчи OP_RETURN изход?
Не. Заключването никога не може да се отключи, затова OP_RETURN изходът няма отключващ скрипт. Никога не може да се използва като вход в по-късна трансакция.
Колко данни може да носи OP_RETURN изход?
Лимитът зависи от версията на Bitcoin Core, която използва нодът, и се е променял няколко пъти.
- v0.9.0 (март 2014 г.): един push с до 40 байта и един OP_RETURN изход на трансакция. Бележките към 0.9.0 го описват.
- v0.11.0 (2015 г.): един push с до 80 байта.
- v0.12.0 (2016 г.): няколко push, като общият размер на скрипта е ограничен до 83 байта.
- v30.0 (октомври 2025 г.): по подразбиране
-datacarriersizeе вдигнат до 100,000 байта. Това практически премахва тавана, защото първо се достига стандартният лимит за размер на трансакция. Лимитът важи за всички OP_RETURN изходи в трансакцията заедно, а няколко OP_RETURN изхода вече са позволени. С-datacarriersize=83се връща по-стария лимит. Бележките към 30.0 дават подробностите.
Това са настройки на политиката на нода. Всеки нод решава какво препраща, така че трансакция над лимита на един нод пак може да стигне до майнър, който я приема.
Как се поставят в стека повече от 75 байта?
Опкодът OP_PUSHBYTES_X поставя в стека най-много 75 байта. За 76 до 255 байта използвайте OP_PUSHDATA1 (4c), следван от едно-байтова дължина. За 80 байта скриптът започва с 6a 4c 50, където 50 е 80 в hex, следвано от 80-те байта данни. OP_PUSHDATA2 (4d) взима двубайтова дължина в little-endian ред за 256 до 65,535 байта.
Кои OP_RETURN изходи можете да проверите в нашия explorer?
- Изход 2 на 6dfb16dd580698242bcfd8e433d557ed8c642272a368894de27292a8844a4e75 съдържа
hello world. - Изход 0 на 8bae12b5f4c088d940733dcd1455efc6a3a69cf9340e17a981286d3778615684 съдържа
charley loves heidi, с дължина 19 байта. - Изход 2 на 2cf4f1ab0df25610231a0f4fb7e1e18720a6c555f102b75bb115e99b1ad41241 съдържа
Amazing!. - Изход 1 на b33c1252ddc2fdb5396c7dc3ceed3749c587e3310c6df2f3605a38cc3c129e1f съдържа
First OPReturn Message I was here :), с дължина 36 байта. - Изход 1 на 9aa48ce6b9045d5cd29398272502325255d731ddb97dc207f30d14f35628ed08 има поставяне от 15 байта и после числовите опкодове
OP_1доOP_4, които също се броят като поставяния. - Изход 1 на coinbase трансакцията 2d4cdcd29d0004c762790b579bc2541da788f042031fa87fc27e402244080394 носи 36 байта, които започват с
aa21a9ed. Това е wTXID ангажиментът, добавен от SegWit. Не е текст.
За да намерите OP_RETURN изходите в трансакция, търсете скрипт, който започва с 6a. Повечето от тях са със стойност 0 сатоши.
Защо съществува OP_RETURN?
Преди версия 0.9.0 хората са слагали данни в изходи, които изглеждат похарчими. Текстов низ е можел да стои на мястото, на което в P2PKH заключване отива хешът на публичния ключ. Това е работело, но нодът не е можел да разбере, че изходът е непохарчим. Той щеше да държи изхода в UTXO множеството завинаги, което заема памет.
OP_RETURN решава този проблем. Изходът е доказуемо непохарчим, така че нодовете могат да го пропуснат от UTXO множеството. Промяната не одобрява записването на данни във веригата. Тя държи данните далеч от изходите, които нодовете трябва да следят.
Може ли OP_RETURN да провали скрипта?
Не. Скриптът се проваля само когато се изпълни OP_RETURN. Redeem скриптът OP_IF OP_1 OP_ELSE OP_RETURN OP_ENDIF има OP_RETURN в клона OP_ELSE, който никога не се изпълнява, когато харченето поставя OP_1 в стека. Скриптът е валиден и оставя един OP_1. Вход 0 на 890d3814c2bc2516ff8e061d7a4580116459f4f693f2783d11a5fbb4b3597ac2 показва това в P2SH заключване.
За останалите типове скриптове вижте общата страница за скрипта.
В този раздел: Скриптовият език
Целият курс „Биткойн от нулата“
Нещо не изглежда наред? Кажете ни