ความรู้เบื้องต้นเกี่ยวกับ Bitcoin Script: รากฐานของตรรกะธุรกรรมอัจฉริยะ
ระดับสูง
โดยสรุป: Bitcoin Script คืออะไร ทำงานอย่างไร และมีหน้าที่อะไร คู่มือเชิงเทคนิคฉบับละเอียดนี้จะเจาะลึกโครงสร้างและการใช้งานจริงของภาษา Script
ความสามารถในการเขียนโปรแกรมบนบิตคอยน์: ทำไมจึงมี Script
บิตคอยน์ไม่ได้เป็นเพียงระบบสกุลเงินดิจิทัล แต่ยังเป็นแพลตฟอร์มที่ช่วยให้สามารถเขียนตรรกะแบบมีเงื่อนไขบางอย่างลงในธุรกรรมได้ ความสามารถในการเขียนโปรแกรมนี้เกิดขึ้นได้ด้วยภาษาระดับพื้นฐานที่เรียกว่า Script
Script กำหนดเงื่อนไขการล็อกและปลดล็อกของธุรกรรมบิตคอยน์ แม้จะไม่ยืดหยุ่นเท่าสัญญาอัจฉริยะของ Ethereum แต่ Bitcoin Script ก็ช่วยให้สร้างตรรกะแบบกำหนดเองที่ทรงพลังได้ผ่านกลไกที่เรียบง่ายกว่า
Script คืออะไรและทำงานอย่างไร?
Script เป็นภาษาโปรแกรมแบบสแตก (stack-based) คำสั่งต่าง ๆ (OP code) จะทำหน้าที่ใส่ข้อมูลลงในสแตก หรือจัดการกับรายการที่มีอยู่แล้วในสแตก
Script ปรากฏอยู่ในสององค์ประกอบหลักของธุรกรรมบิตคอยน์:
- ScriptPubKey: สคริปต์ล็อกที่กำหนดโดยที่อยู่ของผู้รับ
- ScriptSig: สคริปต์ปลดล็อกที่ผู้ส่งเป็นผู้จัดเตรียม
สคริปต์ทั้งสองนี้จะถูกนำมาต่อกันและประมวลผลร่วมกัน หากผลลัพธ์สุดท้ายเหลือค่า “true” อยู่ที่ด้านบนสุดของสแตก ธุรกรรมนั้นจะถือว่าถูกต้อง
คุณลักษณะสำคัญของ Bitcoin Script
- ไม่เป็น Turing-complete: ไม่มีลูปหรือการทำงานแบบไม่สิ้นสุด ซึ่งเป็นการออกแบบโดยเจตนาเพื่อความปลอดภัย
- กำหนดผลได้แน่นอน (Deterministic): อินพุตเดียวกันจะให้เอาต์พุตเดียวกันเสมอ
- เรียบง่าย (Minimalistic): ออกแบบมาเพื่อฟังก์ชันหลัก โดยหลีกเลี่ยงความซับซ้อนที่ไม่จำเป็น
- ทำงานแบบสแตก (Stack-based): ทำงานบนโครงสร้างข้อมูลแบบ LIFO (last-in, first-out หรือเข้าหลังออกก่อน)
ประเภทของ Script ที่พบบ่อย
1. P2PKH (Pay-to-Public-Key-Hash)
รูปแบบธุรกรรมมาตรฐานของบิตคอยน์
- ScriptPubKey: OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
- ScriptSig: <Signature> <PublicKey>
มีเพียงผู้ถือกุญแจส่วนตัวที่ตรงกันเท่านั้นที่สามารถปลดล็อกเงินได้
2. P2SH (Pay-to-Script-Hash)
ช่วยให้สามารถแทนสคริปต์ที่ซับซ้อนกว่าด้วยที่อยู่แบบแฮชเพียงที่อยู่เดียว
- ScriptPubKey: OP_HASH160 <ScriptHash> OP_EQUAL
- ScriptSig: <Signature(s)> ... <RedeemScript>
นิยมใช้สำหรับ multisig หรือการชำระเงินแบบล็อกเวลา
3. Multisig
ต้องใช้ลายเซ็นที่ถูกต้องหลายรายการเพื่ออนุมัติธุรกรรม
ตัวอย่าง: สคริปต์ multisig แบบ 2-of-3:
OP_2 <PubKey1> <PubKey2> <PubKey3> OP_3 OP_CHECKMULTISIG
โดยทั่วไปจะถูกฝังอยู่ภายในโครงสร้าง P2SH
ภาพรวมของ OP Code ที่สำคัญ
Script ใช้ OP code (operation code) ในการกำหนดตรรกะ โดยตัวที่พบบ่อยได้แก่:
- OP_DUP: ทำสำเนารายการบนสุดของสแตก
- OP_HASH160: ใช้ SHA-256 ตามด้วย RIPEMD-160
- OP_EQUALVERIFY: เปรียบเทียบค่าสองค่า และแจ้งข้อผิดพลาดหากค่าไม่ตรงกัน
- OP_CHECKSIG: ตรวจสอบลายเซ็นดิจิทัล
- OP_CHECKLOCKTIMEVERIFY: บังคับใช้ข้อจำกัดการใช้จ่ายตามเวลา
สคริปต์จะนำโค้ดเหล่านี้มารวมกันเพื่อสร้างลำดับตรรกะที่ใช้ตรวจสอบเงื่อนไขการใช้จ่าย
ตัวอย่างเชิงเทคนิคของ Bitcoin Script
ตัวอย่าง P2PKH พื้นฐาน
- ScriptSig: <Signature> <PublicKey>
- ScriptPubKey: OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
เมื่อประมวลผลร่วมกัน สแตกจะดำเนินการทีละขั้นตอนเพื่อยืนยันความเป็นเจ้าของและอนุมัติการชำระเงิน
สคริปต์แบบล็อกเวลา (Time-Locked Script)
ScriptPubKey: <LockTime> OP_CHECKLOCKTIMEVERIFY OP_DROP <PubKey> OP_CHECKSIG
เงินจะไม่สามารถใช้จ่ายได้จนกว่าจะถึงเวลาหรือความสูงของบล็อกที่กำหนด เหมาะสำหรับระบบพักเงินกลาง (escrow) การส่งต่อมรดก หรือการทยอยปล่อยเงิน
สร้างอะไรได้บ้างด้วย Bitcoin Script?
- กระเป๋าเงินแบบหลายลายเซ็น (multisignature)
- การชำระเงินแบบล็อกเวลา
- การเปิดช่องทาง (channel) ใน Lightning Network
- ระบบพักเงินกลาง (escrow)
- เงื่อนไขการใช้จ่ายแบบจำกัด (เช่น เอาต์พุตที่ใช้ได้เพียงครั้งเดียว)
Script สร้างสมดุลระหว่างความเรียบง่ายและขีดความสามารถ ซึ่งสอดคล้องกับหลักการของบิตคอยน์
ทำไม Bitcoin Script จึงสำคัญ
Bitcoin Script พิสูจน์ให้เห็นว่าบิตคอยน์เป็นมากกว่าเงินดิจิทัล เพราะช่วยให้เขียนตรรกะแบบโปรแกรมได้ภายในธุรกรรม ทำให้มีความยืดหยุ่นมากขึ้นและสร้างเงื่อนไขที่ไม่ต้องอาศัยความไว้วางใจ (trustless) ได้ โดยไม่ลดทอนความปลอดภัย
คำถามที่พบบ่อย: ข้อสงสัยทั่วไปเกี่ยวกับ Bitcoin Script
ถาม: Bitcoin Script เป็น Turing-complete หรือไม่?
ตอบ: ไม่ใช่ Bitcoin Script จงใจหลีกเลี่ยงลูปและความสุ่มด้วยเหตุผลด้านความปลอดภัย
ถาม: Bitcoin Script รองรับ NFT หรือ DeFi ได้หรือไม่?
ตอบ: ได้เพียงในรูปแบบที่จำกัด สามารถสร้างฟังก์ชันพื้นฐาน เช่น การควบคุมโทเคนหรือ escrow ได้ แต่ไม่รองรับตรรกะ DeFi แบบเต็มรูปแบบ
ถาม: ยังมีการเพิ่ม OP code ใหม่อยู่หรือไม่?
ตอบ: ใช่ จากการอัปเกรดอย่าง SegWit และ Taproot มีการเพิ่ม OP code ใหม่เข้ามาแล้ว และยังมีอีกหลายรายการที่อยู่ระหว่างการหารือ
บทสรุป: Script คือเลเยอร์อัจฉริยะของบิตคอยน์
Bitcoin Script กำหนดตรรกะของธุรกรรมที่ขับเคลื่อนเครือข่าย แม้จะต้องอาศัยความเข้าใจทางเทคนิคขั้นสูง แต่ก็เป็นเครื่องมือสำคัญสำหรับนักพัฒนา ผู้เชี่ยวชาญด้านความปลอดภัย และผู้ออกแบบโปรโตคอล
เมื่อผู้ใช้จำนวนมากขึ้นได้ศึกษา Bitcoin Script ก็จะพบว่าบิตคอยน์มีความยืดหยุ่น ปลอดภัย และตั้งโปรแกรมได้มากเพียงใด
คำแนะนำ:
- ใช้ testnet เพื่อทดลองกับ Bitcoin Script อย่างปลอดภัย
- ทำความเข้าใจความแตกต่างระหว่าง ScriptSig และ ScriptPubKey อย่างถี่ถ้วน
- เรียนรู้ OP code ด้วยการฝึกกับสคริปต์จริง
- ลองสร้างสถานการณ์ multisig และ timelock เพื่อเรียนรู้จากการลงมือทำ
- ติดตามเอกสารของ Bitcoin Core และคลัง BIP บน GitHub อย่างสม่ำเสมอ





