Към съдържанието
ДаретеEN

Скриптовият език

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 изходът?

OP_RETURN изход: нулева стойност, 13-байтов скрипт, OP_RETURN, после данните hello world. OP_RETURN изходът, по полета стойност: 0 сатоши, 8 байта 0000000000000000 дължина на скрипта: 13 байта 0d OP_RETURN: прекратява скрипта 6a поставяне на 11 байта 0b данните: hello world 68656c6c6f20776f726c64 Не се харчи, така че стойността се губи.
Изходът има стойност и скрипт. Този носи текста hello world.

Заключващият скрипт на изхода е 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, която използва нодът, и се е променял няколко пъти.

Как се е увеличавал лимитът за данни в OP_RETURN: 40 байта в 0.9, 80 в 0.11, 83 байта общо в 0.12 и 100,000 по подразбиране в 30.0. Лимити за данни по версия на Core v0.9.0 2014 един push, до 40 байта разрешен е един OP_RETURN изход v0.11.0 2015 един push, до 80 байта разрешен е един OP_RETURN изход v0.12.0 2016 няколко push, 83 байта общо за целия скрипт v30.0 2025 по подразбиране 100,000 байта всички OP_RETURN изходи ги делят Всеки нод задава собствения си лимит.
Всеки ред е една версия. Лимитите са настройки на нода, а не част от консенсуса.
  • 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?

За да намерите 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 заключване.

За останалите типове скриптове вижте общата страница за скрипта.

В този раздел: Скриптовият език

Целият курс „Биткойн от нулата“

Нещо не изглежда наред? Кажете ни