การลงจมนำลึกในโมเดลการอนุญาต ERC-20: การทำงานของ Permit และ Permit2, ความเสี่ยง และความแตกต่างที่สำคัญ

สํารวจวิธีที่ Privacy Pools แนะนํากระบวนทัศน์ใหม่สําหรับความเป็นส่วนตัวของบล็อกเชนผ่านกลไก ASP (Association Set Providers) ที่เป็นนวัตกรรมใหม่และการพิสูจน์ความรู้เป็นศูนย์ บทความนี้จะตรวจสอบรากฐานทางทฤษฎีโดยทีมงานของ Vitalik Buterin การใช้งานทางเทคนิคโดย 0xbow และสถาปัตยกรรมสามชั้นสร้างสมดุลระหว่างความเป็นส่วนตัวของผู้ใช้กับความต้องการด้านกฎระเบียบอย่างไร นอกจากนี้ยังวิเคราะห์ผลกระทบของโปรโตคอลที่มีต่อ DeFi เปรียบเทียบกับโซลูชันความเป็นส่วนตัวอื่น ๆ และสํารวจโอกาสและความท้าทายในอนาคต

ในโลกของบล็อกเชน ผู้ใช้บ่อยครั้งต้องให้สิทธิ์ (อนุญาต) ซึ่งทำให้สมาร์ทคอนแทรคตใช้โทเค็นในนามของพวกเขาได้ ตัวอย่างเช่น เมื่อใช้ดีอีเอ็กซ์ (DEX) เพื่อสลับโทเค็น ผู้ใช้จำเป็นต้องอนุญาตสัญญาของตลาดให้โอนจำนวนโทเค็นที่กำหนดจากกระเป๋าของพวกเขาก่อนERC-20ตามมาตรฐานนี้ กระบวนการนี้ต้องใช้ธุรกรรม on-chain สองรายการแยกกัน: หนึ่งสำหรับการอนุมัติและอีกอันสำหรับการโอนโทเค็นจริง ๆ กระบวนการสองขั้นตอนนี้ไม่เพียงแต่ยุ่งยากแต่ยังมีค่าธรรมเนียมแก๊สเพิ่มเติม หากต้องการปรับปรุงทั้งประสบการณ์ของผู้ใช้และความปลอดภัย ชุมชน Ethereum ได้เสนอกลไซเนเจอร์ที่ใช้ลายเซ็นเป็นพื้นฐานอนุญาต(เช่น EIP-2612) และพัฒนาเป็นเวอร์ชันที่ถูกพัฒนาขึ้นมาทีหลังที่เรียกว่า Permit2 กลไกใหม่เหล่านี้ช่วยให้ผู้ใช้สามารถให้อนุญาตให้โทเค็นผ่านลายเซ็นต์ออฟเชน โดยหลีกเลี่ยงความจำเป็นในการทำธุรกรรมออนเชนเพิ่มเติม

ในบทความนี้ เราจะเริ่มต้นด้วยเนื้อหาพื้นฐานโดยการอธิบายวิธีการทำงานของการอนุมัติ ERC-20 แบบดั้งเดิมและข้อจำกัดของมัน จากนั้นเราจะลึกซึ้งเกี่ยวกับวิธีการทำงานของ Permit และ Permit2 โดยเน้นที่ประโยชน์และการแลกเปลี่ยน และพูดถึงว่าพวกเขาเสริมสร้างความมีประสิทธิภาพและความปลอดภัย นอกจากนี้เรายังจะสำรวจความเสี่ยงด้านความปลอดภัยที่เป็นไปได้โดยเฉพาะการโจมตีฟิชชิ่งที่เกี่ยวข้องกับลายเซ็นทรัย์ที่เป็นอันตราย, และให้เคล็ดลับสำหรับการเก็บตัวอย่างการปลอดภัย ไม่ว่าคุณจะเป็นมือใหม่ในด้านบล็อกเชนหรือเพิ่งเริ่มต้นการลงทุนในสกุลเงินดิจิทัล คู่มือนี้มีจุดประสงค์เพื่อช่วยคุณเข้าใจนวัตกรรมทางเทคนิคที่สำคัญเหล่านี้

พื้นฐานของโมเดลการอนุญาต ERC-20

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

วิธีการทำงานของการอนุมัติ ERC-20 แบบดั้งเดิม

ERC-20 เป็นมาตรฐานสำหรับโทเค็นบน Ethereum มันกำหนดฟังก์ชั่นเช่นการอนุมัติและการโอนจาก ซึ่งทำให้การอนุญาตโทเค็นเป็นไปได้ การอนุญาตที่นี่หมายถึงว่าผู้ถือโทเค็น (เจ้าของ) อนุญาตบัญชีอื่นๆ ซึ่งโดยทั่วไปคือสัญญาฉลาก (ผู้ใช้จ่าย) โอนจำนวนโทเค็นบางจำนวนในนามของพวกเขา กระบวนการพื้นฐานทำงานอย่างนี้

  1. ผู้ถือโทเค็นเรียกใช้ฟังก์ชัน approve(spender, amount) ของสัญญาโทเค็น นี้จะบันทึกค่าในการอนุญาตในการแมปภายในของสัญญา โดยทั่วไปจะแสดงในรูปแบบ allowance[owner][spender] = จำนวน ตัวอย่างเช่น หากผู้ใช้ A ให้สิทธิให้สัญญา Uniswap ใช้จ่ายได้สูงสุด 100 โทเคน สัญญาจะเก็บ allowance[A][Uniswap] = 100 ขั้นตอนนี้ต้องการธุรกรรมบนเชื่อมโยงและค่าธรรมเนียมในการจ่ายโดย A
  2. DeleGate.iod Transfer (transferFrom): ในภายหลังเมื่อ Uniswap (หรือ dApp อื่น) ต้องใช้โทเค็นในนามของ A มันจะเรียก transferFrom(A, B, จำนวน) บนสัญญาโทเค็น สัญญาจะตรวจสอบว่า allowance[A][Uniswap] เพียงพอหรือไม่ ถ้าเป็นเช่นนั้น สัญญาจะโอนจำนวนที่ระบุจาก A ไปยัง B และหักจำนวนนั้นจาก allowance

ข้อจำกัดและความท้าทายของโมเดลการอนุมัติ

โมเดลสองขั้นตอนด้านบนช่วยให้ผู้ใช้สามารถให้อนุญาตให้สัญญาจัดการกับเงินของพวกเขาโดยไม่ต้องแชร์กุญแจส่วนตัวของพวกเขา อย่างไรก็ตามวิธีการเชิง传统นี้ก็มาพร้อมกับปัญหาทางปฏิบัติหลายอย่าง

ต้องการการทำธุรกรรมสองครั้ง ประสบประสบการณ์ของผู้ใช้ที่แย่
ทุกครั้งที่ผู้ใช้ต้องการใช้โทเค็นใหม่บน dApp พวกเขาจะต้องส่งธุรกรรมการอนุมัติแยกต่างหากก่อนที่พวกเขาจะสามารถดำเนินการที่ต้องการจริง (เช่น สว๊อปหรือสเตก) ซึ่งหมายความว่ากระเป๋าเงินของพวกเขาจะให้การยืนยันอีกครั้งและคิดค่าธรรมเนียม Gas เพิ่มเติม สำหรับผู้เริ่มต้น ขั้นตอนเพิ่มเติมนี้อาจทำให้สับสนและไม่สะดวก

การจัดการการอนุมัติแบบแยกส่วน
เมื่อผู้ใช้โต้ตอบกับหลายdAppsใช้โทเค็นเดียวกัน (เช่น การซื้อขายบน Uniswap แล้วนำเงินฝากในโปรโตคอล DeFi อื่น) แต่ละ dApp ต้องการการอนุมัติแยกต่างหาก แม้ว่าจะเป็นโทเค็นเดียวกันในกระเป๋าเงินเดียวกัน นี่ส่งผลให้การอนุมัติที่ซ้ำซ้อน ทำให้เสียเวลาและแก๊ส

นอกจากนี้เนื่องจากแอพพลิเคชันแต่ละแอพพิเคชันจัดการสิทธิใช้งานของตนเองอย่างอิสระผู้ใช้มีการควบคุมที่ถูกกลางอย่างน้อยเมื่อเทียบกับการอนุญาตRevoke.cashและDeBankโดยอนุญาตให้ผู้ใช้ดูแลและจัดการการอนุญาตโทเค็น แต่ผู้ใช้มีความไม่ทราบถึงเรื่องนี้มากเกินไป และแม้ว่าพวกเขารู้จักกันดี การเพิกถอนการอนุญาตยังต้องการธุรกรรมอนุญาต ซึ่งเพิ่มค่าใช้จ่าย เนื่องจากนั้น การอนุญาตเก่าหรือไม่ได้ใช้งานจะลืมไปเลย

ความเสี่ยงจากการอนุมัติโดยไม่จำกัด
เพื่อหลีกเลี่ยงธุรกรรมการอนุมัติบ่อยครั้ง dApps จํานวนมากแนะนําให้ผู้ใช้อนุมัติไม่ จํากัด ทําให้สัญญาสามารถใช้ยอดคงเหลือโทเค็นทั้งหมดของผู้ใช้โดยไม่มีวันหมดอายุ แม้ว่าวิธีการนี้จะช่วยประหยัดความพยายามในภายหลัง แต่ก็มีความเสี่ยงด้านความปลอดภัยที่ร้ายแรง: หาก dApp หรือสัญญาถูกบุกรุกผู้โจมตีสามารถระบายโทเค็นที่ได้รับอนุมัติทั้งหมดได้

ความท้าทายเหล่านี้ทำให้นักพัฒนาต้องมองหาทางเลือกที่ดีกว่า อย่างที่ควรจะเป็น ผู้ใช้ควรจะต้องเซ็นต์เพียงครั้งเดียว (โดย preference คือ off-chain และไร้ค่า gas) เพื่อที่จะทำการอนุมัติและดำเนินการได้พร้อมๆกัน การอนุมัติยังควรจะถูก จำกัด ในขอบเขตและระยะเวลาเพื่อลดความเสี่ยงที่เป็นไปได้ นี่คือแรงจูงใจในการนำเสนอ ERC-20 Permit

อนุญาต: การให้สิทธิในการลงนามตาม ERC-20 (EIP-2612)

ความคิดเรื่องใบอนุญาตถูกแนะนำครั้งแรกโดยDAIสัญญา stablecoin และต่อมาถูกมาตราฐานระเบียบเป็น EIP-2612 โดยสรุป Permit ช่วยให้ผู้ใช้สามารถอนุญาตการโอนโทเค็นโดยใช้ลายเซ็นน์นอกเชือก โดยยกเลิกความจำเป็นในการส่งธุรกรรม approve แยกออกไปที่ต้องทำบนเชน ให้เรามาสังเกตอย่างใกล้ชิดว่ามันทำงานอย่างไรและคุณลักษณะที่แตกต่างของมัน

การทำงานของ Permit

Permit เป็นกลไกการอนุญาตที่ขึ้นอยู่กับลายเซ็นดิจิทัล ภายใต้มาตรฐาน EIP-2612 สัญญา ERC-20 ที่รองรับ Permit เพิ่มฟังก์ชันที่เรียกว่า permit() ซึ่งมีลักษณะดังนี้:

ฟังก์ชัน permit(
เจ้าของที่อยู่, ผู้ใช้ที่อยู่,
uint256 ค่า, uint256 วันหมดอายุ,
uint8 v, bytes32 r, bytes32 s
) ภายนอก;

ที่นี่เจ้าของ, ผู้ใช้จ่าย, และค่าทราบว่าใครให้สิทธิ, ใครได้รับสิทธิ, และจำนวนที่อนุญาต การกำหนดเวลาหมดอายุแสดงถึงเมื่อลายเซ็นจะหมดอายุ พารามิเตอร์ v, r, และ s แบ่งออกเป็นECDSAลายเซ็นดิจิทัล โดยใช้ Permit ผู้ใช้สามารถหลีกเลี่ยงการอนุมัติแยกตัวบนเชนได้—พวกเขาเพียงแค่ลงลายเซ็นข้อความ (โดยไม่ต้องจ่าย Gas) และรวมลายเซ็นนี้กับธุรกรรมของพวกเขาเพื่อทำการอนุมัติในขั้นตอนเดียว


การดำเนินการใบอนุญาต

เมื่อเปรียบเทียบกับการอนุมัติแบบดั้งเดิม ใบอนุญาตจะยกเลิกความจำเป็นต่อการทำธุรกรรมซึ่งอยู่บนเชนอีก ทำให้ประหยัดเวลาและค่า Gas ได้ นอกจากนี้ยังช่วยให้มีการควบคุมที่ละเอียดขึ้นในการอนุมัติ เช่น เมื่อผู้ใช้ลงลายมือชื่อในใบอนุญาตที่อนุญาตให้ใช้จ่ายเพียง 50 USDC เท่านั้น ถูกต้องเป็นเวลาเพียง 5 นาที แม้แต่ลายมือจะถูกเปิดเผย ก็จะไม่สามารถใช้งานหลังจากเวลาสุดท้ายลดลง เพื่อลดความเสี่ยง ในปัจจุบันมีโปรโตคอลดีไฟหลายแห่ง เช่น แลกเปลี่ยนแบบกระจายและแพลตฟอร์มการให้ยืม รองรับใบอนุญาต ตัวอย่างที่รู้จักได้แก่ Uniswap V2/V3 โทเค็น LP, DAI, และUSDC, ซึ่งได้นำมาใช้มาตรฐาน EIP-2612 ซึ่งทำให้สามารถอนุมัติด้วยลายเซ็นขั้นหนึ่งได้

อย่างไรก็ตาม ข้อจำกัดที่สำคัญที่สุดของ Permit คือ ต้องนำมาใช้งานโดยตรงภายในสัญญาตราบัตร หากนักพัฒนาโทเค็นยังไม่ได้เพิ่มวิธี permit() หมายความว่าไม่รองรับ EIP-2612 การใช้ Permit จึงไม่สามารถใช้งานได้ โดยเพราะ EIP-2612 ถูกนำเสนอเพียงในปี 2020 โทเค็นที่เก่ากว่ามักไม่รวมมันเข้าไป และแม้โทเค็นที่ใหม่ก็ไม่ได้นำมันมาใช้เสมอ สิ่งนี้จำกัดความสามารถในการใช้งานของ Permit: โทเค็นที่ไม่รองรับยังจำเป็นต้องใช้กระแสอนุมัติแบบเดิม

