Skip to content
Semua panduan opsyen
Output transaksi Bitcoin11 min read

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

Fahami cara OP_RETURN merekod data awam, sebab output itu tidak boleh dibelanjakan, perbezaan dasar relay Bitcoin Core 31.1 daripada konsensus, dan bezanya daripada inskripsi witness.

Dalam panduan iniOP_RETURN meletakkan data dalam skrip pengunci

Ringkasan ringkas

OP_RETURN menambah data awam pada skrip output transaksi Bitcoin. Bitcoin Core menganggap output yang skripnya bermula dengan OP_RETURN terbukti tidak boleh dibelanjakan lalu mengecualikannya daripada set UTXO. Had relay semasa ialah dasar setempat setiap nod, bukannya had payload konsensus untuk seluruh rangkaian.

OP_RETURN meletakkan data dalam skrip pengunci

Output Bitcoin mengandungi nilai dan skrip pengunci bernama scriptPubKey. Output OP_RETURN, yang turut dikelaskan sebagai nulldata, bermula dengan opcode OP_RETURN dan boleh menolak jujukan bait selepasnya. Apabila transaksi dimasukkan ke dalam blok, bait itu direkod secara awam sebagai sebahagian output. Corak ini tidak membentuk lapisan data berasingan, baki token atau mesej peribadi.

Mengapa output tidak boleh dibelanjakan sekali lagi

OP_RETURN ialah opcode yang menyebabkan pelaksanaan gagal apabila dicapai. Cubaan membelanjakan output yang skripnya bermula dengan opcode ini tidak boleh memenuhi skrip. Oleh itu Bitcoin Core mengelaskan output tersebut sebagai tidak boleh dibelanjakan dan boleh terus meninggalkannya daripada set UTXO, tanpa menyimpan syiling yang mustahil digunakan. Rujuk script.h Bitcoin Core 31.1. Bitcoin Core 31.1 script implementation.

Saiz skrip melebihi payload

Had data carrier tidak semestinya mengira bait aplikasi sahaja. Skrip output mentah merangkumi opcode OP_RETURN, arahan push berserta pengekodan panjang, dan payload. Payload 80 bait boleh menghasilkan skrip 83 bait: satu bait opcode, dua bait pengepala OP_PUSHDATA1, dan 80 bait data. Panduan lama yang menyebut “80 bait” sering merujuk payload; tetapan baharu mungkin mengukur keseluruhan skrip.

Dasar lalai data carrier dalam Bitcoin Core 31.1

Bitcoin Core 31.1 mengaktifkan -datacarrier secara lalai. Nilai lalai -datacarriersize ialah 100,000 bait dan mengira jumlah saiz scriptPubKey mentah bagi semua output data carrier dalam satu transaksi. Beberapa output NULL_DATA berkongsi had yang sama; opcode dan pengekodan push turut dikira. Core 30.0 menggantikan had lama skrip 83 bait dengan had agregat 100,000 bait dan membenarkan beberapa output; Core 31.1 mengekalkan dasar itu. Lihat pilihan Core 31.1, pelaksanaan dasar dan nota keluaran 30.0.

Ilustrasi tanpa perkataan: aliran data output terhenti pada penghadang, manakala data witness input memasuki rantaian blok
Perbandingan data OP_RETURN pada output dengan data witness pada input; kedua-duanya berada dalam medan transaksi berbeza dan mengikut peraturan berlainan

Relay dan konsensus menjawab soalan berlainan

Setiap nod boleh mematikan relay data carrier atau merendahkan had setempat; nod dan versi perisian lain mungkin menggunakan tetapan lain. Jika satu nod menolak transaksi daripada mempool, itu mungkin sekadar bermakna dasarnya tidak menghantar transaksi tersebut, bukannya konsensus melarangnya. Bitcoin Core mengenakan had data dalam semakan standardness dan menyemak peraturan konsensus secara berasingan apabila mengesahkan blok. Core consensus transaction checks. See Bitcoin Core 31.1 mempool standardness implementation.

Nilai output hilang; yuran dikira secara berasingan

