แปลและเรียบเรียงจากต้นฉบับเรื่อง “#Bitcoin
is built on digital signatures.”
ทุกคนคงรู้อยู่แล้วว่าการจะส่งบิตคอยน์ (Bitcoin) ได้จะต้องใช้ Private Key ของผู้ที่เป็นเจ้าของ แต่ว่าเราจะสามารถส่งบิตคอยน์โดยไม่ต้องเปิดเผย Private Key ของเราต่อเครือข่าย (Network) ได้อย่างไร?
ตรงนี้แหละคือจุดที่ Digital Signature จะถูกใช้งาน
![](https://rightshift.to/wp-content/uploads/2023/03/image4.jpg)
เริ่มต้นที่ Private Key แบบพื้นฐานก่อน
Private Key เป็นตัวเลขสุ่มระดับใหญ่มาก ๆ ที่มีขนาดเกินขอบเขตการรับรู้ของมนุษย์ สร้างโดยการสุ่ม Entropy ซึ่งสามารถทำได้มากมายหลายวิธี เช่น ทอยลูกเต๋า โยนเหรียญ หรือแม้กระทั่งการเป่ายิงฉุบ สุดแท้แต่ที่มนุษย์อย่างเราจะสรรหามาได้
เอาล่ะคนที่จะไปต่อ แนะนำว่าให้อ่านบทความเรื่อง Elliptic Curve ก่อนหน้านี้ เพื่อประกอบความเข้าใจในสิ่งที่กำลังจะนำเสนอต่อไปนี้ (หรืออ่านเพิ่มเติมที่ https://www.secg.org/sec2-v2.pdf)
Private Key จะถูกคูณด้วยจุด G (จุดบนเส้นโค้ง secp256k1) เพื่อสร้าง Public Key โดยหน้าตาจะออกมาประมาณนี้
![](https://rightshift.to/wp-content/uploads/2023/03/image2.jpg)
จากนั้น Public Key ที่ได้จะถูกแฮช (Hash) กลายเป็น Address สำหรับให้คุณใช้ในการรับบิตคอยน์
![](https://rightshift.to/wp-content/uploads/2023/03/image1.jpg)
คุณสามารถแจ้ง 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 ดังนี้ :
- ตัวเลขสุ่ม
- Hash ของธุรกรรม (มักเรียกว่า Message)
- Private Key
เราใช้ “ตัวเลขสุ่ม” ของเราคูณด้วยจุดกำเนิดบน Elliptic Curve ทำให้เราได้จุดแบบสุ่มบนเส้นโค้ง จากนั้นเราคูณจุดสุ่มนี้ด้วย “Private Key” ของเรา แล้วเราจะเพิ่ม “Hash ของธุรกรรม” หรือ “Message” ในผลลัพธ์ที่ได้นั้น ซึ่งทำให้เราได้ค่าที่แสดงถึงเส้นทางระหว่าง Private Key ของเรากับจุดสุ่มบนเส้นโค้ง
![](https://rightshift.to/wp-content/uploads/2023/03/image5.gif)
เมื่อเราเผยแพร่ลายเซ็นและข้อมูลการทำธุรกรรมไปยังเครือข่าย และแต่ละโหนด (Node) จะตรวจสอบว่าเส้นทางที่เราสร้างขึ้นนั้นถูกต้องหรือไม่ หรืออีกนัยหนึ่งโหนดจะตรวจสอบเพื่อดูว่าเรามี Private Key ที่ตรงคู่กับ Public key ที่ tx หรือ Transaction นั้นล็อกอยู่หรือไม่ หากลายเซ็นนั้นถูกต้อง บิตคอยน์จะถูกปลดล็อก และธุรกรรมก็จะถูกบันทึก (Mine) เข้าไปในบล็อกเชนและถูกล็อกไว้กับ Public Key ของผู้รับ