ปัญหาอีกประการหนึ่งคือซอฟต์แวร์กระเป๋าเงินต้องจัดการและแสดงลายเซ็นใบอนุญาตอย่างถูกต้องซึ่งโดยทั่วไปจะจัดรูปแบบโดยใช้ EIP-712 กระเป๋าเงินหลักส่วนใหญ่รองรับสิ่งนี้ในขณะนี้ แต่บางส่วนยังคงแสดงข้อมูลดิบแทนที่จะเป็นข้อความที่มนุษย์อ่านได้ทําให้ผู้ใช้เข้าใจสิ่งที่พวกเขากําลังลงนามได้ยาก หากไม่มีอินเทอร์เฟซที่ชัดเจนสําหรับ EIP-2612 กระเป๋าเงินอาจขัดขวางความเข้าใจของผู้ใช้เกี่ยวกับการอนุมัติตามลายเซ็น นอกจากนี้ ในกรณีของการปรับใช้แบบขนาน (เช่น สัญญาที่มีที่อยู่เหมือนกันบนเชนที่แตกต่างกัน) ลายเซ็นอาจถูกนํากลับมาใช้ใหม่ในสภาพแวดล้อมอื่น ดังนั้นผู้ใช้ต้องตรวจสอบว่ารหัสลูกโซ่และที่อยู่สัญญาในลายเซ็นตรงกับสภาพแวดล้อมปัจจุบันเพื่อป้องกันไม่ให้สิทธิ์ที่ได้รับสําหรับโทเค็นบน Chain A ถูกนําไปใช้ในทางที่ผิดโดยที่อยู่สัญญาที่เหมือนกันบน Chain B

ในทางปฏิบัติ Permit มีประสิทธิภาพและความยืดหยุ่นของการอนุมัติ ERC-20 ได้ดีขึ้นอย่างมีนัยสำคัญในกลไกการอนุมัติโกลไลส์ อย่างไรก็ตาม มันไม่ใช่ทางออกที่สมบูรณ์ โดยมีความจำเป็นต้องมีการสนับสนุนระดับโทเค็น และมันเป็นสาเหตุให้เกิดความเสี่ยงใหม่ ต่อไปเราจะสำรวจว่า Uniswap’s Permit2 มีการสร้างขึ้นและขยายพื้นฐานที่ Permit ได้เป็นรากเริ่ม

Permit2: สัญญาการจัดการสิทธิ์การอนุญาตสากล

เมื่อกลไกใบอนุญาตได้รับความนิยมความท้าทายใหม่ก็เกิดขึ้น: จะขยายความสะดวกสบายของการอนุญาตตามลายเซ็นไปยังโทเค็นที่ไม่รองรับใบอนุญาตได้อย่างไร? เพื่อแก้ไขปัญหานี้และเพิ่มประสิทธิภาพประสบการณ์การอนุญาตในสถานการณ์ต่างๆ ทีม Uniswap ได้เปิดตัว Permit2 ในปี 2022 ซึ่งแตกต่างจากคุณสมบัติเฉพาะโทเค็น Permit2 เป็นสัญญาอัจฉริยะการจัดการการอนุญาตแบบสแตนด์อโลน มันทําหน้าที่เป็นตัวกลางสําหรับการอนุญาตโทเค็นโดยให้ฟังก์ชันการอนุญาตที่เป็นหนึ่งเดียวและปรับปรุง มาวิเคราะห์หลักการและคุณสมบัติของใบอนุญาต 2

Permit2 ทำงานอย่างไร

Permit2 ทำหน้าที่เป็นบริการส่งผ่านการอนุญาต ความคิดหลักของมันคือ ผู้ใช้ให้การอนุญาตครั้งเดียวกับสัญญา Permit2 ซึ่งจะจัดการการอนุญาตย่อยต่อไปไปยังแอปพลิเคชันต่าง ๆ นี่คือวิธีการทำงาน

  1. การอนุญาตครั้งเดียว Permit2: ผู้ใช้ต้องอนุมัติ Permit2 สำหรับแต่ละโทเคนโดยใช้วิธีการอนุญาต传统(Permit2, จำนวนสูงสุด) แนะนำให้ใช้จำนวนมากหรือไม่จำกัดเนื่องจากนี่เป็นการอนุญาตหลัก หลังจากที่เสร็จสิ้นแล้วค่า Permit2 จะได้รับความสามารถในการเรียกใช้ transferFrom ในนามของผู้ใช้สำหรับโทเคนนั้น นี่ต้องการธุรกรรม on-chain แต่จำเป็นต้องทำเพียงครั้งเดียว
  2. ลายเซ็นนอกเครือข่ายสำหรับการให้สิทธิในการใช้งานย่อย: เมื่อผู้ใช้ต้องการที่จะปฏิสัมพันธ์กับ DApp (ตัวอย่างเช่นการใช้ Uniswap Universal Router สำหรับการเปลี่ยนเหรียญหลายรายการ) พวกเขาลงนามข้อความอนุญาตนอกเครือข่ายตามข้อกำหนดของ Permit2 ลายเซ็นนี้รวมถึงรายละเอียดเช่น โทเคนที่ได้รับอนุญาต จำนวน เป็นตัวรับเป้าหมาย (เช่น สัญญา DApp ที่เฉพาะเจาะจง) และเวลาหมดอายุ
  3. คำขอการโอน DApp โดยใช้ลายเซ็น: เมื่อ DApp ได้รับลายเซ็นของผู้ใช้และต้องการใช้โทเค็น แทนที่จะเรียกใช้สัญญาโทเค็นโดยตรง มันจะเรียกใช้ฟังก์ชันของ Permit2 (เช่น permitTransferFrom) ฟังก์ชันนี้จะทำการตรวจสอบข้อมูลลายเซ็นของผู้ใช้และยืนยันว่าการดำเนินการอยู่ในขอบเขตของสิทธิที่ได้รับ (โทเค็น จำนวน เส้นหมดอายุ) หลังจากการตรวจสอบเสร็จ Permit2 จะใช้การอนุมัติหลักของมันเองเพื่อเรียกใช้ transferFrom โอนโทเค็นจากผู้ใช้ไปยังผู้รับที่ระบุ จุดสำคัญ: สัญญา Permit2 เองทำหน้าที่เป็นผู้ใช้เงิน โดยใช้อำนาจของมันเองในการโอนโทเค็น พร้อมกับขั้นตอนการตรวจสอบลายเซ็นเพิ่มเติม
  4. การดำเนินการเสร็จสมบูรณ์: เมื่อ Permit2 ดำเนินการโอนเงินสำเร็จ ก็จะมีการเคลื่อนเงินไปที่ DApp หรือที่อยู่ที่ระบุอย่างราบรื่น จากมุมมองของผู้ใช้ พวกเขาเพียงแต่ให้ลายเซ็นเจอร์ในธุรกรรม ในขณะที่สัญญาจะดำเนินการดำเนินการทั้งหมดที่ตามมา

กระบวนการอนุญาต Permit2 ง่ายดาย: ผู้ใช้เพียงต้องให้การอนุมัติสูงสุดให้กับ Permit2 ครั้งเดียวต่อโทเคน หลังจากนั้นเมื่อต้องการทำธุรกรรมกับแอปพลิเคชัน (เช่น Uniswap Universal Router หรือโปรโตคอลอื่น ๆ) พวกเขาเพียงแค่รวมลายเซ็น Permit2 ลงในธุรกรรมของพวกเขาเพื่อสิ้นสุดกระบวนการอนุญาตและโอน โดยไม่จำเป็นต้องมีการอนุมัติเพิ่มเติมในเชน สัญญา Permit2 ยืนยันลายเซ็นและดำเนินการโอนโดยใช้การอนุมัติหลักของมัน (แหล่งที่มา:การแนะนำ Permit2 & Universal Router)

ผ่านโมเดลนี้ Permit2 ขยายแนวคิดการอนุญาตที่ใช้ลายเซ็น EIP-2612 ไปยังโทเค็น ERC-20 ทั้งหมด โดยไม่ว่าว่าพวกเขาจะใช้วิธี permit() หรือไม่ ตราบใดที่ผู้ใช้ได้อนุญาตให้สัญญา Permit2 ตั้งต้น พวกเขาสามารถใช้ลายเซ็นสำหรับการดำเนินการต่อๆ ไป คุ้มค่าที่ Uniswap ออกแบบ Permit2 เป็นสัญญาที่ไม่มีเจ้าของและไม่สามารถอัปเกรดได้ ที่ถูกใช้งานกับที่อยู่เดียวกันในเครือข่าย Ethereum mainnet และหลายโครงข่าย Layer 2 ซึ่งหมายความว่าทุกแอปพลิเคชันใช้ Permit2 ตัวเดียวกันทั้งหมด ทำให้บรรทัดคำว่า "อนุญาตซักครั้งใช้ทุกที่" เป็นไปได้

คุณสมบัติหลักของ Permit2

เป็นระบบอนุญาตรุ่นถัดไป Permit2 ไม่เพียงทำให้การอนุญาตที่ใช้ลายเซ็นสำหรับเหรียญทั้งหมดเป็นไปได้ แต่ยังมีคุณสมบัติเพิ่มเติมเพื่อเสริมความปลอดภัยและความสามารถในการใช้งาน นี่คือคุณสมบัติหลักของมัน:

การหมดอายุอัตโนมัติ
การอณุญาตทั้งหมดใน Permit2 สามารถรวมเข้าไปด้วย timestamp เพื่อการหมดอายุ ผู้ใช้สามารถระบุเวลาที่อณุญาตย่อยของพวกเขาควรหมดอายุเมื่อทำการเซ็นต์ หลังจากที่เวลาสิ้นสุดผ่านไป Permit2 จะปฏิเสธลายเซ็นเชียร์ แม้ว่าการอนุมัติหลักยังคงใช้งานอยู่ นี้จะช่วยแก้ปัญหาความเสี่ยงจากการอนุมัติที่ไม่มีข้อจำกัดที่ยังไม่ได้ใช้งาน

การโอนลายเซ็นเจาะจง
Permit2 มีโหมดการโอนลายเซ็นต์โดยตรงที่ผู้ใช้สามารถให้สิทธิ์การโอนโทเค็นเฉพาะไปยังผู้รับโดยใช้ลายเซ็นต์เท่านั้น โดยไม่จำเป็นต้องตั้งค่าสิทธิ์ก่อน นี่เหมาะสำหรับสถานการณ์การชำระเงินครั้งเดียว: ผู้ใช้สามารถลงลายเซ็นต์ในข้อความเพื่อให้สิทธิ์โอน 100 โทเค็นไปยังที่อยู่ของเพื่อน และเพื่อนหรือผู้กลายคลัสสามารถดำเนินการโอนโดยใช้ลายเซ็นต์นี้ หลังจากที่ใช้แล้ว ลายเซ็นต์ก็จะเป็นโมฆะ ซึ่งจะไม่ทิ้งสิทธิ์ที่ยังค้างอยู่

批准和转账
Permit2 ให้ความสำคัญกับประสิทธิภาพโดยอนุญาตให้ประมวลผลแบบจุดได้หลายการอนุญาตหรือการโอน ผู้ใช้สามารถให้สิทธิ์ที่แตกต่างกันของหลายๆ โทเค็นไปยังโปรโตคอลเดียวกันด้วยลายเซ็นเดียวกัน หรือดำเนินการโอนเงินของหลายๆ โทเค็นในธุรกรรมเดียว สิ่งนี้ช่วยประหยัด Gas และลดขั้นตอนสำหรับผู้ใช้ขั้นสูง

การเพิกถอนเป็นชุด
นอกเหนือจากการอนุมัติเป็นชุดผู้ใช้สามารถเพิกถอนสิทธิ์สําหรับโทเค็น / แอปพลิเคชันหลายรายการในธุรกรรมเดียว สิ่งนี้ทําให้การทําความสะอาดการอนุมัติในอดีตสะดวกยิ่งขึ้น

การเป็นพยานข้อมูลเพิ่มเติม
Permit2 รวมถึงอินเตอร์เฟซเช่น อนุญาตให้พยานโอนจาก ที่อนุญาตให้รวมข้อมูลการตรวจสอบเพิ่มเติมไว้ในลายเซ็น สิ่งนี้สนับสนุนสถานการณ์ที่ซับซ้อนมากขึ้น เช่น การรวมรายละเอียดธุรกรรมเฉพาะในลายเซ็นลําดับเพื่อป้องกันการนําลายเซ็นกลับมาใช้ใหม่ในบริบทที่แตกต่างกัน

ผ่านคุณลักษณะเหล่านี้ การอนุญาต2 ไม่เพียงทำซ้ำคุณสมบัติทั้งหมดของการอนุญาต แต่ยังเสริมความยืดหยุ่นและควบคุมความปลอดภัย การหมดอายุอัตโนมัติและการโอนลายมือเซ็นเซี่ยงเฉพาะ โดยเฉพาะ ทำให้การอนุญาตที่จำเป็นเพียงเล็กน้อยเป็นเกณฑ์มาตรฐาน ลดความเสี่ยงในระยะยาว

เพื่อสรุป Permit2 ทำหน้าที่เป็นการขยายตัวและเพิ่มประสิทธิภาพให้กับกลไกการอนุญาตแบบดั้งเดิม มาชมความแตกต่างสำคัญระหว่างวิธีการสองวิธีนี้

การนำใช้และการใช้งาน Permit2 Ecosystem

เมื่อ Uniswap นำเสนอ Permit2 มา เป็นโครงสร้างที่หลายๆ โครงการได้รวมร่วม ทำให้มาตรฐานของอุตสาหกรรมเร่งขึ้น ตามข้อมูลล่าสุดจาก ดูน อนาลิติกส์, ตั้งแต่เดือนเมษายน ค.ศ. 2025, มีมากกว่า 3.1 ล้านที่อยู่บน Ethereum mainnet ได้ให้สิทธิให้สิทธิให้สิทธิการใช้งานกับสัญญา Permit2 ซึ่งแสดงให้เห็นถึงการนำมาใช้ที่กว้างขวาง


สิทธิ2 นิวอน และสถานะการใช้งาน ที่มา:Dune Analytics

ตัวอย่างเช่น Uniswap ได้รวม Permit2 เข้ากับ Universal Router ของตนเพื่อเปิดให้การแลกเปลี่ยนหลายโทเคนและ NFT ในธุรกรรมเดียวกันเป็นไปได้ ผ่าน Universal Router ผู้ใช้สามารถเชื่อมโยงการดำเนินการหลายรายการในหนึ่งธุรกรรมเดียว เช่น การแลกเปลี่ยนสามโทเคนเป็นโทเคนเป้าหมายสองตัวและการซื้อ NFT พร้อมกับความต้องการในการอนุญาตทั้งหมดที่จัดการโดยลายมือ Permit2 สิ่งนี้ช่วยลดกระบวนการและค่า Gas ทั้งหมดอย่างมีชัดเจนโดยแสดงให้เห็นถึงผลกระทบโดยตรงของ Permit2 ในการปรับปรุงประสบการณ์ผู้ใช้

นอกจากนี้ด้วยการปรับใช้โอเพ่นซอร์สของ Permit2 ในเครือข่ายต่างๆกระเป๋าเงินและเครื่องมือ DApp จํานวนมากขึ้นได้เริ่มรองรับ เครื่องมือรักษาความปลอดภัยเช่น Revoke.cash ได้อัปเดตบริการของตนเพื่อให้ผู้ใช้สามารถดูและเพิกถอนบันทึกการอนุญาต Permit2 ได้ นอกจากนี้ Matcha ยังได้นําโมดูล SignatureTransfer ของ Permit2 มาใช้ โดยเปิดใช้งานกลไก "การอนุญาตแบบครั้งเดียว"

