This article has been translated from English to Thai.
ก่อนจะลงลึกในเรื่องการขุด Bitcoin เราต้องขอพักสักนิดแล้วมาทำความรู้จักกับแนวคิดที่เป็นพื้นฐานของสกุลเงินดิจิทัลกันก่อนนะครับ
เพื่อให้เข้าใจวิธีการทำงานของ Bitcoin และสกุลเงินดิจิทัลอื่นๆ อย่างแท้จริง เราจำเป็นต้องเข้าใจแนวคิดของ “การแฮช” ก่อนครับ
เมื่อคุณเห็นคำว่า “แฮช” บางคนอาจจะนึกถึงแฮชบราวน์ อาหารเช้ายอดนิยมของอเมริกา ในขณะที่คนอื่นๆ อย่าง Snoop Dogg อาจจะนึกถึงผลิตภัณฑ์กัญชา 🌿

ในบทเรียนนี้ ผมจะพูดถึง แฮชอีกประเภทหนึ่ง!
มันเป็นแนวคิดทางเทคนิค แต่เป็นสิ่งที่คุณต้องคุ้นเคย ดังนั้นผมจะอธิบายให้เข้าใจง่ายๆ นะครับ
การเข้าใจแนวคิดของการแฮชยังจำเป็นต่อ การเข้าใจวิธีการทำงานของการขุด Bitcoin (ซึ่งเป็นหัวข้อถัดไป) ดังนั้น อย่าข้ามบทเรียนเหล่านี้ เลยนะครับ 👁️
การแฮชคืออะไร?
การแฮช เป็นวิธีการเข้ารหัสที่แปลงข้อมูลใดๆ เป็นสตริงของข้อความที่มีความยาวคงที่
Cryptography คือการปฏิบัติและการศึกษาวิธีการสื่อสารที่ปลอดภัยจากผู้สังเกตการณ์ภายนอก ในยุคอินเทอร์เน็ต การเข้ารหัสใช้เพื่อปกป้องข้อมูลคอมพิวเตอร์หรือ “ข้อมูล”
หากยังไม่ชัดเจน “คริปโต” ในสกุลเงินดิจิทัลมาจาก cryptography
การแฮชเป็นส่วนสำคัญของการเข้ารหัส และมีบทบาทใหญ่เบื้องหลัง “คริปโต” ในสกุลเงินดิจิทัล
พูดง่ายๆ ก็คือ การแฮชหมายถึง การนำข้อความ ที่มีความยาวใดๆ ผ่าน ฟังก์ชันแฮช ซึ่งจะสร้าง เอาต์พุตที่มีความยาวคงที่

ข้อมูลใดๆ ก็สามารถถูก “แฮช” ได้ ไม่ว่าจะมีขนาด ประเภท หรือความยาวเท่าใด
แฮชที่ถูกสร้างขึ้น จะมีความยาวเท่าเดิมเสมอ
ในตัวอย่างด้านล่าง การใช้ ฟังก์ชันแฮช SHA-1 ไม่ว่าจะมีความยาวของ “อินพุต” เพียงใด “เอาต์พุต” จะมีความยาว 40 ตัวอักษร เสมอ



นี่คือการเปรียบเทียบอย่างรวดเร็วของสามตัวอย่าง:
| อินพุต | แฮช |
|---|---|
| Hello | f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0 |
| BabyPips.com | 8c8780d0b70c5ef42a534846cc042629cf07a440 |
| I | ca73ab65568cd125c2d27a22bbd9e863c10b675d |
สังเกตว่าแม้ “อินพุต” จะแตกต่างกัน แฮชทั้งสามก็ยัง มีความยาว 40 ตัวอักษร
ในตัวอย่างเฉพาะนี้ ความยาวคงที่คือ 40 ตัวอักษร ซึ่งถูกกำหนดโดย ฟังก์ชันแฮช ที่ใช้ (“SHA-1”) ซึ่งจะอธิบายภายหลัง
ตอนนี้แค่รู้ว่าฟังก์ชันแฮช อื่นๆ อาจให้เอาต์พุตที่มีความยาวคงที่ต่างกัน ส่วนใหญ่มีความยาวคงที่ยาวกว่า 40 ตัวอักษร
แฮชทำหน้าที่เป็นลายนิ้วมือดิจิทัล
ข้อมูลเฉพาะจะให้แฮชที่เหมือนกันเสมอ
ตัวอย่างเช่น หากคุณรันคำว่า “Hello” ล้านครั้งผ่านฟังก์ชันแฮช แฮชที่ปรากฏคือแฮชด้านบนล้านครั้ง
สำหรับคำว่า “Hello” แฮช SHA-1 จะเป็น:
f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0
และมีเพียง “Hello” เท่านั้นที่จะให้แฮชนั้น
การเปลี่ยนแปลงใดๆ กับ “Hello” แม้เพียงเปลี่ยนเป็น “hello” และฟังก์ชันแฮชจะให้ค่าแฮช ที่แตกต่างกันโดยสิ้นเชิง
นี่คือเหตุผลที่แฮชถูกเรียกว่าเป็น “ลายนิ้วมือดิจิทัล“
เช่นเดียวกับลายนิ้วมือที่เป็นเอกลักษณ์ของคุณ แฮชก็เหมือนกับลายนิ้วมือที่เฉพาะเจาะจงสำหรับข้อมูลอินพุตที่เฉพาะเจาะจง

แฮชไม่สามารถย้อนกลับได้
อินพุตที่เข้าสู่ฟังก์ชันแฮชถูกเรียกว่า “preimage” แต่เพื่อความง่ายผมจะเรียกว่า “อินพุต”
เอาต์พุตของฟังก์ชันแฮชถูกเรียกว่า “ค่าแฮช” หรือ “digest” หรือเรียกง่ายๆ ว่า “แฮช”
ฟังก์ชันแฮชมีการออกแบบให้ทำงานในลักษณะ ทางเดียว