Output OP_RETURN boleh diberi nilai, tetapi nilai itu tidak boleh diperoleh semula dan kekal tidak boleh dibelanjakan. Dompet biasanya menetapkan nilainya kepada sifar. Jika 1,000 sat diberikan, jumlah itu tidak secara automatik menjadi yuran pelombong. Yuran masih jumlah input ditolak jumlah semua output. Bait skrip menggunakan berat transaksi dan boleh menaikkan yuran pada kadar sat/vB yang sama. Rujuk panduan yuran transaksi Bitcoin.

Beberapa output data tidak menggandakan had

Bitcoin Core 31.1 membenarkan beberapa output NULL_DATA standard, tetapi saiz skripnya dijumlahkan di bawah had transaksi yang sama. Membahagikan payload tidak menambah kapasiti; setiap output tambahan juga menambah data transaksi dan berat blok. Relay turut bergantung pada berat transaksi, yuran dan dasar standardness lain. Penerimaan oleh satu dompet atau penjelajah blok tidak menjamin penyebaran ke seluruh rangkaian.

OP_RETURN berbeza daripada inskripsi Taproot dalam witness

Data OP_RETURN berada dalam scriptPubKey output semasa transaksi dicipta. Data witness SegWit disiri secara berasingan bagi setiap input; BIP 141 menerangkannya sebagai data tindanan bagi setiap input. Perbelanjaan laluan skrip Taproot boleh mendedahkan skrip serta blok kawalan dalam witness input. Perisian Ordinals boleh mentafsir format envelope sebagai inskripsi berdasarkan konvensyen aplikasi, tetapi mekanismenya berlainan daripada output nulldata. Rujuk BIP 141, BIP 341 dan [panduan Bitcoin Ordinals dan inskripsi](/learn/bitcoin-ordinals-inscriptions-satoshi-numbering-witness-data-explained).

Semak dasar, nilai dan privasi sebelum menggunakannya

Kenal pasti versi Bitcoin Core serta pilihan setempat yang menjadi sandaran. Kira secara berasingan saiz skrip output mentah penuh, berat keseluruhan transaksi, nilai output yang tidak boleh dibelanjakan dan yuran pelombong. Konsensus tidak memberikan makna kepada bait payload sewenang-wenangnya; semak juga sama ada protokol atau penerima mengenali format tersebut. Data di rantaian adalah awam. Untuk memahami output dan baki, rujuk panduan UTXO dan kawalan syiling Bitcoin.

Soalan lazim

Q1Adakah konsensus Bitcoin mengehadkan OP_RETURN kepada 80 bait data?

Tidak. 80 bait ialah nilai payload dalam contoh dasar standardness lama, bukan had konsensus sejagat. Bitcoin Core 31.1 secara lalai menggunakan had agregat 100,000 bait bagi skrip data mentah; setiap nod boleh mengubah dasarnya.

Q2Adakah OP_RETURN yang lebih besar menaikkan yuran transaksi?

Boleh. Bait skrip menambah berat transaksi dan boleh menaikkan yuran pada kadar sat/vB yang sama. Sat yang diberikan kepada output tidak boleh dibelanjakan turut hilang secara berasingan dan bukan yuran pelombong.

Q3Adakah OP_RETURN sama dengan inskripsi Ordinals?

Tidak. OP_RETURN berada dalam skrip output dan menjadikan output itu tidak boleh dibelanjakan. Inskripsi Taproot biasa meletakkan kandungan dalam data laluan skrip witness input, lalu ditafsirkan oleh perisian Ordinals mengikut konvensinya.

Sumber dan bacaan lanjut

Laporkan masalah

Kami akan menyediakan e-mel dengan pautan artikel ini. Mark menerima laporan hanya selepas anda menghantarnya

Semakan pantas

Sudah membaca panduan? Uji diri dengan 3 soalan

Soalan 1 / 3

Soalan 01

Apakah yang diukur oleh -datacarriersize lalai Bitcoin Core 31.1?

Pilih jawapan untuk melihat penjelasan

Glosari opsyen