ผลกระทบถึงความคืบหน้านี้ การใช้งาน Permit2 อย่างกว้างขวางกำลังเผชิญกับอุปสรรคบางประการ อย่างใดอย่างหนึ่ง นักพัฒนาต้องใช้เวลาเพิ่มเติมสำหรับการรวมระบบ: เมื่อเปรียบเทียบกับการใช้งาน approve ของ ERC-20 โดยตรง การนำ Permit2 เข้ามาใช้งานต้องการการจัดการตรรกะของลายเซ็นเจอร์ ทำให้เกิดค่าใช้จ่ายในการพัฒนาเพิ่มมากขึ้น สิ่งนี้อาจหยุดยั้งทีมที่มีขนาดเล็กได้ จากอีกด้านหนึ่ง การสอนผู้ใช้เป็นสิ่งสำคัญ: หลาย DApps ที่ใช้ Permit2 จำเป็นต้องสอนผู้ใช้เกี่ยวกับความสำคัญของลายเซ็นเจอร์ ปัจจุบัน ข้อได้เปรียบของ Permit2 ที่มีความเป็นเอกอักษรดูเหนือความต้านทานเหล่านี้ แต่การเข้าถึงตลาดอย่างเต็มรูปแบบยังจะใช้เวลา

เปรียบเทียบ Permit2 กับ New Solutions: Session Keys และ ERC-4337

ในช่วง 8 ปีที่ผ่านมา กลไกการอนุญาต ERC-20 ได้รับการพัฒนาจากการทำธุรกรรมหลายรายการ ไปจนถึงลายเซ็นเซอร์ที่ไม่ใช้แก๊สและตอนนี้กลายเป็นบัญชีสมาร์ท การพัฒนาทุกขั้นตอนมุ่งหวังในการปรับปรุงสมดุลระหว่างประสบการณ์ผู้ใช้ (ลดความต้องการในการทำธุรกรรมและลายเซ็น) และค่าแก๊ส นี่คือการเปรียบเทียบเทคโนโลยีเหล่านี้:


นอกจาก Permit2 ยังมีการแก้ปัญหาในการอนุญาตที่คุ้มค่าอย่าง Session Keys และERC-4337 การสรุปบัญชี, แต่ละอันเสนอวิธีการที่แตกต่างกันในการแก้ปัญหา

คีย์เซสชันมีเอกลักษณ์เฉพาะตัวเป็นพิเศษ เนื่องจากไม่ใช่รูปแบบการอนุญาตที่เข้มงวด แต่เป็นกลไกคีย์ชั่วคราวในระดับกระเป๋าเงินหรือบัญชี แทนที่จะแก้ไขสัญญาโทเค็นพวกเขาอนุญาตให้กระเป๋าเงินสร้างคีย์ส่วนตัวชั่วคราวที่ จํากัด เวลาและ จํากัด จํานวนสําหรับการดําเนินการเฉพาะ สิ่งนี้ทําให้เหมาะสําหรับการซื้อไอเท็มเกมและไมโครเพย์เมนต์แบบครั้งเดียว พวกเขามุ่งเน้นไปที่การลดความเสี่ยงในการอนุญาตครั้งเดียวซึ่งออกแบบมาโดยเฉพาะสําหรับการโต้ตอบของผู้ใช้ชั่วคราวซึ่งแตกต่างจากแนวทางการแก้ไขสัญญาของใบอนุญาต / ใบอนุญาต 2

ERC-4337 มีการใช้วิธีการที่แตกต่างโดยฝังตัวตรรกะการอนุญาตโดยตรงลงในบัญชีอัจฉริยะ ทำให้ผู้ใช้สามารถปรับแต่งเงื่อนไขการอนุญาตและอาจข้ามขั้นตอนการอนุมัติ传统ได้ ผ่านกลไก UserOperation และ Paymaster ที่ยืดหยุ่น เพื่อความปลอดภัยและประสบการณ์ของผู้ใช้ที่ดีขึ้น

เมื่อพิจารณาถึงแนวโน้มในอนาคตโซลูชันที่แตกต่างกันเหล่านี้มีแนวโน้มที่จะอยู่ร่วมกัน ในระยะสั้น Permit2 จะยังคงเป็นมาตรฐานสําหรับ DApps ที่เกิดขึ้นใหม่ปรับปรุงประสบการณ์ของผู้ใช้ผ่านการอนุญาตเพียงครั้งเดียวในขณะที่ส่งเสริมการศึกษาด้านความปลอดภัยและการสนับสนุนเครื่องมือเพื่อลดความเสี่ยงฟิชชิง ในระยะกลางเนื่องจาก ERC-4337 และนามธรรมของบัญชีแพร่หลายมากขึ้นในเลเยอร์ 2 และเมนเน็ตผู้ใช้จะสามารถหลุดพ้นจากข้อ จํากัด การอนุมัติ ERC-20 แบบดั้งเดิมจัดการการอนุญาตได้อย่างแม่นยําและชาญฉลาดยิ่งขึ้นซึ่งอาจลดความจําเป็นในการอนุญาต 2

วิสัยทัศน์ระยะยาวคือการสร้างประสบการณ์การอนุญาตที่ราบรื่นและใช้งานง่ายเช่นเดียวกับ Web2 ซึ่งผู้ใช้สามารถคลิกปุ่มและการอนุมัติที่จําเป็นทั้งหมดจะเกิดขึ้นโดยอัตโนมัติในพื้นหลังโดยมีข้อความแจ้งที่ชัดเจนปรากฏขึ้นเฉพาะในสถานการณ์ที่มีความเสี่ยงสูงเท่านั้น การบรรลุวิสัยทัศน์นี้จะต้องมีการทํางานร่วมกันและนวัตกรรมอย่างต่อเนื่องในโปรโตคอลกระเป๋าเงินและ dApps พื้นฐาน Permit2 เป็นก้าวสําคัญในการเดินทางในช่วงเปลี่ยนผ่านนี้ แต่ก็ยังมีหนทางอีกยาวไกลก่อนที่จะถึงสถานะในอุดมคติ ระหว่างทางทั้งชุมชนและนักพัฒนาควรรักษาแนวทางในทางปฏิบัติทําความเข้าใจจุดแข็งและข้อ จํากัด ของแต่ละโซลูชันอย่างถ่องแท้และทํางานร่วมกันเพื่อสร้างสภาพแวดล้อมการอนุญาตที่ปลอดภัยและใช้งานง่ายยิ่งขึ้น


โดยรวม Permit2 มีวิธีการที่สามารถนำมาใช้ได้ในทันที ในขณะที่เทคโนโลยีเช่น Session Keys และ ERC-4337 ชี้ทางไปสู่การปรับปรุงที่มีระยะยาวและมีพื้นฐานมากขึ้นในวิธีการจัดการอนุญาต

ความเสี่ยงด้านความปลอดภัยของการให้สิทธิ์โดยใช้ลายเซ็น

เช่นเดียวกับเทคโนโลยีใหม่ ๆ ทั้ง Permit และ Permit2 มาพร้อมกับประสิทธิภาพใหม่ไม่เพียงอย่างเดียว แต่ยังมีความเสี่ยงใหม่ๆ โดยเฉพาะอย่างยิ่งเกี่ยวกับการโจมตีที่ใช้ลายเซ็นต์เป็นหลัก

ในระบบที่ใช้ลายเซ็นเจอร์ เช่น Permit2 และ EIP-2612 Permit การออกแบบสัญญาหลักมีชั้นความปลอดภัยหลายชั้นเพื่อป้องกันการใช้งานผิดประโยชน์และการโจมตีแบบซ้ำ

1. การป้องกันการทำซ้ำที่ขึ้นอยู่กับ Nonce

Permit2 รักษาตัวนับ nonce แยกต่างหากสําหรับแต่ละ (เจ้าของโทเค็นผู้ใช้จ่าย) tuple ทุกครั้งที่ผู้ใช้ลงนามในการอนุญาตใหม่ nonce ที่เกี่ยวข้องจะเพิ่มขึ้น หากผู้โจมตีพยายามนําลายเซ็นเก่ากลับมาใช้ใหม่จะล้มเหลวเนื่องจากสัญญาจะตรวจสอบว่ามีการใช้ลายเซ็นเก่าแล้วหรือไม่

2. การบังคับใช้ข้อกำหนดเวลา

ลายเซ็นแต่ละอันต้องรวมฟิลด์กำหนดเวลาสำหรับการดำเนินการ ขณะที่สัญญาตรวจสอบลายเซ็น มันจะรับรองว่าเวลาบล็อกปัจจุบันเป็นไปตามหรือน้อยกว่าเวลากำหนด หากลายเซ็นหมดอายุ - แม้ว่าจะถูกต้องโดยรวม - มันจะถูกปฏิเสธ สิ่งนี้จะป้องกันการใช้สิทธิการใช้งานที่ยาวนานจากการถูกใช้งานในภายหลัง

3. ควบคุมสิทธิการใช้งานโดยละเอียด

ใบอนุญาต2 ลายเซ็นสามารถระบุวงเงินสูงสุดได้ ก่อนที่การโอนโทเค็นจะเกิดขึ้น สัญญาตรวจสอบว่าจำนวนที่ร้องขออยู่ในขีดจำกัดนี้ สัญญาไม่ใช้จ่ายจำนวนที่อนุมัติเต็มร้อยโดยอัตโนมัติ ทำให้ผู้ใช้สามารถใช้วงเงินของตนเป็นส่วนๆ ลดความเสี่ยงของการประยุกต์ใช้ที่ถูกเต็มร้อย

4. โหมดการใช้งานครั้งเดียวและโหมดกลุ่ม

นอกจากการอนุญาตที่เป็นระบบอนุญาตตามคำสั่ง ยังรองรับลายเซ็นเจาะจงผ่านการโอนลายเซ็น เหล่าลายเซ็นเหล่านี้ถูกต้องสำหรับธุรกรรมเดียวเท่านั้นและกลายเป็นโมฆะทันทีหลังจากดำเนินการ นี่เหมาะสำหรับการชำระเงินครั้งเดียวและป้องกันลายเซ็นไม่ให้ถูกใช้ซ้ำหรือถูกใช้เอาแล้วภายหลัง

การป้องกันชั้นเลเยอร์เหล่านี้ช่วยให้ระบบการให้สิทธิ์แบบ Permit ปรับปรุงประสบการณ์ผู้ใช้และประหยัด gas พร้อมลดความเสี่ยงที่เกิดขึ้นเป็นปกติ เช่น "replay attacks", "over-authorization", และ "indefinite signature validity"

อย่างไรก็ตาม แม้จะมีการป้องกันระดับสัญญาที่ปลอดภัย การวิศวกรรมสังคม (โดยเฉพาะการโฟกัส) ยังคงเป็นภัยที่ยากที่สุดที่จะป้องกันได้ ในส่วนถัดไป เราจะมองไปที่เทคนิคการโฟกัสที่พบบ่อยและวิธีการโจมตีของผู้โจมตีที่หลอกผู้ใช้ให้ลงนามอนุญาตที่เป็นอันตรายโดยไม่รู้ตัวที่ใช้ Permit2 นอกจากนี้เรายังจะมีเคล็ดลับเกี่ยวกับวิธีการปลอดภัย

วิธีการโจมตีการปลอมแซ่ลงลายนามเกิดขึ้นอย่างไร?

การปลอมแปลงลายเซ็นเกิดขึ้นเมื่อผู้โจมตีหลอกเอาเหยื่อให้ลงลายเซ็นข้อความที่เฉพาะเจาะจงเพื่อเอาเอาควบคุมสินทรัพย์ของพวกเขา ในขณะที่การโจมตีแบบดั้งเดิมอาจเกี่ยวข้องกับการดำเนินสัญญาที่ไม่ดีหรือธุรกรรมที่ไม่ดี ในยุคการอนุญาต การอนุญาตลายเซ็นที่เป็นอันตรายเพียงอันเดียวก็เพียงพอที่จะดูดเงินออกมา นี่คือวิธีที่การโจมตีเหล่านี้มักจะเกิดขึ้น:

  1. เหยื่อคลิกที่เว็บไซต์ DEX ที่รู้จักกันดี (ไซต์ฟิชชิ่ง) เวอร์ชันปลอม เมื่อผู้ใช้พยายามโต้ตอบไซต์จะแจ้งคําขอลายเซ็นกระเป๋าเงินโดยอ้างว่าเป็น "การยืนยันการเข้าสู่ระบบ" หรือวัตถุประสงค์อื่น ๆ ที่ดูเหมือนถูกต้องตามกฎหมาย อย่างไรก็ตามคําขอนี้เป็นลายเซ็นการอนุญาต Permit2 โดยอนุญาตให้ผู้โจมตีสามารถถอน USDC ของเหยื่อได้ไม่จํากัดโดยมีระยะเวลาที่ขยายออกไป
  2. เหยื่อที่ขาดความระมัดระวังเซ็นคำขอโดยตรง ณ จุดนี้ไม่มีการใช้แก๊สและไม่มีกิจกรรม on-chain เกิดขึ้น จึงไม่ทิ้งร่องรอยที่น่าสงสัย
  3. เมื่อผู้โจมตีได้รับลายเซ็น พวกเขาจะโทรไปทันทีที่ฟังก์ชัน permit() ของสัญญา Permit2 เพื่อส่งมัน หลังจากที่สัญญา Permit2 ตรวจสอบลายเซ็นแล้ว มันจะบันทึกการอนุญาตสำหรับสัญญาของผู้โจมตีภายใต้ที่อยู่ของเหยื่อ (เทียบเท่ากับเหยื่อทำการ approve แต่ถูกดำเนินการโดยผู้โจมตี) การดำเนินการนี้อาจยังไม่เสร็จสมบูรณ์โดยเหยื่อเนื่องจากกระเป๋าเงินของเขาไม่แสดงค่าใช้จ่าย - เฉพาะการตั้งค่าการอนุญาตโทเค็นของเขาถูกอัพเดตบนบล็อกเชนเท่านั้น
  4. ต่อมา, ผู้โจมตีทันทีเริ่มการทำธุรกรรม transferFrom(victim, attacker_address, amount) จากที่อยู่ของตนเอง, โดยสามารถโอน USDC ของเหยื่อไปยังตนเองอย่างประสบความสำเร็จโดยใช้การอนุญาต Permit2 ล่าสุด ผู้เสียหายเพียงเข้าใจถึงการถูกขโมยเมื่อเข้าใจเรื่องช้าไปแล้ว

ในการโจมตีเหล่านี้ ผู้ใช้ไม่เคยดำเนินการทำธุรกรรม “โอน” หรือ “อนุญาต” ที่ชัดเจนใด ๆ อย่างไรก็ตามสินทรัพย์ของพวกเขาจะหายไปอย่างลึกลับ ความสำคัญอยู่ที่ลายเซ็นต์เองกลายเป็นการอนุญาต ผู้โจมตีจัดการปกป้องคำขอลายเซ็นต์ให้ดูเหมือนเป็นการดำเนินการที่ปกติ ลดความระมัดระวังของผู้ใช้ อย่างไรก็ตามเมื่อลายเซ็นต์แล้ว มันก็เหมือนกับการส่งมอบกุญแจของสินทรัพย์ของคุณ

