รู้ทุกเรื่องของระบบ Blockchain ด้วยแบบจำลอง

รู้ทุกเรื่องของระบบ Blockchain ด้วยแบบจำลอง (ตอนที่1) [VDO]

Categories : Life+Style
Tags : , , ,

รู้ทุกเรื่องของระบบ Blockchain ด้วยแบบจำลอง (ตอนที่1)

ก่อนหน้านี้ เราเคยนำเสนอบทความ Blockchain คืออะไร? เกี่ยวอะไรกับ Bitcoin – Crypto ซึ่งเป็นการอธิบายถึงเทคโนโลยีของระบบ Blockchain ว่าได้เข้ามาช่วยแก้ปัญหาอะไรได้บ้าง และหลักการทำงานของ Blockchain เป็นอย่างไรบ้าง

 

แต่เพื่อความเข้าใจระบบ Blockchain และเห็นภาพการทำงานที่ชัดเจน ในบทความนี้จึงจะมาอธิบายถึงการทำงานของระบบ Blockchain ด้วยแบบจำลองการทำงานของระบบ Blockchain ผ่านเว็บไซต์ https://andres.com  ซึ่งเราสามารถทดลองเปลี่ยนแปลงค่าต่าง ๆ ได้ เพื่อการเรียนรู้วิธีการทำงานของระบบ Blockchain ได้ง่ายขึ้น โดยที่เราไม่จำเป็นต้องมีความรู้ ความเข้าใจในการเขียนโปรแกรมคอมพิวเตอร์ ก็สามารถทดลองเข้าไปใช้งานได้

 

 

เริ่มต้นจากการที่เราได้เข้าไปยังเว็บไซต์ดังกล่าว เมื่อเข้าไปยังเว็บไซต์แล้ว จะเห็นว่ามีการแบ่งตัวอย่างการทำงานของ Blockchain ออกเป็น 6 หัวข้อด้วยกัน (เมนูด้านบนขวามือ จะแสดงหัวข้อต่าง ๆ บนหน้าเว็บไซต์)

 

Everything About Blockchain 01 01

การ Hash ข้อมูลด้วย SHA256

โดยเราจะมาเริ่มกันที่การ Hash ข้อมูลกันก่อน สำหรับตัวอย่างการ Hash ข้อมูลในเว็บนี้ จะเป็นการใช้อัลกอริทึม SHA256 ในการ Hash ข้อมูลออกมา โดยตัว SHA256 นี้ก็จะเป็นอัลกอริทึมเดียวกันกับตัว Blockchain ของ Bitcoin ใช้ในการ Hash ข้อมูล โดย SHA256 จะถูกใช้ Hash ข้อมูลในส่วน Data ซึ่งผลจะออกมาเป็นรหัส Hash ตามรูปในตัวอย่าง 

 

Everything About Blockchain 01 02

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

 

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

 

Everything About Blockchain 01 03

การต่อยอดฟังก์ชั่นการใช้งาน Hash

ระบบ Blockchain มีการต่อยอดฟังก์ชั่นการใช้งานของ Hash ในการทำงานของ Block อย่างไรบ้าง ซึ่งในส่วนของ Block เมื่อเราเข้ามาแล้วจะเห็นข้อมูลเพิ่มเติมมาจากการ Hash ดังนี้

อันที่ 1 คือ หมายเลข Block

อันที่ 2 คือ ตัวเลข Nonce

อันที่ 3 คือ Data ช่องสำหรับใส่ข้อมูล ซึ่งเหมือนเดิม

อันที่ 4 คือ ตัวเลข Hash เหมือนเดิม แต่จะสังเกตเห็นว่า ตัวเลข Hash เป็นตัวเลข 0 จำนวน 4 ตัว ซึ่งไม่ใช่ Hash แบบปกติ ซึ่งตัว Hash ที่มี 0000 นำหน้าเช่นนี้ จะมีความหมายว่าข้อมูลใน Block มีการถูกบันทึกลงไปใน Block เรียบร้อยแล้ว หรือก็คือ มีการถูก Sign ลงไปแล้ว

 

เมื่อลองทดสอบใส่ข้อมูลลงไปในช่อง Data สิ่งแรกที่เกิดขึ้น รหัสของ Hash ที่เคยนำหน้าด้วย 0000 ได้เปลี่ยนไปเป็นแบบอื่นแล้ว และพื้นหลังของ Block ได้เปลี่ยนจากสีเขียวไปเป็นสีแดงแล้ว ซึ่งหมายความว่าตอนนี้ข้อมูล ไม่ได้มีการถูก Sign ลงไปใน Block แล้ว หรือไม่ได้ถูกบันทึกลงไปใน Block เมื่อเป็นแบบนี้ เรามีวิธีอย่างไรในการทำให้ข้อมูลที่มีการเปลี่ยนแปลง มีการถูก Sign ลงไปใน Block

 

