ไข่ส้มวิทยา ไข่ส้มวิทยา
หมวดที่ 3: ธุรกรรมและกุญแจดิจิทัล • ตอนที่ 16

ระบบล็อก/ปลดล็อก (Locks) เจาะลึก: กุญแจล็อกที่ติดมากับเงินแต่ละก้อนคืออะไร ทำไมเปิดได้แค่เจ้าของ

เจาะลึกเงื่อนไขใน Script ล็อก และการใช้ Digital Signature ปลดล็อกเงินโดยไม่ต้องโชว์ Private Key

#Bitcoinมือใหม่ #Script #LockingScript #DigitalSignature
สไลด์ปกตอนที่ 16: ระบบล็อก/ปลดล็อก (Locks) เจาะลึก: กุญแจล็อกที่ติดมากับเงินแต่ละก้อนคืออะไร ทำไมเปิดได้แค่เจ้าของ
🔍 แตะเพื่อขยายรูป
สไลด์ประกอบบทเรียนตอนที่ 16 — แตะเพื่อดูแบบเต็มจอ

ตอนที่ 15 เรารู้ว่าเงินทุกก้อนเกิดจากรางวัลนักขุด (Coinbase Transaction), ก้อนที่ยังไม่ได้ใช้เรียกว่า UTXO, และค่าธรรมเนียมคือเศษเงินที่เราเลือกไม่ทอนกลับหาตัวเอง

ตลอดหลายตอนที่ผ่านมา เราพูดถึง “กุญแจล็อก” แบบผ่าน ๆ มาตลอด วันนี้ถึงเวลาที่เราจะมาผ่าดูกลไกนี้กันจริง ๆ ครับว่า แม่กุญแจดิจิทัลนี้คืออะไร เขียนด้วยภาษาอะไร และทำไมคนทั้งโลกถึงมั่นใจว่ามีเพียงเจ้าของตัวจริงเท่านั้นที่เปิดได้?

🔐 กุญแจล็อกคืออะไร? (เงื่อนไขที่แปะอยู่บนเงินแต่ละก้อน)

อะไรเป็นตัวป้องกันไม่ให้บิทคอยน์ของเราถูกใครก็ไม่รู้ขโมยไปใช้? คำตอบคือ ผลลัพธ์ธุรกรรม (Outputs) ทุกก้อนจะมี “เงื่อนไขการล็อก (Lock Script)” ติดมาด้วยเสมอ

ล็อกนี้คือชุดเงื่อนไขทางคณิตศาสตร์ที่เขียนกำกับไว้ว่า “ต้องทำอะไรบ้าง จึงจะสามารถนำเงินก้อนนี้ไปใช้ต่อได้” เงื่อนไขมาตรฐานที่พบบ่อยที่สุดระบุไว้ทำนองว่า:

“เงินก้อนนี้ถูกล็อกไว้กับที่อยู่ (Address) เลขนี้นะ ใครจะหยิบไปใช้ ต้องพิสูจน์ทางคณิตศาสตร์ให้ได้ว่าเป็นเจ้าของที่อยู่นี้จริง ๆ”

ในเมื่อเงินทุกก้อนในระบบมีเงื่อนไขนี้คุ้มครองอยู่ คนอื่นจึงไม่สามารถแอบอ้างหยิบเงินของเราไปใช้ได้เลย แม้ว่าสมุดบัญชีบล็อกเชนจะเปิดเผยให้ทุกคนอ่านได้ก็ตาม

🛠️ ล็อกถูกใส่เข้าไปตอนไหน?

จำได้ไหมครับว่าการส่งบิทคอยน์คือการนำก้อนเงินเก่ามาหลอมสร้างเป็นก้อนใหม่ ในตอนที่เราสร้างก้อนใหม่ขึ้นมาแต่ละก้อน ผู้ส่งจะเป็นคนกำหนดและแปะล็อกลงไปด้วยเสมอ

