อธิบาย OP_RETURN ใน Bitcoin: data carrier, nulldata และเอาต์พุตที่ใช้จ่ายไม่ได้
เรียนรู้ว่า OP_RETURN บันทึกข้อมูลสาธารณะอย่างไร เหตุใดเอาต์พุตจึงใช้จ่ายไม่ได้ นโยบาย relay ของ Bitcoin Core 31.1 ต่างจากฉันทามติอย่างไร และต่างจาก witness inscription อย่างไร
ในคู่มือนี้OP_RETURN ใส่ข้อมูลไว้ใน locking script
สรุปสั้น
OP_RETURN ใช้แนบข้อมูลสาธารณะไว้ในสคริปต์เอาต์พุตของธุรกรรม Bitcoin Bitcoin Core ถือว่าเอาต์พุตที่สคริปต์ขึ้นต้นด้วย OP_RETURN ใช้จ่ายไม่ได้อย่างพิสูจน์ได้ และไม่นำเข้า UTXO set ขีดจำกัด relay ปัจจุบันเป็นนโยบายเฉพาะของแต่ละโหนด ไม่ใช่ขีดจำกัด payload ตามฉันทามติที่ใช้กับทั้งเครือข่าย
OP_RETURN ใส่ข้อมูลไว้ใน locking script
เอาต์พุตของ Bitcoin มีจำนวนเงินและ locking script ที่เรียกว่า scriptPubKey เอาต์พุต OP_RETURN ซึ่งจัดเป็น nulldata ได้ด้วย จะขึ้นต้นด้วย opcode OP_RETURN และอาจ push ชุดไบต์ตามมา เมื่อธุรกรรมถูกรวมในบล็อก ไบต์เหล่านั้นจะถูกบันทึกต่อสาธารณะเป็นส่วนหนึ่งของเอาต์พุต รูปแบบนี้ไม่ได้สร้างชั้นข้อมูลแยก ยอดโทเคน หรือข้อความส่วนตัว
เหตุใดเอาต์พุตจึงใช้จ่ายอีกไม่ได้
OP_RETURN เป็น opcode ที่ทำให้สคริปต์ล้มเหลวหากการทำงานมาถึงจุดนั้น การพยายามใช้จ่ายเอาต์พุตที่สคริปต์ขึ้นต้นด้วย opcode นี้จึงทำตามเงื่อนไขไม่ได้ Bitcoin Core จัดประเภทว่าใช้จ่ายไม่ได้และนำออกจาก UTXO set ได้ทันที แทนที่จะเก็บเหรียญที่ไม่มีทางใช้ได้ ดู script.h ของ Bitcoin Core 31.1 Bitcoin Core 31.1 script implementation.
ขนาดสคริปต์ใหญ่กว่า payload
ขีดจำกัด data carrier ไม่จำเป็นต้องนับเฉพาะไบต์ข้อมูลของแอป สคริปต์เอาต์พุตดิบยังรวม opcode OP_RETURN คำสั่ง push และรหัสความยาว รวมถึง payload payload ขนาด 80 ไบต์อาจทำให้สคริปต์มี 83 ไบต์ ได้แก่ opcode หนึ่งไบต์ ส่วนหัว OP_PUSHDATA1 สองไบต์ และข้อมูล 80 ไบต์ คำแนะนำเก่าที่บอก “80 ไบต์” มักหมายถึง payload แต่วิธีตั้งค่าใหม่อาจนับสคริปต์ทั้งหมด
นโยบาย data carrier เริ่มต้นใน Bitcoin Core 31.1
Bitcoin Core 31.1 เปิด -datacarrier เป็นค่าเริ่มต้น และกำหนด -datacarriersize ไว้ที่ 100,000 ไบต์ โดยรวมขนาด scriptPubKey ดิบของเอาต์พุต data carrier ทุกตัวในธุรกรรมเดียวกัน เอาต์พุต NULL_DATA หลายตัวใช้ขีดจำกัดเดียวกันและนับ opcode กับรหัส push ด้วย Core 30.0 เปลี่ยนจากขีดจำกัดสคริปต์ 83 ไบต์เดิมเป็นขีดจำกัดรวม 100,000 ไบต์และอนุญาตหลายเอาต์พุต; Core 31.1 คงค่านี้ไว้ ดู ตัวเลือก Core 31.1, โค้ดนโยบาย และ บันทึกการออก Core 30.0

