Output Locks

output-locks-cover-photo

ล็อกข้อมูล Output คืออะไร?

ล็อกข้อมูล Output เป็นกลุ่มของข้อกำหนดที่ถูกวางเอาไว้ในข้อมูล Output ข้อกำหนดเหล่านี้จะต้องปฏิบัติตามเพื่อที่จะใช้ข้อมูล Output ในรายการธุรกรรม

ยกตัวอย่างเช่น ตัวล็อกข้อมูล Output ที่ถูกใช้ตามปกติจะอ่านได้ประมาณนี้

01-output-lock

ล็อคเหล่านี้ป้องกันไม่ให้เราใช้ Output ของกันและกันในการทำธุรกรรม เนื่องจากทุก Output ที่เราได้รับจะถูกล็อคไว้

ล็อกข้อมูล Output มาจากไหน?

เท่าที่เราทราบ รายการทำธุรกรรมคือกระบวนการในการนำเอาข้อมูล Output ที่มีอยู่แล้วไปสร้างใหม่

รายการธุรกรรม

และระหว่างการสร้างข้อมูล Output เหล่านี้ เราจะล็อกมันไว้ 1 ครั้ง

สร้างข้อมูล Output ใหม่และล็อกแต่ละข้อมูลเอาไว้

เพราะฉะนั้น เมื่อเราต้องการที่จะส่ง Bitcoin ไปหาเพื่อน เราก็จะต้องสร้างข้อมูล Output ใหม่ขึ้นมาและเพิ่มล็อกเข้าไปและบอกว่า “มีเพียงเจ้าของของ 1friend1234567890 เท่านั้นที่สามารถใช้ข้อมูล Output นี้ได้”

04-transaction-locks-addresses

ทั้งหมดนี้จะถูกเก็บไว้ในรายการธุรกรรม

ดังนั้นOutput ใหม่นี้จะ “เป็น” ของเพื่อนของเราเพราะว่าเค้าเป็นคนเดียวที่มี private key ของ ที่อยู่(address) นี้ และคนอื่นจะไม่สามารถใช้ได้

คุณอาจจะเริ่มรู้แล้วว่าคุณจะไม่ได้”ส่ง” Bitcoin ในการทำธุรกรรมไปจริงๆ

กลับกัน คุณจะสร้างรายการธุรกรรมที่สร้างข้อมูล Output ใหม่ (ที่มีล็อกใหม่) ขึ้นมา ส่งข้อมูลธุรกรรมนี้เข้าไปในเครือข่าย Bitcoin และรอให้มันถูกขุดเข้าไปบน Blockchain

เพราะฉะนั้น แม้ว่า Blockchain จะเป็นไฟล์ของรายการธุรกรรม คุณก็อาจจะมองว่ามันเป็นที่เก็บหน่วยข้อมูล Output ก็ได้

รายการธุรกรรมแต่ละรายการจะบอกรายละเอียดของข้อมูล Output ใหม่ให้คุณ

และเมื่อคุณต้องการที่จะส่ง Bitcoin “ของคุณ” ไปหาใครสักคน คุณอาจจะแค่อ้างอิงข้อมูล Output ใน Blockchain ที่คุณสามารถปลดล็อกได้

07-a-blockchain-outputs-transaction

และเมื่อรายการธุรกรรมนี้ถูกขุดขึ้นไปบน Blockchain ข้อมูล Output ที่คุณใช้ (เป็นข้อมูล Input) จะไม่สามารถนำมาใช้ได้อีกครั้ง

08-a-blockchain-outputs-transaction-mined

บล็อกใหม่แต่ละบล็อกของรายการธุรกรรมจะเพิ่มกลุ่มของข้อมูล Output ใหม่เข้าไปใน Blockchain

เพราะฉะนั้น Blockchain จะจัดเก็บข้อมูล Output ทั้งหมด และคุณจะสามารถใช้ข้อมูล Output พวกนี้ได้ทุกครั้งที่ต้องการ

ตราบเท่าที่คุณสามารถปลดล็อกพวกมันได้

คุณจะสร้างล็อกข้อมูล Output ได้อย่างไร

