ความจริง Blockchain แก้ปัญหาอะไรกันแน่

Blockchain เป็นกระแสในประเทศไทยมาได้สักปีนึงแล้ว เห็นคนเยอะแยะพูดถึง รวมไปถึงมีหนังสือเยอะแยะไปหมด แต่ส่วนใหญ่มักจะอธิบายไม่เป็นเรื่อง Cryptocurrency ก็เรื่องว่ามันคืออะไร น่าจะเอาไปใช้ทำอะไรได้บ้าง ซึ่งน่าจะเอาไปใช้ได้เนี่ย ซึ่งคนนอกวงการหลายคนที่ผมเจอ ได้อ่านไปฟังคนเล่ามาก็พอจะเห็นภาพความฝัน แต่ยังไม่รู้ว่าจริงๆ ที่รับข้อมูลมานั้นมันใช้งานได้จริงขนาดไหน ส่วนคนในวงการเทคโนโลยีที่เข้าในการทำงานของคอมพิวเตอร์อยู่แล้ว ก็จะมองออกมาเป็นอีกโลกไปเลย วันนี้ผมขอมาเล่าสิ่งที่ได้จากการสังเคราะห์จากสื่อที่เสพเข้ามาและจากประสบการณ์ที่ได้เจอกับตัวว่า จริงๆ แล้ว Blackchain เนี่ย มันพิเศษอย่างไรกว่าวิธีการเก็บข้อมูลปรกติอย่างไร แล้วทำไมหลายคนจึงได้ตื่นเต้นกับมันนัก แล้วมันน่าตื่นเต้นจริงอย่างที่ถูกพูดถึงจริงหรือไม่

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

Blockchain คือฐานข้อมูลที่ห้ามแก้ข้อมูลที่ถูกเขียนไปแล้ว

ต้องยอมรับว่าความเป็นจริงแล้วเราใช้คอมพิวเตอร์เพื่อเก็บข้อมูล นับเป็นสัดส่วนแล้วมีค่อนข้างน้อยมากที่เราจะใช้มันคำนวณอะไรยิ่งใหญ่สมกับชื่อคอมพิวเตอร์ เรามักใช้มันเก็บเอกสาร ประวัติ โปรแกรม บลาๆๆ ทุกอย่างที่มันจะช่วยเราจำได้ และนอกจากนั้นมันยังช่วยย่นเวลาการสื่อสารกับมนุษย์คนอื่นๆ อีกด้วย ฐานข้อมูลต่างๆ จึงถูกพัฒนาขึ้นมาเพื่อให้รองรับข้อมูลที่มากขึ้น ให้ยังสามารถเก็บข้อมูลปริมาณมหาศาล และยังค้นหาได้อย่างรวดเร็ว จนปัจจุบันเริ่มมีฐานข้อมูลแบบกระจายศูนย์ คือให้คอมพิวเตอร์จำนวนมากเข้ามาแบ่งข้อมูลไปแยกกันเก็บ แล้วเวลาค้นหาก็ทุกเครื่องช่วยกันค้นหาเฉพาะส่วนของที่ตัวเองเก็บ ถ้าใครเจอข้อมูลที่ต้องการก็ส่งกลับมาบอกผู้ใช้ ช่วยให้สามารถขยายโครงสร้างสถาปัตยกรรมในทางกว้างได้ คือตั้งคอมพิวเตอร์เยอะเข้าๆ แล้วประสิทธิภาพดีขึ้นเรื่อยๆ (จนถึงจุดหนึ่ง)

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

ปัญหาที่ Blockchain แก้ แท้จริงคืออะไร

การเอา Blockchain ไปใช้กับการเก็บข้อมูล การโอนเงิน หรือการกันโกง นั่น ความจริงเป็นแค่เปลือก แก่นของ Blockchain จริงๆ แล้วมันถูกออกแบบมาเพื่อสร้าง

การบันทึกข้อมูลที่ย้อนกลับไม่ได้

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