เช่น เมื่อเราต้องการโอนเงินให้เพื่อน เราจะสร้างก้อนเงินใหม่ขึ้นมา แล้วแปะเงื่อนไขว่า “เปิดได้เฉพาะเจ้าของที่อยู่ของเพื่อนเท่านั้น” เมื่อธุรกรรมนี้ถูกบันทึกลงบล็อกเชน เงินก้อนนั้นก็จะตกเป็นของเพื่อนโดยสมบูรณ์ เพราะมีเพียงเพื่อนคนเดียวที่ถือ กุญแจส่วนตัว (Private Key) ที่ตรงกับเงื่อนไขนั้น (และแม้แต่ก้อนเงินทอนที่เราส่งกลับหาตัวเอง เราก็ต้องแปะล็อกไว้กับที่อยู่ของเราเองเช่นกัน)

📜 ล็อกหน้าตาเป็นยังไง? รู้จักกับภาษาสคริปต์ (Bitcoin Script)

เงื่อนไขบนก้อนเงินไม่ได้เขียนเป็นภาษาคน แต่เขียนด้วยภาษาโปรแกรมเฉพาะตัวของบิทคอยน์ เรียกว่า ภาษาสคริปต์ (Bitcoin Script)

โค้ดสคริปต์ที่ใช้ล็อกเงินมักจะมีคำสั่งสำเร็จรูป เช่น คำสั่ง CHECKSIG ซึ่งทำหน้าที่เปรียบเทียบว่าหลักฐานที่ผู้ใช้นำมายื่น ตรงกับที่อยู่ที่ระบุไว้ในล็อกหรือไม่ สรุปง่าย ๆ คือ:

  • ล็อก (ScriptPubKey) = โจทย์ปัญหาที่แปะอยู่บนก้อนเงิน
  • ใครที่สามารถแก้โจทย์ข้อนี้ได้ถูกต้อง จึงจะมีสิทธิ์นำเงินก้อนนั้นไปใช้

🔓 แล้วเราปลดล็อกอย่างไร?

เมื่อเราต้องการนำเงินก้อนไหนไปใช้จ่าย เราจะต้องแนบ “คำตอบ (ScriptSig)” เข้าไปคู่กับข้อมูลขาเข้า (Input) นั้นเสมอ

เมื่อธุรกรรมถูกส่งไปยังโหนดต่าง ๆ ในเครือข่าย โหนดแต่ละเครื่องจะนำ ล็อก มารันประกบกับ คำตอบ ที่เราส่งไป:

  • หากคำตอบถูกต้องตามเงื่อนไข (ผ่าน): โหนดจะยอมรับธุรกรรม และส่งต่อให้โหนดอื่น ๆ จนกระทั่งนักขุดนำไปลงบล็อก
  • หากคำตอบไม่ถูกต้อง (ไม่ผ่าน): โหนดจะปฏิเสธและเตะธุรกรรมนั้นทิ้งทันทีโดยไม่มีการผ่อนปรน

การตรวจสอบนี้ทำงานอัตโนมัติบนโหนดทุกเครื่องทั่วโลกอย่างเป็นอิสระต่อกัน จึงไม่จำเป็นต้องมีคนกลางคอยกดอนุมัติ

🤫 เดี๋ยวก่อน… ยื่นกุญแจส่วนตัวเข้าไปในธุรกรรมเลยเหรอ?

ไม่ใช่เด็ดขาดครับ! หากเราส่งกุญแจส่วนตัวเข้าไปในธุรกรรม ทุกคนในโลกก็จะเห็นกุญแจและขโมยเงินของเราได้ทั้งหมด

วิธีที่บิทคอยน์ใช้คือ เราจะนำกุญแจส่วนตัวไปผ่านสมการคณิตศาสตร์เพื่อสร้าง “ลายเซ็นดิจิทัล (Digital Signature)” แบบใช้ครั้งเดียวขึ้นมา แล้วยื่นเฉพาะลายเซ็นนี้เป็นคำตอบของล็อก

ความมหัศจรรย์ของลายเซ็นดิจิทัลคือ:

  1. ทุกคนสามารถตรวจสอบได้ทันทีว่า ลายเซ็นนี้ถูกสร้างขึ้นจากกุญแจส่วนตัวของที่อยู่นี้จริง
  2. แต่ไม่มีใครสามารถคำนวณย้อนกลับจากลายเซ็น เพื่อหากุญแจส่วนตัวของเราได้เลย

