ความเที่ยงตรง ของ บล็อกเชน

เพื่อให้บัญชีแยกประเภทซึ่งรักษาแบบรวม ๆ โดยชุมชนใช้งานได้ จะต้องมีวิธีรักษาความเที่ยงตรง 3 อย่างซึ่งจะกล่าวถึงต่อไปต่างหาก ๆ

ความเป็นเจ้าของ/กรรมสิทธิ์

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

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

ธุรกรรม

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

การรักษาความเที่ยงตรงของธุรกรรมโดยเป็นลูกโซ่เช่นนี้ เรียกว่า transaction chain

ลำดับธุรกรรม

ดูข้อมูลเพิ่มที่หัวข้อ การตราเวลาสำหรับบิตคอยน์

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

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

เพื่อป้องกันการใช้ระบบโดยไม่ชอบเช่นนี้ ก็จะต้องมีวิธีรักษาลำดับของธุรกรรมซึ่งเป็นเรื่องที่บล็อกเชนช่วยได้[76]เพราะธุรกรรมของบล็อกเชนจะรวมกลุ่มเป็นบล็อก ที่สมมุติว่า เกิดขึ้นพร้อมกันดังนั้น โซ่ของบล็อกจึงเป็นตัวบอกลำดับธุรกรรม

ในบล็อกเชนของบิตคอยน์ เพื่อจะเพิ่มบล็อกเข้าในโซ่ ผู้บันทึกธุรกรรมจะรวมข้อมูลดังต่อไปนี้คือ[77]

  • รายการธุรกรรมที่จะรวมเข้าในบล็อกพร้อมกับค่าแฮชในรูปแบบของต้นไม้แฮช
  • ค่าแฮชของบล็อกที่มาก่อนหน้า
  • ค่า nonce

ผู้สร้างบล็อก (สถานี) จะคำนวณค่าแฮชของบล็อกนี้ (ซึ่งแสดง proof-of-work[upper-alpha 2]) โดยมีค่าทั้งสามนี้เป็นข้อมูลขาเข้าของฟังก์ชันแฮช และค่า nonce จะเป็นค่าที่เพิ่มขึ้นจนกระทั่งค่าแฮชที่คำนวณผ่านกฎเกณฑ์ว่าใช้ได้[78]โดยกฎเกณฑ์ของบล็อกเชนจะทำให้ต้องใช้เวลาคำนวณประมาณ 10 นาทีเพื่อหาค่าที่ถูกต้องและใช้ได้[18][19]

เมื่อสถานีคำนวณได้ค่าแฮช มันก็จะแพร่สัญญาณแสดงบล็อกที่มันต้องการเพิ่มเข้าในโซ่ พร้อมกับค่าแฮช (คือ proof-of-work) ของบล็อกเครือข่ายที่เหลือจะตรวจความถูกต้องของข้อมูลในบล็อกแล้วต่อบล็อกใหม่เข้าเป็นลูกโซ่ของบล็อกเชนอย่างไรก็ดี โซ่อาจเกิดมีหลายสาขาเพราะบางส่วนของเครือข่ายอาจจะอยู่แยกออกเป็นระยะเวลาหนึ่งดังนั้น แต่ละสถานีก็จะเลือกโซ่ที่ยาวสุดแล้วพยายามเพิ่มบล็อกในสายโซ่นั้นเท่านั้น[79]

การฉ้อฉลดังที่อีฟใช้ตามที่ว่า บัดนี้สามารถป้องกันได้โดยเหตุผลสามอย่าง คือ

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

สมมุติว่า อีฟต้องการเปลี่ยนบล็อกย้อนหลังกลับไป 6 บล็อกในลูกโซ่เนื่องจากเหตุผลแรก เธอก็จะต้องคำนวณค่าแฮชของบล็อก 5 บล็อกที่ตามต่อมาหลังจากนั้น เนื่องจากเหตุผลที่สอง เธอก็จะต้องตามให้ทันเครือข่ายที่เหลือโดยเติมโซ่ให้มีบล็อกจำนวนมากกว่าทั้งเครือข่ายที่เหลือรวมกันและเนื่องจากเหตุผลที่สาม การทำเช่นนี้จะเป็นไปไม่ได้ดังนั้น บล็อกเชนจึงปลอดภัยเนื่องจากงานที่ต้องทำเพื่อเพิ่มบล็อกกล่าวอีกอย่างก็คือ มีคู่แข่งจำนวนมากที่แข่งขันเพื่อเพิ่มบล็อกต่อไป ทำให้ผู้กระทำผู้เดียวมีโอกาสน้อยมากที่จะแข่งชนะคู่แข่งที่เหลือทั้งหมดโดยเฉพาะเมื่อมีบล็อกต่อ ๆ มาเป็นจำนวนมาก

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

เมื่อสถานีหนึ่งเข้าร่วมเพื่อเป็นผู้เพิ่มบล็อก (ในระบบบิตคอยน์คือเข้าร่วมเป็นผู้ขุดหาเหรียญ) ขั้นตอนแรกที่จะต้องทำก็คือดาวน์โหลดและยืนยันความถูกต้องของบัญชีแยกประเภททั้งหมด (บล็อกเชตของบิตคอยน์โดยเดือนเมษายน 2018 ได้ถึงขนาด 160 GB แล้ว[24]) รวมทั้ง

  • รหัสสาธารณะทั้งหมดสมกับข้อความที่เข้ารหัสหรือไม่
  • ธุรกรรมทั้งหมดอ้างอิงธุรกรรมอื่น ๆ ในอดีตหรือไม่
  • บล็อกแต่ละบล็อกมีค่าแฮชของบล็อกก่อนหรือไม่

เมื่อยืนยันสำเร็จแล้ว ก็เพียงแต่ต้องพิสูจน์ยืนยันบล็อกใหม่ ๆ ว่า ผ่านเกณฑ์ 3 อย่างนี้หรือไม่เท่านั้น

แหล่งที่มา

WikiPedia: บล็อกเชน http://www.computerworld.com.au/article/606253/und... http://www.afr.com/technology/anz-backs-private-bl... http://www.americanbanker.com/bankthink/why-the-bi... http://www.bbc.com/news/technology-41858585 http://www.bbc.com/news/technology-42237162 http://www.businessinsider.com/mastercard-pushes-a... http://www.coindesk.com/abn-amro-blockchain-real-e... http://www.coindesk.com/blockchain-finance-buzzwor... http://www.coindesk.com/estonia-president-world-ec... http://www.coindesk.com/ethereums-new-blockchain-c...