นโยบาย relay และฉันทามติตอบคนละคำถาม
แต่ละโหนดปิด relay ของ data carrier หรือลดขีดจำกัดเฉพาะเครื่องได้ โหนดหรือเวอร์ชันซอฟต์แวร์อื่นอาจตั้งค่าไม่เหมือนกัน หากโหนดไม่รับธุรกรรมเข้า mempool อาจหมายเพียงว่านโยบายของโหนดนั้นไม่ relay ไม่ได้แปลว่าฉันทามติห้ามธุรกรรมนั้น Bitcoin Core ใช้ขีดจำกัดข้อมูลในการตรวจ standardness และตรวจฉันทามติแยกต่างหากตอนตรวจสอบบล็อก Core consensus transaction checks. See Bitcoin Core 31.1 mempool standardness implementation.
มูลค่าเอาต์พุตสูญไป ส่วนค่าธรรมเนียมคำนวณแยกกัน
เอาต์พุต OP_RETURN อาจมีมูลค่า แต่ไม่มีทางเรียกคืนและใช้จ่ายไม่ได้ตลอดไป กระเป๋ามักกำหนดมูลค่าเป็นศูนย์ หากกำหนด 1,000 sat ก็ไม่ได้กลายเป็นค่าธรรมเนียมของนักขุดโดยอัตโนมัติ ค่าธรรมเนียมยังคำนวณจากผลรวมอินพุตลบผลรวมเอาต์พุตทั้งหมด ไบต์สคริปต์ใช้ transaction weight และอาจเพิ่มค่าธรรมเนียมเมื่อใช้อัตรา sat/vB เท่ากัน ดูคู่มือค่าธรรมเนียมธุรกรรม Bitcoin
เอาต์พุตข้อมูลหลายตัวไม่ได้เพิ่มขีดจำกัด
Bitcoin Core 31.1 อนุญาตเอาต์พุต NULL_DATA แบบมาตรฐานหลายตัว แต่รวมขนาดสคริปต์เข้ากับขีดจำกัดเดียวต่อธุรกรรม การแบ่ง payload ไม่ได้เพิ่มพื้นที่ และเอาต์พุตแต่ละตัวเพิ่มข้อมูลธุรกรรมกับน้ำหนักบล็อก การ relay ยังขึ้นกับน้ำหนัก ค่าธรรมเนียม และนโยบาย standardness อื่น การที่กระเป๋าหรือ explorer หนึ่งแห่งรับธุรกรรมไม่ได้รับประกันว่าจะกระจายทั่วเครือข่าย
OP_RETURN ต่างจาก Taproot witness inscription
ข้อมูล OP_RETURN อยู่ใน scriptPubKey ของเอาต์พุตตั้งแต่สร้างธุรกรรม ส่วนข้อมูล SegWit witness แยก serialize สำหรับแต่ละอินพุต; BIP 141 อธิบายว่าเป็นข้อมูล stack ของอินพุต การใช้จ่าย Taproot แบบ script-path อาจเปิดเผยสคริปต์และ control block ใน witness ของอินพุต ซอฟต์แวร์ Ordinals อาจอ่านโครงสร้าง envelope เป็น inscription ตามธรรมเนียมของแอป ซึ่งไม่ใช่เอาต์พุต nulldata ดู BIP 141, BIP 341 และ[คู่มือ Bitcoin Ordinals และ inscription](/learn/bitcoin-ordinals-inscriptions-satoshi-numbering-witness-data-explained)
ก่อนใช้ให้ตรวจนโยบาย มูลค่า และความเป็นส่วนตัว
ตรวจสอบ Bitcoin Core รุ่นและตัวเลือกเฉพาะเครื่องที่คุณอ้างอิง คำนวณขนาดสคริปต์เอาต์พุตดิบทั้งหมด transaction weight มูลค่าที่ใส่ในเอาต์พุตซึ่งใช้จ่ายไม่ได้ และค่าธรรมเนียมนักขุดแยกกัน ฉันทามติไม่ได้กำหนดความหมายให้ไบต์ payload ที่กำหนดเอง และควรตรวจว่าโปรโตคอลหรือผู้รับรู้จักรูปแบบนั้น ข้อมูลบนเชนเป็นสาธารณะ ดูคู่มือ Bitcoin UTXO และ coin control เพื่อเข้าใจเอาต์พุตและเงินทอน
คำถามที่พบบ่อย
Q1ฉันทามติ Bitcoin จำกัด OP_RETURN ไว้ที่ข้อมูล 80 ไบต์หรือไม่?
ไม่ 80 ไบต์เป็นค่า payload ในตัวอย่างนโยบาย standardness เก่า ไม่ใช่ขีดจำกัดฉันทามติสากล Bitcoin Core 31.1 ใช้ขีดจำกัดรวม 100,000 ไบต์สำหรับสคริปต์ข้อมูลดิบเป็นค่าเริ่มต้น และแต่ละโหนดเปลี่ยนนโยบายได้
Q2OP_RETURN ที่ใหญ่ขึ้นทำให้ค่าธรรมเนียมธุรกรรมเพิ่มไหม?
อาจเพิ่มได้ ไบต์สคริปต์เพิ่ม transaction weight และอาจเพิ่มค่าธรรมเนียมที่อัตรา sat/vB เท่ากัน sat ที่กำหนดให้เอาต์พุตใช้จ่ายไม่ได้สูญไปต่างหากและไม่ใช่ค่าธรรมเนียมนักขุด
Q3OP_RETURN เหมือน Ordinals inscription หรือไม่?
ไม่ OP_RETURN อยู่ในสคริปต์เอาต์พุตและทำให้เอาต์พุตใช้จ่ายไม่ได้ Taproot inscription ทั่วไปใส่เนื้อหาในข้อมูล script-path ของ witness อินพุต ซึ่งซอฟต์แวร์ Ordinals ตีความตามธรรมเนียมของตน
แหล่งข้อมูลและการอ่านเพิ่มเติม
รายงานปัญหา
เราจะเตรียมอีเมลพร้อมลิงก์บทความนี้ Mark จะได้รับรายงานเมื่อคุณส่งอีเมลแล้วเท่านั้น
ตรวจสอบอย่างรวดเร็ว
อ่านคู่มือจบแล้ว ลองตอบคำถาม 3 ข้อ
คำถาม 01
-datacarriersize ค่าเริ่มต้นของ Bitcoin Core 31.1 วัดอะไร?
เลือกคำตอบเพื่อดูคำอธิบาย
อภิธานศัพท์ออปชัน
A call or put whose strike is near the underlying price; it has little intrinsic value and often substantial sensitivity to time and volatility.
อ่านคู่มือฉบับละเอียดCall optionA contract that gives its holder the right, but not the obligation, to buy the underlying at the strike before or at expiration under the contract terms.
อ่านคู่มือฉบับละเอียดPut optionA contract that gives its holder the right, but not the obligation, to sell the underlying at the strike before or at expiration under the contract terms.
อ่านคู่มือฉบับละเอียด