Blockchain เข้าใจง่าย

Thana Hongsuwan
3 min readJul 29, 2018

--

บทความนี้ตั้งใจจะอธิบายเทคโนโลยีที่ชื่อ Blockchain แบบง่ายๆ โดยไม่ไปแตะต้องสกุลเงินดิจิตอลทั้งหลาย เพราะที่อ่านๆ มาส่วนใหญ่มักจะเป็นการอธิบายพวก Bitcoin เสียมาก

การจะเข้าใจ Blockchain จำเป็นจะต้องมีความเข้าใจพื้นฐาน 2 เรื่องก่อน คือ Hash และ Digital Signature

Hash

Hash เป็นการดำเนินการทางคณิตศาสตร์แบบหนึ่ง โดยอาจมองเป็นฟังก์ชันที่มี Input เป็นบล็อกของข้อมูลที่ไม่จำกัดความยาวของข้อมูล คือ จะยาวเท่าไรก็ได้ และมี Output เป็นเป็นค่า Hash ที่มีความยาวคงที่ค่าหนึ่ง ขึ้นกับอัลกอริทึมที่ใช้ เช่น อัลกอริทึม SHA-256 จากรูปภาพจะให้ค่า Hash ที่มีความยาว 256 บิต โดยผลที่ได้จากการ Hash จะมีลักษณะคล้ายกับค่าสุด โดยฟังก์ชัน Hash ที่ดี เมื่อมีการเปลี่ยนแปลงเพียงเล็กน้อยที่ Input เช่น จากรูปเปลี่ยนจาก f -> F จะทำให้ Hash ที่ได้ เปลี่ยนแปลงไปอย่างมาก ซึ่งจะทำให้การเดาข้อมูลก่อน Hash ทำได้ยากมาก และสามารถใช้ตรวจสอบความเปลี่ยนแปลงได้ดี

ผู้ที่สนใจเรื่อง Hash สามารถอ่านเพิ่มเติมได้ ที่นี่

Digital Signature

เป็นการเข้ารหัสแบบหนึ่ง โดยมี Key จำนวน 2 Key ได้แก่ Public Key และ Private Key โดยทั้งสองคีย์จะมีความสัมพันธ์กัน กล่าวคือ จะต้องสร้างขึ้นมาพร้อมกัน โดยการทำงานของ Digital Signature (ต่อไปจะเรียกว่า Signature) เริ่มจากนำข้อมูลใดๆ มาเข้า Signing Algorithm (จริงๆ แล้ว คือ การทำ Hash กับข้อมูลซึ่งจะได้ค่า Hash ออกมา จากนั้นจึงนำค่า Hash ไปเข้ารหัสโดยใช้ Private Key อีกครั้ง) ผลลัพธ์ที่ได้จะเรียกว่า Signature ซึ่งจะทำหน้าที่คล้ายลายเซ็น คือ เป็นข้อมูลที่ใช้ยืนยันตัวข้อมูล (คล้ายกับที่เราเซ็นเพื่อรับรองเอกสาร)

ตัว Signature ที่ได้จะส่งไปพร้อมกับข้อมูล (เปรียบกับเอกสารที่มีลายเซ็น) เมื่อข้อมูลไปถึงปลายทาง จะส่งเข้าไปที่ Verification Algorithm (การทำงานภายในจะแบ่งเป็น 2 ทาง คือ 1) แยก Signature ออกมา จากนั้นนำ Signature ไปถอดรหัสด้วย Public Key ของผู้ส่ง จะได้ค่า Hash เดิมออกมา 2) นำข้อมูลไปเข้า Hash Algorithm ซึ่งจะได้ค่า Hash ออกมาเช่นกัน จากนั้นนำค่า Hash ทั้งสองมาเปรียบเทียบกัน

ถ้าค่า Hash ทั้งสองเท่ากัน ก็ยืนยันได้ว่า ข้อมูลไม่ได้ถูกเปลี่ยนแปลงระหว่างการส่ง หมายความว่าข้อมูลเป็นฉบับเดิมนั่นเอง ผู้สนใจเกี่ยวกับ Public Key และ Digital Signature สามารถอ่านได้ ที่นี่

บล็อกเชน คือ อะไร

ถ้าตอบง่ายๆ บล็อกเชน คือ รายการข้อมูลที่เรียงตามเวลาที่นำมาไว้ในบล็อก ถ้าจะมองว่าบล็อกเชนเป็นฐานข้อมูลก็ได้ แต่เป็นฐานข้อมูลที่สามารถจะเพิ่ม (Insert) ข้อมูลเข้าไปได้อย่างเดียว จะแก้ไขหรือลบข้อมูลออกไม่ได้