เนื่องจากฟังก์ชันแฮชเป็นฟังก์ชันทางเดียว เอาต์พุตที่เป็น “แฮช” จึงไม่สามารถใช้เปิดเผยอินพุตที่เป็น “preimage” ได้
หมายความว่าหากคุณเห็นเพียงแฮช คุณจะไม่สามารถถอดรหัสข้อมูลต้นฉบับ (หรือ “preimage”) ที่แฮชแทนได้
ฟังก์ชันแฮชผลิต แฮชที่ไม่สามารถย้อนกลับได้
ไม่สามารถย้อนกลับได้ หมายความว่าหากคุณมีเพียงแฮช คุณไม่สามารถใช้มันเพื่อหาข้อมูลต้นฉบับได้ สิ่งนี้ทำให้ข้อมูลต้นฉบับ ปลอดภัยและไม่ถูกเปิดเผย
ฟังก์ชันแฮชคืออะไร?
ฟังก์ชันแฮช เป็น การดำเนินการทางคณิตศาสตร์ ที่แปลงข้อมูลอินพุตที่มีความยาว ใดๆ เป็นเอาต์พุตที่มีความยาว คงที่ ซึ่งดำเนินการโดยใช้ อัลกอริทึม ที่กำหนด
อัลกอริทึม ก็คือขั้นตอนการทำตามขั้นตอนสำหรับการคำนวณที่จัดทำโดยโปรแกรมซอฟต์แวร์
ไม่สำคัญว่าข้อมูลอินพุตจะเป็นตัวอักษรเพียงตัวเดียว คำหนึ่งประโยค หน้าหนึ่งจากหนังสือ หรือหนังสือทั้งเล่ม นั่นคือส่วน ใดๆแต่ละอินพุตจะผลิตเอาต์พุตที่ไม่ซ้ำกันซึ่งแสดงเป็นสตริงอัลฟานิวเมอริคที่มีความยาว คงที่
อัลฟานิวเมอริคหมายถึงสิ่งที่ประกอบด้วยทั้งตัวอักษรและตัวเลข
ฟังก์ชันแฮชที่มีประโยชน์ ปกปิดเบาะแสใดๆ เกี่ยวกับว่าข้อมูลอินพุตอาจมีลักษณะอย่างไร
ตัวอย่างเช่น จะต้องเป็นไปไม่ได้ที่จะกำหนดว่าข้อมูลอินพุตยาวหรือสั้นหรือประกอบด้วยตัวเลขหรือตัวอักษร นอกจากนี้ การเปลี่ยนแปลงเพียงตัวอักษรเดียวในข้อมูลอินพุตควรส่งผลให้เอาต์พุตที่แตกต่างกันอย่างมาก
ฟังก์ชันแฮชที่นิยมใช้
ฟังก์ชันแฮชทั้งหมดทำงานในลักษณะที่คล้ายกัน คุณป้อนข้อมูล แล้วฟังก์ชันแฮชจะ “แฮช” ข้อมูลและให้เอาต์พุตเป็นแฮช
ฟังก์ชันแฮชที่พบบ่อยได้แก่:
- MD-5: Message Digest 5 (MD5) เป็นฟังก์ชันแฮชยอดนิยม ในอดีตเคยถือว่าปลอดภัย แต่ปัจจุบันนี้ แฮกเกอร์พบวิธีถอดรหัสอัลกอริทึมและสามารถทำได้ในเวลาไม่กี่วินาที
- SHA: Secure Hash Algorithm (SHA) เป็นฟังก์ชันแฮชอีกประเภทหนึ่ง มีหลายเวอร์ชันที่ถูกจัดกลุ่มเป็นสี่ กลุ่ม: SHA-0, SHA-1, SHA-2, และ SHA-3: โดยทั่วไปแล้ว ยิ่งตัวเลขสูง เวอร์ชันก็ยิ่งใหม่และอัลกอริทึมก็ยิ่งปลอดภัย
สำหรับวัตถุประสงค์ของเรา ฟังก์ชันแฮชเดียวที่คุณต้องรู้ตอนนี้คือ Secure Hash Algorithm (SHA) โดยเฉพาะอย่างยิ่ง ครอบครัว SHA-2 ซึ่งมีสมาชิกพิเศษในครอบครัวที่ชื่อว่า SHA-256
SHA-256 เป็นฟังก์ชันแฮชที่แปลงสตริงของข้อความเป็นสตริงอีกตัวหนึ่งที่มีความยาวเท่ากันเสมอ: ยาว 64 ตัวอักษรอัลฟานิวเมอริค ซึ่งเท่ากับ 256 บิต ซึ่งเป็นที่มาของ “256” ในชื่อของมัน
มันพิเศษเพราะเป็นฟังก์ชันแฮชที่ใช้ในหลายส่วนของระบบ Bitcoin ซึ่งคุณจะได้เรียนรู้ในบทเรียนต่อไป สำหรับตอนนี้เป็นสิ่งสำคัญเพียงแค่รู้ว่า SHA-256 เป็นประเภทของฟังก์ชันแฮชและเป็นฟังก์ชันที่ใช้โดย Bitcoin
ไม่ว่าจะเป็นข้อมูลอินพุตจากหน้าหนังสือ Harry Potter หนึ่งหน้า หรือ ทั้ง ชุดของหนังสือ Harry Potter เอาต์พุตของฟังก์ชันแฮช SHA-256 จะมีความยาว 64 ตัวอักษรอัลฟานิวเมอริค เท่ากันเสมอ
ต่อจากนี้เรามาดูวิธีการทำงานของการแฮชในคริปโตกันเถอะครับ