Skip to content
Semua panduan opsi dan kontrak berjangka
Output transaksi Bitcoin11 min read

OP_RETURN Bitcoin: data carrier, nulldata, dan output yang tidak dapat dibelanjakan

Pelajari cara OP_RETURN mencatat data publik, alasan output tidak dapat dibelanjakan, perbedaan kebijakan relay Bitcoin Core 31.1 dari konsensus, serta perbedaannya dari inskripsi witness.

Dalam panduan iniOP_RETURN menyimpan data di skrip pengunci

Ringkasan singkat

OP_RETURN menambahkan data publik pada skrip output transaksi Bitcoin. Bitcoin Core menganggap output yang skripnya diawali OP_RETURN terbukti tidak dapat dibelanjakan dan tidak memasukkannya ke set UTXO. Batas relay saat ini merupakan kebijakan lokal node, bukan batas payload konsensus yang berlaku untuk seluruh jaringan.

OP_RETURN menyimpan data di skrip pengunci

Output Bitcoin berisi nilai dan skrip pengunci bernama scriptPubKey. Output OP_RETURN, yang juga diklasifikasikan sebagai nulldata, diawali opcode OP_RETURN dan dapat diikuti rangkaian byte yang di-push. Saat transaksi dimasukkan ke blok, byte itu tercatat secara publik sebagai bagian dari output. Pola ini bukan lapisan data terpisah, saldo token, atau pesan pribadi.

Mengapa output tidak dapat dibelanjakan lagi

OP_RETURN adalah opcode yang menyebabkan eksekusi gagal jika tercapai. Upaya membelanjakan output dengan skrip yang diawali opcode ini tidak dapat memenuhi skripnya. Karena itu Bitcoin Core mengklasifikasikannya sebagai tidak dapat dibelanjakan dan dapat langsung mengeluarkannya dari set UTXO, tanpa menyimpan koin yang tidak mungkin digunakan. Lihat script.h Bitcoin Core 31.1. Bitcoin Core 31.1 script implementation.

Ukuran skrip lebih besar daripada payload

Batas data carrier tidak selalu hanya menghitung byte data aplikasi. Skrip output mentah mencakup opcode OP_RETURN, instruksi push beserta encoding panjangnya, dan payload. Payload 80 byte dapat memerlukan skrip 83 byte: satu byte opcode, dua byte header OP_PUSHDATA1, dan 80 byte data. Panduan lama tentang “80 byte” sering merujuk pada payload, sedangkan pengaturan baru dapat mengukur seluruh skrip.

Kebijakan default data carrier Bitcoin Core 31.1

Bitcoin Core 31.1 mengaktifkan -datacarrier secara default. Nilai default -datacarriersize adalah 100.000 byte dan menghitung gabungan ukuran scriptPubKey mentah semua output data carrier dalam satu transaksi. Beberapa output NULL_DATA berbagi batas yang sama; opcode dan encoding push juga dihitung. Core 30.0 mengganti batas skrip lama 83 byte dengan batas gabungan 100.000 byte serta mengizinkan beberapa output; Core 31.1 mempertahankan kebijakan ini. Lihat opsi Core 31.1, implementasi kebijakan, dan catatan rilis 30.0.

Ilustrasi tanpa kata: aliran data output berhenti di penghalang, sedangkan data witness input menuju blockchain
Perbandingan data OP_RETURN pada output dan data witness pada input; keduanya berada di bidang transaksi berbeda dan mengikuti aturan berbeda

Relay dan konsensus menjawab pertanyaan berbeda

Setiap node dapat menonaktifkan relay data carrier atau menurunkan batas lokalnya; node dan versi perangkat lunak lain bisa memakai pengaturan berbeda. Penolakan transaksi oleh mempool suatu node dapat berarti kebijakan lokalnya tidak meneruskan transaksi, bukan berarti konsensus melarangnya. Bitcoin Core menerapkan batas data saat memeriksa standardness dan memeriksa aturan konsensus secara terpisah ketika memvalidasi blok. Core consensus transaction checks. See Bitcoin Core 31.1 mempool standardness implementation.