จุดเริ่มต้นของรายการข้อมูล (Transaction) ที่อยู่ในบล็อกเชน จะเริ่มจากใครสักคนสร้างรายการขึ้นมา เช่น จากรูป นาย ก ได้สร้าง Transaction 1 ขึ้นมา จากนั้นก็ทำการ Singed ด้วย Private Key ของนาย ก เพื่อยืนยันความเป็นเจ้าของข้อมูล โดยในระบบของบล็อกเชน จะทำการเปลี่ยนชื่อ นาย ก โดยใช้ Public Key (แบบย่อส่วน) ของนาย ก แทน โดยจะเรียกข้อมูลนี้ว่า ID หรือ Owner ID ก็ได้ ผลจากขั้นตอนนี้ จะทำให้เกิดคุณลักษณะของบล็อกเชนประการหนึ่ง คือ บล็อกเชน จะไม่ปกปิดรายการ คือ ทุกคนจะเห็นข้อมูลที่นำเข้าสู่บล็อกเชน แต่จะปกปิดผู้ทำรายการ คือ จะใช้ ID แทน ซึ่งจะทำให้ไม่รู้ว่าตัวตนที่แท้จริงของคนนั้นคือใคร (เว้นแต่เขาจะบอกเอง)

เมื่อสร้าง Transaction แล้ว ต่อไปก็จะเป็นหน้าที่ของผู้สร้างบล็อก (ในโลกของบล็อกเชน มักเรียกว่า Miner) ที่จะรวบรวมเอา Transaction มาสร้างเป็นบล็อก โดยจะ Signed บล็อกด้วย Private Key ของ Miner เช่นเดียวกัน

Blockchain = chain of block

ในการสร้างบล็อกนั้น เพื่อให้การแก้ไขบล็อกทำได้ยากขึ้น จะมีการนำเอาค่า Hash ของบล็อกก่อนหน้ามาเป็นส่วนหนึ่งของบล็อกปัจจุบันด้วย เช่น บล็อก C ก็จะนำค่า Hash ของบล็อก B มาร่วมในการ Hash ด้วย และจะเรียงต่อกันไปเรื่อยๆ มีลักษณะคล้ายกับเอาบล็อกมาเรียงร้อยต่อกัน ซึ่งเป็นที่มาของ Blockchain

ผลจากการทำงานในลักษณะข้างต้น จะทำให้เกิดคุณลักษณะประการหนึ่ง คือ บล็อกของข้อมูลที่อยู่ต้นของสายโซ่ จะแก้ไขได้ยากมาก เช่น หากต้องการแก้ไขข้อมูลในบล็อก B จะทำให้ Hash ของบล็อก B เปลี่ยน ดังนั้นจะต้องทำการคำนวณค่า Hash ที่อยู่ในบล็อกที่อยู่ตามหลังบล็อก B ทั้งหมด

Proof of work

แต่แม้จะจัดการให้การแก้ไขบล็อกก่อนหน้าทำได้ยากแล้วก็ตาม แต่เอาเข้าจริงมันก็ไม่ได้ยากมากนัก เพราะการคำนวณค่า Hash หากใช้คอมพิวเตอร์ที่สามารถประมวลผลได้สูงๆ แล้ว สามารถจะใช้เวลานิดเดียวในการคำนวณ ดังนั้นแม้ว่าสายโซ่จะยาวเป็นล้าน ก็อาจจะใช้เวลาไม่มากเลย ดังนั้นเพื่อให้การสร้างบล็อกแต่ละบล็อกยากขึ้น จึงได้เพิ่มขั้นตอนที่เรียกว่า Proof of Work (ปัจจุบันมีขั้นตอนที่มีชื่อเรียกและวิธีการแบบอื่นด้วย) ซึ่งจะทำให้การสร้างบล็อกแต่ละบล็อกจากระดับไม่ถึง 1 วินาที กลายเป็นต้องใช้เวลาหลายนาทีได้เลย

Proof of Work คืออะไร มันก็คือ การสร้างงานเพิ่มขึ้นให้กับ Miner โดยเพิ่มข้อมูลเข้าไป 1 ตัว เรียกว่า Nonce และกำหนดเงื่อนไขของ Hash เช่น ค่า Hash ที่สร้างจะต้องขึ้นต้นด้วย 0 จำนวน 8 ตัวเป็นต้น ดังนั้น Miner ก็จะต้องวนทำ Hash ซ้ำๆ โดยเปลี่ยนค่า Nonce ไปเรื่อยๆ จนกว่าจะพบค่า Hash ที่ขึ้นต้นด้วย 0 จำนวน 8 ตัว จากรูปด้านล่างจะเห็นว่า หากต้องการ Hash ที่ขึ้นต้นด้วย 0 จำนวน 8 ตัว จะต้องใช้เวลาในการคำนวณหาค่า Nonce ที่ทำให้เกิดเงื่อนไขที่ต้องการ เท่ากับ 4686 วินาที ซึ่งเพิ่มขึ้นจากเดิมเยอะเลย

Blockchain Network

