SDF
Picture of Gracialo679

Gracialo679

Digital Signature ที่ใช้ในการ Sign Transaction บิตคอยน์คืออะไร?

อย่างที่รู้กันว่าบิตคอยน์ (Bitcoin) นั้นใช้ Digital Signature ในการ Sign Transaction แล้วการ Sign Transaction ที่ว่านี้มันคืออะไร?

แปลและเรียบเรียงจากต้นฉบับเรื่อง “#Bitcoin is built on digital signatures.

ทุกคนคงรู้อยู่แล้วว่าการจะส่งบิตคอยน์ (Bitcoin) ได้จะต้องใช้ Private Key ของผู้ที่เป็นเจ้าของ แต่ว่าเราจะสามารถส่งบิตคอยน์โดยไม่ต้องเปิดเผย Private Key ของเราต่อเครือข่าย (Network) ได้อย่างไร?

ตรงนี้แหละคือจุดที่ Digital Signature จะถูกใช้งาน

เริ่มต้นที่ Private Key แบบพื้นฐานก่อน

Private Key เป็นตัวเลขสุ่มระดับใหญ่มาก ๆ ที่มีขนาดเกินขอบเขตการรับรู้ของมนุษย์ สร้างโดยการสุ่ม Entropy ซึ่งสามารถทำได้มากมายหลายวิธี เช่น ทอยลูกเต๋า โยนเหรียญ หรือแม้กระทั่งการเป่ายิงฉุบ สุดแท้แต่ที่มนุษย์อย่างเราจะสรรหามาได้

เอาล่ะคนที่จะไปต่อ แนะนำว่าให้อ่านบทความเรื่อง Elliptic Curve ก่อนหน้านี้ เพื่อประกอบความเข้าใจในสิ่งที่กำลังจะนำเสนอต่อไปนี้ (หรืออ่านเพิ่มเติมที่ https://www.secg.org/sec2-v2.pdf)

Private Key จะถูกคูณด้วยจุด G (จุดบนเส้นโค้ง secp256k1) เพื่อสร้าง Public Key โดยหน้าตาจะออกมาประมาณนี้

จากนั้น Public Key ที่ได้จะถูกแฮช (Hash) กลายเป็น Address สำหรับให้คุณใช้ในการรับบิตคอยน์

คุณสามารถแจ้ง Address นี้ให้กับคนที่ต้องการส่งบิตคอยน์ให้คุณได้ โดยในการส่งบิตคอยน์เข้ามาที่ Address นี้ ผู้ส่งจะล็อก Transaction ไว้กับ Public Key ของคุณ และที่สำคัญคุณต้องเป็นเจ้าของ Private Key ที่ใช้ Derive หา Public Key ตัวนั้นมาจริง ๆ คุณจึงสามารถปลดล็อกบิตคอยน์ที่ถูกส่งมายัง Address นี้ได้

ในส่วนของการส่งบิตคอยน์ของคุณไปให้ผู้อื่น คุณจะต้องพิสูจน์ว่าคุณคือผู้สร้าง Public Key ที่ Transaction นั้น ๆ ถูกล็อกเอาไว้ ซึ่งคุณจะต้องใช้ Private Key เพื่อสร้าง Signature ของ Transaction นั้น ๆ โดยใช้ Elliptic Curve และด้วย Signature นี้เองทำให้คุณสามารถส่งบิตคอยน์ของคุณได้ โดยไม่จำเป็นจะต้องเป็นเผย Private Key

องค์ประกอบจำเป็นสำหรับการ Sign Transaction

เราต้องใช้องค์ประกอบ 3 ส่วนในการ Sign Transaction ดังนี้ :

  1. ตัวเลขสุ่ม
  2. Hash ของธุรกรรม (มักเรียกว่า Message)
  3. Private Key

เราใช้ “ตัวเลขสุ่ม” ของเราคูณด้วยจุดกำเนิดบน Elliptic Curve ทำให้เราได้จุดแบบสุ่มบนเส้นโค้ง จากนั้นเราคูณจุดสุ่มนี้ด้วย “Private Key” ของเรา แล้วเราจะเพิ่ม “Hash ของธุรกรรม” หรือ “Message” ในผลลัพธ์ที่ได้นั้น ซึ่งทำให้เราได้ค่าที่แสดงถึงเส้นทางระหว่าง Private Key ของเรากับจุดสุ่มบนเส้นโค้ง

เมื่อเราเผยแพร่ลายเซ็นและข้อมูลการทำธุรกรรมไปยังเครือข่าย และแต่ละโหนด (Node) จะตรวจสอบว่าเส้นทางที่เราสร้างขึ้นนั้นถูกต้องหรือไม่ หรืออีกนัยหนึ่งโหนดจะตรวจสอบเพื่อดูว่าเรามี Private Key ที่ตรงคู่กับ Public key ที่ tx หรือ Transaction นั้นล็อกอยู่หรือไม่ หากลายเซ็นนั้นถูกต้อง บิตคอยน์จะถูกปลดล็อก และธุรกรรมก็จะถูกบันทึก (Mine) เข้าไปในบล็อกเชนและถูกล็อกไว้กับ Public Key ของผู้รับ

Gracialo679

** ทุกบาทหรือทุกซาโตชิที่ donate จะถูกส่งเข้ากระเป๋าของผู้เขียนโดยตรงครับ :) **

Share this post

Leave a Reply

Connect with

Your email address will not be published. Required fields are marked *


Related Posts

Privacy & Security
Gracialo679

ความปลอดภัย และความเป็นส่วนตัวเบื้องต้นสำหรับผู้ใช้งานบิตคอยน์ (Basic of Security and Privacy for Bitcoin User)

HD wallet คืออะไร? มันทำงานอย่างไร? และทำไมเราจึงไม่ควรใช้ Address ซ้ำ ๆ บทความนี้เราจะมาไขข้อข้องใจของมือใหม่เหล่านี้กัน

Read More »
Privacy & Security
Gracialo679

การ Backup ชุด Seed

จากบทความก่อนที่คุณได้รู้วิธีการสร้างชุด Seed ด้วยตัวเองโดยไม่ต้องเชื่อใจผู้สร้าง Hardware Wallet คราวนี้ผมจะมาพูดถึงวิธีการเก็บ Seed ให้ปลอดภัย ว่าคุณต้องคำนึงถึงเรื่องอะไรบ้าง

Read More »
Create Seed
Privacy & Security
Gracialo679

การสร้างชุด Seed ด้วยตนเอง

Seed 24 คำ ในระบบบิตคอยน์ แท้จริงแล้ว มันคืออะไรกันแน่? ในเมื่อเรามีอุปกรณ์ที่สามารถสร้าง Seed ได้อย่างง่ายดายกันอยู่แล้ว ทำไมเรายังต้องรู้วิธีการสร้าง Seed ด้วยตัวเองอีกล่ะ ? บทความนี้จะพาคุณไปเรียนรู้วิธีสร้าง Seed ด้วยตัวเองกันครับ

Read More »