Everything About Blockchain 01 04

สำหรับวิธีการทำ คือ การเปลี่ยนตัวเลขของ Nonce ไปเรื่อย ๆ ด้วยวิธีการสุ่มตัวเลข จนกว่าเราจะได้รหัส Hash ซึ่งเป็น 0000 นำหน้า ข้อมูลใน Block ถึงจะถูก Sign ลงไป ซึ่งถือว่าต้องใช้ระยะเวลานานกว่าจะเจอตัวเลขดังกล่าว ซึ่งในระบบ Blockchain ก็จะใช้หลักการที่เรียกว่า Mining ด้วยการใช้ตัวคอมพิวเตอร์ ในการสุ่มหาตัวเลข โดยตัวอย่างหากกดตรงปุ่ม Mine จะเป็นการ Mining ซึ่งจะทำการ Mining ที่ต้องใช้ระยะเวลาประมาณหนึ่ง และจะได้ตัวเลข Nonce ออกมาเป็น 85869 แล้วจะได้ตัวเลข Hash ที่มี 0000 นำหน้า และพื้นสกรีนด้านหลังจะเปลี่ยนจากสีแดงมาเป็นสีเขียว หมายความว่าตัวข้อมูลใน Block มีการถูก Sign ลงไปเรียบร้อยแล้ว

 

กรณีที่เราเปลี่ยนตัวเลขของ Block จะเห็นว่าต้องทำการ Mining ใหม่เช่นกัน เพราะมีทำให้ตัวเลขรหัสของ Hash เปลี่ยนแปลงไป  จะเห็นว่าตัวข้อมูลที่มีผลต่อการ Hash จะมีทั้งหมายเลขของ Block  ตัวเลข Nonce และตัว Data ที่เราใส่เข้าไป

 

หากสังเกต จะเห็นว่าตัวเลข Nonce จะทำหน้าหน้าที่คล้าย ๆ กับตัวเลขที่เป็นคำตอบของ Block​ นี้ เพื่อที่จะได้ทำให้ ตัวข้อมูลมีการถูกบันทึกลงไปใน Block ได้ ซึ่งในระบบ Blockchain ของ Bitcoin ก็คือ ใครที่สามารถหาตัวเลข Nonce เป็นคนแรก ก็จะได้ตัว Bitcoin เป็น Reward ไป

 

การเชื่อมโยงข้อมูลของระบบ Blockchain

เมื่อเรากดไปที่หัวข้อ Blockchain เพื่อเข้ามาที่หน้า Blockchain จะเห็นข้อมูลในแต่ละ Block ซึ่งเราได้ทำการศึกษารายละเอียดไปก่อนหน้านี้ มีลักษณะการเรียงต่อ ๆ กัน เป็น Blockc1 Block2 Block3 Block4 และ Block5 แล้วจะเห็นว่าข้อมูลของแต่ Block จะมีช่อง Prev ซึ่ง คือข้อมูล Hash ของ Block ก่อนหน้า เนื่องจากว่าระบบ Blockchain จะใช้ตัว Hash ของ Block ก่อนหน้าเป็นค่าตั้งต้นสำหรับ Block ถัดไป

 

Everything About Blockchain 01 05

กรณีที่มีการเปลี่ยนแปลงข้อมูลใน Block สุดท้าย ก็จะต้องทำการ Mining ใหม่เหมือนเดิม แต่จะทำการ Mining เฉพาะ Block5  หากกรณีเปลี่ยนข้อมูล Block3 จะเกิดการเปลี่ยนแปลงของ Block3 Block4 Block5 ซึ่งไม่สามารถบันทึกข้อมูลของ Block3 Block4 Block5 ได้ เพราะตัวเลขนำหน้าของ Hash ทั้ง  3 Block ไม่ใช่เลข 0000 วิธีการแก้ไขเพื่อให้ทั้ง 3 Block สามารถบันทึกข้อมูลได้ คือ ต้องทำการ Mining ใหม่ตั้งแต่ Block3 แล้วทำการ Mining ใน Block4 แม้ว่าไม่ได้มีการเปลี่ยนแปลงข้อมูลใน Data ก็ตาม และสุดท้ายต้องทำการ Mining ใน Block5 ต่อไป

 

จะสังเกตเห็นว่า ยิ่งเราไปแก้ไขข้อมูลใน Block ที่อยู่อันดับต้น ๆ มากเท่าไร เรายิ่งต้องทำการ Mining ในแต่ละ Block มากขึ้นเท่านั้น ซึ่งเป็นวิธีการที่ระบบ Blockchain ใช้ในการป้องกันการแก้ไขข้อมูล

 