บล็อกเชน จะอยู่เดี่ยวๆ ไม่ได้ จะต้องเชื่อมต่อเป็นเครือข่าย โดยมีโหนด (node) จำนวนมากพอสมควร

เมื่อมีการสร้าง Transaction เครือข่ายบล็อกเชน จะกระจาย Transaction ไปยังทุก โหนดของบล็อกเชน (ในที่นี้สมมติว่า ทุกโหนดเป็น Miner ด้วย) แต่ละโหนดก็จะแข่งขันกันสร้างบล็อก ซึ่งแน่นอนว่าจะต้องร้อยต่อจากบล็อกก่อนหน้าด้วย ตามที่ได้อธิบายไปแล้ว ซึ่งการจะสร้างบล็อกได้สำเร็จ ก็คือการหาค่า Nonce ที่ทำให้ค่า Hash ตรงตามเงื่อนไขนั่นเอง แต่การหาค่า Nonce ก็เหมือนกับการสุ่มหาค่าอย่างหนึ่ง เพราะไม่มีใครรู้ว่าค่า Nonce ที่ถูกต้องอยู่ตรงไหน แต่ละโหนดก็จะมีโอกาสเท่าๆ กันในการสร้างบล็อก

เมื่อโหนดใดสร้างบล็อกสำเร็จ ก็จะประกาศไปยังโหนดอื่นๆ ว่าสร้างสำเร็จแล้ว
โหนดอื่นๆ ก็จะยกเลิกการหาบล็อกนั้น โดยไปเริ่มต้นหาบล็อกใหม่ต่อไป แต่หากมี 2 โหนด ที่สร้างบล็อกสำเร็จในเวลาใกล้ๆ กัน และต่างคนต่างประกาศว่าสร้างบล็อกสำเร็จ ซึ่งปกติบล็อกเชนจะมีสายโซ่เพียงสายเดียว แต่ถ้ามีการสร้างบล็อกสำเร็จ 2 บล็อกในเวลาใกล้กัน ก็จะเสมือนกับว่าสายโซ่ถูกแตกออกมากกว่า 1 ทาง

ก็จะมีกระบวนการที่เรียกว่า Consensus โดยทุกโหนดจะเลือกว่าจะเลือกสายโซ่ใดเป็นสายโซ่หลัก (สีดำ) โดยบล็อกอื่นๆ ก็จะถูกทำลาย และ Transaction ก็จะถูกนำไปสร้างบล็อกอื่นๆ อีกที

จากที่กล่าวมาจะเห็นได้ว่า แต่ละ Miner จะแข่งขันกันสร้างบล็อก โดยสายโซ่ก็จะยาวขึ้นเรื่อยๆ ดังนั้นจึงเป็นไปไม่ได้เลยที่ใครจะแก้ไขบล็อกที่อยู่ก่อนหน้าได้ และยิ่งบล็อกใดที่อยู่ส่วนต้นของสายโซ่มากเท่าไร บล็อกนั้นก็จะยิ่งยากต่อการแก้ไขมากเท่านั้น จึงถือได้ว่าข้อมูลที่อยู่ในบล็อกเชน มีความปลอดภัยสูง

นอกจากนั้น การที่บล็อกเชนกระจายข้อมูลไปเก็บยังโหนดต่างๆ ทำให้ข้อมูลมีความมั่นคงสูงมาก แม้จะมีโหนดใดที่ตายไป แต่ข้อมูลจะไม่หายอย่างแน่นอน

คุณสมบัติของบล็อกเชน

หลังจากที่ได้อธิบายการทำงานไปหมดแล้ว ก็ขอสรุปคุณสมบัติของบล็อกเชน ดังนี้

  • เป็น Decentralized Database ทำให้ข้อมูลมีความเชื่อถือสูง ยากต่อการสูญหาย และสามารถเข้าถึงข้อมูลได้จากทุกโหนด
  • การแก้ไขข้อมูลทำได้ยาก (Immutable)
  • เปิดเผยข้อมูล แต่ไม่เปิดเผยผู้กระทำ
  • สามารถตรวจสอบย้อนกลับ (Traceability) ได้สะดวก เนื่องจากไม่มีการลบข้อมูล (เช่น ตรวจสอบว่าเงินที่โอนมาจากที่ใด)
  • มีกระบวนการยืนยันข้อมูลร่วมกัน (Consensus)

สรุป

ที่เล่ามาทั้งหมด ก็เป็นหลักการของบล็อกเชนที่พยายามอธิบายให้ง่ายๆ ก็หวังว่าจะเป็นประโยชน์นะครับ

--

--

Thana Hongsuwan
Thana Hongsuwan

Written by Thana Hongsuwan

Maker สมัครเล่น สนใจเทคโนโลยีด้าน Hardware เช่น Arduino, ESP8266, ESP32, Internet of Things, Raspberry P, Deep Learning

Responses (2)