อย่างแย่ยิ่ง, บางผู้โจมตีใช้วิธีเทคนิคเพื่อเพิ่มความลับมากขึ้น เช่นพวกเขาใช้กลไก CREATE2 ของ Ethereum เพื่อสร้างที่อยู่สัญญาที่เป็นอันตรายที่ไม่ซ้ำกันสำหรับแต่ละเหยื่อ สิ่งนี้ทำให้การเขียนรายชื่อดำเพลิงเป็นไร้ประสิทธิภาพเนื่องจากการโจมตีแต่ละครั้งใช้ที่อยู่ที่แตกต่างกัน

เหตุการณ์การล่องลอยคริปโตล่าสุดมักเกิดขึ้นโดยการอนุญาตลายมือ. เช่นเดียวกับ Scam Sniffer’sสถิติตั้งแต่ต้นปี พ.ศ. 2024 แสดงว่ามีทรัพย์สินมูลค่าเกิน 55 ล้านเหรียญถูกขโมยผ่านฟิชชิ่งลายเซ็นเจอร์เพียงเดือนเดียว ตั้งแต่เริ่มใช้ Permit2 ผู้โจมตีก็กลายเป็นโดดเด่นขึ้นในการกระตุ้นผู้ใช้ให้เซ็นอนุญาต Permit/Permit2 ซึ่งทำให้มีผู้เสียหายจำนวนมากในช่วงเวลาสั้น ๆ โดยชัดเจนว่าเมื่ออนุญาตลายเซ็นถูกนำไปใช้ในทางที่ไม่เหมาะสม มันสามารถก่อให้เกิดความเสียหายและยากต่อการตรวจจับ

ทำไมความเสี่ยงที่เกี่ยวกับการลอกเลียนแบบลายเซ็นเจอร์สูงกว่าวิธีทางเลือกทั่วไป?

การอนุญาตที่เป็นอันตรายแบบดั้งเดิมกําหนดให้ผู้ใช้ต้องทําธุรกรรมแบบ on-chain ซึ่งกระเป๋าเงินมักจะแสดงคําเตือนที่ชัดเจน เช่น "คุณอนุญาตให้ XXX ใช้โทเค็นของคุณ" และต้องเสียค่าธรรมเนียมก๊าซ ผู้ใช้ที่มีประสบการณ์มักจะระมัดระวังมากขึ้นเกี่ยวกับสิ่งเหล่านี้ อย่างไรก็ตามคําขอลายเซ็นในอินเทอร์เฟซกระเป๋าเงินมักถูกอธิบายว่าเป็นเพียง "คําขอลายเซ็นข้อมูล" มากกว่าการดําเนินการทางการเงินทําให้ผู้ใช้ลดการป้องกันลง ยิ่งไปกว่านั้นเนื่องจากลายเซ็นไม่เสียค่าใช้จ่ายผู้โจมตีจึงสามารถเปิดตัวความพยายามฟิชชิ่งขนาดใหญ่ได้โดยไม่ต้องกังวลกับค่าใช้จ่าย - พวกเขาทํากําไรได้แม้จะมีความพยายามที่ประสบความสําเร็จเพียงไม่กี่ครั้ง