ล็อกข้อมูล Output ถูกเขียนไว้ในภาษาโปรแกรมอย่างง่าย เรียกว่า SCRIPT
อาจจะซับซ้อนเกินกว่าจะอธิบายให้เข้าใจการทำงานของภาษาโปรแกรมทั้งหมดในภาพภาพเดียว แต่ผมจะลองดูละกัน

ล็อกนี้ที่เราโปรแกรมขึ้นมาจะเรียกว่า Locking script

ตอนนี้ สิ่งที่น่าสนใจที่สุดของ Locking script ก็คือ CHECKPRIVATEKEY ซึ่งเป็นฟังก์ชั่นที่เราใช้ในการช่วยตั้งค่าข้อกำหนดสำหรับล็อกนี้

เพราะฉะนั้นสำหรับข้อมูล Output พิเศษนี้ เราจะตั้งค่าล็อกที่เราต้องการจะเปรียบเทียบกับที่อยู่ 1EUXSxuUVy2PC5enGXR1a3yxbEjNWMHuem กับ Private Key

หากเราสามารถหาล็อกที่เข้ากับ Private Key เราสามารถปลดล็อกมันและใช้งานรายการธุรกรรมได้

คุณจะปลดล็อกล็อก Output ได้อย่างไร?

เมื่อคุณสร้างข้อมูลรายการธุรกรรม คุณจะรวม “Unlocking script” หลังจากมีความต้องการใช้ข้อมูล Output แต่ละข้อมูล

ยกตัวอย่างเช่น ในการปลดล็อก Locking Script ธรรมดา [ที่อยู่(address)] [CHECKPRIVATEKEY] เราต้องพิสูจน์ว่าเราเป็นเจ้าของที่อยู่ (address) ในการทำแบบนี้ได้ เราจะต้องใช้ Private Key ของเราในการสร้างลายเซ็นดิจิทัล(Digital Signature)

คุณใส่ลายเซ็นดิจิทัล(Digital Signature)ของคุณเป็น “unlocking script”

เพราะฉะนั้นเมื่อ Node ได้รับข้อมูลรายการธุรกรรมนี้ พวกมันจะเริ่ม run “Locking+unlocking” script ด้วยกันเพื่อที่จะดูว่าลายเซ็นดิจิทัลของคุณเข้ากับที่อยู่ (address) ที่ข้อมูล Output ถูกล็อกเอาไว้ด้วยกัน

12-locking-unlocking-script-simple

หากทุกอย่างถูกต้อง Node จะยอมรับรายการธุรกรรมและส่งผ่านมันไปยัง Node อื่นๆ แต่ละ Node ก็จะ run “Locking+Unlocking” script ก่อนที่จะยอมรับรายการธุรกรรม

และนั้นคือวิธีที่คุณจะปลดล็อกข้อมูลล็อก Output

มันใช่หรอ? เหมือนเราจะแจก Private Key ของเราให้กับคนอื่นเลยนี้!

ช่างสังเกตเหลือเกินนะ

คำสารภาพ: ปกติแล้วเราจะไม่ได้ใส่ Private Key ของเราตรงๆไว้กับข้อมูลธุรกรรมหรอกนะ

เห็นมั้ย เพื่อป้องกันไม่ให้เราใส่ Private Key ภายในข้อมูลรายการธุรกรรม เราสร้างสิ่งที่เรียกว่า “ลายเซ็นดิจิทัล (Digital Signature)” ขึ้นมา

13-unlocking-script-digitalsignature

เราใช้ Private Key ของเราเพื่อที่จะสร้างลายเซ็นดิจิทัล

เห็นได้ชัดว่าผมโกหกเรื่องฟังก์ชั่นที่เราใช้เช่นกัน แต่ไม่ต้องกลัว มันมีสิ่งหนึ่งที่จริงๆ แล้วเปรียบเทียบ [address] กับ [digitalsignature] ซึ่งเราเรียกมันว่า CHECKIG

14-unlocking-script-digitalsignature-simple

ยังใช้งานได้อยู่

และขอบคุณสำหรับเวทมนต์ของลายเซ็นดิจิทัล (Digital Signature) และฟังก์ชั่นการ CHECKIG เรายังคงสามารถล็อกข้อมูล Output ไว้กับ Address และยังสามารถปลดล็อกมันโดยไม่ต้องเปิดเผย Private Key

ยอดเยี่ยมไปเลย

Source: learnmeabitcoin.com/beginners/output_locks