Proxy contract
สรุปสั้น ๆ Proxy contract ส่งต่อคำสั่งไปยัง logic contract ทำให้ dev อัปเกรดโค้ดเหรียญได้โดยไม่ต้องเปลี่ยนเลข contract address
Proxy contract คือ smart contract ที่ทำหน้าที่เก็บ address และข้อมูล storage ที่ผู้ใช้เรียกใช้งาน แต่จะส่งต่อคำสั่งทั้งหมดไปยัง contract แยกอีกตัวที่บรรจุ logic การทำงานจริง ผู้ใช้จึงยังคงทำธุรกรรมกับ address เดิมได้เรื่อยๆ ในขณะที่โค้ดเบื้องหลังสามารถสลับเปลี่ยนเป็นเวอร์ชันใหม่ได้ ทีมพัฒนาใช้แพตเทิร์นนี้บน Ethereum, BNB Chain และ Base เพื่อแก้บั๊กในโค้ดที่ปกติแล้วจะไม่มีทางแก้ไขได้เลย
ในเชิงเทคนิค ตัว proxy จะทำงานผ่าน delegatecall โดยนำโค้ดของ logic contract มารันบน storage ของตัว proxy เอง ทำให้ยอด balance ต่างๆ และการตั้งค่ายังคงอยู่ที่ proxy แต่กฎเกณฑ์การทำงานดึงมาจาก implementation address ของ admin (ซึ่งอาจเป็นกระเป๋าเดี่ยว, multisig หรือ timelock) มีสิทธิ์เปลี่ยนชี้ proxy ไปยัง implementation ใหม่ได้ มาตรฐานอย่าง transparent proxy และ UUPS แตกต่างกันตรงตำแหน่งที่เก็บสิทธิ์ upgrade แต่แนวคิดหลักเหมือนกัน
เรื่องนี้สำคัญมากเพราะโค้ดที่คุณอ่านหรือเห็นว่าผ่าน audit มาแล้ว อาจไม่ใช่โค้ดที่รันอยู่ในวันพรุ่งนี้ การอัปเกรดสามารถแอบเพิ่มฟังก์ชัน mint, ระบบ blacklist หรือซ่อนภาษีขาย (sell tax) ได้หลังจากที่คุณซื้อเหรียญไปแล้ว การที่เจ้าของ renounce ownership เหรียญไปแล้วก็อาจหลอกตาได้เช่นกัน เพราะสิทธิ์ upgrade มักแยกไปอยู่ที่ proxy admin โปรเจกต์น้ำดีจำนวนมากก็ใช้ proxy ดังนั้นการเจอแพตเทิร์นนี้อย่างเดียวจึงไม่ใช่ red flag สิ่งสำคัญคือใครคุมสิทธิ์ upgrade และมีระยะเวลาแจ้งเตือนล่วงหน้าแค่ไหน
เวลาเช็กบน block explorer ให้ดูว่า contract นั้นถูกระบุว่าเป็น proxy หรือไม่ พร้อมหา implementation address และตัว admin ลองดูว่า admin เป็นกระเป๋าเดี่ยวธรรมดาหรือเป็น multisig มีการตั้ง timelock หน่วงเวลาก่อนการอัปเกรดจะมีผลหรือไม่ และผล audit ครอบคลุม implementation เวอร์ชันปัจจุบันหรือเป็นของเก่า รวมถึงตรวจประวัติ implementation ว่าเพิ่งสลับโค้ดมาไหม ส่วนบน Solana จะเทียบเท่ากับ upgradeable program ที่มี upgrade authority ซึ่งถ้าถูก revoke authority แล้ว โค้ดจะถูกล็อกถาวร




