แปลและเรียบเรียงจากต้นฉบับเรื่อง “#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 ดังนี้ :
- ตัวเลขสุ่ม
- Hash ของธุรกรรม (มักเรียกว่า Message)
- Private Key
เราใช้ “ตัวเลขสุ่ม” ของเราคูณด้วยจุดกำเนิดบน Elliptic Curve ทำให้เราได้จุดแบบสุ่มบนเส้นโค้ง จากนั้นเราคูณจุดสุ่มนี้ด้วย “Private Key” ของเรา แล้วเราจะเพิ่ม “Hash ของธุรกรรม” หรือ “Message” ในผลลัพธ์ที่ได้นั้น ซึ่งทำให้เราได้ค่าที่แสดงถึงเส้นทางระหว่าง Private Key ของเรากับจุดสุ่มบนเส้นโค้ง

เมื่อเราเผยแพร่ลายเซ็นและข้อมูลการทำธุรกรรมไปยังเครือข่าย และแต่ละโหนด (Node) จะตรวจสอบว่าเส้นทางที่เราสร้างขึ้นนั้นถูกต้องหรือไม่ หรืออีกนัยหนึ่งโหนดจะตรวจสอบเพื่อดูว่าเรามี Private Key ที่ตรงคู่กับ Public key ที่ tx หรือ Transaction นั้นล็อกอยู่หรือไม่ หากลายเซ็นนั้นถูกต้อง บิตคอยน์จะถูกปลดล็อก และธุรกรรมก็จะถูกบันทึก (Mine) เข้าไปในบล็อกเชนและถูกล็อกไว้กับ Public Key ของผู้รับ
One comment
[…] คำถามเกี่ยวกับ Hardware Wallet เหล่านี้น่าจะเคยโผล่ขึ้นมาในหัวบิตคอยเนอร์บ้างหลังจากศึกษาบิตคอยน์และการ Self Custody มาระยะหนึ่ง เพราะ Hardware Wallet คืออุปกรณ์สำคัญที่จะช่วยให้เราแสดงความเป็นเจ้าของบิตคอยน์ใน blockchain โดยนอกจากจะใช้สร้าง Seed แล้วก็ยังมีหน้าที่เซ็นธุรกรรมการโอนบิตคอยน์ […]