ฐานข้อมูลโดยทั่วไปแล้ว ความเป็นจริงแล้วก็คือโปรแกรมจัดการฐานข้อมูล (DBMS) รวมร่างกับหน่วยความจำ สร้างโครงสร้างการเก็บข้อมูลพิเศษขึ้นมาเพื่อให้สามารถใช้งานได้อย่างมีประสิทธิภาพ แต่จะใช้งานนั้นก็ต้องผ่าน DBMS โดยสั่งคำสั่งเข้าไปว่า ต้องการจะทำอะไรกับฐานข้อมูล แล้วโปรแกรมก็จะทำแทนเราโดยการไปจัดการกับหน่วยความจำที่เชื่อมต่อมันเอาไว้ให้โดยผู้ใช้ไม่ต้องไปยุ่งกับส่วนนี้ ปัจจุบันนี้ DBMS ใช้วิธีการยืนยันตัวตนสิทธิ์ผู้ใช้งานเพื่อใช้ในการอนุญาตให้เข้าถึงข้อมูลได้ ซึ่งโปรแกรมต่างๆ ที่เราใช้งาน (Application) ก็จะต้องเก็บ Username/Password สำหรับใช้คุยกับ DBMS นั่นเอง เวลาที่เราใช้งานโปรแกรม Application เราจะไม่ได้ติดต่อ DBMS โดยตรง แต่เป็น Application ที่ติดต่อ DBMS ให้เรา แล้ว Application นั่นแหละที่ถือกุญแจในการเข้าใช้งาน DBMS อยู่

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

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

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

ข้อจำกัดของ Blockchain

ตั้งแต่เขียนมาผมไม่เคยเขียนเรื่องประสิทธิภาพการทำงานที่ดีกับ Blockchain เลย เพราะมันตรงกันข้ามอย่างสิ้นเชิง! อย่างที่เพิ่งได้เล่าไปว่า การจะแก้ไขข้อมูลที่อยู่ในกล่องนั้นทำไม่ได้ จึงใช้วิธีอ้อมๆ โดยการเขียนส่วนต่างจากเดิม ตัวอย่างเช่น เดิมเรามีค่า balance = 100 เกิดเราอยากจะเปลี่ยน balance เป็น 150 เราก็เขียน balance = balance + 50 เข้าไป (ซึ่งความจริง balance = 100 ตอนต้นก็คือ balance = balance + 100 โดยตอนต้นไม่มี balance อยู่ balance จึงได้ balance = 0 + 100 = 100)  เวลาโปรแกรมมันมาอ่าน มันก็จะต้องอ่านตั้งแต่ block แรก มาเจอ 100 มาเจอ 50 จนกระทั่งถึงกล่องสุดท้าย ถ้าจะหาค่าต่อไปก็ต้องอ่านทั้งหมดอีกรอบ ถ้าไม่อ่านทั้งหมด ก็จะมั่นใจได้อย่างไรว่าค่าที่ได้ออกมานั้นควบถ้วนสมบูรณ์แล้ว ต่างจากฐานข้อมูลทั่วไปที่เก็บตำแหน่งของข้อมูลที่ต้องการเอาไว้ แล้วก็กระโดดเข้าไปถึงข้อมูลได้โดยแทบจะทันที ดังนั้นวิธีการเก็บข้อมูลอย่าง Blockchain นั้นจึงด้อยเรื่องประสิทธิภาพอย่างมาก แล้วถ้าท่านๆ ได้อ่านเรื่อง Bitcoin กัน ก็จะเห็นว่ามีปัญหาในการเขียนข้อมูล เพราะตอนนี้มีผู้ใช้อยู่ในระบบและเกิดการใช้งานมากเกินไป สร้างกล่องกันไม่ทัน ปัญหานี้ถ้าเอา Blockchain มาใช้กันภายในอาจจะพอแก้ไขได้ด้วยการใช้ร่วมกับฐานข้อมูลปัจจุบัน โดยการบันทึกว่าข้อมูลที่สนใจนั้นถูกเก็บไว้กล่องที่เท่าไหร่ จะได้กระโดดเข้าไปหากันได้ทันที

