สคริปต์ Bitcoin และการตรวจสอบลายมือชื่อ UTXO
ติดตามสคริปต์ pay-to-public-key-hash (P2PKH) และการลงนามด้วย ECDSA
สคริปต์ Bitcoin และการตรวจสอบลายมือชื่อ UTXO เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
แบบจำลอง UTXO
บิตคอยน์ใช้เอาต์พุตธุรกรรมที่ยังไม่ได้ใช้จ่าย (UTXO) แต่ละ UTXO คือเหรียญที่มีสคริปต์ล็อก (scriptPubKey) หากต้องการใช้จ่ายเหรียญนั้น ผู้ใช้จ่ายต้องระบุสคริปต์ปลดล็อก (scriptSig) ที่ตรงตามเงื่อนไขของสคริปต์ล็อก UTXO เป็นหน่วยอะตอม — ใช้จ่ายแล้วหรือยังไม่ได้ใช้จ่ายเท่านั้น ไม่สามารถใช้จ่ายเพียงบางส่วนได้
สคริปต์บิตคอยน์
สคริปต์บิตคอยน์เป็นภาษาที่ทำงานบนสแตกและไม่สมบูรณ์แบบทัวริง สคริปต์ทำงานโดยนำข้อมูลเข้าสู่สแตกแล้วเรียกใช้รหัสปฏิบัติการ ไม่มีลูป ไม่มีการเรียกซ้ำ — สคริปต์จบการทำงานเสมอ ข้อจำกัดนี้มีไว้โดยตั้งใจเพื่อป้องกันการโจมตีแบบปฏิเสธการให้บริการ และทำให้การตรวจสอบสคริปต์มีความซับซ้อน O(n) ตามความยาวของสคริปต์
P2PKH: จ่ายไปยังแฮชกุญแจสาธารณะ
ประเภทเอาต์พุตที่พบบ่อยที่สุด scriptPubKey: OP_DUP OP_HASH160
ลำดับการทำงานของ P2PKH
ลำดับการทำงานบนสแตกของ P2PKH: นำ
ECDSA ในบิตคอยน์
บิตคอยน์ใช้ ECDSA บนเส้นโค้ง secp256k1 (เส้นโค้ง Koblitz, y^2 = x^3 + 7 mod p) คีย์ส่วนตัว d ∈ [1, n-1] คีย์สาธารณะ Q = d*G Sign(m): k แบบสุ่ม; r = (k*G).x mod n; s = k^{-1}(H(m)+r*d) mod n ลายเซ็น = (r, s) และเข้ารหัสแบบ DER ใน scriptSig
ประเภท SIGHASH
ลายเซ็นของบิตคอยน์จะผูกกับส่วนที่ระบุของธุรกรรม: SIGHASH_ALL (ค่าเริ่มต้น): ลงนามอินพุตและเอาต์พุตทั้งหมด SIGHASH_SINGLE: ลงนามเฉพาะเอาต์พุตที่สอดคล้องกัน SIGHASH_NONE: ไม่ลงนามเอาต์พุตใดเลย (อันตราย) SIGHASH_ANYONECANPAY: ลงนามเฉพาะอินพุตของตนเอง — ทำให้สร้างธุรกรรมร่วมกันได้
P2SH: จ่ายไปยังแฮชสคริปต์
P2SH ทำให้สามารถซ่อนเงื่อนไขการใช้จ่ายที่ซับซ้อนไว้เบื้องหลังแฮชได้ scriptPubKey: OP_HASH160
ลายเซ็นหลายฝ่าย (2 จาก 3)
redeemScript: OP_2
SegWit และ P2WPKH
พยานแบบแยกส่วน (SegWit, BIP-141) ย้ายลายเซ็นออกจาก scriptSig ไปไว้ในช่องพยานแยกต่างหาก วิธีนี้แก้ปัญหาการดัดแปลงธุรกรรม (ID จะเปลี่ยนหาก scriptSig เปลี่ยน) scriptPubKey ของ P2WPKH: OP_0 <20-byte pubKeyHash> พยาน: [
Taproot (P2TR)
Taproot (BIP-340/341/342) ใช้ลายเซ็นชนอร์และต้นไม้นิพจน์เชิงนามธรรมที่สร้างเป็นเมอร์เคิล (MAST) การใช้จ่ายแบบเริ่มต้น: ลายเซ็นชนอร์เพียงรายการเดียว (แยกไม่ออกจากการใช้จ่ายผ่านเส้นทางคีย์) เงื่อนไขที่ซับซ้อนจะถูกซ่อนไว้ในต้นไม้เมอร์เคิล และเปิดเผยเมื่อมีการใช้งานเท่านั้น ช่วยเพิ่มทั้งความเป็นส่วนตัวและประสิทธิภาพ
การตรวจสอบสคริปต์ในโค้ด
Bitcoin Core ตรวจสอบสคริปต์ด้วยตัวแปลคำสั่งที่ใช้สแตก CheckSig เรียก VerifyScript ซึ่งทำงานกับ scriptSig+scriptPubKey ที่รวมกัน สำหรับรหัสปฏิบัติการ CHECKSIG แต่ละรายการ ระบบจะเรียก CheckECDSASignature เพื่อตรวจสอบ (r,s) ที่เข้ารหัสแบบ DER กับแฮชของธุรกรรมโดยใช้ secp256k1
ตรวจสอบอย่างรวดเร็ว
OP_CHECKSIG ตรวจสอบอะไรในสคริปต์ P2PKH
สรุปทบทวน
UTXO ใช้สคริปต์บิตคอยน์ที่ทำงานบนสแตก P2PKH เป็นรูปแบบการใช้จ่ายที่พบบ่อยที่สุด — ตรวจสอบแฮชของกุญแจสาธารณะ แล้วตรวจสอบลายเซ็น ECDSA SegWit แก้ปัญหาการดัดแปลงธุรกรรม ส่วน Taproot เพิ่มชนิดลายเซ็นชนอร์และ MAST บทถัดไป: การวิเคราะห์รหัสลับเชิงผลต่าง
เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 67
- บทเรียน
- 261
คำถามที่พบบ่อย
บทเรียน “สคริปต์ Bitcoin และการตรวจสอบลายมือชื่อ UTXO” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “สคริปต์ Bitcoin และการตรวจสอบลายมือชื่อ UTXO” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “สคริปต์ Bitcoin และการตรวจสอบลายมือชื่อ UTXO”
ติดตามสคริปต์ pay-to-public-key-hash (P2PKH) และการลงนามด้วย ECDSA คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “สคริปต์ Bitcoin และการตรวจสอบลายมือชื่อ UTXO” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สายโซ่แฮชและการเชื่อมโยงบล็อก
- ต้นไม้ Merkle: ความถูกต้องของธุรกรรมในระดับใหญ่
- Proof of Work: การขุดและการปรับความยาก
- สคริปต์ Bitcoin และการตรวจสอบลายมือชื่อ UTXO