ข้ามไปยังเนื้อหา

ERC-2612 ลายเซ็นใบอนุญาต: วิธีตรวจสอบ Nonce และ Deadline

ใบอนุญาต ERC-2612 อนุญาตให้คุณตั้งค่าการอนุญาตโทเค็นด้วยลายเซ็น บทความนี้จะอธิบายการตรวจสอบรายการต่อรายการของเจ้าของ ผู้ใช้จ่าย มูลค่า Nonce และกำหนดเวลา

อัปเดต

จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้

คำตอบโดยตรง

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 ภายในวงเงินได้

ERC-2612 Permit signature: How to check Nonce and Deadline
0 / 5
0 ตรวจสอบรายการแล้ว; 5 รายการยังไม่ได้รับการแก้ไข

การเสร็จสิ้นการตรวจสอบนี้ไม่ได้พิสูจน์ว่าสินทรัพย์ ธุรกรรม หรือระบบมีความปลอดภัย

วิธีการทำงาน

ข้อความจะผูกกับ 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: การทดสอบในจำนวนเล็กน้อยที่ประสบความสำเร็จหมายถึงความปลอดภัยถาวร การอัปเกรดผู้ดูแลระบบ พารามิเตอร์แบบไดนามิก และการเปลี่ยนแปลงสภาพคล่องจะเปลี่ยนผลลัพธ์และควรได้รับการตรวจสอบก่อนการขยายแต่ละตำแหน่ง

หัวข้อที่เกี่ยวข้อง

แหล่งที่มา

การนำทาง

ค้นหาในวิกิ...