ตอนที่ 15 เรารู้ว่าเงินทุกก้อนเกิดจากรางวัลนักขุด (Coinbase Transaction), ก้อนที่ยังไม่ได้ใช้เรียกว่า UTXO, และค่าธรรมเนียมคือเศษเงินที่เราเลือกไม่ทอนกลับหาตัวเอง
ตลอดหลายตอนที่ผ่านมา เราพูดถึง “กุญแจล็อก” แบบผ่าน ๆ มาตลอด วันนี้ถึงเวลาที่เราจะมาผ่าดูกลไกนี้กันจริง ๆ ครับว่า แม่กุญแจดิจิทัลนี้คืออะไร เขียนด้วยภาษาอะไร และทำไมคนทั้งโลกถึงมั่นใจว่ามีเพียงเจ้าของตัวจริงเท่านั้นที่เปิดได้?
🔐 กุญแจล็อกคืออะไร? (เงื่อนไขที่แปะอยู่บนเงินแต่ละก้อน)
อะไรเป็นตัวป้องกันไม่ให้บิทคอยน์ของเราถูกใครก็ไม่รู้ขโมยไปใช้? คำตอบคือ ผลลัพธ์ธุรกรรม (Outputs) ทุกก้อนจะมี “เงื่อนไขการล็อก (Lock Script)” ติดมาด้วยเสมอ
ล็อกนี้คือชุดเงื่อนไขทางคณิตศาสตร์ที่เขียนกำกับไว้ว่า “ต้องทำอะไรบ้าง จึงจะสามารถนำเงินก้อนนี้ไปใช้ต่อได้” เงื่อนไขมาตรฐานที่พบบ่อยที่สุดระบุไว้ทำนองว่า:
“เงินก้อนนี้ถูกล็อกไว้กับที่อยู่ (Address) เลขนี้นะ ใครจะหยิบไปใช้ ต้องพิสูจน์ทางคณิตศาสตร์ให้ได้ว่าเป็นเจ้าของที่อยู่นี้จริง ๆ”
ในเมื่อเงินทุกก้อนในระบบมีเงื่อนไขนี้คุ้มครองอยู่ คนอื่นจึงไม่สามารถแอบอ้างหยิบเงินของเราไปใช้ได้เลย แม้ว่าสมุดบัญชีบล็อกเชนจะเปิดเผยให้ทุกคนอ่านได้ก็ตาม
🛠️ ล็อกถูกใส่เข้าไปตอนไหน?
จำได้ไหมครับว่าการส่งบิทคอยน์คือการนำก้อนเงินเก่ามาหลอมสร้างเป็นก้อนใหม่ ในตอนที่เราสร้างก้อนใหม่ขึ้นมาแต่ละก้อน ผู้ส่งจะเป็นคนกำหนดและแปะล็อกลงไปด้วยเสมอ
เช่น เมื่อเราต้องการโอนเงินให้เพื่อน เราจะสร้างก้อนเงินใหม่ขึ้นมา แล้วแปะเงื่อนไขว่า “เปิดได้เฉพาะเจ้าของที่อยู่ของเพื่อนเท่านั้น” เมื่อธุรกรรมนี้ถูกบันทึกลงบล็อกเชน เงินก้อนนั้นก็จะตกเป็นของเพื่อนโดยสมบูรณ์ เพราะมีเพียงเพื่อนคนเดียวที่ถือ กุญแจส่วนตัว (Private Key) ที่ตรงกับเงื่อนไขนั้น (และแม้แต่ก้อนเงินทอนที่เราส่งกลับหาตัวเอง เราก็ต้องแปะล็อกไว้กับที่อยู่ของเราเองเช่นกัน)
📜 ล็อกหน้าตาเป็นยังไง? รู้จักกับภาษาสคริปต์ (Bitcoin Script)
เงื่อนไขบนก้อนเงินไม่ได้เขียนเป็นภาษาคน แต่เขียนด้วยภาษาโปรแกรมเฉพาะตัวของบิทคอยน์ เรียกว่า ภาษาสคริปต์ (Bitcoin Script)
โค้ดสคริปต์ที่ใช้ล็อกเงินมักจะมีคำสั่งสำเร็จรูป เช่น คำสั่ง CHECKSIG ซึ่งทำหน้าที่เปรียบเทียบว่าหลักฐานที่ผู้ใช้นำมายื่น ตรงกับที่อยู่ที่ระบุไว้ในล็อกหรือไม่ สรุปง่าย ๆ คือ:
- ล็อก (ScriptPubKey) = โจทย์ปัญหาที่แปะอยู่บนก้อนเงิน
- ใครที่สามารถแก้โจทย์ข้อนี้ได้ถูกต้อง จึงจะมีสิทธิ์นำเงินก้อนนั้นไปใช้
🔓 แล้วเราปลดล็อกอย่างไร?
เมื่อเราต้องการนำเงินก้อนไหนไปใช้จ่าย เราจะต้องแนบ “คำตอบ (ScriptSig)” เข้าไปคู่กับข้อมูลขาเข้า (Input) นั้นเสมอ
เมื่อธุรกรรมถูกส่งไปยังโหนดต่าง ๆ ในเครือข่าย โหนดแต่ละเครื่องจะนำ ล็อก มารันประกบกับ คำตอบ ที่เราส่งไป:
- หากคำตอบถูกต้องตามเงื่อนไข (ผ่าน): โหนดจะยอมรับธุรกรรม และส่งต่อให้โหนดอื่น ๆ จนกระทั่งนักขุดนำไปลงบล็อก
- หากคำตอบไม่ถูกต้อง (ไม่ผ่าน): โหนดจะปฏิเสธและเตะธุรกรรมนั้นทิ้งทันทีโดยไม่มีการผ่อนปรน
การตรวจสอบนี้ทำงานอัตโนมัติบนโหนดทุกเครื่องทั่วโลกอย่างเป็นอิสระต่อกัน จึงไม่จำเป็นต้องมีคนกลางคอยกดอนุมัติ
🤫 เดี๋ยวก่อน… ยื่นกุญแจส่วนตัวเข้าไปในธุรกรรมเลยเหรอ?
ไม่ใช่เด็ดขาดครับ! หากเราส่งกุญแจส่วนตัวเข้าไปในธุรกรรม ทุกคนในโลกก็จะเห็นกุญแจและขโมยเงินของเราได้ทั้งหมด
วิธีที่บิทคอยน์ใช้คือ เราจะนำกุญแจส่วนตัวไปผ่านสมการคณิตศาสตร์เพื่อสร้าง “ลายเซ็นดิจิทัล (Digital Signature)” แบบใช้ครั้งเดียวขึ้นมา แล้วยื่นเฉพาะลายเซ็นนี้เป็นคำตอบของล็อก
ความมหัศจรรย์ของลายเซ็นดิจิทัลคือ:
- ทุกคนสามารถตรวจสอบได้ทันทีว่า ลายเซ็นนี้ถูกสร้างขึ้นจากกุญแจส่วนตัวของที่อยู่นี้จริง
- แต่ไม่มีใครสามารถคำนวณย้อนกลับจากลายเซ็น เพื่อหากุญแจส่วนตัวของเราได้เลย
เราจึงสามารถพิสูจน์ความเป็นเจ้าของเงินได้อย่างโปร่งใส โดยที่กุญแจส่วนตัวไม่เคยหลุดออกจากเครื่องของเราเลยแม้แต่ครั้งเดียว
🎛️ ล็อกไม่ได้มีแค่แบบเดียว: เงินที่ตั้งโปรแกรมได้ (Programmable Money)
ภาษาสคริปต์ของบิทคอยน์สามารถผสมผสานคำสั่งเพื่อสร้างเงื่อนไขที่ซับซ้อนขึ้นได้อีกมาก เช่น:
- ล็อกตามเวลา (Timelock): ล็อกเงินไว้ให้เปิดใช้ได้หลังจากวันที่กำหนดเท่านั้น
- ล็อกแบบหลายกุญแจ (Multisig): ต้องใช้ลายเซ็น 2 ใน 3 คนพร้อมกันจึงจะเปิดตู้เซฟได้
นี่คือที่มาของคำว่า “เงินที่ตั้งโปรแกรมได้ (Programmable Money)” เพราะเงินแต่ละก้อนสามารถบรรทุกกติกาและเงื่อนไขการใช้งานติดตัวไปด้วยตั้งแต่วินาทีที่มันถูกสร้างขึ้นมาครับ
🧠 สรุปวันนี้ จำแค่นี้
- ก้อนเงินทุกก้อนมี ระบบล็อก (Lock) ติดมาด้วย เป็นชุดเงื่อนไขที่ผู้ส่งตั้งขึ้นเพื่อป้องกันไม่ให้เงินถูกขโมย
- ล็อกเขียนด้วยภาษาโปรแกรมจิ๋วชื่อ Script โดยคำสั่งยอดนิยมคือ
CHECKSIG - เวลาจะใช้เงิน เราไม่ได้ยื่นกุญแจส่วนตัว แต่ยื่น ลายเซ็นดิจิทัล ที่พิสูจน์ความเป็นเจ้าของได้โดยไม่เปิดเผยกุญแจ
- บิทคอยน์เป็น เงินที่ตั้งโปรแกรมได้ เพราะสามารถตั้งเงื่อนไขซับซ้อน เช่น ล็อกตามเวลา หรือต้องใช้หลายคนเซ็นร่วมกัน
🔮 ตอนหน้า:
เราพูดถึงคำว่า “ที่อยู่ (Address)” กับ “กุญแจ (Key)” สลับกันไปมา จนหลายคนอาจเริ่มสับสนว่ามันคือสิ่งเดียวกันหรือไม่? ตอนหน้าเราจะมาแยกความต่างให้ชัดเจน ว่าตัวไหนเอาไว้แจกคนอื่น และตัวไหนต้องเก็บเป็นความลับสุดยอดครับ!





