เรื่องที่ทำให้ Plasma ถูกฝังเป็นเวลานาน และเหตุผลที่ Vitalik จะสนับสนุน Rollup อย่างแข็งขัน บ่งบอกไปที่สองจุดหลัก: การนำ DA ไปใช้ภายใต้เชน Ethereum ไม่เชื่อถือได้ และการเกิดการอดทนข้อมูลง่ายจะเกิดขึ้นเมื่อข้อมูลถูกยึดกัก หากเกิดการอดทนข้อมูลยากที่จะดำเนินการพิสูจน์การปฏิเสธทุจริต; การออกแบบกลไกของ Plasma เองไม่เอื้นมิต่อสัญญาอัจฉริยะอย่างมาก และมันยากมากที่จะสนับสนุนการย้ายสถานะของสัญญาไปยังเลเยอร์ 1 จุดเหล่านี้ทำให้ Plasma เกือบจะใช้แค่โมเดล UTXO หรือโมเดลที่คล้ายกันเท่านั้น
เพื่อให้เข้าใจประเด็นหลักสองข้อข้างต้นเรามาเริ่มกันที่ปัญหาของ DA และการหักภาษี ณ ที่จ่าย ชื่อเต็มของ DA คือ Data Availability ซึ่งแปลตามตัวอักษรว่าความพร้อมใช้งานของข้อมูล ตอนนี้มันถูกใช้ในทางที่ผิดโดยคนจํานวนมาก มากจนสับสนอย่างมากกับ "ข้อมูลในอดีตสามารถตรวจสอบได้" แต่ในความเป็นจริง "สามารถตรวจสอบข้อมูลในอดีตได้" และ "หลักฐานการจัดเก็บ" เป็นปัญหาที่ Filecoin และ Arweave ได้แก้ไขแล้ว จากข้อมูลของ Ethereum Foundation และ Celestia ปัญหา DA จะสํารวจสถานการณ์การหักภาษี ณ ที่จ่ายของข้อมูลอย่างหมดจด
เพื่ออธิบายถึงความหมายของการโจมตีการถือข้อมูลและปัญหา DA จริง ๆ เราจำเป็นต้องพูดถึง Merkle Root และ Merkle Tree อย่างสั้น ๆ ก่อน ใน Ethereum หรือโซ่สาธารณะส่วนใหญ่ โครงสร้างข้อมูลที่เหมือนต้นไม้ที่เรียกว่า Merkle Tree ถูกใช้เป็นสรุป/ไดเร็กทอรี่ของสถานะของบัญชีทั้งหมด หรือเพื่อบันทึกรายการธุรกรรมที่ถูกแพ็คเกจในแต่ละบล็อก
โหนดใบไม้ที่อยู่ที่ด้านล่างของ Merkle Tree ประกอบด้วย hashes ของข้อมูลเดิมเช่น ธุรกรรมหรือสถานะบัญชี การนับรวม hashes เหล่านี้และวนซ้ำ ๆ และสุดท้าย Merkle Root สามารถคำนวณได้
(บันทึกที่ด้านล่างของรูปคือชุดข้อมูลดั้งเดิมที่สอดคล้องกับโหนดใบ) Merkle Root มีคุณสมบัติ:หากโหนดใบที่ด้านล่างของ Merkle Tree เปลี่ยนแปลง Merkle Root ที่คํานวณได้จะเปลี่ยนไปด้วย ดังนั้น Merkle Trees ที่สอดคล้องกับชุดข้อมูลดั้งเดิมที่แตกต่างกันจะมี Merkle Roots ที่แตกต่างกันเช่นเดียวกับที่แต่ละคนมีลายนิ้วมือที่แตกต่างกัน เทคโนโลยีการตรวจสอบหลักฐานที่เรียกว่า Merkle Proof ใช้ประโยชน์จากคุณสมบัติของ Merkle Tree นี้ ยกตัวอย่างภาพด้านบนหาก Li Gang รู้เพียงคุณค่าของ Merkle Root ในภาพเขาไม่รู้ว่า Merkle Tree ที่สมบูรณ์มีข้อมูลอะไรบ้าง เราต้องการพิสูจน์ให้ Li Gang เห็นว่า Record 3 เกี่ยวข้องกับ Root ในภาพหรือกล่าวอีกนัยหนึ่งคือพิสูจน์ว่าแฮชของ Record 3 มีอยู่ใน Merkle Tree ที่สอดคล้องกับ Root เราจําเป็นต้องส่ง Record3 และบล็อกข้อมูลย่อยสามบล็อกที่มีเครื่องหมายสีเทาให้กับ Li Gang โดยไม่ต้องส่ง Merkle Tree ทั้งหมดหรือโหนดใบไม้ทั้งหมด นั่นคือความเรียบง่ายของ Merkle Proof เมื่อบันทึกพื้นฐานของ Merkle Tree มีใบจํานวนมากเช่นมันมี 2 ถึง 20th power ของบล็อกข้อมูล (ประมาณ 1 ล้าน) Merkle Proof จะต้องมีบล็อกข้อมูลอย่างน้อย 21 บล็อกเท่านั้น
(บล็อกข้อมูล 30 และ H2 ในรูปสามารถประกอบเป็น Merkle Proof ซึ่งพิสูจน์ว่าบล็อกข้อมูล 30 มีอยู่ใน Merkle Tree ที่สอดคล้องกับ H0)"ความเรียบง่าย" ของ Merkle Proof นี้มักใช้ใน Bitcoin, Ethereum หรือสะพานข้ามสายโซ่ โหนดแสงที่เรารู้จักคือ Li Gang ที่กล่าวถึงข้างต้น เขาได้รับส่วนหัวของบล็อกจากโหนดเต็มเท่านั้นไม่ใช่บล็อกที่สมบูรณ์ ต้องเน้นที่นี่ว่า Ethereum ใช้ต้นไม้ Merkle ที่เรียกว่า State Trie เพื่อใช้เป็นบทสรุปของบัญชีทั้งหมด ตราบใดที่สถานะของบัญชีที่เกี่ยวข้องกับ State Trie เปลี่ยนไป Merkle Root of the State Trie ที่เรียกว่า StateRoot จะเปลี่ยนไป ในส่วนหัวบล็อกของ Ethereum StateRoot จะถูกบันทึกและ Merkle Root ของต้นไม้ธุรกรรม (เรียกว่า Txn Root) จะถูกบันทึกไว้ด้วยความแตกต่างอย่างหนึ่งระหว่างแผนผังธุรกรรมและต้นไม้สถานะคือข้อมูลที่แสดงโดยใบพื้นฐานนั้นแตกต่างกัน หากบล็อกหมายเลข 100 มีธุรกรรม 300 รายการ ใบของแผนผังธุรกรรมจะแสดง 300 Txn เหล่านี้ ความแตกต่างอีกประการหนึ่งคือปริมาณข้อมูลโดยรวมของ State Trie มีขนาดใหญ่มาก ใบด้านล่างของมันสอดคล้องกับที่อยู่ทั้งหมดในห่วงโซ่ Ethereum (ในความเป็นจริงมีแฮชของรัฐที่ล้าสมัยจํานวนมาก) ดังนั้นชุดข้อมูลดั้งเดิมที่สอดคล้องกับ State Trie จะไม่ถูกปล่อยออกมา ในบล็อกเฉพาะ StateRoot เท่านั้นที่ถูกบันทึกไว้ในส่วนหัวของบล็อก ชุดข้อมูลดั้งเดิมของแผนผังธุรกรรมคือข้อมูล Txn ในแต่ละบล็อก และ TxnRoot ของทรีนี้จะถูกบันทึกไว้ในส่วนหัวของบล็อก
เนื่องจากโหนดแสงได้รับเฉพาะส่วนหัวของบล็อกและรู้เฉพาะ StateRoot และ TxnRoot จึงไม่สามารถอนุมาน Merkle Tree ที่สมบูรณ์ตาม Root (ซึ่งกําหนดโดยคุณสมบัติของ Merkle Tree และฟังก์ชันแฮช) ดังนั้นโหนด Light จึงไม่สามารถทราบข้อมูลธุรกรรมที่มีอยู่ในบล็อกได้และพวกเขาไม่ทราบว่ามีการเปลี่ยนแปลงอะไรเกิดขึ้นในบัญชีที่สอดคล้องกับ State Trie หาก Wang Qiang ต้องการพิสูจน์ให้ โหนดแสง (Li Gang กล่าวถึงก่อนหน้านี้) ว่าบล็อกหมายเลข 100 มีธุรกรรมบางอย่างและเป็นที่ทราบกันดีว่าโหนดแสงรู้ส่วนหัวของบล็อกหมายเลข 100 และรู้จัก TxnRoot จากนั้นปัญหาข้างต้นจะถูกเปลี่ยนเป็น: พิสูจน์ว่า Txn นี้มีอยู่ใน Merkle Tree ที่สอดคล้องกับ TxnRoot.At คราวนี้ Wang Qiang ต้องส่ง Merkle Proof ที่สอดคล้องกันเท่านั้น
ในสะพานข้ามสายโซ่จํานวนมากที่ใช้โซลูชันไคลเอนต์แบบเบา มักใช้น้ําหนักเบาและความเรียบง่ายของโหนดแสงและ Merkle Proof ที่กล่าวถึงข้างต้น ตัวอย่างเช่น บริดจ์ ZK เช่น Map Protocol จะตั้งค่าสัญญาบน ETH chain เพื่อรับส่วนหัวของบล็อกจากเชนอื่นๆ โดยเฉพาะ (เช่น Polygon) เมื่อ Relayer ส่งส่วนหัวของบล็อกที่ 100 ของ Polygon ไปยังสัญญาบนห่วงโซ่ ETH สัญญาจะตรวจสอบความถูกต้องของส่วนหัว (ตัวอย่างเช่น ได้รวบรวมลายเซ็นของโหนด POS 2/3 ในเครือข่าย Polygon หรือไม่) หากส่วนหัวถูกต้องและผู้ใช้ประกาศว่าเขาเริ่มต้น Txn แบบ cross-chain จาก Polygon ถึง ETH Txn จะถูกบรรจุลงในบล็อกที่ 100 ของ Polygon เขาเพียงต้องใช้ Merkle Proof เพื่อพิสูจน์ว่า Txn ข้ามสายโซ่ที่ริเริ่มโดยเขาสามารถสอดคล้องกับ TxnRoot ในส่วนหัวของบล็อกหมายเลข 100 (กล่าวอีกนัยหนึ่งคือการพิสูจน์ว่า Txn ข้ามสายโซ่ที่เริ่มต้นโดยคุณถูกบันทึกไว้ใน Polygon block 100) อย่างไรก็ตาม ZK Bridge จะใช้หลักฐานที่ไม่มีความรู้เพื่อบีบอัดจํานวนการคํานวณที่จําเป็นในการตรวจสอบ Merkle Proof ซึ่งช่วยลดต้นทุนการตรวจสอบของสัญญาสะพานข้ามสายโซ่
หลังจากพูดเกี่ยวกับ Merkle Tree, Merkle Root, และ Merkle Proof ให้เรากลับมาพูดถึงปัญหา DA และการโจมตีด้วยการทิ้งข้อมูลที่กล่าวถึงตอนเริ่มต้นของบทความ ปัญหานี้ได้ถูกพูดถึงตั้งแต่ปี 2017 ในเอกสารต้นฉบับของ Celestia มีที่มาของปัญหา DA ด้านการโจมตีด้วยการทิ้งข้อมูล เอกสารจากปี 2017 ถึง 2018 ที่ Vitalik กล่าวถึงว่าผู้ผลิตบล็อกอาจซ่อนข้อมูลบางส่วนของบล็อกไว้และปล่อยบล็อกที่ไม่สมบูรณ์ไปยังโลกภายนอก ผลที่เกิดขึ้นคือโหนดเต็มที่ไม่สามารถยืนยันความถูกต้องของการดำเนินการธุรกรรม/การเปลี่ยนสถานะได้
ในขณะนี้ผู้ผลิตบล็อกสามารถขโมยทรัพย์สินของผู้ใช้ เช่น โอนเหรียญทั้งหมดในบัญชี A ไปยังที่อื่น ๆ แต่โหนดเต็มไม่สามารถตัดสินใจว่า A เองได้ทำเช่นนี้หรือเปล่าเพราะพวกเขาไม่รู้ข้อมูลการทำธุรกรรมทั้งหมดที่รวมอยู่ในบล็อกล่าสุด
ในเครือข่ายสาธารณะชั้นที่ 1 เช่น Bitcoin หรือ Ethereum โหนดเต็มที่ซื่อสัตย์จะปฏิเสธบล็อกที่ไม่ถูกต้องด้านบนโดยตรง แต่โหนดแสงนั้นแตกต่างกัน พวกเขาได้รับเฉพาะหัวบล็อกจากเครือข่าย พวกเรารู้เพียง StateRoot และ TxnRoot แต่เราไม่ทราบว่า Header และบล็อกต้นฉบับที่สอดคล้องกับสองรากดังกล่าวมีความถูกต้องหรือไม่
ในเอกสารสีขาว Bitcoin นั้นมีความคิดบางส่วนเกี่ยวกับสถานการณ์นี้จริง ๆ ซาโตชิ นาคาโมโตะเคยเชื่อว่าผู้ใช้ส่วนใหญ่จะเอาชนะโหนดเบาที่มีความต้องการการกำหนดค่าการกำหนดค่าต่ำกว่า และโหนดเบาไม่สามารถตัดสินใจได้ว่าบล็อกที่สอดคล้องกับหัวบล็อกนั้นถูกต้องหรือไม่ หากบล็อกไม่ถูกต้องโหนดเต็มที่ซื่อสัตย์จะส่งการเตือนไปยังโหนดเบา
อย่างไรก็ตาม Satoshi Nakamoto ไม่ได้ดำเนินการวิเคราะห์เพิ่มเติมเกี่ยวกับวิธีการนี้ ภายหลัง Vitalik และผู้ก่อตั้ง Celestia Mustafa รวมความคิดนี้กับผลลัพธ์จากบุคคลอื่น ๆ และนำ DA data sampling เข้ามา เพื่อให้แน่ใจว่าโหนดเต็มความซื่อสามารถกู้คืนข้อมูลที่เสร็จสมบูรณ์ของแต่ละบล็อกและสร้างการเตือนเมื่อจำเป็น
หมายเหตุ: การสุ่มข้อมูล DA (DAS) และ Celestia ไม่ใช่จุดประสงค์หลักของบทความนี้ ผู้อ่านที่สนใจสามารถอ่านบทความที่ผ่านมาของ “Geek Web3” ได้“ความเข้าใจผิดเรื่องความพร้อมใช้ข้อมูล: DA = การเปิดเผยข้อมูล ≠ การเรียกข้อมูลย้อนหลัง”
พูดง่ายๆก็คือ Plasma เป็นโซลูชันการขยายตัวที่เผยแพร่เฉพาะส่วนหัวบล็อกของ Layer2 ถึง Layer1 และข้อมูล DA นอกส่วนหัวของบล็อก (ชุดข้อมูลธุรกรรมที่สมบูรณ์ / การเปลี่ยนแปลงสถานะของแต่ละบัญชี) กล่าวอีกนัยหนึ่งพลาสม่าเป็นเหมือนสะพานข้ามโซ่ตามลูกค้าแสง ใช้สัญญาเพื่อใช้ไคลเอนต์แสงเลเยอร์ 2 บนห่วงโซ่ ETH เมื่อผู้ใช้ประกาศว่าต้องการข้ามสินทรัพย์จาก L2 เป็น L1 พวกเขาจะต้องส่ง Merkle Proof เพื่อพิสูจน์ตัวเอง เป็นเจ้าของสินทรัพย์เหล่านี้ ตรรกะการตรวจสอบของสินทรัพย์ที่ข้ามจาก L2 ถึง L1 นั้นคล้ายกับสะพาน ZK ที่กล่าวถึงข้างต้นยกเว้นว่ารูปแบบการเชื่อมโยงของ Plasma นั้นขึ้นอยู่กับหลักฐานการฉ้อโกงไม่ใช่หลักฐาน ZK และอยู่ใกล้กับสิ่งที่เรียกว่า "สะพานในแง่ดี" คําขอถอนเงินจาก L2 ถึง L1 ในเครือข่าย Plasma จะไม่ถูกปล่อยออกมาทันที แต่จะมี "ระยะเวลาท้าทาย" สําหรับวัตถุประสงค์ของระยะเวลาการท้าทายเราจะอธิบายด้านล่าง
พลาสม่าไม่มีข้อกําหนดที่เข้มงวดสําหรับการเผยแพร่ข้อมูล/DA ซีเควนเซอร์/โอเปอเรเตอร์ออกอากาศเฉพาะบล็อก L2 แต่ละบล็อกนอกเครือข่ายและโหนดที่ยินดีรับบล็อก L2 สามารถรับได้เอง หลังจากนั้นตัวเรียงลําดับจะเผยแพร่ส่วนหัวของบล็อก L2 ไปยัง Layer1 ตัวอย่างเช่น ซีเควนเซอร์จะออกอากาศบล็อกหมายเลข 100 นอกเครือข่ายก่อน จากนั้นจึงเผยแพร่ส่วนหัวของบล็อกไปยังเชน หากบล็อก 100 มีธุรกรรมที่ไม่ถูกต้องโหนด Plasma ใด ๆ สามารถส่ง Merkle Proof ไปยังสัญญาบน ETH ก่อนสิ้นสุด "ระยะเวลาท้าทาย" พิสูจน์ว่าส่วนหัวของบล็อกหมายเลข 100 สามารถเชื่อมโยงกับธุรกรรมที่ไม่ถูกต้องนี่คือสถานการณ์ที่ครอบคลุมโดยหลักฐานการฉ้อโกง
สถานการณ์การใช้งานป้องกันการฉ้อโกงของ Plasma ยังรวมถึงสิ่งต่อไปนี้:1. สมมติว่าความคืบหน้าของเครือข่ายพลาสม่าถึงบล็อกหมายเลข 200 ในเวลานี้ผู้ใช้ A เริ่มต้นคําสั่งถอนตัวโดยบอกว่าเมื่อเขาอยู่ในบล็อกหมายเลข 100 เขามี 10 ETH แต่ในความเป็นจริงผู้ใช้ A ใช้ ETH ในบัญชีของเขาหลังจากบล็อก 100 ดังนั้นพฤติกรรมของ A คือ: หลังจากใช้เวลา 10 ETH เขาประกาศว่าเขามี 10 ETH ในอดีตและพยายามถอน ETH เหล่านี้ นี่คือ "การถอนสองครั้ง" ทั่วไปและการใช้จ่ายสองครั้ง ในเวลานี้ทุกคนสามารถส่ง Merkle Proof เพื่อพิสูจน์ว่าสถานะสินทรัพย์ล่าสุดของผู้ใช้ A ไม่เป็นไปตามคําสั่งถอนเงินของเขานั่นคือเพื่อพิสูจน์ว่า A ไม่ได้ถอนเงินที่ระบุไว้หลังจากบล็อก 100 (รูปแบบพลาสมาที่แตกต่างกันมีวิธีการพิสูจน์ที่ไม่สอดคล้องกันสําหรับสถานการณ์นี้และรูปแบบที่อยู่บัญชีนั้นลําบากกว่าการพิสูจน์การใช้จ่ายสองครั้งของ UTXO) 2. หากเป็นโซลูชันพลาสม่าที่ใช้โมเดล UTXO (ส่วนใหญ่เป็นกรณีในอดีต) ส่วนหัวของบล็อกจะไม่มี StateRoot มีเพียง TxnRoot เท่านั้น (UTXO ไม่รองรับรูปแบบที่อยู่บัญชีสไตล์ Ethereum และไม่มีสถานะสากลเช่น State Trie) การออกแบบ) กล่าวอีกนัยหนึ่งห่วงโซ่ที่ใช้โมเดล UTXO มีเพียงบันทึกธุรกรรมและไม่มีบันทึกสถานะ ในเวลานี้ซีเควนเซอร์เองอาจเปิดการโจมตีแบบใช้จ่ายสองครั้งเช่นการใช้ UTXO ที่ใช้อีกครั้งหรือการออก UTXO เพิ่มเติมให้กับผู้ใช้จากอากาศบาง ๆ ผู้ใช้ทุกคนสามารถส่งหลักฐาน Merkle เพื่อพิสูจน์ว่าบันทึกการใช้งานของ UTXO ปรากฏขึ้น (ถูกใช้ไป) ในบล็อกที่ผ่านมาหรือเพื่อพิสูจน์ว่ามีปัญหากับแหล่งที่มาในอดีตของ UTXO บางรายการ
การถือข้อมูลและเกมการออกไป
ณ จุดนี้ซีเควนเซอร์สามารถขโมยทรัพย์สินของผู้ใช้ตัวอย่างเช่นโอนเหรียญทั้งหมดในบัญชี A ไปยังบัญชี B จากนั้นโอนเงินจากบัญชี B ไปยังบัญชี C และในที่สุดก็เริ่มการถอนเงินในชื่อของ C บัญชี B และ C เป็นของซีเควนเซอร์เอง แม้ว่าการถ่ายโอน B->C จะเปิดเผยต่อสาธารณะ แต่ก็จะไม่ก่อให้เกิดอันตรายใด ๆ แต่ผู้เรียงลําดับสามารถระงับข้อมูลของการถ่ายโอนที่ไม่ถูกต้อง A->B และผู้คนไม่สามารถพิสูจน์ได้ว่ามีปัญหากับแหล่งที่มาของสินทรัพย์ของ B และ C (เพื่อพิสูจน์ว่าแหล่งที่มาของสินทรัพย์ของ B นั้นคาวจําเป็นต้องชี้ให้เห็นว่าลายเซ็นดิจิทัลของ "Txn บางอย่างที่โอนไปยัง B" ไม่ถูกต้อง) โซลูชันพลาสมาที่ใช้ UTXO มีมาตรการที่กําหนดเป้าหมาย ตัวอย่างเช่นเมื่อใครก็ตามเริ่มต้นการถอนเงินพวกเขาจะต้องส่งแหล่งข้อมูลทางประวัติศาสตร์ทั้งหมดของสินทรัพย์ แน่นอนว่าจะมีมาตรการปรับปรุงเพิ่มเติมในภายหลัง แต่ถ้าเป็นโซลูชันพลาสมาที่เข้ากันได้กับ EVM มันจะดูอ่อนแอในบริเวณนี้ เพราะถ้า Txn ที่เกี่ยวข้องกับสัญญามีส่วนเกี่ยวข้องการตรวจสอบกระบวนการเปลี่ยนสถานะในห่วงโซ่จะมีค่าใช้จ่ายจํานวนมากดังนั้นพลาสม่าซึ่งรองรับรูปแบบที่อยู่บัญชีและสัญญาอัจฉริยะไม่สามารถใช้รูปแบบการตรวจสอบเพื่อความถูกต้องของการถอนเงินได้อย่างง่ายดาย นอกจากนี้นอกเหนือจากหัวข้อข้างต้นไม่ว่าจะเป็น Plasma ตาม UTXO หรือรูปแบบที่อยู่บัญชีเมื่อข้อมูลหัก ณ ที่จ่ายเกิดขึ้นโดยทั่วไปจะทําให้ผู้คนตื่นตระหนกเพราะคุณไม่รู้ว่าธุรกรรมใดที่ซีเควนเซอร์ดําเนินการ โหนดพลาสมาจะพบสิ่งผิดปกติ แต่จะไม่สามารถออกหลักฐานการฉ้อโกงได้เนื่องจากซีเควนเซอร์พลาสม่าไม่ได้ออกข้อมูลที่จําเป็นสําหรับหลักฐานการฉ้อโกง ในเวลานี้ผู้คนจะเห็นเฉพาะส่วนหัวของบล็อกที่เกี่ยวข้อง แต่พวกเขาไม่รู้ว่าอะไรอยู่ในบล็อกหรือสิ่งที่กลายเป็นสินทรัพย์ในบัญชีของพวกเขา ทุกคนจะร่วมกันเริ่มต้นคําสั่งถอนและใช้ส่วนหัวของบล็อกที่เกี่ยวข้อง Merkle Proof พยายามถอนเงินทําให้เกิดสถานการณ์ที่รุนแรงที่เรียกว่า "Exit Game" สถานการณ์นี้จะนําไปสู่ " แตกตื่น " ทําให้เกิดความแออัดอย่างรุนแรงในเลเยอร์ 1 และจะยังคงทําให้ทรัพย์สินของบางคนได้รับความเสียหาย (ผู้ที่ไม่ได้รับการแจ้งเตือนโหนดที่ซื่อสัตย์หรือไม่ตรวจสอบ Twitter จะไม่ทราบว่าซีเควนเซอร์กําลังขโมยเหรียญ)
ดังนั้นพลาสม่าเป็นโซลูชันการขยายตัวเลเยอร์ 2 ที่ไม่น่าเชื่อถือ เมื่อการโจมตีหัก ณ ที่จ่ายข้อมูลเกิดขึ้น "Exit Game" จะถูกเรียกใช้ซึ่งอาจทําให้ผู้ใช้ประสบกับความสูญเสียได้อย่างง่ายดาย นี่เป็นเหตุผลสําคัญสําหรับการละทิ้ง ทําไมพลาสม่าถึงมีปัญหาในการรองรับสัญญาอัจฉริยะหลังจากพูดคุยเกี่ยวกับเกมทางออกและปัญหาการเก็บรักษาข้อมูลเรามาดูกันว่าทําไมพลาสม่าถึงมีปัญหาในการรองรับสัญญาอัจฉริยะ มีเหตุผลหลักสองประการ: ประการแรกหากเป็นสินทรัพย์ของสัญญา Defi ใครควรถอนออกเป็น Layer1? เพราะนี่คือการย้ายสถานะสัญญาจาก Layer2 เป็น Layer1 สมมติว่ามีคนฝากเงิน 100 ETH ลงในพูล DEX LP จากนั้นซีเควนเซอร์พลาสม่าทําสิ่งที่ชั่วร้ายและผู้คนต้องการถอนเงินอย่างเร่งด่วน ในเวลานี้ 100 ETH ของผู้ใช้ยังคงถูกควบคุมโดยสัญญา DEX ใครควรเป็นเจ้าของสินทรัพย์เหล่านี้ในเวลานี้? กล่าวถึงใน Layer1? วิธีที่ดีที่สุดคือให้ผู้ใช้แลกสินทรัพย์จาก DEX ก่อนจากนั้นให้ผู้ใช้โอนเงินไปยัง L1 ด้วยตนเอง แต่ปัญหาคือเครื่องคัดแยกพลาสม่าได้ทําความชั่วร้ายและอาจปฏิเสธคําขอของผู้ใช้ได้ตลอดเวลา ดังนั้นถ้าเราตั้งค่าเจ้าของสัญญา DEX ล่วงหน้าและอนุญาตให้เขายกทรัพย์สินตามสัญญาให้กับ L1 ในกรณีฉุกเฉินล่ะ? เห็นได้ชัดว่าสิ่งนี้จะทําให้เจ้าของสัญญาเป็นเจ้าของทรัพย์สินสาธารณะ เขาสามารถยกทรัพย์สินเหล่านี้ไปที่ L1 และวิ่งหนีได้ตลอดเวลา นี่ไม่น่ากลัวเหรอ? เห็นได้ชัดว่าวิธีจัดการกับ "ทรัพย์สินสาธารณะ" เหล่านี้ที่ควบคุมโดยสัญญา Defi เป็นเรื่องที่น่าประหลาดใจอย่างมาก สิ่งนี้เกี่ยวข้องกับปัญหาการกระจายอํานาจสาธารณะ ก่อนหน้านี้โจรเคยให้สัมภาษณ์"เป็นการยากที่จะสร้างสิ่งใหม่ในห่วงโซ่สาธารณะที่มีประสิทธิภาพสูงสัญญาอัจฉริยะเกี่ยวข้องกับการกระจายพลังงาน"นี้ได้ถูกกล่าวถึงในบทความ
ประการที่สองหากสัญญาไม่ได้รับอนุญาตให้โยกย้ายก็จะประสบกับความสูญเสียอย่างมาก หากสัญญาได้รับอนุญาตให้โยกย้ายสถานะไปยัง Layer1 จะมีการถอนสองครั้งที่ยากต่อการแก้ไขในหลักฐานการฉ้อโกงของ Plasma:ตัวอย่างเช่น weAssume ว่า Plasma ใช้รูปแบบที่อยู่บัญชีของ Ethereum และรองรับสัญญาอัจฉริยะ มีมิกเซอร์ซึ่งปัจจุบันฝากไว้กับ 100 ETH และเจ้าของเครื่องผสมถูกควบคุมโดย Bob สมมติว่าบ๊อบถอน 50 ETH จากเครื่องผสมในบล็อกที่ 100 หลังจากนั้น Bob ก็เริ่มคําสั่งถอนตัวและโอน 50 ETH ไปยัง Layer1 จากนั้น Bob ใช้สแนปช็อตสถานะสัญญาที่ผ่านมา (เช่นบล็อกที่ 70) เพื่อโยกย้ายสถานะที่ผ่านมาของมิกเซอร์ไปยัง Layer1 ซึ่งจะ 100 ETH ที่มิกเซอร์ "ใช้เป็นเจ้าของ" ถูกโอนไปยัง Layer1 ด้วย เห็นได้ชัดว่านี่เป็น "การถอนสองครั้ง" ทั่วไปนั่นคือการใช้จ่ายสองครั้ง 150 ETH ถูกกล่าวถึงโดย Bob ถึง Layer 1 แต่ผู้ใช้เครือข่าย Layer 2 จ่ายเงินเพียง 100 ETH ให้กับเครื่องผสม / Bob และ 50 ETH ถูกถอนออกจากอากาศบาง ๆ สิ่งนี้สามารถระบายปริมาณสํารองของพลาสม่าให้แห้งได้อย่างง่ายดาย。 ในทางทฤษฎีเราสามารถเริ่มต้นการพิสูจน์การฉ้อโกงเพื่อพิสูจน์ว่าสถานะของสัญญามิกเซอร์เปลี่ยนไปหลังจากบล็อกที่ 70 แต่ถ้าหลังจากบล็อกหมายเลข 70 Txn ทั้งหมดที่โต้ตอบกับสัญญามิกเซอร์ไม่ได้เปลี่ยนสถานะสัญญายกเว้นธุรกรรมที่ Bob เอาไป 50 ETH หากคุณต้องการแสดงหลักฐานให้ชี้ให้เห็นว่าสัญญามิกเซอร์อยู่ในหากมีการเปลี่ยนแปลงหลังจากบล็อกหมายเลข 70 Txn ทั้งหมดที่กล่าวถึงข้างต้นจะต้องทํางานบนห่วงโซ่ Ethereum และในที่สุดสัญญาพลาสมาสามารถยืนยันได้ สถานะของสัญญาเครื่องผสมมีการเปลี่ยนแปลงอย่างแน่นอน (เหตุผลที่มันซับซ้อนมากเป็นเพราะพิจารณาจากโครงสร้างของพลาสมาเอง) หากจํานวน Txn ในชุดนี้มีขนาดใหญ่มากหลักฐานการฉ้อโกงจะไม่สามารถเผยแพร่บน Layer1 ได้เลย (มันจะเกินขีด จํากัด ก๊าซของ Ethereum บล็อกเดียว)
https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598Theoreticallyในสถานการณ์การใช้จ่ายสองครั้งข้างต้นดูเหมือนว่าจะส่งเฉพาะสแนปช็อตสถานะปัจจุบันของมิกเซอร์ (จริงๆแล้วหลักฐาน Merkle สอดคล้องกับ StateRoot) แต่ในความเป็นจริงเนื่องจาก Plasma ไม่ได้เผยแพร่ข้อมูลธุรกรรมบนห่วงโซ่สัญญาจึงไม่สามารถระบุได้ว่าคุณว่าสแนปช็อตสถานะที่ส่งนั้นถูกต้องหรือไม่ นี่เป็นเพราะซีเควนเซอร์เองอาจเริ่มต้นการหัก ณ ที่จ่ายข้อมูลส่งสแนปช็อตสถานะที่ไม่ถูกต้องและปลุกระดมผู้ถอนใด ๆ ตัวอย่างเช่นเมื่อคุณประกาศว่าคุณมี 50 ETH ในบัญชีของคุณและเริ่มการถอนเงินซีเควนเซอร์อาจล้างบัญชีของคุณเป็น 0 เป็นการส่วนตัวจากนั้นเริ่มการหัก ณ ที่จ่ายข้อมูลส่ง StateRoot ที่ไม่ถูกต้องไปยังห่วงโซ่และส่งภาพรวมสถานะที่เกี่ยวข้อง ในขณะนี้เราไม่สามารถพิสูจน์ได้ว่าสแนปช็อต StateRoot และสถานะที่ส่งโดยซีเควนเซอร์ไม่ถูกต้องเนื่องจากได้เริ่มหัก ณ ที่จ่ายข้อมูลและคุณไม่สามารถรับข้อมูลที่เพียงพอสําหรับหลักฐานการฉ้อโกง เพื่อป้องกันสิ่งนี้เมื่อโหนดพลาสมาแสดงสแนปช็อตสถานะเพื่อพิสูจน์ว่ามีคนใช้จ่ายซ้ําซ้อนมันจะเล่นบันทึกการทําธุรกรรมซ้ําในช่วงเวลานี้ สิ่งนี้สามารถป้องกันไม่ให้ซีเควนเซอร์ใช้ข้อมูลหัก ณ ที่จ่ายเพื่อป้องกันไม่ให้ผู้อื่นถอนเงิน ใน Rollup หากคุณพบการถอนสองครั้งที่กล่าวถึงข้างต้นในทางทฤษฎีไม่จําเป็นต้องเล่นซ้ําธุรกรรมในอดีตเนื่องจาก Rollup ไม่มีปัญหาการหักภาษี ณ ที่จ่ายและจะ "บังคับ" ซีเควนเซอร์เพื่อเผยแพร่ข้อมูล DA บนห่วงโซ่ หากซีเควนเซอร์ Rollup ส่งสแนปช็อตสถานะ StateRoot ที่ไม่ถูกต้อง จะล้มเหลวในการตรวจสอบสัญญา (ZK Rollup) หรือจะถูกท้าทายในไม่ช้า (OP Rollup) ในความเป็นจริงนอกเหนือจากตัวอย่างเครื่องผสมเหรียญที่กล่าวถึงข้างต้นสถานการณ์ต่างๆเช่นสัญญาการลงนามหลายครั้งยังสามารถนําไปสู่การถอนเงินสองครั้งบนเครือข่ายพลาสม่า หลักฐานการทุจริตไม่มีประสิทธิภาพมากในการจัดการสถานการณ์นี้ สถานการณ์นี้ได้รับการวิเคราะห์ใน ETH Research โดยสรุปเนื่องจากโซลูชันพลาสม่าไม่เอื้อต่อสัญญาอัจฉริยะและโดยทั่วไปไม่รองรับการโยกย้ายสถานะสัญญาไปยังเลเยอร์ 1 พลาสมากระแสหลักจึงต้องใช้ UTXO หรือกลไกที่คล้ายกัน เนื่องจาก UTXO ไม่มีปัญหาความขัดแย้งในการเป็นเจ้าของสินทรัพย์และสามารถรองรับหลักฐานการฉ้อโกงได้เป็นอย่างดี (มีขนาดเล็กกว่ามาก) ราคาจึงมีสถานการณ์แอปพลิเคชันเดียวและโดยทั่วไปสามารถรองรับการโอนหรือการแลกเปลี่ยนหนังสือสั่งซื้อเท่านั้น นอกจากนี้เนื่องจากการพิสูจน์การฉ้อโกงนั้นมีการพึ่งพาข้อมูล DA อย่างมากหากเลเยอร์ DA ไม่น่าเชื่อถือจะเป็นการยากที่จะใช้ระบบพิสูจน์การทุจริตที่มีประสิทธิภาพ อย่างไรก็ตามการจัดการปัญหา DA ของ Plasma นั้นหยาบคายเกินไปและไม่สามารถแก้ปัญหาการโจมตีหัก ณ ที่จ่ายของข้อมูลได้ ด้วยการเพิ่มขึ้นของ Rollup พลาสม่าค่อยๆจางหายไปจากขั้นตอนของประวัติศาสตร์
เรื่องที่ทำให้ Plasma ถูกฝังเป็นเวลานาน และเหตุผลที่ Vitalik จะสนับสนุน Rollup อย่างแข็งขัน บ่งบอกไปที่สองจุดหลัก: การนำ DA ไปใช้ภายใต้เชน Ethereum ไม่เชื่อถือได้ และการเกิดการอดทนข้อมูลง่ายจะเกิดขึ้นเมื่อข้อมูลถูกยึดกัก หากเกิดการอดทนข้อมูลยากที่จะดำเนินการพิสูจน์การปฏิเสธทุจริต; การออกแบบกลไกของ Plasma เองไม่เอื้นมิต่อสัญญาอัจฉริยะอย่างมาก และมันยากมากที่จะสนับสนุนการย้ายสถานะของสัญญาไปยังเลเยอร์ 1 จุดเหล่านี้ทำให้ Plasma เกือบจะใช้แค่โมเดล UTXO หรือโมเดลที่คล้ายกันเท่านั้น
เพื่อให้เข้าใจประเด็นหลักสองข้อข้างต้นเรามาเริ่มกันที่ปัญหาของ DA และการหักภาษี ณ ที่จ่าย ชื่อเต็มของ DA คือ Data Availability ซึ่งแปลตามตัวอักษรว่าความพร้อมใช้งานของข้อมูล ตอนนี้มันถูกใช้ในทางที่ผิดโดยคนจํานวนมาก มากจนสับสนอย่างมากกับ "ข้อมูลในอดีตสามารถตรวจสอบได้" แต่ในความเป็นจริง "สามารถตรวจสอบข้อมูลในอดีตได้" และ "หลักฐานการจัดเก็บ" เป็นปัญหาที่ Filecoin และ Arweave ได้แก้ไขแล้ว จากข้อมูลของ Ethereum Foundation และ Celestia ปัญหา DA จะสํารวจสถานการณ์การหักภาษี ณ ที่จ่ายของข้อมูลอย่างหมดจด
เพื่ออธิบายถึงความหมายของการโจมตีการถือข้อมูลและปัญหา DA จริง ๆ เราจำเป็นต้องพูดถึง Merkle Root และ Merkle Tree อย่างสั้น ๆ ก่อน ใน Ethereum หรือโซ่สาธารณะส่วนใหญ่ โครงสร้างข้อมูลที่เหมือนต้นไม้ที่เรียกว่า Merkle Tree ถูกใช้เป็นสรุป/ไดเร็กทอรี่ของสถานะของบัญชีทั้งหมด หรือเพื่อบันทึกรายการธุรกรรมที่ถูกแพ็คเกจในแต่ละบล็อก
โหนดใบไม้ที่อยู่ที่ด้านล่างของ Merkle Tree ประกอบด้วย hashes ของข้อมูลเดิมเช่น ธุรกรรมหรือสถานะบัญชี การนับรวม hashes เหล่านี้และวนซ้ำ ๆ และสุดท้าย Merkle Root สามารถคำนวณได้
(บันทึกที่ด้านล่างของรูปคือชุดข้อมูลดั้งเดิมที่สอดคล้องกับโหนดใบ) Merkle Root มีคุณสมบัติ:หากโหนดใบที่ด้านล่างของ Merkle Tree เปลี่ยนแปลง Merkle Root ที่คํานวณได้จะเปลี่ยนไปด้วย ดังนั้น Merkle Trees ที่สอดคล้องกับชุดข้อมูลดั้งเดิมที่แตกต่างกันจะมี Merkle Roots ที่แตกต่างกันเช่นเดียวกับที่แต่ละคนมีลายนิ้วมือที่แตกต่างกัน เทคโนโลยีการตรวจสอบหลักฐานที่เรียกว่า Merkle Proof ใช้ประโยชน์จากคุณสมบัติของ Merkle Tree นี้ ยกตัวอย่างภาพด้านบนหาก Li Gang รู้เพียงคุณค่าของ Merkle Root ในภาพเขาไม่รู้ว่า Merkle Tree ที่สมบูรณ์มีข้อมูลอะไรบ้าง เราต้องการพิสูจน์ให้ Li Gang เห็นว่า Record 3 เกี่ยวข้องกับ Root ในภาพหรือกล่าวอีกนัยหนึ่งคือพิสูจน์ว่าแฮชของ Record 3 มีอยู่ใน Merkle Tree ที่สอดคล้องกับ Root เราจําเป็นต้องส่ง Record3 และบล็อกข้อมูลย่อยสามบล็อกที่มีเครื่องหมายสีเทาให้กับ Li Gang โดยไม่ต้องส่ง Merkle Tree ทั้งหมดหรือโหนดใบไม้ทั้งหมด นั่นคือความเรียบง่ายของ Merkle Proof เมื่อบันทึกพื้นฐานของ Merkle Tree มีใบจํานวนมากเช่นมันมี 2 ถึง 20th power ของบล็อกข้อมูล (ประมาณ 1 ล้าน) Merkle Proof จะต้องมีบล็อกข้อมูลอย่างน้อย 21 บล็อกเท่านั้น
(บล็อกข้อมูล 30 และ H2 ในรูปสามารถประกอบเป็น Merkle Proof ซึ่งพิสูจน์ว่าบล็อกข้อมูล 30 มีอยู่ใน Merkle Tree ที่สอดคล้องกับ H0)"ความเรียบง่าย" ของ Merkle Proof นี้มักใช้ใน Bitcoin, Ethereum หรือสะพานข้ามสายโซ่ โหนดแสงที่เรารู้จักคือ Li Gang ที่กล่าวถึงข้างต้น เขาได้รับส่วนหัวของบล็อกจากโหนดเต็มเท่านั้นไม่ใช่บล็อกที่สมบูรณ์ ต้องเน้นที่นี่ว่า Ethereum ใช้ต้นไม้ Merkle ที่เรียกว่า State Trie เพื่อใช้เป็นบทสรุปของบัญชีทั้งหมด ตราบใดที่สถานะของบัญชีที่เกี่ยวข้องกับ State Trie เปลี่ยนไป Merkle Root of the State Trie ที่เรียกว่า StateRoot จะเปลี่ยนไป ในส่วนหัวบล็อกของ Ethereum StateRoot จะถูกบันทึกและ Merkle Root ของต้นไม้ธุรกรรม (เรียกว่า Txn Root) จะถูกบันทึกไว้ด้วยความแตกต่างอย่างหนึ่งระหว่างแผนผังธุรกรรมและต้นไม้สถานะคือข้อมูลที่แสดงโดยใบพื้นฐานนั้นแตกต่างกัน หากบล็อกหมายเลข 100 มีธุรกรรม 300 รายการ ใบของแผนผังธุรกรรมจะแสดง 300 Txn เหล่านี้ ความแตกต่างอีกประการหนึ่งคือปริมาณข้อมูลโดยรวมของ State Trie มีขนาดใหญ่มาก ใบด้านล่างของมันสอดคล้องกับที่อยู่ทั้งหมดในห่วงโซ่ Ethereum (ในความเป็นจริงมีแฮชของรัฐที่ล้าสมัยจํานวนมาก) ดังนั้นชุดข้อมูลดั้งเดิมที่สอดคล้องกับ State Trie จะไม่ถูกปล่อยออกมา ในบล็อกเฉพาะ StateRoot เท่านั้นที่ถูกบันทึกไว้ในส่วนหัวของบล็อก ชุดข้อมูลดั้งเดิมของแผนผังธุรกรรมคือข้อมูล Txn ในแต่ละบล็อก และ TxnRoot ของทรีนี้จะถูกบันทึกไว้ในส่วนหัวของบล็อก
เนื่องจากโหนดแสงได้รับเฉพาะส่วนหัวของบล็อกและรู้เฉพาะ StateRoot และ TxnRoot จึงไม่สามารถอนุมาน Merkle Tree ที่สมบูรณ์ตาม Root (ซึ่งกําหนดโดยคุณสมบัติของ Merkle Tree และฟังก์ชันแฮช) ดังนั้นโหนด Light จึงไม่สามารถทราบข้อมูลธุรกรรมที่มีอยู่ในบล็อกได้และพวกเขาไม่ทราบว่ามีการเปลี่ยนแปลงอะไรเกิดขึ้นในบัญชีที่สอดคล้องกับ State Trie หาก Wang Qiang ต้องการพิสูจน์ให้ โหนดแสง (Li Gang กล่าวถึงก่อนหน้านี้) ว่าบล็อกหมายเลข 100 มีธุรกรรมบางอย่างและเป็นที่ทราบกันดีว่าโหนดแสงรู้ส่วนหัวของบล็อกหมายเลข 100 และรู้จัก TxnRoot จากนั้นปัญหาข้างต้นจะถูกเปลี่ยนเป็น: พิสูจน์ว่า Txn นี้มีอยู่ใน Merkle Tree ที่สอดคล้องกับ TxnRoot.At คราวนี้ Wang Qiang ต้องส่ง Merkle Proof ที่สอดคล้องกันเท่านั้น
ในสะพานข้ามสายโซ่จํานวนมากที่ใช้โซลูชันไคลเอนต์แบบเบา มักใช้น้ําหนักเบาและความเรียบง่ายของโหนดแสงและ Merkle Proof ที่กล่าวถึงข้างต้น ตัวอย่างเช่น บริดจ์ ZK เช่น Map Protocol จะตั้งค่าสัญญาบน ETH chain เพื่อรับส่วนหัวของบล็อกจากเชนอื่นๆ โดยเฉพาะ (เช่น Polygon) เมื่อ Relayer ส่งส่วนหัวของบล็อกที่ 100 ของ Polygon ไปยังสัญญาบนห่วงโซ่ ETH สัญญาจะตรวจสอบความถูกต้องของส่วนหัว (ตัวอย่างเช่น ได้รวบรวมลายเซ็นของโหนด POS 2/3 ในเครือข่าย Polygon หรือไม่) หากส่วนหัวถูกต้องและผู้ใช้ประกาศว่าเขาเริ่มต้น Txn แบบ cross-chain จาก Polygon ถึง ETH Txn จะถูกบรรจุลงในบล็อกที่ 100 ของ Polygon เขาเพียงต้องใช้ Merkle Proof เพื่อพิสูจน์ว่า Txn ข้ามสายโซ่ที่ริเริ่มโดยเขาสามารถสอดคล้องกับ TxnRoot ในส่วนหัวของบล็อกหมายเลข 100 (กล่าวอีกนัยหนึ่งคือการพิสูจน์ว่า Txn ข้ามสายโซ่ที่เริ่มต้นโดยคุณถูกบันทึกไว้ใน Polygon block 100) อย่างไรก็ตาม ZK Bridge จะใช้หลักฐานที่ไม่มีความรู้เพื่อบีบอัดจํานวนการคํานวณที่จําเป็นในการตรวจสอบ Merkle Proof ซึ่งช่วยลดต้นทุนการตรวจสอบของสัญญาสะพานข้ามสายโซ่
หลังจากพูดเกี่ยวกับ Merkle Tree, Merkle Root, และ Merkle Proof ให้เรากลับมาพูดถึงปัญหา DA และการโจมตีด้วยการทิ้งข้อมูลที่กล่าวถึงตอนเริ่มต้นของบทความ ปัญหานี้ได้ถูกพูดถึงตั้งแต่ปี 2017 ในเอกสารต้นฉบับของ Celestia มีที่มาของปัญหา DA ด้านการโจมตีด้วยการทิ้งข้อมูล เอกสารจากปี 2017 ถึง 2018 ที่ Vitalik กล่าวถึงว่าผู้ผลิตบล็อกอาจซ่อนข้อมูลบางส่วนของบล็อกไว้และปล่อยบล็อกที่ไม่สมบูรณ์ไปยังโลกภายนอก ผลที่เกิดขึ้นคือโหนดเต็มที่ไม่สามารถยืนยันความถูกต้องของการดำเนินการธุรกรรม/การเปลี่ยนสถานะได้
ในขณะนี้ผู้ผลิตบล็อกสามารถขโมยทรัพย์สินของผู้ใช้ เช่น โอนเหรียญทั้งหมดในบัญชี A ไปยังที่อื่น ๆ แต่โหนดเต็มไม่สามารถตัดสินใจว่า A เองได้ทำเช่นนี้หรือเปล่าเพราะพวกเขาไม่รู้ข้อมูลการทำธุรกรรมทั้งหมดที่รวมอยู่ในบล็อกล่าสุด
ในเครือข่ายสาธารณะชั้นที่ 1 เช่น Bitcoin หรือ Ethereum โหนดเต็มที่ซื่อสัตย์จะปฏิเสธบล็อกที่ไม่ถูกต้องด้านบนโดยตรง แต่โหนดแสงนั้นแตกต่างกัน พวกเขาได้รับเฉพาะหัวบล็อกจากเครือข่าย พวกเรารู้เพียง StateRoot และ TxnRoot แต่เราไม่ทราบว่า Header และบล็อกต้นฉบับที่สอดคล้องกับสองรากดังกล่าวมีความถูกต้องหรือไม่
ในเอกสารสีขาว Bitcoin นั้นมีความคิดบางส่วนเกี่ยวกับสถานการณ์นี้จริง ๆ ซาโตชิ นาคาโมโตะเคยเชื่อว่าผู้ใช้ส่วนใหญ่จะเอาชนะโหนดเบาที่มีความต้องการการกำหนดค่าการกำหนดค่าต่ำกว่า และโหนดเบาไม่สามารถตัดสินใจได้ว่าบล็อกที่สอดคล้องกับหัวบล็อกนั้นถูกต้องหรือไม่ หากบล็อกไม่ถูกต้องโหนดเต็มที่ซื่อสัตย์จะส่งการเตือนไปยังโหนดเบา
อย่างไรก็ตาม Satoshi Nakamoto ไม่ได้ดำเนินการวิเคราะห์เพิ่มเติมเกี่ยวกับวิธีการนี้ ภายหลัง Vitalik และผู้ก่อตั้ง Celestia Mustafa รวมความคิดนี้กับผลลัพธ์จากบุคคลอื่น ๆ และนำ DA data sampling เข้ามา เพื่อให้แน่ใจว่าโหนดเต็มความซื่อสามารถกู้คืนข้อมูลที่เสร็จสมบูรณ์ของแต่ละบล็อกและสร้างการเตือนเมื่อจำเป็น
หมายเหตุ: การสุ่มข้อมูล DA (DAS) และ Celestia ไม่ใช่จุดประสงค์หลักของบทความนี้ ผู้อ่านที่สนใจสามารถอ่านบทความที่ผ่านมาของ “Geek Web3” ได้“ความเข้าใจผิดเรื่องความพร้อมใช้ข้อมูล: DA = การเปิดเผยข้อมูล ≠ การเรียกข้อมูลย้อนหลัง”
พูดง่ายๆก็คือ Plasma เป็นโซลูชันการขยายตัวที่เผยแพร่เฉพาะส่วนหัวบล็อกของ Layer2 ถึง Layer1 และข้อมูล DA นอกส่วนหัวของบล็อก (ชุดข้อมูลธุรกรรมที่สมบูรณ์ / การเปลี่ยนแปลงสถานะของแต่ละบัญชี) กล่าวอีกนัยหนึ่งพลาสม่าเป็นเหมือนสะพานข้ามโซ่ตามลูกค้าแสง ใช้สัญญาเพื่อใช้ไคลเอนต์แสงเลเยอร์ 2 บนห่วงโซ่ ETH เมื่อผู้ใช้ประกาศว่าต้องการข้ามสินทรัพย์จาก L2 เป็น L1 พวกเขาจะต้องส่ง Merkle Proof เพื่อพิสูจน์ตัวเอง เป็นเจ้าของสินทรัพย์เหล่านี้ ตรรกะการตรวจสอบของสินทรัพย์ที่ข้ามจาก L2 ถึง L1 นั้นคล้ายกับสะพาน ZK ที่กล่าวถึงข้างต้นยกเว้นว่ารูปแบบการเชื่อมโยงของ Plasma นั้นขึ้นอยู่กับหลักฐานการฉ้อโกงไม่ใช่หลักฐาน ZK และอยู่ใกล้กับสิ่งที่เรียกว่า "สะพานในแง่ดี" คําขอถอนเงินจาก L2 ถึง L1 ในเครือข่าย Plasma จะไม่ถูกปล่อยออกมาทันที แต่จะมี "ระยะเวลาท้าทาย" สําหรับวัตถุประสงค์ของระยะเวลาการท้าทายเราจะอธิบายด้านล่าง
พลาสม่าไม่มีข้อกําหนดที่เข้มงวดสําหรับการเผยแพร่ข้อมูล/DA ซีเควนเซอร์/โอเปอเรเตอร์ออกอากาศเฉพาะบล็อก L2 แต่ละบล็อกนอกเครือข่ายและโหนดที่ยินดีรับบล็อก L2 สามารถรับได้เอง หลังจากนั้นตัวเรียงลําดับจะเผยแพร่ส่วนหัวของบล็อก L2 ไปยัง Layer1 ตัวอย่างเช่น ซีเควนเซอร์จะออกอากาศบล็อกหมายเลข 100 นอกเครือข่ายก่อน จากนั้นจึงเผยแพร่ส่วนหัวของบล็อกไปยังเชน หากบล็อก 100 มีธุรกรรมที่ไม่ถูกต้องโหนด Plasma ใด ๆ สามารถส่ง Merkle Proof ไปยังสัญญาบน ETH ก่อนสิ้นสุด "ระยะเวลาท้าทาย" พิสูจน์ว่าส่วนหัวของบล็อกหมายเลข 100 สามารถเชื่อมโยงกับธุรกรรมที่ไม่ถูกต้องนี่คือสถานการณ์ที่ครอบคลุมโดยหลักฐานการฉ้อโกง
สถานการณ์การใช้งานป้องกันการฉ้อโกงของ Plasma ยังรวมถึงสิ่งต่อไปนี้:1. สมมติว่าความคืบหน้าของเครือข่ายพลาสม่าถึงบล็อกหมายเลข 200 ในเวลานี้ผู้ใช้ A เริ่มต้นคําสั่งถอนตัวโดยบอกว่าเมื่อเขาอยู่ในบล็อกหมายเลข 100 เขามี 10 ETH แต่ในความเป็นจริงผู้ใช้ A ใช้ ETH ในบัญชีของเขาหลังจากบล็อก 100 ดังนั้นพฤติกรรมของ A คือ: หลังจากใช้เวลา 10 ETH เขาประกาศว่าเขามี 10 ETH ในอดีตและพยายามถอน ETH เหล่านี้ นี่คือ "การถอนสองครั้ง" ทั่วไปและการใช้จ่ายสองครั้ง ในเวลานี้ทุกคนสามารถส่ง Merkle Proof เพื่อพิสูจน์ว่าสถานะสินทรัพย์ล่าสุดของผู้ใช้ A ไม่เป็นไปตามคําสั่งถอนเงินของเขานั่นคือเพื่อพิสูจน์ว่า A ไม่ได้ถอนเงินที่ระบุไว้หลังจากบล็อก 100 (รูปแบบพลาสมาที่แตกต่างกันมีวิธีการพิสูจน์ที่ไม่สอดคล้องกันสําหรับสถานการณ์นี้และรูปแบบที่อยู่บัญชีนั้นลําบากกว่าการพิสูจน์การใช้จ่ายสองครั้งของ UTXO) 2. หากเป็นโซลูชันพลาสม่าที่ใช้โมเดล UTXO (ส่วนใหญ่เป็นกรณีในอดีต) ส่วนหัวของบล็อกจะไม่มี StateRoot มีเพียง TxnRoot เท่านั้น (UTXO ไม่รองรับรูปแบบที่อยู่บัญชีสไตล์ Ethereum และไม่มีสถานะสากลเช่น State Trie) การออกแบบ) กล่าวอีกนัยหนึ่งห่วงโซ่ที่ใช้โมเดล UTXO มีเพียงบันทึกธุรกรรมและไม่มีบันทึกสถานะ ในเวลานี้ซีเควนเซอร์เองอาจเปิดการโจมตีแบบใช้จ่ายสองครั้งเช่นการใช้ UTXO ที่ใช้อีกครั้งหรือการออก UTXO เพิ่มเติมให้กับผู้ใช้จากอากาศบาง ๆ ผู้ใช้ทุกคนสามารถส่งหลักฐาน Merkle เพื่อพิสูจน์ว่าบันทึกการใช้งานของ UTXO ปรากฏขึ้น (ถูกใช้ไป) ในบล็อกที่ผ่านมาหรือเพื่อพิสูจน์ว่ามีปัญหากับแหล่งที่มาในอดีตของ UTXO บางรายการ
การถือข้อมูลและเกมการออกไป
ณ จุดนี้ซีเควนเซอร์สามารถขโมยทรัพย์สินของผู้ใช้ตัวอย่างเช่นโอนเหรียญทั้งหมดในบัญชี A ไปยังบัญชี B จากนั้นโอนเงินจากบัญชี B ไปยังบัญชี C และในที่สุดก็เริ่มการถอนเงินในชื่อของ C บัญชี B และ C เป็นของซีเควนเซอร์เอง แม้ว่าการถ่ายโอน B->C จะเปิดเผยต่อสาธารณะ แต่ก็จะไม่ก่อให้เกิดอันตรายใด ๆ แต่ผู้เรียงลําดับสามารถระงับข้อมูลของการถ่ายโอนที่ไม่ถูกต้อง A->B และผู้คนไม่สามารถพิสูจน์ได้ว่ามีปัญหากับแหล่งที่มาของสินทรัพย์ของ B และ C (เพื่อพิสูจน์ว่าแหล่งที่มาของสินทรัพย์ของ B นั้นคาวจําเป็นต้องชี้ให้เห็นว่าลายเซ็นดิจิทัลของ "Txn บางอย่างที่โอนไปยัง B" ไม่ถูกต้อง) โซลูชันพลาสมาที่ใช้ UTXO มีมาตรการที่กําหนดเป้าหมาย ตัวอย่างเช่นเมื่อใครก็ตามเริ่มต้นการถอนเงินพวกเขาจะต้องส่งแหล่งข้อมูลทางประวัติศาสตร์ทั้งหมดของสินทรัพย์ แน่นอนว่าจะมีมาตรการปรับปรุงเพิ่มเติมในภายหลัง แต่ถ้าเป็นโซลูชันพลาสมาที่เข้ากันได้กับ EVM มันจะดูอ่อนแอในบริเวณนี้ เพราะถ้า Txn ที่เกี่ยวข้องกับสัญญามีส่วนเกี่ยวข้องการตรวจสอบกระบวนการเปลี่ยนสถานะในห่วงโซ่จะมีค่าใช้จ่ายจํานวนมากดังนั้นพลาสม่าซึ่งรองรับรูปแบบที่อยู่บัญชีและสัญญาอัจฉริยะไม่สามารถใช้รูปแบบการตรวจสอบเพื่อความถูกต้องของการถอนเงินได้อย่างง่ายดาย นอกจากนี้นอกเหนือจากหัวข้อข้างต้นไม่ว่าจะเป็น Plasma ตาม UTXO หรือรูปแบบที่อยู่บัญชีเมื่อข้อมูลหัก ณ ที่จ่ายเกิดขึ้นโดยทั่วไปจะทําให้ผู้คนตื่นตระหนกเพราะคุณไม่รู้ว่าธุรกรรมใดที่ซีเควนเซอร์ดําเนินการ โหนดพลาสมาจะพบสิ่งผิดปกติ แต่จะไม่สามารถออกหลักฐานการฉ้อโกงได้เนื่องจากซีเควนเซอร์พลาสม่าไม่ได้ออกข้อมูลที่จําเป็นสําหรับหลักฐานการฉ้อโกง ในเวลานี้ผู้คนจะเห็นเฉพาะส่วนหัวของบล็อกที่เกี่ยวข้อง แต่พวกเขาไม่รู้ว่าอะไรอยู่ในบล็อกหรือสิ่งที่กลายเป็นสินทรัพย์ในบัญชีของพวกเขา ทุกคนจะร่วมกันเริ่มต้นคําสั่งถอนและใช้ส่วนหัวของบล็อกที่เกี่ยวข้อง Merkle Proof พยายามถอนเงินทําให้เกิดสถานการณ์ที่รุนแรงที่เรียกว่า "Exit Game" สถานการณ์นี้จะนําไปสู่ " แตกตื่น " ทําให้เกิดความแออัดอย่างรุนแรงในเลเยอร์ 1 และจะยังคงทําให้ทรัพย์สินของบางคนได้รับความเสียหาย (ผู้ที่ไม่ได้รับการแจ้งเตือนโหนดที่ซื่อสัตย์หรือไม่ตรวจสอบ Twitter จะไม่ทราบว่าซีเควนเซอร์กําลังขโมยเหรียญ)
ดังนั้นพลาสม่าเป็นโซลูชันการขยายตัวเลเยอร์ 2 ที่ไม่น่าเชื่อถือ เมื่อการโจมตีหัก ณ ที่จ่ายข้อมูลเกิดขึ้น "Exit Game" จะถูกเรียกใช้ซึ่งอาจทําให้ผู้ใช้ประสบกับความสูญเสียได้อย่างง่ายดาย นี่เป็นเหตุผลสําคัญสําหรับการละทิ้ง ทําไมพลาสม่าถึงมีปัญหาในการรองรับสัญญาอัจฉริยะหลังจากพูดคุยเกี่ยวกับเกมทางออกและปัญหาการเก็บรักษาข้อมูลเรามาดูกันว่าทําไมพลาสม่าถึงมีปัญหาในการรองรับสัญญาอัจฉริยะ มีเหตุผลหลักสองประการ: ประการแรกหากเป็นสินทรัพย์ของสัญญา Defi ใครควรถอนออกเป็น Layer1? เพราะนี่คือการย้ายสถานะสัญญาจาก Layer2 เป็น Layer1 สมมติว่ามีคนฝากเงิน 100 ETH ลงในพูล DEX LP จากนั้นซีเควนเซอร์พลาสม่าทําสิ่งที่ชั่วร้ายและผู้คนต้องการถอนเงินอย่างเร่งด่วน ในเวลานี้ 100 ETH ของผู้ใช้ยังคงถูกควบคุมโดยสัญญา DEX ใครควรเป็นเจ้าของสินทรัพย์เหล่านี้ในเวลานี้? กล่าวถึงใน Layer1? วิธีที่ดีที่สุดคือให้ผู้ใช้แลกสินทรัพย์จาก DEX ก่อนจากนั้นให้ผู้ใช้โอนเงินไปยัง L1 ด้วยตนเอง แต่ปัญหาคือเครื่องคัดแยกพลาสม่าได้ทําความชั่วร้ายและอาจปฏิเสธคําขอของผู้ใช้ได้ตลอดเวลา ดังนั้นถ้าเราตั้งค่าเจ้าของสัญญา DEX ล่วงหน้าและอนุญาตให้เขายกทรัพย์สินตามสัญญาให้กับ L1 ในกรณีฉุกเฉินล่ะ? เห็นได้ชัดว่าสิ่งนี้จะทําให้เจ้าของสัญญาเป็นเจ้าของทรัพย์สินสาธารณะ เขาสามารถยกทรัพย์สินเหล่านี้ไปที่ L1 และวิ่งหนีได้ตลอดเวลา นี่ไม่น่ากลัวเหรอ? เห็นได้ชัดว่าวิธีจัดการกับ "ทรัพย์สินสาธารณะ" เหล่านี้ที่ควบคุมโดยสัญญา Defi เป็นเรื่องที่น่าประหลาดใจอย่างมาก สิ่งนี้เกี่ยวข้องกับปัญหาการกระจายอํานาจสาธารณะ ก่อนหน้านี้โจรเคยให้สัมภาษณ์"เป็นการยากที่จะสร้างสิ่งใหม่ในห่วงโซ่สาธารณะที่มีประสิทธิภาพสูงสัญญาอัจฉริยะเกี่ยวข้องกับการกระจายพลังงาน"นี้ได้ถูกกล่าวถึงในบทความ
ประการที่สองหากสัญญาไม่ได้รับอนุญาตให้โยกย้ายก็จะประสบกับความสูญเสียอย่างมาก หากสัญญาได้รับอนุญาตให้โยกย้ายสถานะไปยัง Layer1 จะมีการถอนสองครั้งที่ยากต่อการแก้ไขในหลักฐานการฉ้อโกงของ Plasma:ตัวอย่างเช่น weAssume ว่า Plasma ใช้รูปแบบที่อยู่บัญชีของ Ethereum และรองรับสัญญาอัจฉริยะ มีมิกเซอร์ซึ่งปัจจุบันฝากไว้กับ 100 ETH และเจ้าของเครื่องผสมถูกควบคุมโดย Bob สมมติว่าบ๊อบถอน 50 ETH จากเครื่องผสมในบล็อกที่ 100 หลังจากนั้น Bob ก็เริ่มคําสั่งถอนตัวและโอน 50 ETH ไปยัง Layer1 จากนั้น Bob ใช้สแนปช็อตสถานะสัญญาที่ผ่านมา (เช่นบล็อกที่ 70) เพื่อโยกย้ายสถานะที่ผ่านมาของมิกเซอร์ไปยัง Layer1 ซึ่งจะ 100 ETH ที่มิกเซอร์ "ใช้เป็นเจ้าของ" ถูกโอนไปยัง Layer1 ด้วย เห็นได้ชัดว่านี่เป็น "การถอนสองครั้ง" ทั่วไปนั่นคือการใช้จ่ายสองครั้ง 150 ETH ถูกกล่าวถึงโดย Bob ถึง Layer 1 แต่ผู้ใช้เครือข่าย Layer 2 จ่ายเงินเพียง 100 ETH ให้กับเครื่องผสม / Bob และ 50 ETH ถูกถอนออกจากอากาศบาง ๆ สิ่งนี้สามารถระบายปริมาณสํารองของพลาสม่าให้แห้งได้อย่างง่ายดาย。 ในทางทฤษฎีเราสามารถเริ่มต้นการพิสูจน์การฉ้อโกงเพื่อพิสูจน์ว่าสถานะของสัญญามิกเซอร์เปลี่ยนไปหลังจากบล็อกที่ 70 แต่ถ้าหลังจากบล็อกหมายเลข 70 Txn ทั้งหมดที่โต้ตอบกับสัญญามิกเซอร์ไม่ได้เปลี่ยนสถานะสัญญายกเว้นธุรกรรมที่ Bob เอาไป 50 ETH หากคุณต้องการแสดงหลักฐานให้ชี้ให้เห็นว่าสัญญามิกเซอร์อยู่ในหากมีการเปลี่ยนแปลงหลังจากบล็อกหมายเลข 70 Txn ทั้งหมดที่กล่าวถึงข้างต้นจะต้องทํางานบนห่วงโซ่ Ethereum และในที่สุดสัญญาพลาสมาสามารถยืนยันได้ สถานะของสัญญาเครื่องผสมมีการเปลี่ยนแปลงอย่างแน่นอน (เหตุผลที่มันซับซ้อนมากเป็นเพราะพิจารณาจากโครงสร้างของพลาสมาเอง) หากจํานวน Txn ในชุดนี้มีขนาดใหญ่มากหลักฐานการฉ้อโกงจะไม่สามารถเผยแพร่บน Layer1 ได้เลย (มันจะเกินขีด จํากัด ก๊าซของ Ethereum บล็อกเดียว)
https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598Theoreticallyในสถานการณ์การใช้จ่ายสองครั้งข้างต้นดูเหมือนว่าจะส่งเฉพาะสแนปช็อตสถานะปัจจุบันของมิกเซอร์ (จริงๆแล้วหลักฐาน Merkle สอดคล้องกับ StateRoot) แต่ในความเป็นจริงเนื่องจาก Plasma ไม่ได้เผยแพร่ข้อมูลธุรกรรมบนห่วงโซ่สัญญาจึงไม่สามารถระบุได้ว่าคุณว่าสแนปช็อตสถานะที่ส่งนั้นถูกต้องหรือไม่ นี่เป็นเพราะซีเควนเซอร์เองอาจเริ่มต้นการหัก ณ ที่จ่ายข้อมูลส่งสแนปช็อตสถานะที่ไม่ถูกต้องและปลุกระดมผู้ถอนใด ๆ ตัวอย่างเช่นเมื่อคุณประกาศว่าคุณมี 50 ETH ในบัญชีของคุณและเริ่มการถอนเงินซีเควนเซอร์อาจล้างบัญชีของคุณเป็น 0 เป็นการส่วนตัวจากนั้นเริ่มการหัก ณ ที่จ่ายข้อมูลส่ง StateRoot ที่ไม่ถูกต้องไปยังห่วงโซ่และส่งภาพรวมสถานะที่เกี่ยวข้อง ในขณะนี้เราไม่สามารถพิสูจน์ได้ว่าสแนปช็อต StateRoot และสถานะที่ส่งโดยซีเควนเซอร์ไม่ถูกต้องเนื่องจากได้เริ่มหัก ณ ที่จ่ายข้อมูลและคุณไม่สามารถรับข้อมูลที่เพียงพอสําหรับหลักฐานการฉ้อโกง เพื่อป้องกันสิ่งนี้เมื่อโหนดพลาสมาแสดงสแนปช็อตสถานะเพื่อพิสูจน์ว่ามีคนใช้จ่ายซ้ําซ้อนมันจะเล่นบันทึกการทําธุรกรรมซ้ําในช่วงเวลานี้ สิ่งนี้สามารถป้องกันไม่ให้ซีเควนเซอร์ใช้ข้อมูลหัก ณ ที่จ่ายเพื่อป้องกันไม่ให้ผู้อื่นถอนเงิน ใน Rollup หากคุณพบการถอนสองครั้งที่กล่าวถึงข้างต้นในทางทฤษฎีไม่จําเป็นต้องเล่นซ้ําธุรกรรมในอดีตเนื่องจาก Rollup ไม่มีปัญหาการหักภาษี ณ ที่จ่ายและจะ "บังคับ" ซีเควนเซอร์เพื่อเผยแพร่ข้อมูล DA บนห่วงโซ่ หากซีเควนเซอร์ Rollup ส่งสแนปช็อตสถานะ StateRoot ที่ไม่ถูกต้อง จะล้มเหลวในการตรวจสอบสัญญา (ZK Rollup) หรือจะถูกท้าทายในไม่ช้า (OP Rollup) ในความเป็นจริงนอกเหนือจากตัวอย่างเครื่องผสมเหรียญที่กล่าวถึงข้างต้นสถานการณ์ต่างๆเช่นสัญญาการลงนามหลายครั้งยังสามารถนําไปสู่การถอนเงินสองครั้งบนเครือข่ายพลาสม่า หลักฐานการทุจริตไม่มีประสิทธิภาพมากในการจัดการสถานการณ์นี้ สถานการณ์นี้ได้รับการวิเคราะห์ใน ETH Research โดยสรุปเนื่องจากโซลูชันพลาสม่าไม่เอื้อต่อสัญญาอัจฉริยะและโดยทั่วไปไม่รองรับการโยกย้ายสถานะสัญญาไปยังเลเยอร์ 1 พลาสมากระแสหลักจึงต้องใช้ UTXO หรือกลไกที่คล้ายกัน เนื่องจาก UTXO ไม่มีปัญหาความขัดแย้งในการเป็นเจ้าของสินทรัพย์และสามารถรองรับหลักฐานการฉ้อโกงได้เป็นอย่างดี (มีขนาดเล็กกว่ามาก) ราคาจึงมีสถานการณ์แอปพลิเคชันเดียวและโดยทั่วไปสามารถรองรับการโอนหรือการแลกเปลี่ยนหนังสือสั่งซื้อเท่านั้น นอกจากนี้เนื่องจากการพิสูจน์การฉ้อโกงนั้นมีการพึ่งพาข้อมูล DA อย่างมากหากเลเยอร์ DA ไม่น่าเชื่อถือจะเป็นการยากที่จะใช้ระบบพิสูจน์การทุจริตที่มีประสิทธิภาพ อย่างไรก็ตามการจัดการปัญหา DA ของ Plasma นั้นหยาบคายเกินไปและไม่สามารถแก้ปัญหาการโจมตีหัก ณ ที่จ่ายของข้อมูลได้ ด้วยการเพิ่มขึ้นของ Rollup พลาสม่าค่อยๆจางหายไปจากขั้นตอนของประวัติศาสตร์