ปัญหาต่อมาคือเรื่องพื้นที่ที่ใช้ในการเก็บข้อมูล คือฐานข้อมูลแบบกระจายศูนย์เนี่ย เขาแบ่งข้อมูลใหญ่เป็นก้อนเล็กๆ แล้วให้คอมพิวเตอร์แบ่งกันไปเก็บ อาจจะทำสำรองสัก 5 ชุด เผื่อเครื่องบางเครื่องล้มหายตายจากไป จะได้ยังเรียกใช้ข้อมูลได้ ซึ่งก็จะใช้เนื้อที่เกินขนาดจริงสัก 5 เท่า 6 เท่า แต่ Blockchain นั่นไม่ ทุกคนถ้าอยากจะสามารถเรียกใช้ข้อมูลและตรวจสอบได้ตั้งแต่ต้น ก็ต้องเก็บข้อมูลตั้งแต่ต้น คนเข้ามาในระบบก็จะมีข้อมูลหน้าตาเหมือนกัน นั่นแปลว่ามันมีการเก็บข้อมูลซ้ำๆ กันเกินความจำเป็นไปอย่างมาก

การประยุกต์ใช้ Blockchain ที่เหมาะสม

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

งานที่ผมมองว่าเหมาะสมกับ Blackchain นั้น ควรจะเป็นงานที่ต้องการความโปร่งใส สามารถตรวจสอบข้อมูลย้อนหลังได้ ขนาดไม่ได้ใหญ่โตเกินไป ไม่งั้นจะเกิดปัญหาแบบ Bitcoin ซึ่งเท่าที่เห็นตอนนี้ก็นึกออกได้อยู่ 2 งาน ก็คือการบันทึกสถานะของเรื่องต่างๆ กับการแก้ไขเอกสาร (จริงๆ มองเป็นเรื่องเดียวก็ไม่ผิด)

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

พอเอาไปเก็บเอกสารแบบนั้นได้แล้ว ก็เอามาบันทึกสถานะต่างๆ เช่น การส่งเอกสาร การส่งไปรษณีย์ การเกิดกิจกรรมต่างๆ ในองค์กร ไปกระทั่งการเลือกตั้งก็ยังได้ แต่จะต้องพัฒนา Application ที่มาต่อที่ปลอดภัยพอนะ

อีกอย่างคือเอาไว้ใช้คู่กับฐานข้อมูลแบบเดิม เนื่องจากประสิทธิภาพของ Blockchain นั้นไม่สู้ดีนัก แต่มีความเก่งเรื่องความโปร่งใส ดังนั้นเวลาจะเขียนอะไรลงฐานข้อมูลแล้วมีการบันทึกการแก้ไข ก็เอาข้อมูลส่วนที่บันทึกมาทำลายนิ้วมือแล้วบันทึกลง Blockchain ด้วย โดยใช้กุญแจคนละอันกันและถือด้วยโปรแกรมคนละโปรแกรม ทีนี้ฐานข้อมูลทั่วไปก็จะมีพลังความตรวจสอบการแก้ได้ขึ้นอย่างโปรงใสขึ้นมาทันทีถ้าคุณเป็นนักพัฒนาโปรแกรมก็น่าจะเคยใช้ Git กันอยู่

อย่างสุดท้ายที่ผมสนใจมากคือเรื่อง Distributed Internet หรืออินเทอร์เน็ตกระจายศูนย์ ไอเดียนี้คือปัจจุบันอินเทอร์เน็ตมันถูกวางไว้บนเครื่องเซิร์ฟเวอร์ แต่ความจริงเครื่องผู้ใช้ก็มีประสิทธิภาพไม่ใช่เบา และมีเยอะมากด้วย แต่ไม่ค่อยได้ใช้ประสิทธิภาพมันเท่าที่ควร ถ้าเอาเครื่องพลังมดพวกนี้มีรวมตัวกันสร้างพื้นที่ขึ้นมาเป็นอินเทอร์เน็ต ก็น่าจะช่วยให้สามารถใช้ทรัพยากรคอมพิวเตอร์บนโลกใบนี้ได้คุ้มค่ามากขึ้น

อนาคตของ Blockchain จะเป็นอย่างไร

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