Nilai output hilang; biaya transaksi dihitung terpisah

Output OP_RETURN dapat diberi nilai, tetapi nilai itu tidak dapat dipulihkan dan menjadi tidak dapat dibelanjakan secara permanen. Wallet biasanya memberi nilai nol. Jika 1.000 sat dialokasikan, nilainya tidak otomatis menjadi biaya miner. Biaya tetap jumlah nilai input dikurangi seluruh output. Byte skrip memakai bobot transaksi dan dapat menaikkan biaya pada tarif sat/vB yang sama. Lihat panduan biaya transaksi Bitcoin.

Beberapa output data tidak menggandakan batas

Bitcoin Core 31.1 mengizinkan beberapa output NULL_DATA standar, tetapi ukuran skripnya dijumlahkan ke batas transaksi yang sama. Membagi payload ke beberapa output tidak memperbesar kapasitas dan setiap output tambahan menambah data transaksi serta bobot blok. Relay juga bergantung pada bobot transaksi, biaya, dan kebijakan standardness lain. Penerimaan oleh satu wallet atau penjelajah blok tidak menjamin penyebaran ke seluruh jaringan.

OP_RETURN berbeda dari inskripsi Taproot dalam witness

Data OP_RETURN ada di scriptPubKey output saat transaksi dibuat. Data witness SegWit diserialisasi terpisah untuk setiap input; BIP 141 menjelaskannya sebagai data tumpukan per input. Pengeluaran melalui jalur skrip Taproot dapat mengungkap skrip dan control block di witness input. Perangkat lunak Ordinals dapat menafsirkan format envelope di sana sebagai inskripsi berdasarkan konvensi aplikasi, tetapi mekanismenya berbeda dari output nulldata. Lihat BIP 141, BIP 341, dan [panduan Bitcoin Ordinals dan inskripsi](/learn/bitcoin-ordinals-inscriptions-satoshi-numbering-witness-data-explained).

Periksa kebijakan, nilai, dan privasi sebelum menggunakan

Pastikan versi Bitcoin Core dan pengaturan lokal yang menjadi acuan. Hitung secara terpisah ukuran skrip output mentah lengkap, bobot total transaksi, nilai output yang tidak dapat dibelanjakan, dan biaya miner. Konsensus tidak memberi makna pada byte payload sembarang; pastikan protokol atau penerima mengenali format tersebut. Data yang dicatat di blockchain bersifat publik. Untuk memahami output dan kembalian, lihat panduan Bitcoin UTXO dan coin control.

Pertanyaan umum

Q1Apakah konsensus Bitcoin membatasi OP_RETURN hingga 80 byte data?

Tidak. Angka 80 byte adalah nilai payload dalam contoh kebijakan standardness lama, bukan batas konsensus universal. Bitcoin Core 31.1 memakai batas gabungan default 100.000 byte untuk skrip data mentah; tiap node dapat mengubah kebijakannya.

Q2Apakah OP_RETURN yang lebih besar menaikkan biaya transaksi?

Bisa. Byte skrip menambah bobot transaksi sehingga biaya dapat naik pada tarif sat/vB yang sama. Sat yang dialokasikan ke output tak dapat dibelanjakan hilang secara terpisah dan bukan biaya miner.

Q3Apakah OP_RETURN sama dengan inskripsi Ordinals?

Tidak. OP_RETURN berada di skrip output dan membuat output itu tidak dapat dibelanjakan. Inskripsi Taproot yang umum menempatkan konten pada data jalur skrip witness input, yang ditafsirkan perangkat lunak Ordinals menurut konvensinya.

Sumber dan bacaan lanjutan

Laporkan masalah

Kami akan menyiapkan email berisi tautan artikel ini. Mark menerima laporan setelah Anda mengirimkannya

Cek cepat

Sudah membaca panduannya? Uji diri dengan 3 pertanyaan

Pertanyaan 1 / 3

Pertanyaan 01

Apa yang diukur -datacarriersize default Bitcoin Core 31.1?

Pilih jawaban untuk melihat penjelasannya

Glosarium opsi