จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้
คำตอบโดยตรง
ERC-2612 ใช้ลายเซ็น EIP-712 เพื่อตั้งค่า allowance ของโทเค็น ERC-20 โดยไม่ต้องส่งธุรกรรม approve แยกต่างหาก บทความนี้อธิบายการตรวจสอบ Owner, Spender, Value, Nonce และ Deadline รวมถึงผลลัพธ์บนเชน
เมื่อ permit ที่ถูกต้องถูกขุดขึ้น สัญญาโทเค็นจะตั้งค่า allowance(owner, spender) เป็น value และเพิ่ม nonce ของเจ้าของขึ้น 1 รีเลเยอร์หรือบุคคลที่สามสามารถส่งลายเซ็นได้ เจ้าของจึงไม่ต้องส่งธุรกรรมหรือจ่ายแก๊สของธุรกรรมนั้น deadline จะถูกตรวจสอบเฉพาะตอนส่ง permit และไม่ทำให้ allowance ที่เขียนไว้แล้วหมดอายุโดยอัตโนมัติ ตราบใดที่ไม่เป็นศูนย์ Spender สามารถเรียก transferFrom ภายในวงเงินได้
การเสร็จสิ้นการตรวจสอบนี้ไม่ได้พิสูจน์ว่าสินทรัพย์ ธุรกรรม หรือระบบมีความปลอดภัย
วิธีการทำงาน
ข้อความจะผูกกับ owner, spender, value, nonce และ deadline; โดเมน EIP-712 จะผูกลายเซ็นกับสัญญาโทเค็นและ chain ID ที่ถูกต้อง สัญญาจะรับลายเซ็นเมื่อ block.timestamp <= deadline เท่านั้น เมื่อสำเร็จจะเขียน allowance และเพิ่ม nonce แต่ deadline ที่ช้ากว่าไม่ลด allowance ที่เขียนไว้แล้ว หน้าอันตรายอาจเปลี่ยน Spender เป็นสัญญาโจมตี ตั้ง value เป็น 2^256-1 หรือกำหนด deadline ให้ไกลมาก
การดำเนินการ on-chain ควรแบ่งออกเป็นสี่เลเยอร์: อินเทอร์เฟซ กระเป๋าสินทรัพย์ดิจิทัล, การออกอากาศ RPC, การดำเนินการตามสัญญา และขั้นสุดท้ายของบล็อก ความสำเร็จของเลเยอร์ใดๆ ไม่สามารถทดแทนการยืนยันของเลเยอร์อื่นๆ ได้ ผลลัพธ์ที่แท้จริงขึ้นอยู่กับการรับธุรกรรม เหตุการณ์ การจัดเก็บสัญญา และยอดคงเหลือในเชนที่ถูกต้อง
ตัวอย่าง
ผู้ใช้ต้องการอนุญาตเพียง 100 USDC แต่ value ที่ลงนามคือ 2^256-1 และ deadline อยู่ในอีก 10 ปี การเรียกที่สำเร็จจะตั้งค่าสูงสุดนี้และเพิ่ม nonce; แม้ธุรกรรมแรกจะโอนเพียง 100 ผู้โจมตีก็ยังโอน USDC ที่ฝากภายหลังได้ตราบใดที่ allowance ยังอยู่ เมื่อพ้นกำหนด permit ที่ยังไม่ได้ใช้จะส่งไม่ได้ แต่ allowance ที่เขียนไว้แล้วจะไม่กลายเป็น 0 โดยอัตโนมัติ ให้เพิกถอนด้วย approve(spender, 0) หรือการเปลี่ยนแปลงที่เชื่อถือได้
เวลาแก๊ส อัตราภาษี และเวลาบล็อกในกรณีนี้จะแสดงเฉพาะลำดับความสำคัญเท่านั้น ต้องอ่านสถานะสัญญาปัจจุบัน สภาพคล่องของพูล และการอนุญาตก่อนดำเนินการ จำนวนเงินจะบันทึกจำนวนเงินที่มนุษย์อ่านได้ ค่าเงินดอลลาร์ และจำนวนเต็มดิบแบบ on-chain พร้อมกันเพื่อหลีกเลี่ยงข้อผิดพลาดที่แม่นยำ
ความเสี่ยง
เปรียบเทียบกำไรของโปรโตคอลกับการสูญเสียทางออกที่แย่ที่สุด สมมติว่า Gas ขยายตัวห้าเท่า ผลกระทบของราคาขยายสองเท่า และ สเตเบิลคอยน์ ลดราคา 5% หากเข้าร่วมเพิ่มอีก 1 วัน คุณจะไม่สามารถออกได้ หากผลตอบแทนรายสัปดาห์หรือรายเดือนไม่สามารถครอบคลุมความขัดแย้งเหล่านี้ได้ ผลตอบแทนที่สูงนั้นไม่ได้ให้ค่าตอบแทนที่เพียงพอ ความล้มเหลวของโปรโตคอลเดี่ยวใดๆ ไม่ควรทำให้ กระเป๋าสินทรัพย์ดิจิทัล ทั้งหมดไม่สามารถจ่ายแก๊สหรือโอนสินทรัพย์ได้
ความเข้าใจผิดที่พบบ่อย
-
ความเชื่อที่ 1: การแสดงผลส่วนหน้าคือข้อเท็จจริงในเชน ส่วนหน้าอาจถูกแคช จัดทำดัชนีล่าช้า หรือเชื่อมต่อกับเครือข่ายที่ไม่ถูกต้อง และต้องได้รับการตรวจสอบข้าม
-
เรื่องที่ 2: การเพิ่มขึ้นของ Gas หรือ Slippage สามารถแก้ไขความล้มเหลวได้ Gas ส่งผลต่อการคัดแยกเท่านั้น และการเลื่อนไหลทำให้ราคาผ่อนคลายเท่านั้น ข้อผิดพลาดในการอนุญาต Nonce และเงื่อนไขสัญญาจะไม่ได้รับการซ่อมแซมโดยอัตโนมัติ
-
เรื่องที่ 3: การทดสอบในจำนวนเล็กน้อยที่ประสบความสำเร็จหมายถึงความปลอดภัยถาวร การอัปเกรดผู้ดูแลระบบ พารามิเตอร์แบบไดนามิก และการเปลี่ยนแปลงสภาพคล่องจะเปลี่ยนผลลัพธ์และควรได้รับการตรวจสอบก่อนการขยายแต่ละตำแหน่ง
หัวข้อที่เกี่ยวข้อง
- EIP-712 Structured Signature
- Light node Light Client
- ลายเซ็น Permit2
- พื้นที่จัดเก็บสัญญาของตัวแทนขัดแย้งกัน: เหตุใดยอดคงเหลือจึงอาจเกิดความสับสนหลังจากการอัปเกรด
- การอนุญาต กระเป๋าสินทรัพย์ดิจิทัล
แหล่งที่มา
- ERC-2612: Permit Extension for EIP-20 Signed Approvals - Ethereum Improvement Proposals (accessed: 2026-07-28)
- EIP-712: Typed structured data hashing and signing - Ethereum Improvement Proposals (accessed: 2026-07-28)