เราจึงสามารถพิสูจน์ความเป็นเจ้าของเงินได้อย่างโปร่งใส โดยที่กุญแจส่วนตัวไม่เคยหลุดออกจากเครื่องของเราเลยแม้แต่ครั้งเดียว

🎛️ ล็อกไม่ได้มีแค่แบบเดียว: เงินที่ตั้งโปรแกรมได้ (Programmable Money)

ภาษาสคริปต์ของบิทคอยน์สามารถผสมผสานคำสั่งเพื่อสร้างเงื่อนไขที่ซับซ้อนขึ้นได้อีกมาก เช่น:

  • ล็อกตามเวลา (Timelock): ล็อกเงินไว้ให้เปิดใช้ได้หลังจากวันที่กำหนดเท่านั้น
  • ล็อกแบบหลายกุญแจ (Multisig): ต้องใช้ลายเซ็น 2 ใน 3 คนพร้อมกันจึงจะเปิดตู้เซฟได้

นี่คือที่มาของคำว่า “เงินที่ตั้งโปรแกรมได้ (Programmable Money)” เพราะเงินแต่ละก้อนสามารถบรรทุกกติกาและเงื่อนไขการใช้งานติดตัวไปด้วยตั้งแต่วินาทีที่มันถูกสร้างขึ้นมาครับ

🧠 สรุปวันนี้ จำแค่นี้

  • ก้อนเงินทุกก้อนมี ระบบล็อก (Lock) ติดมาด้วย เป็นชุดเงื่อนไขที่ผู้ส่งตั้งขึ้นเพื่อป้องกันไม่ให้เงินถูกขโมย
  • ล็อกเขียนด้วยภาษาโปรแกรมจิ๋วชื่อ Script โดยคำสั่งยอดนิยมคือ CHECKSIG
  • เวลาจะใช้เงิน เราไม่ได้ยื่นกุญแจส่วนตัว แต่ยื่น ลายเซ็นดิจิทัล ที่พิสูจน์ความเป็นเจ้าของได้โดยไม่เปิดเผยกุญแจ
  • บิทคอยน์เป็น เงินที่ตั้งโปรแกรมได้ เพราะสามารถตั้งเงื่อนไขซับซ้อน เช่น ล็อกตามเวลา หรือต้องใช้หลายคนเซ็นร่วมกัน

🔮 ตอนหน้า:

เราพูดถึงคำว่า “ที่อยู่ (Address)” กับ “กุญแจ (Key)” สลับกันไปมา จนหลายคนอาจเริ่มสับสนว่ามันคือสิ่งเดียวกันหรือไม่? ตอนหน้าเราจะมาแยกความต่างให้ชัดเจน ว่าตัวไหนเอาไว้แจกคนอื่น และตัวไหนต้องเก็บเป็นความลับสุดยอดครับ!

🖼️ สไลด์ทั้งหมดของตอนนี้ (8 รูป)

สไลด์ประกอบบทเรียนตอนที่ 16 รูปที่ 2สไลด์ประกอบบทเรียนตอนที่ 16 รูปที่ 3สไลด์ประกอบบทเรียนตอนที่ 16 รูปที่ 4สไลด์ประกอบบทเรียนตอนที่ 16 รูปที่ 5สไลด์ประกอบบทเรียนตอนที่ 16 รูปที่ 6สไลด์ประกอบบทเรียนตอนที่ 16 รูปที่ 7สไลด์ประกอบบทเรียนตอนที่ 16 รูปที่ 8
ทบทวนความเข้าใจ

แบบทดสอบท้ายบทเรียน

ตอบคำถาม 3 ข้อ เพื่อเช็กความเข้าใจของตัวเองได้เลย

1. ระบบล็อก (Locking Script) บนก้อนเงินบิทคอยน์ถูกเขียนขึ้นด้วยภาษาอะไร?

2. เวลาเราต้องการปลดล็อกเงินเพื่อโอนให้คนอื่น เราส่งอะไรไปเป็นหลักฐานคำตอบ?

3. คำว่า 'Programmable Money' (เงินที่ตั้งโปรแกรมได้) หมายถึงอะไรในบิทคอยน์?

✅

อ่านตอนนี้จบแล้วใช่ไหม?

กดบันทึกเพื่อติดตามความก้าวหน้าการเรียนของคุณ