Everything About Blockchain 01 06

แล้วเราจะรู้ได้อย่างไรว่า ระบบ Blockchain มีการแก้ไขข้อมูล แล้วถูก Remind ใหม่พวกนี้ มีการถูก Remind ข้อมูลในระบบ Blockchain เข้าไปใน Node อื่น ๆ ด้วยหรือไม่ หรือหากเราต้องการอยากทราบว่าข้อมูลระบบ Blockchain ที่เรามีอยู่ มีความถูกต้องหรือไม่ สามารถจะทำการตรวจสอบได้อย่างไร

 

หลักการทำงาน Distributed Blockchain

สำหรับตัวอย่างของ Distributed Blockchain จะมีการแบ่งข้อมูลออกเป็น 3 Blockchain คือ Peer A Peer B Peer C โดยเบื้องต้นข้อมูลของทั้ง 3 คนนี้จะมีลักษณะข้อมูลที่เหมือนกัน โดยจะสังเกตุได้ที่ตัว Hash ตัว Block5 จะเป็น 0000 แล้วก็ E4 B9

 

Everything About Blockchain 01 07

 

ในส่วนของ Peer B ก็เช่นกัน Hash ตัวสุดท้ายก็เป็น E4 B9 Peer C ก็เหมือนกันมีข้อมูล Hash เหมือนกันข้อมูลตัวสุดท้ายเป็น E4 B9  ข้อมูล Hash ก่อนหน้านี้ก็เหมือนกันทุกประการ ในแต่ละ Block แล้วกรณีที่ Peer B มีการเปลี่ยนแปลงข้อมูลไป เช่น

 

ถ้ามีการเปลี่ยนแปลงข้อมูลใน Block สุดท้าย ถ้าเป็นเช่นนี้ ตัวระบบจะสามารถตรวจสอบได้ทันทีว่า ข้อมูลของ Blockchain ของ Peer B เป็นข้อมูลที่ไม่ถูกต้อง เพราะว่า ตัว Hash ตัวสุดท้ายไม่ได้ขึ้นต้นด้วย 0000 แต่ถึงแม้ตัว Peer B ทำการ Mining ข้อมูล เพื่อให้มี 0000 ออกมา ก็จะสังเกตเห็นว่าตัว Hash ตัวสุดท้าย ของ Peer A เป็น 0000 แล้วก็ E4 B9 แต่ว่าตัว Hash ตัวสุดท้ายของ Peer B เป็น 28 BC ขณะที่ Peer C ยังเป็นตัวเลขเดิม คือ E4 B9

 

เมื่อเป็นแบบนี้ ด้วยระบบ Blockchain ก็สามารถตรวจสอบได้ทันทีว่าข้อมูลของ ตัว B ว่ามีความแตกต่างจาก Blockchain ของตัวอื่น เพราะฉะนั้น Blockchain ของตัว B ก็จะถือว่าเป็นข้อมูลที่ไม่มีความถูกต้อง เพราะมีสัดส่วนเพียง 1 ใน 3 ของข้อมูลทั้งหมด และในหลักการของ Blockchain ที่จะยึดถือ ข้อมูลของเสียงส่วนมากเป็นหลัก ก็จะทำให้ตัว ข้อมูลของ A และ C เป็นข้อมูลที่มีความถูกต้อง ในขณะที่ B เป็นข้อมูลที่ไม่มีความถูกต้อง

 

Everything About Blockchain 01 08

 

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

 

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

 

Everything About Blockchain 01 09

 

Tokens แบบจำลองการโอนเงิน

ในส่วนหัวข้อ Tokens ตรงนี้ การบันทึกข้อมูลในส่วนของ Data จะเปลี่ยนเป็น Transaction โดยข้อมูลในส่วนของ Transaction ก็จะมีการระบุ ใครโอนเงินให้ใคร เป็นจำนวนเงินเท่าไร แล้วจะเห็นได้ว่า ขนาด Transaction ในแต่ละ Block จะมีขนาดข้อมูลไม่เท่ากัน เนื่องจากว่าขนาดข้อมูลในแต่ละ Block ไม่จำเป็นต้องมีขนาดเท่ากัน  คุณสมบัติแบบ Distributed ก็มีอยู่เช่นเดิม มีการเก็บข้อมูลแบบกระจายกัน แล้วตัว Hash ก็ต้องมีรหัสตัว Hash ที่เหมือนกันด้วย แล้วถ้าหากมีการเปลี่ยนแปลงข้อมูลใน Block ใดก็ตาม  เราก็ต้องมาทำการ Mining เพื่อหาตัว Hash ใหม่เช่นเดิม

 