นอกจากนี้ กระเป๋าเงินที่แตกต่างกันจะแสดงข้อความ EIP-712 อย่างหลากหลาย บางกระเป๋าเงินรุ่นใหม่ (เช่นล่าสุดMetaMaskการแยกและแสดงฟิลด์อย่างชัดเจน โดยแสดงข้อความเช่น 'อนุญาตให้สัญญาใช้จ่าย X จำนวนของโทเคนของคุณ' อย่างได้เจิดจรัส อย่างไรก็ตาม กระเป๋าเงินหลายราย แสดงข้อมูลสิบหกสิบหกหรือคำอธิบายอย่างง่ายเท่านั้น ทำให้ผู้ใช้ทั่วไปมีความยากลำบากในการตรวจสอบความถูกต้อง ผู้โจมตีใช้ประโยชน์จากสิ่งนี้โดยฝังคำอธิบายที่หลอกลวงในข้อความ (เช่น การแสดงตัวเลือกของ NFT) เพื่อหลอกผู้ใช้ให้ลงลายเซ็น

เนื่องจากการอนุญาตลายเซ็นไม่ได้ส่งผลกระทบต่อทรัพย์สินในทันทีผู้เสียหายอาจไม่สามารถตรวจจับภัยคุกคามได้ทันที ผู้โจมตีสามารถกําหนดเวลาการประท้วงได้อย่างมีกลยุทธ์ แทนที่จะดําเนินการทันทีพวกเขาอาจรอจนกว่ากระเป๋าเงินของเหยื่อจะมีทรัพย์สินมากขึ้นหรือจนกว่าจะถึงช่วงเวลาหนึ่งซึ่งทําให้ความพยายามในการติดตามมีความซับซ้อน ด้วยลายเซ็นที่ขยายระยะเวลาการใช้งานผู้โจมตียังสามารถใช้ประโยชน์จากการเคลื่อนไหวของราคาเพื่อเพิ่มผลกําไรสูงสุดทําให้พวกเขามีตัวเลือกการซื้อขายฟรีอย่างมีประสิทธิภาพ ความเสี่ยงนี้อธิบายว่าเหตุใดลายเซ็นใบอนุญาตจึงบังคับใช้กําหนดเวลาสั้น ๆ

ความสามารถของ Permit2 ในการอนุญาตโทเค็นหลายรายการด้วยลายเซ็นเดียวทําให้ผู้ใช้เข้าใจความหมายได้อย่างเต็มที่ ตัวอย่างเช่น เว็บไซต์ฟิชชิ่งอาจขอลายเซ็น Permit2 ในขณะที่เน้นสิทธิ์สําหรับโทเค็นเพียงหนึ่งหรือสองโทเค็น แต่แอบฝังการอนุญาตที่กว้างขวางสําหรับโทเค็นเพิ่มเติมภายในลายเซ็นเดียวกัน ผู้ใช้สามารถมองข้ามสิทธิ์ที่ซ่อนอยู่เหล่านี้ได้อย่างง่ายดายหากกระเป๋าเงินของพวกเขาไม่แสดงรายละเอียดทั้งหมดอย่างชัดเจน นอกจากนี้ผู้โจมตีมักใช้ชื่อสัญญาที่หลอกลวงเช่น "WalletGuard" ในลายเซ็นของพวกเขาปิดบังสัญญาที่เป็นอันตรายที่ออกแบบมาเพื่อขโมยสิทธิ์โทเค็น

ผู้ใช้จะสามารถป้องกันตัวเองจากการโจมตีลายเซ็นได้อย่างไร?

โปรดจําไว้ว่าการลงนามเทียบเท่ากับการให้ความยินยอม - อย่าปล่อยให้การไม่มีค่าน้ํามันทําให้คุณประมาท เมื่อกระเป๋าเงินของคุณขอลายเซ็น ให้อ่านรายละเอียดข้อความอย่างละเอียด ตรวจสอบให้แน่ใจว่าเว็บไซต์หรือ DApp ที่ขอลายเซ็นนั้นถูกต้องและเนื้อหาข้อความสอดคล้องกับการกระทําที่คุณตั้งใจไว้ ตัวอย่างเช่นหากคุณเพียงแค่ลงชื่อเข้าใช้เว็บไซต์ลายเซ็นควรมีข้อความเข้าสู่ระบบที่อ่านได้ (ตามที่ DApps ส่วนใหญ่ใช้) ไม่ใช่สตริงที่อยู่โทเค็นและหมายเลข

ตรวจสอบให้แน่ใจว่าซอฟต์แวร์กระเป๋าเงินของคุณรองรับการแสดงข้อมูล EIP-712 โดยเฉพาะ กระเป๋าเงินชั้นนำเช่น MetaMask,TrustWallet, และLedger Live กําลังปรับปรุงประสบการณ์การแสดงเนื้อหาลายเซ็นของพวกเขา ตัวอย่างเช่น MetaMask สามารถแยกวิเคราะห์ข้อความอนุญาตทั่วไปเป็นภาษาธรรมดาได้แล้ว หากกระเป๋าเงินของคุณแสดงเฉพาะข้อมูลเลขฐานสิบหกยาวเมื่อลงนาม ให้ลองเปลี่ยนหรืออัปเดต ผู้ใช้กระเป๋าเงินฮาร์ดแวร์ควรอัปเดตเฟิร์มแวร์อยู่เสมอเพื่อรองรับรูปแบบใหม่ มิฉะนั้นอาจไม่เห็นข้อมูลอย่างถูกต้องบนหน้าจอ

ไม่ว่าจะใช้ลายเซ็นใบอนุญาตหรือใบอนุญาต 2 คุณมักจะสามารถปรับพารามิเตอร์การอนุญาตได้ อย่าเซ็นชื่อไม่ จํากัด จํานวน (ค่า = 2 ^ 256-1) เว้นแต่จําเป็นอย่างยิ่ง - แทนที่จะอนุญาตเฉพาะจํานวนเงินที่คุณต้องการบวกบัฟเฟอร์ขนาดเล็ก นอกจากนี้อย่ากําหนดเส้นตายมากเกินไปในอนาคต ด้วยวิธีนี้แม้ว่าลายเซ็นของคุณจะตกไปอยู่ในมือที่ไม่ถูกต้อง แต่การสูญเสียที่อาจเกิดขึ้นจะถูก จํากัด และลายเซ็นจะหมดอายุในที่สุด

พัฒนานิสัยในการตรวจสอบสถานะการอนุญาตที่อยู่ของคุณเป็นประจําโดยใช้เครื่องมือต่างๆ เช่น Revoke.cash, Etherscan Token Approval หรือคุณสมบัติในตัวของกระเป๋าเงินของคุณ ซึ่งรวมถึงการอนุมัติแบบดั้งเดิมและค่าเผื่อใบอนุญาต 2 หากคุณพบการอนุญาตที่น่าสงสัยหรือไม่จําเป็น ให้เพิกถอนสิทธิ์เหล่านั้นทันที สําหรับ Permit2 โปรดระวังการเพิกถอนสองระดับ: ขั้นแรกการอนุญาตหลัก (คุณอนุมัติสัญญา Permit2 เองซึ่งคุณอาจต้องการตั้งค่าเป็น 0 เมื่อไม่ได้ใช้งาน) ประการที่สองการอนุญาตย่อย (ค่าเผื่อของ Permit2 สําหรับ DApps ต่างๆซึ่งมักจะหมดอายุโดยอัตโนมัติ แต่สามารถยกเลิกได้ก่อนกําหนดหากมีระยะเวลานาน) หากคุณสงสัยว่าคุณได้ลงนามในใบอนุญาตที่น่าสงสัยการกระทําที่ปลอดภัยที่สุดคือการปรับ nonce ทันที: ลงนามในใบอนุญาตใหม่ให้กับผู้ใช้จ่ายรายเดียวกัน (แม้จะมีค่าเผื่อ 0) เพื่อทําให้ลายเซ็นเก่าที่อยู่ในความครอบครองของผู้โจมตีเป็นโมฆะ

ระมัดระวังเสมอเมื่อเยี่ยมชมเว็บไซต์ที่ไม่คุ้นเคยหรือดาวน์โหลดแอปพลิเคชัน อย่าคลิกลิงก์ที่ไม่รู้จัก โดยเฉพาะ "ข้อเสนอส่งเสริมการขาย" หรือ "กิจกรรมมิ้นท์" ที่แชร์ผ่านโฆษณาโซเชียลมีเดียหรือข้อความส่วนตัว ความพยายามฟิชชิงจํานวนมากเกิดขึ้นผ่านบัญชีทางการปลอมที่โพสต์ลิงก์กิจกรรมหลอกลวงซึ่งนําไปสู่คําขอลายเซ็น ทําให้เป็นนิสัยในการพิมพ์ URL DApp อย่างเป็นทางการโดยตรงหรือใช้บุ๊กมาร์กเพื่อหลีกเลี่ยงการตกหลุมรักเว็บไซต์ปลอม

ในสรุป การสร้างสมดุลระหว่างความสะดวกและความปลอดภัยเป็นสิ่งสำคัญ ในขณะที่เทคโนโลยีการอนุญาตเป็นสิ่งที่สะดวก ผู้ใช้ต้องรักษาความระมัดระวังเกี่ยวกับการป้องกันความเสี่ยง ซึ่งเมื่อระบบโตมากขึ้น ผลิตภัณฑ์กระเป๋าเงินและปลั๊กอินของเบราว์เซอร์กำลังพัฒนาการป้องกันต่อการลวดลามเกี่ยวกับการลงลายมากๆ เรามีเป้าหมายที่จะลดการโจมตีแบบนี้ผ่านการปรับปรุงทั้งด้านเทคนิคและการศึกษาในอนาคต

สรุป

ตั้งแต่ข้อ จํากัด ของรูปแบบการอนุญาต ERC-20 แบบดั้งเดิมไปจนถึงการเกิดใบอนุญาตและจากนั้นไปจนถึงใบอนุญาตที่เป็นนวัตกรรมใหม่ของ Uniswap2 เราได้เห็นความพยายามของระบบนิเวศ Ethereum ในการปรับปรุงประสบการณ์และความปลอดภัยของผู้ใช้ Permit2 ช่วยลดความยุ่งยากในกระบวนการอนุมัติโทเค็นผ่านลายเซ็นนอกเครือข่ายลดความเสี่ยงของการอนุมัติซ้ําและการอนุญาตแบบไม่ จํากัด ในขณะที่แนะนําคุณสมบัติที่มีประโยชน์เช่นกลไกการหมดอายุและการดําเนินการแบทช์ อย่างไรก็ตามกลไกใหม่เหล่านี้มาพร้อมกับความรับผิดชอบใหม่ ๆ ผู้ใช้จําเป็นต้องเพิ่มความตระหนักด้านความปลอดภัยในขณะที่กระเป๋าเงินและ DApps ต้องทํางานร่วมกันเพื่อปกป้องผู้ใช้จากการโจมตีด้วยลายเซ็น เมื่อมองไปข้างหน้าด้วยการพัฒนาทางเทคโนโลยีเพิ่มเติมเช่นการเป็นนามธรรมของบัญชีการจัดการการอนุญาตโทเค็นคาดว่าจะราบรื่นและปลอดภัยยิ่งขึ้น

著者: John
翻訳者: Sonia
レビュアー: Pow、KOWEI、Elisa
翻訳レビュアー: Ashley、Joyce
* 本情報はGate.ioが提供または保証する金融アドバイス、その他のいかなる種類の推奨を意図したものではなく、構成するものではありません。
* 本記事はGate.ioを参照することなく複製/送信/複写することを禁じます。違反した場合は著作権法の侵害となり法的措置の対象となります。

การลงจมนำลึกในโมเดลการอนุญาต ERC-20: การทำงานของ Permit และ Permit2, ความเสี่ยง และความแตกต่างที่สำคัญ

มือใหม่4/25/2025, 6:38:53 AM
สํารวจวิธีที่ Privacy Pools แนะนํากระบวนทัศน์ใหม่สําหรับความเป็นส่วนตัวของบล็อกเชนผ่านกลไก ASP (Association Set Providers) ที่เป็นนวัตกรรมใหม่และการพิสูจน์ความรู้เป็นศูนย์ บทความนี้จะตรวจสอบรากฐานทางทฤษฎีโดยทีมงานของ Vitalik Buterin การใช้งานทางเทคนิคโดย 0xbow และสถาปัตยกรรมสามชั้นสร้างสมดุลระหว่างความเป็นส่วนตัวของผู้ใช้กับความต้องการด้านกฎระเบียบอย่างไร นอกจากนี้ยังวิเคราะห์ผลกระทบของโปรโตคอลที่มีต่อ DeFi เปรียบเทียบกับโซลูชันความเป็นส่วนตัวอื่น ๆ และสํารวจโอกาสและความท้าทายในอนาคต

ในโลกของบล็อกเชน ผู้ใช้บ่อยครั้งต้องให้สิทธิ์ (อนุญาต) ซึ่งทำให้สมาร์ทคอนแทรคตใช้โทเค็นในนามของพวกเขาได้ ตัวอย่างเช่น เมื่อใช้ดีอีเอ็กซ์ (DEX) เพื่อสลับโทเค็น ผู้ใช้จำเป็นต้องอนุญาตสัญญาของตลาดให้โอนจำนวนโทเค็นที่กำหนดจากกระเป๋าของพวกเขาก่อนERC-20ตามมาตรฐานนี้ กระบวนการนี้ต้องใช้ธุรกรรม on-chain สองรายการแยกกัน: หนึ่งสำหรับการอนุมัติและอีกอันสำหรับการโอนโทเค็นจริง ๆ กระบวนการสองขั้นตอนนี้ไม่เพียงแต่ยุ่งยากแต่ยังมีค่าธรรมเนียมแก๊สเพิ่มเติม หากต้องการปรับปรุงทั้งประสบการณ์ของผู้ใช้และความปลอดภัย ชุมชน Ethereum ได้เสนอกลไซเนเจอร์ที่ใช้ลายเซ็นเป็นพื้นฐานอนุญาต(เช่น EIP-2612) และพัฒนาเป็นเวอร์ชันที่ถูกพัฒนาขึ้นมาทีหลังที่เรียกว่า Permit2 กลไกใหม่เหล่านี้ช่วยให้ผู้ใช้สามารถให้อนุญาตให้โทเค็นผ่านลายเซ็นต์ออฟเชน โดยหลีกเลี่ยงความจำเป็นในการทำธุรกรรมออนเชนเพิ่มเติม

ในบทความนี้ เราจะเริ่มต้นด้วยเนื้อหาพื้นฐานโดยการอธิบายวิธีการทำงานของการอนุมัติ ERC-20 แบบดั้งเดิมและข้อจำกัดของมัน จากนั้นเราจะลึกซึ้งเกี่ยวกับวิธีการทำงานของ Permit และ Permit2 โดยเน้นที่ประโยชน์และการแลกเปลี่ยน และพูดถึงว่าพวกเขาเสริมสร้างความมีประสิทธิภาพและความปลอดภัย นอกจากนี้เรายังจะสำรวจความเสี่ยงด้านความปลอดภัยที่เป็นไปได้โดยเฉพาะการโจมตีฟิชชิ่งที่เกี่ยวข้องกับลายเซ็นทรัย์ที่เป็นอันตราย, และให้เคล็ดลับสำหรับการเก็บตัวอย่างการปลอดภัย ไม่ว่าคุณจะเป็นมือใหม่ในด้านบล็อกเชนหรือเพิ่งเริ่มต้นการลงทุนในสกุลเงินดิจิทัล คู่มือนี้มีจุดประสงค์เพื่อช่วยคุณเข้าใจนวัตกรรมทางเทคนิคที่สำคัญเหล่านี้

พื้นฐานของโมเดลการอนุญาต ERC-20

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

วิธีการทำงานของการอนุมัติ ERC-20 แบบดั้งเดิม

ERC-20 เป็นมาตรฐานสำหรับโทเค็นบน Ethereum มันกำหนดฟังก์ชั่นเช่นการอนุมัติและการโอนจาก ซึ่งทำให้การอนุญาตโทเค็นเป็นไปได้ การอนุญาตที่นี่หมายถึงว่าผู้ถือโทเค็น (เจ้าของ) อนุญาตบัญชีอื่นๆ ซึ่งโดยทั่วไปคือสัญญาฉลาก (ผู้ใช้จ่าย) โอนจำนวนโทเค็นบางจำนวนในนามของพวกเขา กระบวนการพื้นฐานทำงานอย่างนี้

  1. ผู้ถือโทเค็นเรียกใช้ฟังก์ชัน approve(spender, amount) ของสัญญาโทเค็น นี้จะบันทึกค่าในการอนุญาตในการแมปภายในของสัญญา โดยทั่วไปจะแสดงในรูปแบบ allowance[owner][spender] = จำนวน ตัวอย่างเช่น หากผู้ใช้ A ให้สิทธิให้สัญญา Uniswap ใช้จ่ายได้สูงสุด 100 โทเคน สัญญาจะเก็บ allowance[A][Uniswap] = 100 ขั้นตอนนี้ต้องการธุรกรรมบนเชื่อมโยงและค่าธรรมเนียมในการจ่ายโดย A
  2. DeleGate.iod Transfer (transferFrom): ในภายหลังเมื่อ Uniswap (หรือ dApp อื่น) ต้องใช้โทเค็นในนามของ A มันจะเรียก transferFrom(A, B, จำนวน) บนสัญญาโทเค็น สัญญาจะตรวจสอบว่า allowance[A][Uniswap] เพียงพอหรือไม่ ถ้าเป็นเช่นนั้น สัญญาจะโอนจำนวนที่ระบุจาก A ไปยัง B และหักจำนวนนั้นจาก allowance

ข้อจำกัดและความท้าทายของโมเดลการอนุมัติ

โมเดลสองขั้นตอนด้านบนช่วยให้ผู้ใช้สามารถให้อนุญาตให้สัญญาจัดการกับเงินของพวกเขาโดยไม่ต้องแชร์กุญแจส่วนตัวของพวกเขา อย่างไรก็ตามวิธีการเชิง传统นี้ก็มาพร้อมกับปัญหาทางปฏิบัติหลายอย่าง

ต้องการการทำธุรกรรมสองครั้ง ประสบประสบการณ์ของผู้ใช้ที่แย่
ทุกครั้งที่ผู้ใช้ต้องการใช้โทเค็นใหม่บน dApp พวกเขาจะต้องส่งธุรกรรมการอนุมัติแยกต่างหากก่อนที่พวกเขาจะสามารถดำเนินการที่ต้องการจริง (เช่น สว๊อปหรือสเตก) ซึ่งหมายความว่ากระเป๋าเงินของพวกเขาจะให้การยืนยันอีกครั้งและคิดค่าธรรมเนียม Gas เพิ่มเติม สำหรับผู้เริ่มต้น ขั้นตอนเพิ่มเติมนี้อาจทำให้สับสนและไม่สะดวก

การจัดการการอนุมัติแบบแยกส่วน
เมื่อผู้ใช้โต้ตอบกับหลายdAppsใช้โทเค็นเดียวกัน (เช่น การซื้อขายบน Uniswap แล้วนำเงินฝากในโปรโตคอล DeFi อื่น) แต่ละ dApp ต้องการการอนุมัติแยกต่างหาก แม้ว่าจะเป็นโทเค็นเดียวกันในกระเป๋าเงินเดียวกัน นี่ส่งผลให้การอนุมัติที่ซ้ำซ้อน ทำให้เสียเวลาและแก๊ส

นอกจากนี้เนื่องจากแอพพลิเคชันแต่ละแอพพิเคชันจัดการสิทธิใช้งานของตนเองอย่างอิสระผู้ใช้มีการควบคุมที่ถูกกลางอย่างน้อยเมื่อเทียบกับการอนุญาตRevoke.cashและDeBankโดยอนุญาตให้ผู้ใช้ดูแลและจัดการการอนุญาตโทเค็น แต่ผู้ใช้มีความไม่ทราบถึงเรื่องนี้มากเกินไป และแม้ว่าพวกเขารู้จักกันดี การเพิกถอนการอนุญาตยังต้องการธุรกรรมอนุญาต ซึ่งเพิ่มค่าใช้จ่าย เนื่องจากนั้น การอนุญาตเก่าหรือไม่ได้ใช้งานจะลืมไปเลย

ความเสี่ยงจากการอนุมัติโดยไม่จำกัด
เพื่อหลีกเลี่ยงธุรกรรมการอนุมัติบ่อยครั้ง dApps จํานวนมากแนะนําให้ผู้ใช้อนุมัติไม่ จํากัด ทําให้สัญญาสามารถใช้ยอดคงเหลือโทเค็นทั้งหมดของผู้ใช้โดยไม่มีวันหมดอายุ แม้ว่าวิธีการนี้จะช่วยประหยัดความพยายามในภายหลัง แต่ก็มีความเสี่ยงด้านความปลอดภัยที่ร้ายแรง: หาก dApp หรือสัญญาถูกบุกรุกผู้โจมตีสามารถระบายโทเค็นที่ได้รับอนุมัติทั้งหมดได้

ความท้าทายเหล่านี้ทำให้นักพัฒนาต้องมองหาทางเลือกที่ดีกว่า อย่างที่ควรจะเป็น ผู้ใช้ควรจะต้องเซ็นต์เพียงครั้งเดียว (โดย preference คือ off-chain และไร้ค่า gas) เพื่อที่จะทำการอนุมัติและดำเนินการได้พร้อมๆกัน การอนุมัติยังควรจะถูก จำกัด ในขอบเขตและระยะเวลาเพื่อลดความเสี่ยงที่เป็นไปได้ นี่คือแรงจูงใจในการนำเสนอ ERC-20 Permit

อนุญาต: การให้สิทธิในการลงนามตาม ERC-20 (EIP-2612)

ความคิดเรื่องใบอนุญาตถูกแนะนำครั้งแรกโดยDAIสัญญา stablecoin และต่อมาถูกมาตราฐานระเบียบเป็น EIP-2612 โดยสรุป Permit ช่วยให้ผู้ใช้สามารถอนุญาตการโอนโทเค็นโดยใช้ลายเซ็นน์นอกเชือก โดยยกเลิกความจำเป็นในการส่งธุรกรรม approve แยกออกไปที่ต้องทำบนเชน ให้เรามาสังเกตอย่างใกล้ชิดว่ามันทำงานอย่างไรและคุณลักษณะที่แตกต่างของมัน

การทำงานของ Permit

Permit เป็นกลไกการอนุญาตที่ขึ้นอยู่กับลายเซ็นดิจิทัล ภายใต้มาตรฐาน EIP-2612 สัญญา ERC-20 ที่รองรับ Permit เพิ่มฟังก์ชันที่เรียกว่า permit() ซึ่งมีลักษณะดังนี้:

ฟังก์ชัน permit(
เจ้าของที่อยู่, ผู้ใช้ที่อยู่,
uint256 ค่า, uint256 วันหมดอายุ,
uint8 v, bytes32 r, bytes32 s
) ภายนอก;

ที่นี่เจ้าของ, ผู้ใช้จ่าย, และค่าทราบว่าใครให้สิทธิ, ใครได้รับสิทธิ, และจำนวนที่อนุญาต การกำหนดเวลาหมดอายุแสดงถึงเมื่อลายเซ็นจะหมดอายุ พารามิเตอร์ v, r, และ s แบ่งออกเป็นECDSAลายเซ็นดิจิทัล โดยใช้ Permit ผู้ใช้สามารถหลีกเลี่ยงการอนุมัติแยกตัวบนเชนได้—พวกเขาเพียงแค่ลงลายเซ็นข้อความ (โดยไม่ต้องจ่าย Gas) และรวมลายเซ็นนี้กับธุรกรรมของพวกเขาเพื่อทำการอนุมัติในขั้นตอนเดียว


การดำเนินการใบอนุญาต

เมื่อเปรียบเทียบกับการอนุมัติแบบดั้งเดิม ใบอนุญาตจะยกเลิกความจำเป็นต่อการทำธุรกรรมซึ่งอยู่บนเชนอีก ทำให้ประหยัดเวลาและค่า Gas ได้ นอกจากนี้ยังช่วยให้มีการควบคุมที่ละเอียดขึ้นในการอนุมัติ เช่น เมื่อผู้ใช้ลงลายมือชื่อในใบอนุญาตที่อนุญาตให้ใช้จ่ายเพียง 50 USDC เท่านั้น ถูกต้องเป็นเวลาเพียง 5 นาที แม้แต่ลายมือจะถูกเปิดเผย ก็จะไม่สามารถใช้งานหลังจากเวลาสุดท้ายลดลง เพื่อลดความเสี่ยง ในปัจจุบันมีโปรโตคอลดีไฟหลายแห่ง เช่น แลกเปลี่ยนแบบกระจายและแพลตฟอร์มการให้ยืม รองรับใบอนุญาต ตัวอย่างที่รู้จักได้แก่ Uniswap V2/V3 โทเค็น LP, DAI, และUSDC, ซึ่งได้นำมาใช้มาตรฐาน EIP-2612 ซึ่งทำให้สามารถอนุมัติด้วยลายเซ็นขั้นหนึ่งได้

อย่างไรก็ตาม ข้อจำกัดที่สำคัญที่สุดของ Permit คือ ต้องนำมาใช้งานโดยตรงภายในสัญญาตราบัตร หากนักพัฒนาโทเค็นยังไม่ได้เพิ่มวิธี permit() หมายความว่าไม่รองรับ EIP-2612 การใช้ Permit จึงไม่สามารถใช้งานได้ โดยเพราะ EIP-2612 ถูกนำเสนอเพียงในปี 2020 โทเค็นที่เก่ากว่ามักไม่รวมมันเข้าไป และแม้โทเค็นที่ใหม่ก็ไม่ได้นำมันมาใช้เสมอ สิ่งนี้จำกัดความสามารถในการใช้งานของ Permit: โทเค็นที่ไม่รองรับยังจำเป็นต้องใช้กระแสอนุมัติแบบเดิม

ปัญหาอีกประการหนึ่งคือซอฟต์แวร์กระเป๋าเงินต้องจัดการและแสดงลายเซ็นใบอนุญาตอย่างถูกต้องซึ่งโดยทั่วไปจะจัดรูปแบบโดยใช้ EIP-712 กระเป๋าเงินหลักส่วนใหญ่รองรับสิ่งนี้ในขณะนี้ แต่บางส่วนยังคงแสดงข้อมูลดิบแทนที่จะเป็นข้อความที่มนุษย์อ่านได้ทําให้ผู้ใช้เข้าใจสิ่งที่พวกเขากําลังลงนามได้ยาก หากไม่มีอินเทอร์เฟซที่ชัดเจนสําหรับ EIP-2612 กระเป๋าเงินอาจขัดขวางความเข้าใจของผู้ใช้เกี่ยวกับการอนุมัติตามลายเซ็น นอกจากนี้ ในกรณีของการปรับใช้แบบขนาน (เช่น สัญญาที่มีที่อยู่เหมือนกันบนเชนที่แตกต่างกัน) ลายเซ็นอาจถูกนํากลับมาใช้ใหม่ในสภาพแวดล้อมอื่น ดังนั้นผู้ใช้ต้องตรวจสอบว่ารหัสลูกโซ่และที่อยู่สัญญาในลายเซ็นตรงกับสภาพแวดล้อมปัจจุบันเพื่อป้องกันไม่ให้สิทธิ์ที่ได้รับสําหรับโทเค็นบน Chain A ถูกนําไปใช้ในทางที่ผิดโดยที่อยู่สัญญาที่เหมือนกันบน Chain B

ในทางปฏิบัติ Permit มีประสิทธิภาพและความยืดหยุ่นของการอนุมัติ ERC-20 ได้ดีขึ้นอย่างมีนัยสำคัญในกลไกการอนุมัติโกลไลส์ อย่างไรก็ตาม มันไม่ใช่ทางออกที่สมบูรณ์ โดยมีความจำเป็นต้องมีการสนับสนุนระดับโทเค็น และมันเป็นสาเหตุให้เกิดความเสี่ยงใหม่ ต่อไปเราจะสำรวจว่า Uniswap’s Permit2 มีการสร้างขึ้นและขยายพื้นฐานที่ Permit ได้เป็นรากเริ่ม

Permit2: สัญญาการจัดการสิทธิ์การอนุญาตสากล

เมื่อกลไกใบอนุญาตได้รับความนิยมความท้าทายใหม่ก็เกิดขึ้น: จะขยายความสะดวกสบายของการอนุญาตตามลายเซ็นไปยังโทเค็นที่ไม่รองรับใบอนุญาตได้อย่างไร? เพื่อแก้ไขปัญหานี้และเพิ่มประสิทธิภาพประสบการณ์การอนุญาตในสถานการณ์ต่างๆ ทีม Uniswap ได้เปิดตัว Permit2 ในปี 2022 ซึ่งแตกต่างจากคุณสมบัติเฉพาะโทเค็น Permit2 เป็นสัญญาอัจฉริยะการจัดการการอนุญาตแบบสแตนด์อโลน มันทําหน้าที่เป็นตัวกลางสําหรับการอนุญาตโทเค็นโดยให้ฟังก์ชันการอนุญาตที่เป็นหนึ่งเดียวและปรับปรุง มาวิเคราะห์หลักการและคุณสมบัติของใบอนุญาต 2

Permit2 ทำงานอย่างไร

Permit2 ทำหน้าที่เป็นบริการส่งผ่านการอนุญาต ความคิดหลักของมันคือ ผู้ใช้ให้การอนุญาตครั้งเดียวกับสัญญา Permit2 ซึ่งจะจัดการการอนุญาตย่อยต่อไปไปยังแอปพลิเคชันต่าง ๆ นี่คือวิธีการทำงาน

  1. การอนุญาตครั้งเดียว Permit2: ผู้ใช้ต้องอนุมัติ Permit2 สำหรับแต่ละโทเคนโดยใช้วิธีการอนุญาต传统(Permit2, จำนวนสูงสุด) แนะนำให้ใช้จำนวนมากหรือไม่จำกัดเนื่องจากนี่เป็นการอนุญาตหลัก หลังจากที่เสร็จสิ้นแล้วค่า Permit2 จะได้รับความสามารถในการเรียกใช้ transferFrom ในนามของผู้ใช้สำหรับโทเคนนั้น นี่ต้องการธุรกรรม on-chain แต่จำเป็นต้องทำเพียงครั้งเดียว
  2. ลายเซ็นนอกเครือข่ายสำหรับการให้สิทธิในการใช้งานย่อย: เมื่อผู้ใช้ต้องการที่จะปฏิสัมพันธ์กับ DApp (ตัวอย่างเช่นการใช้ Uniswap Universal Router สำหรับการเปลี่ยนเหรียญหลายรายการ) พวกเขาลงนามข้อความอนุญาตนอกเครือข่ายตามข้อกำหนดของ Permit2 ลายเซ็นนี้รวมถึงรายละเอียดเช่น โทเคนที่ได้รับอนุญาต จำนวน เป็นตัวรับเป้าหมาย (เช่น สัญญา DApp ที่เฉพาะเจาะจง) และเวลาหมดอายุ
  3. คำขอการโอน DApp โดยใช้ลายเซ็น: เมื่อ DApp ได้รับลายเซ็นของผู้ใช้และต้องการใช้โทเค็น แทนที่จะเรียกใช้สัญญาโทเค็นโดยตรง มันจะเรียกใช้ฟังก์ชันของ Permit2 (เช่น permitTransferFrom) ฟังก์ชันนี้จะทำการตรวจสอบข้อมูลลายเซ็นของผู้ใช้และยืนยันว่าการดำเนินการอยู่ในขอบเขตของสิทธิที่ได้รับ (โทเค็น จำนวน เส้นหมดอายุ) หลังจากการตรวจสอบเสร็จ Permit2 จะใช้การอนุมัติหลักของมันเองเพื่อเรียกใช้ transferFrom โอนโทเค็นจากผู้ใช้ไปยังผู้รับที่ระบุ จุดสำคัญ: สัญญา Permit2 เองทำหน้าที่เป็นผู้ใช้เงิน โดยใช้อำนาจของมันเองในการโอนโทเค็น พร้อมกับขั้นตอนการตรวจสอบลายเซ็นเพิ่มเติม
  4. การดำเนินการเสร็จสมบูรณ์: เมื่อ Permit2 ดำเนินการโอนเงินสำเร็จ ก็จะมีการเคลื่อนเงินไปที่ DApp หรือที่อยู่ที่ระบุอย่างราบรื่น จากมุมมองของผู้ใช้ พวกเขาเพียงแต่ให้ลายเซ็นเจอร์ในธุรกรรม ในขณะที่สัญญาจะดำเนินการดำเนินการทั้งหมดที่ตามมา

กระบวนการอนุญาต Permit2 ง่ายดาย: ผู้ใช้เพียงต้องให้การอนุมัติสูงสุดให้กับ Permit2 ครั้งเดียวต่อโทเคน หลังจากนั้นเมื่อต้องการทำธุรกรรมกับแอปพลิเคชัน (เช่น Uniswap Universal Router หรือโปรโตคอลอื่น ๆ) พวกเขาเพียงแค่รวมลายเซ็น Permit2 ลงในธุรกรรมของพวกเขาเพื่อสิ้นสุดกระบวนการอนุญาตและโอน โดยไม่จำเป็นต้องมีการอนุมัติเพิ่มเติมในเชน สัญญา Permit2 ยืนยันลายเซ็นและดำเนินการโอนโดยใช้การอนุมัติหลักของมัน (แหล่งที่มา:การแนะนำ Permit2 & Universal Router)

ผ่านโมเดลนี้ Permit2 ขยายแนวคิดการอนุญาตที่ใช้ลายเซ็น EIP-2612 ไปยังโทเค็น ERC-20 ทั้งหมด โดยไม่ว่าว่าพวกเขาจะใช้วิธี permit() หรือไม่ ตราบใดที่ผู้ใช้ได้อนุญาตให้สัญญา Permit2 ตั้งต้น พวกเขาสามารถใช้ลายเซ็นสำหรับการดำเนินการต่อๆ ไป คุ้มค่าที่ Uniswap ออกแบบ Permit2 เป็นสัญญาที่ไม่มีเจ้าของและไม่สามารถอัปเกรดได้ ที่ถูกใช้งานกับที่อยู่เดียวกันในเครือข่าย Ethereum mainnet และหลายโครงข่าย Layer 2 ซึ่งหมายความว่าทุกแอปพลิเคชันใช้ Permit2 ตัวเดียวกันทั้งหมด ทำให้บรรทัดคำว่า "อนุญาตซักครั้งใช้ทุกที่" เป็นไปได้

คุณสมบัติหลักของ Permit2

เป็นระบบอนุญาตรุ่นถัดไป Permit2 ไม่เพียงทำให้การอนุญาตที่ใช้ลายเซ็นสำหรับเหรียญทั้งหมดเป็นไปได้ แต่ยังมีคุณสมบัติเพิ่มเติมเพื่อเสริมความปลอดภัยและความสามารถในการใช้งาน นี่คือคุณสมบัติหลักของมัน:

การหมดอายุอัตโนมัติ
การอณุญาตทั้งหมดใน Permit2 สามารถรวมเข้าไปด้วย timestamp เพื่อการหมดอายุ ผู้ใช้สามารถระบุเวลาที่อณุญาตย่อยของพวกเขาควรหมดอายุเมื่อทำการเซ็นต์ หลังจากที่เวลาสิ้นสุดผ่านไป Permit2 จะปฏิเสธลายเซ็นเชียร์ แม้ว่าการอนุมัติหลักยังคงใช้งานอยู่ นี้จะช่วยแก้ปัญหาความเสี่ยงจากการอนุมัติที่ไม่มีข้อจำกัดที่ยังไม่ได้ใช้งาน

การโอนลายเซ็นเจาะจง
Permit2 มีโหมดการโอนลายเซ็นต์โดยตรงที่ผู้ใช้สามารถให้สิทธิ์การโอนโทเค็นเฉพาะไปยังผู้รับโดยใช้ลายเซ็นต์เท่านั้น โดยไม่จำเป็นต้องตั้งค่าสิทธิ์ก่อน นี่เหมาะสำหรับสถานการณ์การชำระเงินครั้งเดียว: ผู้ใช้สามารถลงลายเซ็นต์ในข้อความเพื่อให้สิทธิ์โอน 100 โทเค็นไปยังที่อยู่ของเพื่อน และเพื่อนหรือผู้กลายคลัสสามารถดำเนินการโอนโดยใช้ลายเซ็นต์นี้ หลังจากที่ใช้แล้ว ลายเซ็นต์ก็จะเป็นโมฆะ ซึ่งจะไม่ทิ้งสิทธิ์ที่ยังค้างอยู่

批准和转账
Permit2 ให้ความสำคัญกับประสิทธิภาพโดยอนุญาตให้ประมวลผลแบบจุดได้หลายการอนุญาตหรือการโอน ผู้ใช้สามารถให้สิทธิ์ที่แตกต่างกันของหลายๆ โทเค็นไปยังโปรโตคอลเดียวกันด้วยลายเซ็นเดียวกัน หรือดำเนินการโอนเงินของหลายๆ โทเค็นในธุรกรรมเดียว สิ่งนี้ช่วยประหยัด Gas และลดขั้นตอนสำหรับผู้ใช้ขั้นสูง

การเพิกถอนเป็นชุด
นอกเหนือจากการอนุมัติเป็นชุดผู้ใช้สามารถเพิกถอนสิทธิ์สําหรับโทเค็น / แอปพลิเคชันหลายรายการในธุรกรรมเดียว สิ่งนี้ทําให้การทําความสะอาดการอนุมัติในอดีตสะดวกยิ่งขึ้น

การเป็นพยานข้อมูลเพิ่มเติม
Permit2 รวมถึงอินเตอร์เฟซเช่น อนุญาตให้พยานโอนจาก ที่อนุญาตให้รวมข้อมูลการตรวจสอบเพิ่มเติมไว้ในลายเซ็น สิ่งนี้สนับสนุนสถานการณ์ที่ซับซ้อนมากขึ้น เช่น การรวมรายละเอียดธุรกรรมเฉพาะในลายเซ็นลําดับเพื่อป้องกันการนําลายเซ็นกลับมาใช้ใหม่ในบริบทที่แตกต่างกัน

ผ่านคุณลักษณะเหล่านี้ การอนุญาต2 ไม่เพียงทำซ้ำคุณสมบัติทั้งหมดของการอนุญาต แต่ยังเสริมความยืดหยุ่นและควบคุมความปลอดภัย การหมดอายุอัตโนมัติและการโอนลายมือเซ็นเซี่ยงเฉพาะ โดยเฉพาะ ทำให้การอนุญาตที่จำเป็นเพียงเล็กน้อยเป็นเกณฑ์มาตรฐาน ลดความเสี่ยงในระยะยาว

เพื่อสรุป Permit2 ทำหน้าที่เป็นการขยายตัวและเพิ่มประสิทธิภาพให้กับกลไกการอนุญาตแบบดั้งเดิม มาชมความแตกต่างสำคัญระหว่างวิธีการสองวิธีนี้

การนำใช้และการใช้งาน Permit2 Ecosystem

เมื่อ Uniswap นำเสนอ Permit2 มา เป็นโครงสร้างที่หลายๆ โครงการได้รวมร่วม ทำให้มาตรฐานของอุตสาหกรรมเร่งขึ้น ตามข้อมูลล่าสุดจาก ดูน อนาลิติกส์, ตั้งแต่เดือนเมษายน ค.ศ. 2025, มีมากกว่า 3.1 ล้านที่อยู่บน Ethereum mainnet ได้ให้สิทธิให้สิทธิให้สิทธิการใช้งานกับสัญญา Permit2 ซึ่งแสดงให้เห็นถึงการนำมาใช้ที่กว้างขวาง


สิทธิ2 นิวอน และสถานะการใช้งาน ที่มา:Dune Analytics

ตัวอย่างเช่น Uniswap ได้รวม Permit2 เข้ากับ Universal Router ของตนเพื่อเปิดให้การแลกเปลี่ยนหลายโทเคนและ NFT ในธุรกรรมเดียวกันเป็นไปได้ ผ่าน Universal Router ผู้ใช้สามารถเชื่อมโยงการดำเนินการหลายรายการในหนึ่งธุรกรรมเดียว เช่น การแลกเปลี่ยนสามโทเคนเป็นโทเคนเป้าหมายสองตัวและการซื้อ NFT พร้อมกับความต้องการในการอนุญาตทั้งหมดที่จัดการโดยลายมือ Permit2 สิ่งนี้ช่วยลดกระบวนการและค่า Gas ทั้งหมดอย่างมีชัดเจนโดยแสดงให้เห็นถึงผลกระทบโดยตรงของ Permit2 ในการปรับปรุงประสบการณ์ผู้ใช้

นอกจากนี้ด้วยการปรับใช้โอเพ่นซอร์สของ Permit2 ในเครือข่ายต่างๆกระเป๋าเงินและเครื่องมือ DApp จํานวนมากขึ้นได้เริ่มรองรับ เครื่องมือรักษาความปลอดภัยเช่น Revoke.cash ได้อัปเดตบริการของตนเพื่อให้ผู้ใช้สามารถดูและเพิกถอนบันทึกการอนุญาต Permit2 ได้ นอกจากนี้ Matcha ยังได้นําโมดูล SignatureTransfer ของ Permit2 มาใช้ โดยเปิดใช้งานกลไก "การอนุญาตแบบครั้งเดียว"

ผลกระทบถึงความคืบหน้านี้ การใช้งาน Permit2 อย่างกว้างขวางกำลังเผชิญกับอุปสรรคบางประการ อย่างใดอย่างหนึ่ง นักพัฒนาต้องใช้เวลาเพิ่มเติมสำหรับการรวมระบบ: เมื่อเปรียบเทียบกับการใช้งาน approve ของ ERC-20 โดยตรง การนำ Permit2 เข้ามาใช้งานต้องการการจัดการตรรกะของลายเซ็นเจอร์ ทำให้เกิดค่าใช้จ่ายในการพัฒนาเพิ่มมากขึ้น สิ่งนี้อาจหยุดยั้งทีมที่มีขนาดเล็กได้ จากอีกด้านหนึ่ง การสอนผู้ใช้เป็นสิ่งสำคัญ: หลาย DApps ที่ใช้ Permit2 จำเป็นต้องสอนผู้ใช้เกี่ยวกับความสำคัญของลายเซ็นเจอร์ ปัจจุบัน ข้อได้เปรียบของ Permit2 ที่มีความเป็นเอกอักษรดูเหนือความต้านทานเหล่านี้ แต่การเข้าถึงตลาดอย่างเต็มรูปแบบยังจะใช้เวลา

เปรียบเทียบ Permit2 กับ New Solutions: Session Keys และ ERC-4337

ในช่วง 8 ปีที่ผ่านมา กลไกการอนุญาต ERC-20 ได้รับการพัฒนาจากการทำธุรกรรมหลายรายการ ไปจนถึงลายเซ็นเซอร์ที่ไม่ใช้แก๊สและตอนนี้กลายเป็นบัญชีสมาร์ท การพัฒนาทุกขั้นตอนมุ่งหวังในการปรับปรุงสมดุลระหว่างประสบการณ์ผู้ใช้ (ลดความต้องการในการทำธุรกรรมและลายเซ็น) และค่าแก๊ส นี่คือการเปรียบเทียบเทคโนโลยีเหล่านี้:


นอกจาก Permit2 ยังมีการแก้ปัญหาในการอนุญาตที่คุ้มค่าอย่าง Session Keys และERC-4337 การสรุปบัญชี, แต่ละอันเสนอวิธีการที่แตกต่างกันในการแก้ปัญหา

คีย์เซสชันมีเอกลักษณ์เฉพาะตัวเป็นพิเศษ เนื่องจากไม่ใช่รูปแบบการอนุญาตที่เข้มงวด แต่เป็นกลไกคีย์ชั่วคราวในระดับกระเป๋าเงินหรือบัญชี แทนที่จะแก้ไขสัญญาโทเค็นพวกเขาอนุญาตให้กระเป๋าเงินสร้างคีย์ส่วนตัวชั่วคราวที่ จํากัด เวลาและ จํากัด จํานวนสําหรับการดําเนินการเฉพาะ สิ่งนี้ทําให้เหมาะสําหรับการซื้อไอเท็มเกมและไมโครเพย์เมนต์แบบครั้งเดียว พวกเขามุ่งเน้นไปที่การลดความเสี่ยงในการอนุญาตครั้งเดียวซึ่งออกแบบมาโดยเฉพาะสําหรับการโต้ตอบของผู้ใช้ชั่วคราวซึ่งแตกต่างจากแนวทางการแก้ไขสัญญาของใบอนุญาต / ใบอนุญาต 2

ERC-4337 มีการใช้วิธีการที่แตกต่างโดยฝังตัวตรรกะการอนุญาตโดยตรงลงในบัญชีอัจฉริยะ ทำให้ผู้ใช้สามารถปรับแต่งเงื่อนไขการอนุญาตและอาจข้ามขั้นตอนการอนุมัติ传统ได้ ผ่านกลไก UserOperation และ Paymaster ที่ยืดหยุ่น เพื่อความปลอดภัยและประสบการณ์ของผู้ใช้ที่ดีขึ้น

เมื่อพิจารณาถึงแนวโน้มในอนาคตโซลูชันที่แตกต่างกันเหล่านี้มีแนวโน้มที่จะอยู่ร่วมกัน ในระยะสั้น Permit2 จะยังคงเป็นมาตรฐานสําหรับ DApps ที่เกิดขึ้นใหม่ปรับปรุงประสบการณ์ของผู้ใช้ผ่านการอนุญาตเพียงครั้งเดียวในขณะที่ส่งเสริมการศึกษาด้านความปลอดภัยและการสนับสนุนเครื่องมือเพื่อลดความเสี่ยงฟิชชิง ในระยะกลางเนื่องจาก ERC-4337 และนามธรรมของบัญชีแพร่หลายมากขึ้นในเลเยอร์ 2 และเมนเน็ตผู้ใช้จะสามารถหลุดพ้นจากข้อ จํากัด การอนุมัติ ERC-20 แบบดั้งเดิมจัดการการอนุญาตได้อย่างแม่นยําและชาญฉลาดยิ่งขึ้นซึ่งอาจลดความจําเป็นในการอนุญาต 2

วิสัยทัศน์ระยะยาวคือการสร้างประสบการณ์การอนุญาตที่ราบรื่นและใช้งานง่ายเช่นเดียวกับ Web2 ซึ่งผู้ใช้สามารถคลิกปุ่มและการอนุมัติที่จําเป็นทั้งหมดจะเกิดขึ้นโดยอัตโนมัติในพื้นหลังโดยมีข้อความแจ้งที่ชัดเจนปรากฏขึ้นเฉพาะในสถานการณ์ที่มีความเสี่ยงสูงเท่านั้น การบรรลุวิสัยทัศน์นี้จะต้องมีการทํางานร่วมกันและนวัตกรรมอย่างต่อเนื่องในโปรโตคอลกระเป๋าเงินและ dApps พื้นฐาน Permit2 เป็นก้าวสําคัญในการเดินทางในช่วงเปลี่ยนผ่านนี้ แต่ก็ยังมีหนทางอีกยาวไกลก่อนที่จะถึงสถานะในอุดมคติ ระหว่างทางทั้งชุมชนและนักพัฒนาควรรักษาแนวทางในทางปฏิบัติทําความเข้าใจจุดแข็งและข้อ จํากัด ของแต่ละโซลูชันอย่างถ่องแท้และทํางานร่วมกันเพื่อสร้างสภาพแวดล้อมการอนุญาตที่ปลอดภัยและใช้งานง่ายยิ่งขึ้น


โดยรวม Permit2 มีวิธีการที่สามารถนำมาใช้ได้ในทันที ในขณะที่เทคโนโลยีเช่น Session Keys และ ERC-4337 ชี้ทางไปสู่การปรับปรุงที่มีระยะยาวและมีพื้นฐานมากขึ้นในวิธีการจัดการอนุญาต

ความเสี่ยงด้านความปลอดภัยของการให้สิทธิ์โดยใช้ลายเซ็น

เช่นเดียวกับเทคโนโลยีใหม่ ๆ ทั้ง Permit และ Permit2 มาพร้อมกับประสิทธิภาพใหม่ไม่เพียงอย่างเดียว แต่ยังมีความเสี่ยงใหม่ๆ โดยเฉพาะอย่างยิ่งเกี่ยวกับการโจมตีที่ใช้ลายเซ็นต์เป็นหลัก

ในระบบที่ใช้ลายเซ็นเจอร์ เช่น Permit2 และ EIP-2612 Permit การออกแบบสัญญาหลักมีชั้นความปลอดภัยหลายชั้นเพื่อป้องกันการใช้งานผิดประโยชน์และการโจมตีแบบซ้ำ

1. การป้องกันการทำซ้ำที่ขึ้นอยู่กับ Nonce

Permit2 รักษาตัวนับ nonce แยกต่างหากสําหรับแต่ละ (เจ้าของโทเค็นผู้ใช้จ่าย) tuple ทุกครั้งที่ผู้ใช้ลงนามในการอนุญาตใหม่ nonce ที่เกี่ยวข้องจะเพิ่มขึ้น หากผู้โจมตีพยายามนําลายเซ็นเก่ากลับมาใช้ใหม่จะล้มเหลวเนื่องจากสัญญาจะตรวจสอบว่ามีการใช้ลายเซ็นเก่าแล้วหรือไม่

2. การบังคับใช้ข้อกำหนดเวลา

ลายเซ็นแต่ละอันต้องรวมฟิลด์กำหนดเวลาสำหรับการดำเนินการ ขณะที่สัญญาตรวจสอบลายเซ็น มันจะรับรองว่าเวลาบล็อกปัจจุบันเป็นไปตามหรือน้อยกว่าเวลากำหนด หากลายเซ็นหมดอายุ - แม้ว่าจะถูกต้องโดยรวม - มันจะถูกปฏิเสธ สิ่งนี้จะป้องกันการใช้สิทธิการใช้งานที่ยาวนานจากการถูกใช้งานในภายหลัง

3. ควบคุมสิทธิการใช้งานโดยละเอียด

ใบอนุญาต2 ลายเซ็นสามารถระบุวงเงินสูงสุดได้ ก่อนที่การโอนโทเค็นจะเกิดขึ้น สัญญาตรวจสอบว่าจำนวนที่ร้องขออยู่ในขีดจำกัดนี้ สัญญาไม่ใช้จ่ายจำนวนที่อนุมัติเต็มร้อยโดยอัตโนมัติ ทำให้ผู้ใช้สามารถใช้วงเงินของตนเป็นส่วนๆ ลดความเสี่ยงของการประยุกต์ใช้ที่ถูกเต็มร้อย

4. โหมดการใช้งานครั้งเดียวและโหมดกลุ่ม

นอกจากการอนุญาตที่เป็นระบบอนุญาตตามคำสั่ง ยังรองรับลายเซ็นเจาะจงผ่านการโอนลายเซ็น เหล่าลายเซ็นเหล่านี้ถูกต้องสำหรับธุรกรรมเดียวเท่านั้นและกลายเป็นโมฆะทันทีหลังจากดำเนินการ นี่เหมาะสำหรับการชำระเงินครั้งเดียวและป้องกันลายเซ็นไม่ให้ถูกใช้ซ้ำหรือถูกใช้เอาแล้วภายหลัง

การป้องกันชั้นเลเยอร์เหล่านี้ช่วยให้ระบบการให้สิทธิ์แบบ Permit ปรับปรุงประสบการณ์ผู้ใช้และประหยัด gas พร้อมลดความเสี่ยงที่เกิดขึ้นเป็นปกติ เช่น "replay attacks", "over-authorization", และ "indefinite signature validity"

อย่างไรก็ตาม แม้จะมีการป้องกันระดับสัญญาที่ปลอดภัย การวิศวกรรมสังคม (โดยเฉพาะการโฟกัส) ยังคงเป็นภัยที่ยากที่สุดที่จะป้องกันได้ ในส่วนถัดไป เราจะมองไปที่เทคนิคการโฟกัสที่พบบ่อยและวิธีการโจมตีของผู้โจมตีที่หลอกผู้ใช้ให้ลงนามอนุญาตที่เป็นอันตรายโดยไม่รู้ตัวที่ใช้ Permit2 นอกจากนี้เรายังจะมีเคล็ดลับเกี่ยวกับวิธีการปลอดภัย

วิธีการโจมตีการปลอมแซ่ลงลายนามเกิดขึ้นอย่างไร?

การปลอมแปลงลายเซ็นเกิดขึ้นเมื่อผู้โจมตีหลอกเอาเหยื่อให้ลงลายเซ็นข้อความที่เฉพาะเจาะจงเพื่อเอาเอาควบคุมสินทรัพย์ของพวกเขา ในขณะที่การโจมตีแบบดั้งเดิมอาจเกี่ยวข้องกับการดำเนินสัญญาที่ไม่ดีหรือธุรกรรมที่ไม่ดี ในยุคการอนุญาต การอนุญาตลายเซ็นที่เป็นอันตรายเพียงอันเดียวก็เพียงพอที่จะดูดเงินออกมา นี่คือวิธีที่การโจมตีเหล่านี้มักจะเกิดขึ้น:

  1. เหยื่อคลิกที่เว็บไซต์ DEX ที่รู้จักกันดี (ไซต์ฟิชชิ่ง) เวอร์ชันปลอม เมื่อผู้ใช้พยายามโต้ตอบไซต์จะแจ้งคําขอลายเซ็นกระเป๋าเงินโดยอ้างว่าเป็น "การยืนยันการเข้าสู่ระบบ" หรือวัตถุประสงค์อื่น ๆ ที่ดูเหมือนถูกต้องตามกฎหมาย อย่างไรก็ตามคําขอนี้เป็นลายเซ็นการอนุญาต Permit2 โดยอนุญาตให้ผู้โจมตีสามารถถอน USDC ของเหยื่อได้ไม่จํากัดโดยมีระยะเวลาที่ขยายออกไป
  2. เหยื่อที่ขาดความระมัดระวังเซ็นคำขอโดยตรง ณ จุดนี้ไม่มีการใช้แก๊สและไม่มีกิจกรรม on-chain เกิดขึ้น จึงไม่ทิ้งร่องรอยที่น่าสงสัย
  3. เมื่อผู้โจมตีได้รับลายเซ็น พวกเขาจะโทรไปทันทีที่ฟังก์ชัน permit() ของสัญญา Permit2 เพื่อส่งมัน หลังจากที่สัญญา Permit2 ตรวจสอบลายเซ็นแล้ว มันจะบันทึกการอนุญาตสำหรับสัญญาของผู้โจมตีภายใต้ที่อยู่ของเหยื่อ (เทียบเท่ากับเหยื่อทำการ approve แต่ถูกดำเนินการโดยผู้โจมตี) การดำเนินการนี้อาจยังไม่เสร็จสมบูรณ์โดยเหยื่อเนื่องจากกระเป๋าเงินของเขาไม่แสดงค่าใช้จ่าย - เฉพาะการตั้งค่าการอนุญาตโทเค็นของเขาถูกอัพเดตบนบล็อกเชนเท่านั้น
  4. ต่อมา, ผู้โจมตีทันทีเริ่มการทำธุรกรรม transferFrom(victim, attacker_address, amount) จากที่อยู่ของตนเอง, โดยสามารถโอน USDC ของเหยื่อไปยังตนเองอย่างประสบความสำเร็จโดยใช้การอนุญาต Permit2 ล่าสุด ผู้เสียหายเพียงเข้าใจถึงการถูกขโมยเมื่อเข้าใจเรื่องช้าไปแล้ว

ในการโจมตีเหล่านี้ ผู้ใช้ไม่เคยดำเนินการทำธุรกรรม “โอน” หรือ “อนุญาต” ที่ชัดเจนใด ๆ อย่างไรก็ตามสินทรัพย์ของพวกเขาจะหายไปอย่างลึกลับ ความสำคัญอยู่ที่ลายเซ็นต์เองกลายเป็นการอนุญาต ผู้โจมตีจัดการปกป้องคำขอลายเซ็นต์ให้ดูเหมือนเป็นการดำเนินการที่ปกติ ลดความระมัดระวังของผู้ใช้ อย่างไรก็ตามเมื่อลายเซ็นต์แล้ว มันก็เหมือนกับการส่งมอบกุญแจของสินทรัพย์ของคุณ

อย่างแย่ยิ่ง, บางผู้โจมตีใช้วิธีเทคนิคเพื่อเพิ่มความลับมากขึ้น เช่นพวกเขาใช้กลไก CREATE2 ของ Ethereum เพื่อสร้างที่อยู่สัญญาที่เป็นอันตรายที่ไม่ซ้ำกันสำหรับแต่ละเหยื่อ สิ่งนี้ทำให้การเขียนรายชื่อดำเพลิงเป็นไร้ประสิทธิภาพเนื่องจากการโจมตีแต่ละครั้งใช้ที่อยู่ที่แตกต่างกัน

เหตุการณ์การล่องลอยคริปโตล่าสุดมักเกิดขึ้นโดยการอนุญาตลายมือ. เช่นเดียวกับ Scam Sniffer’sสถิติตั้งแต่ต้นปี พ.ศ. 2024 แสดงว่ามีทรัพย์สินมูลค่าเกิน 55 ล้านเหรียญถูกขโมยผ่านฟิชชิ่งลายเซ็นเจอร์เพียงเดือนเดียว ตั้งแต่เริ่มใช้ Permit2 ผู้โจมตีก็กลายเป็นโดดเด่นขึ้นในการกระตุ้นผู้ใช้ให้เซ็นอนุญาต Permit/Permit2 ซึ่งทำให้มีผู้เสียหายจำนวนมากในช่วงเวลาสั้น ๆ โดยชัดเจนว่าเมื่ออนุญาตลายเซ็นถูกนำไปใช้ในทางที่ไม่เหมาะสม มันสามารถก่อให้เกิดความเสียหายและยากต่อการตรวจจับ

ทำไมความเสี่ยงที่เกี่ยวกับการลอกเลียนแบบลายเซ็นเจอร์สูงกว่าวิธีทางเลือกทั่วไป?

การอนุญาตที่เป็นอันตรายแบบดั้งเดิมกําหนดให้ผู้ใช้ต้องทําธุรกรรมแบบ on-chain ซึ่งกระเป๋าเงินมักจะแสดงคําเตือนที่ชัดเจน เช่น "คุณอนุญาตให้ XXX ใช้โทเค็นของคุณ" และต้องเสียค่าธรรมเนียมก๊าซ ผู้ใช้ที่มีประสบการณ์มักจะระมัดระวังมากขึ้นเกี่ยวกับสิ่งเหล่านี้ อย่างไรก็ตามคําขอลายเซ็นในอินเทอร์เฟซกระเป๋าเงินมักถูกอธิบายว่าเป็นเพียง "คําขอลายเซ็นข้อมูล" มากกว่าการดําเนินการทางการเงินทําให้ผู้ใช้ลดการป้องกันลง ยิ่งไปกว่านั้นเนื่องจากลายเซ็นไม่เสียค่าใช้จ่ายผู้โจมตีจึงสามารถเปิดตัวความพยายามฟิชชิ่งขนาดใหญ่ได้โดยไม่ต้องกังวลกับค่าใช้จ่าย - พวกเขาทํากําไรได้แม้จะมีความพยายามที่ประสบความสําเร็จเพียงไม่กี่ครั้ง

นอกจากนี้ กระเป๋าเงินที่แตกต่างกันจะแสดงข้อความ EIP-712 อย่างหลากหลาย บางกระเป๋าเงินรุ่นใหม่ (เช่นล่าสุดMetaMaskการแยกและแสดงฟิลด์อย่างชัดเจน โดยแสดงข้อความเช่น 'อนุญาตให้สัญญาใช้จ่าย X จำนวนของโทเคนของคุณ' อย่างได้เจิดจรัส อย่างไรก็ตาม กระเป๋าเงินหลายราย แสดงข้อมูลสิบหกสิบหกหรือคำอธิบายอย่างง่ายเท่านั้น ทำให้ผู้ใช้ทั่วไปมีความยากลำบากในการตรวจสอบความถูกต้อง ผู้โจมตีใช้ประโยชน์จากสิ่งนี้โดยฝังคำอธิบายที่หลอกลวงในข้อความ (เช่น การแสดงตัวเลือกของ NFT) เพื่อหลอกผู้ใช้ให้ลงลายเซ็น

เนื่องจากการอนุญาตลายเซ็นไม่ได้ส่งผลกระทบต่อทรัพย์สินในทันทีผู้เสียหายอาจไม่สามารถตรวจจับภัยคุกคามได้ทันที ผู้โจมตีสามารถกําหนดเวลาการประท้วงได้อย่างมีกลยุทธ์ แทนที่จะดําเนินการทันทีพวกเขาอาจรอจนกว่ากระเป๋าเงินของเหยื่อจะมีทรัพย์สินมากขึ้นหรือจนกว่าจะถึงช่วงเวลาหนึ่งซึ่งทําให้ความพยายามในการติดตามมีความซับซ้อน ด้วยลายเซ็นที่ขยายระยะเวลาการใช้งานผู้โจมตียังสามารถใช้ประโยชน์จากการเคลื่อนไหวของราคาเพื่อเพิ่มผลกําไรสูงสุดทําให้พวกเขามีตัวเลือกการซื้อขายฟรีอย่างมีประสิทธิภาพ ความเสี่ยงนี้อธิบายว่าเหตุใดลายเซ็นใบอนุญาตจึงบังคับใช้กําหนดเวลาสั้น ๆ

ความสามารถของ Permit2 ในการอนุญาตโทเค็นหลายรายการด้วยลายเซ็นเดียวทําให้ผู้ใช้เข้าใจความหมายได้อย่างเต็มที่ ตัวอย่างเช่น เว็บไซต์ฟิชชิ่งอาจขอลายเซ็น Permit2 ในขณะที่เน้นสิทธิ์สําหรับโทเค็นเพียงหนึ่งหรือสองโทเค็น แต่แอบฝังการอนุญาตที่กว้างขวางสําหรับโทเค็นเพิ่มเติมภายในลายเซ็นเดียวกัน ผู้ใช้สามารถมองข้ามสิทธิ์ที่ซ่อนอยู่เหล่านี้ได้อย่างง่ายดายหากกระเป๋าเงินของพวกเขาไม่แสดงรายละเอียดทั้งหมดอย่างชัดเจน นอกจากนี้ผู้โจมตีมักใช้ชื่อสัญญาที่หลอกลวงเช่น "WalletGuard" ในลายเซ็นของพวกเขาปิดบังสัญญาที่เป็นอันตรายที่ออกแบบมาเพื่อขโมยสิทธิ์โทเค็น

ผู้ใช้จะสามารถป้องกันตัวเองจากการโจมตีลายเซ็นได้อย่างไร?

โปรดจําไว้ว่าการลงนามเทียบเท่ากับการให้ความยินยอม - อย่าปล่อยให้การไม่มีค่าน้ํามันทําให้คุณประมาท เมื่อกระเป๋าเงินของคุณขอลายเซ็น ให้อ่านรายละเอียดข้อความอย่างละเอียด ตรวจสอบให้แน่ใจว่าเว็บไซต์หรือ DApp ที่ขอลายเซ็นนั้นถูกต้องและเนื้อหาข้อความสอดคล้องกับการกระทําที่คุณตั้งใจไว้ ตัวอย่างเช่นหากคุณเพียงแค่ลงชื่อเข้าใช้เว็บไซต์ลายเซ็นควรมีข้อความเข้าสู่ระบบที่อ่านได้ (ตามที่ DApps ส่วนใหญ่ใช้) ไม่ใช่สตริงที่อยู่โทเค็นและหมายเลข

ตรวจสอบให้แน่ใจว่าซอฟต์แวร์กระเป๋าเงินของคุณรองรับการแสดงข้อมูล EIP-712 โดยเฉพาะ กระเป๋าเงินชั้นนำเช่น MetaMask,TrustWallet, และLedger Live กําลังปรับปรุงประสบการณ์การแสดงเนื้อหาลายเซ็นของพวกเขา ตัวอย่างเช่น MetaMask สามารถแยกวิเคราะห์ข้อความอนุญาตทั่วไปเป็นภาษาธรรมดาได้แล้ว หากกระเป๋าเงินของคุณแสดงเฉพาะข้อมูลเลขฐานสิบหกยาวเมื่อลงนาม ให้ลองเปลี่ยนหรืออัปเดต ผู้ใช้กระเป๋าเงินฮาร์ดแวร์ควรอัปเดตเฟิร์มแวร์อยู่เสมอเพื่อรองรับรูปแบบใหม่ มิฉะนั้นอาจไม่เห็นข้อมูลอย่างถูกต้องบนหน้าจอ

ไม่ว่าจะใช้ลายเซ็นใบอนุญาตหรือใบอนุญาต 2 คุณมักจะสามารถปรับพารามิเตอร์การอนุญาตได้ อย่าเซ็นชื่อไม่ จํากัด จํานวน (ค่า = 2 ^ 256-1) เว้นแต่จําเป็นอย่างยิ่ง - แทนที่จะอนุญาตเฉพาะจํานวนเงินที่คุณต้องการบวกบัฟเฟอร์ขนาดเล็ก นอกจากนี้อย่ากําหนดเส้นตายมากเกินไปในอนาคต ด้วยวิธีนี้แม้ว่าลายเซ็นของคุณจะตกไปอยู่ในมือที่ไม่ถูกต้อง แต่การสูญเสียที่อาจเกิดขึ้นจะถูก จํากัด และลายเซ็นจะหมดอายุในที่สุด

พัฒนานิสัยในการตรวจสอบสถานะการอนุญาตที่อยู่ของคุณเป็นประจําโดยใช้เครื่องมือต่างๆ เช่น Revoke.cash, Etherscan Token Approval หรือคุณสมบัติในตัวของกระเป๋าเงินของคุณ ซึ่งรวมถึงการอนุมัติแบบดั้งเดิมและค่าเผื่อใบอนุญาต 2 หากคุณพบการอนุญาตที่น่าสงสัยหรือไม่จําเป็น ให้เพิกถอนสิทธิ์เหล่านั้นทันที สําหรับ Permit2 โปรดระวังการเพิกถอนสองระดับ: ขั้นแรกการอนุญาตหลัก (คุณอนุมัติสัญญา Permit2 เองซึ่งคุณอาจต้องการตั้งค่าเป็น 0 เมื่อไม่ได้ใช้งาน) ประการที่สองการอนุญาตย่อย (ค่าเผื่อของ Permit2 สําหรับ DApps ต่างๆซึ่งมักจะหมดอายุโดยอัตโนมัติ แต่สามารถยกเลิกได้ก่อนกําหนดหากมีระยะเวลานาน) หากคุณสงสัยว่าคุณได้ลงนามในใบอนุญาตที่น่าสงสัยการกระทําที่ปลอดภัยที่สุดคือการปรับ nonce ทันที: ลงนามในใบอนุญาตใหม่ให้กับผู้ใช้จ่ายรายเดียวกัน (แม้จะมีค่าเผื่อ 0) เพื่อทําให้ลายเซ็นเก่าที่อยู่ในความครอบครองของผู้โจมตีเป็นโมฆะ

ระมัดระวังเสมอเมื่อเยี่ยมชมเว็บไซต์ที่ไม่คุ้นเคยหรือดาวน์โหลดแอปพลิเคชัน อย่าคลิกลิงก์ที่ไม่รู้จัก โดยเฉพาะ "ข้อเสนอส่งเสริมการขาย" หรือ "กิจกรรมมิ้นท์" ที่แชร์ผ่านโฆษณาโซเชียลมีเดียหรือข้อความส่วนตัว ความพยายามฟิชชิงจํานวนมากเกิดขึ้นผ่านบัญชีทางการปลอมที่โพสต์ลิงก์กิจกรรมหลอกลวงซึ่งนําไปสู่คําขอลายเซ็น ทําให้เป็นนิสัยในการพิมพ์ URL DApp อย่างเป็นทางการโดยตรงหรือใช้บุ๊กมาร์กเพื่อหลีกเลี่ยงการตกหลุมรักเว็บไซต์ปลอม

ในสรุป การสร้างสมดุลระหว่างความสะดวกและความปลอดภัยเป็นสิ่งสำคัญ ในขณะที่เทคโนโลยีการอนุญาตเป็นสิ่งที่สะดวก ผู้ใช้ต้องรักษาความระมัดระวังเกี่ยวกับการป้องกันความเสี่ยง ซึ่งเมื่อระบบโตมากขึ้น ผลิตภัณฑ์กระเป๋าเงินและปลั๊กอินของเบราว์เซอร์กำลังพัฒนาการป้องกันต่อการลวดลามเกี่ยวกับการลงลายมากๆ เรามีเป้าหมายที่จะลดการโจมตีแบบนี้ผ่านการปรับปรุงทั้งด้านเทคนิคและการศึกษาในอนาคต

สรุป

ตั้งแต่ข้อ จํากัด ของรูปแบบการอนุญาต ERC-20 แบบดั้งเดิมไปจนถึงการเกิดใบอนุญาตและจากนั้นไปจนถึงใบอนุญาตที่เป็นนวัตกรรมใหม่ของ Uniswap2 เราได้เห็นความพยายามของระบบนิเวศ Ethereum ในการปรับปรุงประสบการณ์และความปลอดภัยของผู้ใช้ Permit2 ช่วยลดความยุ่งยากในกระบวนการอนุมัติโทเค็นผ่านลายเซ็นนอกเครือข่ายลดความเสี่ยงของการอนุมัติซ้ําและการอนุญาตแบบไม่ จํากัด ในขณะที่แนะนําคุณสมบัติที่มีประโยชน์เช่นกลไกการหมดอายุและการดําเนินการแบทช์ อย่างไรก็ตามกลไกใหม่เหล่านี้มาพร้อมกับความรับผิดชอบใหม่ ๆ ผู้ใช้จําเป็นต้องเพิ่มความตระหนักด้านความปลอดภัยในขณะที่กระเป๋าเงินและ DApps ต้องทํางานร่วมกันเพื่อปกป้องผู้ใช้จากการโจมตีด้วยลายเซ็น เมื่อมองไปข้างหน้าด้วยการพัฒนาทางเทคโนโลยีเพิ่มเติมเช่นการเป็นนามธรรมของบัญชีการจัดการการอนุญาตโทเค็นคาดว่าจะราบรื่นและปลอดภัยยิ่งขึ้น

著者: John
翻訳者: Sonia
レビュアー: Pow、KOWEI、Elisa
翻訳レビュアー: Ashley、Joyce
* 本情報はGate.ioが提供または保証する金融アドバイス、その他のいかなる種類の推奨を意図したものではなく、構成するものではありません。
* 本記事はGate.ioを参照することなく複製/送信/複写することを禁じます。違反した場合は著作権法の侵害となり法的措置の対象となります。
今すぐ始める
登録して、
$100
のボーナスを獲得しよう!