เหตุใดการอัปเกรด smart contract ของฉันทำให้ฉันสามารถทำลาย storage อย่างเงียบๆ ที่ผู้ตรวจสอบรับรองไปแล้ว?
โอกาส
รูปแบบ upgradeable proxy (UUPS, Transparent Proxy, Diamond) เป็นมาตรฐานใน DeFi การใช้งานจริงแต่มีข้อจำกัดเข้มงวด: layout storage ของ implementation ใหม่ต้องเข้ากันได้กับทุก slot ที่กำหนดโดยฉบับก่อน หากแทรกตัวแปร state ใหม่ในตำแหน่งผิด ทุก slot ที่ตามมาจะเสียหายอย่างเงียบๆ โดยไม่มีข้อผิดพลาดบนเชน เครื่องมือตรวจสอบอัตโนมัติอย่างปลั๊กอิน upgrade ของ OpenZeppelin จับกรณีทั่วไปได้ แต่พลาด ERC-7201 namespaced storage ที่มีการบรรจุแบบกำหนดเอง การกำหนด slot ในระดับ assembly และการชนกันข้ามฟาเซตของ Diamond ที่ฟาเซตสองตัวอ้างสิทธิ์ในพื้นที่ storage เดียวกัน การศึกษาที่ผ่านการทบทวนโดยผู้เชี่ยวชาญในเดือนมกราคม 2026 (ProxyLens) พบช่องโหว่การชนระหว่างฟาเซตประเภทสำคัญที่เครื่องมือที่มีอยู่ตรวจจับไม่ได้ ผู้ตรวจสอบตรวจสอบ implementation contracts แยกกันและไม่สามารถสร้าง storage map ทั้งหมดของ proxy ที่มี delegated facet หลายตัวขึ้นใหม่ได้
ทำไมถึงสำคัญ
เครื่องมือที่สร้างแผนที่พื้นที่จัดเก็บข้อมูลแบบครบถ้วนพร้อม diff ตามเวอร์ชันสำหรับสัญญา proxy และสัญญา implementation ทั้งหมด จะเปลี่ยนปัญหาข้อมูลเสียหายแบบเงียบๆ ให้กลายเป็นการบล็อก deployment ได้
วิธีที่ผมให้คะแนนโอกาส
คะแนนโอกาสเป็นมุมมองส่วนตัวของผม ไม่ใช่การวัดผล โดยดูว่ามันเจ็บปวดแค่ไหน บ่อยแค่ไหนที่มันกัดกิน และมีทางแก้อยู่น้อยเพียงใดในปัจจุบัน คะแนนสูงกว่าหมายความว่าผมคิดว่าคุ้มค่าแก่การสร้างมากกว่า
ความเจ็บปวดที่มันก่อขึ้นเมื่อปรากฏตัว
ความถี่ที่คนจริงๆ เจอมัน
ความขาดแคลนของเครื่องมือที่ดีสำหรับมันในปัจจุบัน
ปัญหาอื่นที่น่าแก้ไข
ทำไมฉันถึงไม่สามารถพิสูจน์ฐานะทางการเงินได้โดยไม่ต้องเปิดเผยยอดเงิน
Blockchainทำไมการโอนเงินข้ามเชนถึงยังน่ากลัวกว่าอินเทอร์เน็ตยุคแรกอยู่?
Blockchainทำไมการปฏิบัติตามกฎระเบียบถึงยังหมายถึงแค่ PDF กับการอธิษฐาน?
Blockchainทำไมการ self-custody ถึงยังเป็นทางเลือกระหว่างการสูญเสียกุญแจของตัวเองกับการไว้วางใจบริษัท?
Blockchainทำไมการ tokenize สินทรัพย์จริงยังต้องพึ่งพาคนกลางถึงสิบราย?
Blockchainทำไม stablecoin ถึงจ่ายเงินให้คนที่ไม่มีอินเทอร์เน็ตไม่ได้?