แต่จากตัวอย่างเราจะเห็นแค่การโอนเงินจากใครไปให้ใคร เป็นจำนวนเงินเท่าไร และการเงินเกิดขึ้นใน Block ไหน แต่เราไม่ได้มีการตรวจสอบเลยว่า แล้วคนที่โอนจำนวนเงิน เช่น Dracy โอนเงินให้ Bingley จำนวน 25 เหรียญ Darcy มีจำนวนเงินเพียงพอจริง ๆ หรือเปล่า ที่จะโอนเงินให้ทาง Bingley จำนวน 25 เหรียญ ซึ่งตัวอย่างการตรวจสอบว่าทาง Dracy มีเงินเพียงพอหรือเปล่า เราจะไปดูกันที่ตัวอย่างในหัวข้อ Coinbase (แถบเมนูด้านบนขวามือ)

 

Everything About Blockchain 01 10

 

ที่นี่เรามาดูกันที่ Coinbase Transaction สำหรับ Coinbase ไม่ได้หมายถึงตัวเว็บไซต์ที่ให้ซื้อขายCryptocurrency แต่หมายถึง Transaction แรกที่เกิดขึ้นในระบบ โดยจากตัวอย่าง จะเห็นว่า Transaction แรกที่เกิดขึ้น คือ ระบบมีการสร้างจำนวนเงินขึ้นมา 100 เหรียญ เพื่อโอนให้ทาง Anders แล้วถัดมา Anders ก็มีการโอนจำนวนเงิน ให้กับคนอื่น ๆ ต่อไป โดยจะสังเกตว่า จำนวนเวินที่ Anders จะโอนเงินให้คนอื่นได้ก็ไม่ควรเกิน 100 เหรียญ แล้วจำนวนเงินในระบบก็ไม่ควรที่จะเกิน 100 เหรียญเช่นกัน

 

โดยจากข้อมูลตรงนี้ ก็จะเห็นว่ามีการโอนเงินไปเรื่อย ๆ แล้วข้อมูลจาก Blockchain เราสามารถที่จะคิดย้อนกลับ โดยเช็คในแต่ละคนได้นะว่าแต่ละคน มีเงินเพียงพอจริง ๆ หรือไม่ ที่จะโอนให้คนอื่นต่อไป อย่างเช่น Jackson โอนเงินให้  Alexander  2 เหรียญ เราก็ต้องมาดูก่อนหน้านี้ว่า Jackson มีการได้รับเงินจากใครมาก่อนด้วยหรือเปล่า เราจะเห็นว่า Jackson ก็เคยได้รับเงินมาจากทาง Emily แล้วทาง Madison แล้วเคยได้รับเงินจาก Sophia ใน Block นี้เช่นกัน ซึ่งจะเห็นได้ว่า ข้อมูลการรับโอนเงินในระบบ Blockchain จะทำให้เราสามารถตรวจสอบได้ว่า เงินเคยโอนจากใครไปหาใคร แล้วคน ๆ นั้น มีเงินจำนวนเท่านั้นจริง ๆ หรือเปล่า ที่จะสามารถโอนต่อให้คนอื่นได้

 

Everything About Blockchain 01 11

 

สมมุติทาง Anders มีการไปเปลี่ยนข้อมูลใน Blockchain ของตัวเอง ว่าตัวเองได้เงิน จากระบบ 1,000 เหรียญ จะเห็นว่าตัว Hash มีค่าเปลี่ยนแปลงไป ซึ่งจะไม่ตรงกับตัว Hash ใน Peer อื่น ๆ ในระบบ Blockchain  ก็จะทำให้ข้อมูล Peer A ถูกตีตกไปด้วยระบบ เพราะว่าระบบจะมองว่าข้อมูลตัวนี้ไม่ถูกต้อง

 

ทั้งหมดเป็นตัวอย่างการทำงานของระบบ Blockchain ที่เราได้เรียนรู้การ Hash ข้อมูล การบันทึกข้อมูลลงใน Block การเชื่อมโยงข้อมูลเป็น chain รวมถึงการกระจายศูนย์รวมการเก็บข้อมูล หรือที่เรียกว่า Distributed ledger รวมถึงตัวอย่างการโอนเงินผ่านระบบ Blockchain ว่ามีแบบจำลองหน้าตาประมาณไหน แต่นั่นยังไม่ใช่ทั้งหมดของเว็บไซต์นี้ ในส่วนของเว็บไซต์นี้ยังมีแบบจำลองการทำงาน ในส่วน Private Key แล้วตัว Public Key ซึ่งเป็นตัวฟังก์ชั่นสำคัญในการโอนเงินในระบบ Blockchain ซึ่งสามารถติดตามต่อในบทความต่อไป

 

บทความที่เกี่ยวข้อง

 

บทความ Life+Style ล่าสุด