อีหวังว่ะ Bitcoin ทั้ง Whitepaper ไม่ได้เน้นที่ประสิทธิภาพความเร็ว! แต่สิ่งเดียวที่เน้นคือ การป้องกันการเปลี่ยนแปลงข้อมูล โดยข้อมูลที่บันทึกแล้วจะไม่สามารถแก้ไขปรับเปลี่ยนได้
คำเตือน: ไม่เหมาะกับผู้ที่เคยอ่าน Whitepaper ของ Bitcoin มาแล้ว
(ดาวน์โหลด Whitepaper ของ Bitcoin ได้จากลิงก์ข้างล่าง)
โพสบทความนี้จะขอพูดถึงเทคโนโลยีที่เป็นส่วนสำคัญใน Blockchain นั้นก็คือ Hash
ฟังก์ชันแฮช (Hash) ไม่ใ่ช่การเข้ารหัส (Encryption)
Encryption คือการเข้ารหัสแบบ 2-ways ฟังก์ชั้น เช่น MD5 นั้นแหละครับ คือเอาข้อมูลไปเข้ารหัส ด้วยฟังก์ชั่น MD5 เช่น ถ้าลืมรหัสผ่านก็ไปเอาข้อมูลใน database นั้นแหละมาถอดรหัส (Decryption) จากนั้นก็จะสามารถย้อนกลับรู้รหัสผ่าน เป็นต้น
ส่วน Hash ไม่ใ่ช่การเข้ารหัส Hashing เป็น one-way ฟังก์ชั่นแบบทางเดียว เช่น แบบ MD5, SHA1, SHA256, SHA512 เป็นต้น
ที่จะสร้างข้อมูลที่เป็นตัวแทนของข้อมูลที่ต้องการให้อยู่ในลักษณะเฉพาะและไม่สามารถย้อนกลับได้ข้อดีของการทำ Hash ก็คือ เราจะไม่สามารถถอดรหัส หรือกระทำการใดๆ เพื่อที่จะ Reverse ให้ออกมาเป็นข้อความต้นฉบับได้ครับ
ตัวอย่างที่ใช้งาน hashing ฟังก์ชั่นทุกวันนี้ก็คือ การ hashing ข้อมูลส่วนบุคคลในฐานข้อมูลบัตรประจำตัวประชาชน โดยหมายเลขบัตรประจำตัวประชาชน 13 หลัก (หลักที่ 13 เป็น checksum ของตัวเลข 12 ตัวที่ป้อนเข้ามา) ไม่สามารถป้อนข้อมูลอะไรมั่วๆ ได้นะครับ (เว้นแต่ field input เป็น varchar 55++)
เมื่อเราดาวน์โหลดอิมเมจระบบปฏิบัติการ Linux มาแล้ว checksum ก่อน ที่จะ burn ให้แผ่น CD/DVD นั้นแหละครับ หาก checksum ไม่ตรงกับค่าที่ Official เผยแพร่ไว้แสดงว่า อิมเมจไฟล์มีการแก้ไข
ส่วนที่ Blockchain ใช้การ hashing ด้วย algorithm SHA256 ซึ่งค่า Hash ที่สร้างขึ้นจะมีความยาวที่เท่ากันเสมอนั้นหมายความว่า เช่น ข้อมูล Alice block เมื่อผ่านฟังก์ SHA256 จะได้ข้อมูล Output ที่ 256-bit (1 bit มี 8 bytes) ดังนั้น Output ชุด String ที่ได้จะเท่ากับ 256/8 = 32 ตัวอักขระ (character)
ตัวอย่าง Output ของ Alice block จะเท่ากับ 64 character
0x62ce927d9c3edcef3eda5f6673a35a97e5d0258dbb8d3fe09dad23410457546e
แต่ๆๆๆ พอนับจริงๆ แล้วมันได้ 64 Character ??
Output ที่เราเห็นมันคือเลขฐาน 16 (ประกอบด้วย 0-9 และ a-f)
(โดย 4 bit จะใช้ 1 character) SHA256 คือ 256-bitดังนั้น 256/4 = 64 character
ซึ่ง 0x นั้นแหละครับเป็นตัวบอกว่า String ตัวเลขหลัง 0x ชุดนี้เป็นเลขฐาน 16 ครับ
ไปทดสอบ hash function กัน https://xorbin.com/tools/sha256-hash-calculator
สรุปสั้นๆ Block chain ก่อนจะมาเขียนติดกันเป็นคำว่า “Blockchain”
Blockchain มันคือระบบ Database ประเภทนึงที่นำก้อนข้อมูล (block) มาเรียงวางต่อกันเป็นลูกโซ่ (chain) ซึ่งข้อมูลที่นำมาเชื่อมกันจะผ่านการใช้ hash function และข้อมูล Database ทั้งหมด Blockchain จะถูกคัดลอกและกระจายไปเก็บไว้ยังคอมพิวเตอร์ต่างๆ ที่มาเป็นโหนด (Node)
ซึ่ง Bitcoin เป็นนวัตกรรมแรกของโลกที่ใช้สิ่งที่เรียกว่า Timestamp Server กับเทคโนโลยี Digital signatures โดยที่ข้อมูลในแต่ละ block จะเป็นข้อมูลผู้รับ, ผู้ส่ง, จำนวนเงิน และ hash ของ block ก่อนหน้า ครับนั้นก็หมายความว่าต้นกำหนดคำธิบายของ Blockchain มาจากคำว่า Timestamp Server คือการเอา Hash และข้อมูล Item (Tx) มาประทับตราบันทึกเวลา (Sign)โดยข้อมูล Item ใน block เมื่อถูก hash ก็จะกายเป็น hash ของ block (จะไม่สามารถแก้ไขได้แล้ว) และ hash อันนี้จะกายเป็นส่วนหนึ่ง (Prev Hash) ของ block ใหม่ที่เกิดขึ้น ต่อกันเป็นเชนเป็นแบบนี้ไปเรื่อยๆ ครับ
source:
https://bitcoin.org/bitcoin.pdf
https://itsfoss.com/checksum-tools-guide-linux/