EIP-3074 ช่วยให้ผู้ใช้ EOA มอบหมายควบคุมไปยังสัญญาที่ระบุไว้ ซึ่งสามารถเรียกใช้ความสามารถในการดำเนินการอย่างหรูหราเหมือนกับสัญญา ก่อน EIP-3074 EOA สามารถดำเนินการเพียงหนึ่งคำสั่งต่อธุรกรรมเท่านั้น เช่น การอนุมัติโทเค็น ERC20 หรือการทำสวอพบน Uniswap หลัง EIP-3074 EOA สามารถดำเนินการหลายคำสั่งในธุรกรรมเดียว ทำให้เกิดกรณีการใช้งานที่ไม่เคยเคยมองเห็นได้ก่อน โดยหลักการ EIP-3074 ปรับปรุงประสบการณ์ผู้ใช้อย่างมีนัยสำคัญ และเปลี่ยนรูปแบบวิธีการอนุญาตที่เราเคยคุ้นเคยในขณะเสริมความปลอดภัย
นอกจากนี้ ด้วย EIP-3074 บัญชีผู้ใช้ธรรมดา (EOAs) ไม่จำเป็นต้องส่งธุรกรรมบนเชื่อมต่อตนเองอีกต่อไป ซึ่งหมายความว่าไม่ต้องทำการเรียกเก็บ ETH ก่อนเพื่อจ่ายค่าธุรกรรม
สัญญาที่สามารถเข้าถึง EOA เรียกว่า สัญญา Invoker ไม่ใช่ทุกสัญญาที่สามารถเข้าถึงได้ EOA ต้องลงนามด้วยกุญแจส่วนตัวของตัวเอง ระบุว่าสัญญา Invoker และการดำเนินการใดที่ EOA ให้สิทธิให้ สัญญา Invoker ดำเนินการ
กระบวนการโดยปกติมักเกิดขึ้นด้วย:
Alice ลงนามด้วยกุญแจส่วนตัว EOA ของเธอ ระบุสัญญา Invoker และการดำเนินการที่ได้รับอนุญาต
Alice ส่งเนื้อหาที่ลงนามและลายเซ็นต์ไปยัง Relayer
Relayer ส่งธุรกรรมในเชื่อมต่อไปยังสัญญา Invoker บนเชื่อมต่อ
Invoker ยืนยันลายเซ็นและเมื่อการตรวจสอบถูกต้อง จะดำเนินการด้วยภาพลักษณ์ของ Alice เช่นการอนุมัติ USDC, สลับสินทรัพย์บน Uniswap, และใช้บางส่วนของ USDC เพื่อจ่ายค่าธรรมเนียมให้กับ Relayer
หมายเหตุ: ผู้ถ่ายโอนเป็นเรื่องทางทางเลือก; อลิซสามารถส่งเนื้อหาที่ได้รับลายเซ็นและลายเซ็นบนเชือกได้เอง
ผู้เรียกใช้ดำเนินการเหมือนกับมีควบคุมจำกัดของ EOA ของ Alice อย่างไรก็ตาม Nonce ของ EOA จะไม่เพิ่มขึ้นหลังจากการดำเนินการ ซึ่งหมายความว่าลายเซ็นเดียวกันอาจถูกใช้อีกครั้งหาก Nonce ของ EOA ยังคงเหมือนเดิม ดังนั้น ผู้เรียกใช้จำเป็นต้องนำ Nonce mechanism เข้ามาใช้เพื่อป้องกันการโจมตีแบบเล่นซ้ำ
เรียนรู้เพิ่มเติม
สำหรับข้อมูลที่เป็นรายละเอียดเกี่ยวกับการทำงานของ EIP-3074 โปรดอ้างถึงที่นี่:https://medium.com/taipei-ethereum-meetup/eip3074-%E7%B0%A1%E4%BB%8B-2a880b918234
Batchcall ช่วยให้ผู้ใช้สามารถรวมธุรกรรมหลายรายการเข้าด้วยกันในหนึ่งรายการ ช่วยประหยัดกระบวนการขออนุญาตหลายรายการและบางค่าใช้จ่ายในแก๊สบางส่วน โปรดทราบว่านี้ต้องการ DApps ที่รองรับฟังก์ชัน Batchcall เช่น EIP-5792 ที่ตอนนี้กำลังสนับสนุน หากไม่มีการสนับสนุนดังกล่าว DApps จะสั่งให้ทำธุรกรรมแยกต่างหากสำหรับแต่ละดำเนินการ จัดการผู้ใช้ให้เป็น EOA ปกติ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ EIP-5792 โปรดอ้างถึงที่: EIP-5792.
คีย์เซสชัน
ผู้ใช้สามารถมอบหมายการดำเนินการให้กับบุคคลที่สามในเงื่อนไขเฉพาะโดยใช้คีย์เซสชัน ในตัวอย่างด้านล่าง คีย์ที่ถูกมอบหมายแทนบุคคลที่สามที่ได้รับอนุญาตในขณะที่นโยบายการเข้าถึงกำหนดข้อจำกัดด้านการดำเนินการ เช่น จำกัดการกระทำไปที่ Uniswap จำกัดการโอนไปยัง 1 ETH ต่อวัน หรือตั้งวันหมดอายุในการอนุญาต เงื่อนไขเหล่านี้ถูกออกแบบและตรวจสอบภายในสัญญา Invoker หลังจากที่การตรวจสอบผ่านแล้ว บุคคลที่สามสามารถดำเนินการเป็นตามบทบาทของผู้ใช้ EOA
ตัวอย่างเช่นบอท Telegram อาจได้รับอนุญาตให้ดำเนินการบางอย่างในนามของ EOA ของผู้ใช้
ใบอนุญาต ETH ธรรมชาติ
หากเงื่อนไขถูกต้อง (เช่นลายเซ็นอนุญาตถูกต้อง) การดำเนินการสามารถดำเนินการได้เป็นผู้มีอำนาจ EOA โดยเปิดใช้งานความสามารถการอนุญาต ETH ธรรมชาติ
คำสั่งจำกัด
ผู้ใช้สามารถตั้งเงื่อนไขคำสั่งจำกัด ซึ่งเมื่อตรงตามที่กำหนดแล้วจะอนุญาตให้ดำเนินการเป็นชื่อของผู้ใช้ EOA ซึ่งรวมถึงการอนุมัติสินทรัพย์ดิจิทัลที่เกี่ยวข้องสำหรับ DEX และการสลับสินทรัพย์บน DEX โดยเปรียบเทียบกับความสามารถในการตั้งเงื่อนไขคำสั่งจำกัดที่ DEXs เองมีให้ ผู้ใช้ไม่จำเป็นต้องอนุมัติสินทรัพย์ล่วงหน้าสำหรับ DEX
ตัวอย่างเช่น เมื่อ Alice ทำใบสั่งซื้อสูงสุด การอนุมัติจะดำเนินการพร้อมกันโดยกำจัดความจำเป็นในการอนุมัติล่วงหน้า
โดยการออกแบบเงื่อนไขอย่างทั่วไป สามารถสร้างสัญญาใจความ: ตลอดจนเงื่อนไขที่ระบุถูกตอบสนอง ใครก็สามารถดำเนินการในนามของ EOA ของผู้ใช้
การกู้คืนทางสังคม
หากผู้ใช้สูญเสียกุญแจส่วนตัว EOA ของตน พวกเขาสามารถใช้การอนุญาต EIP-3074 ที่ได้รับลายเซ็นก่อนหน้านี้พร้อมกับลายเซ็นจากฝ่ายที่ได้รับอนุญาต (เช่น สามีและตัวแทนที่เชื่อถือได้) เพื่อโอนสินทรัพย์ทั้งหมดจาก EOA นี้ เป็นการกู้คืนสินทรัพย์ (ที่สามารถโอนได้) ไม่ใช่การควบคุมบัญชี หลังจากที่สูญเสียกุญแจส่วนตัว EOA แล้ว EOA จะไม่สามารถใช้ได้อีก
EIP-3074 มีศักยภาพที่จะปรับปรุงหรือแทนที่วิธีการอนุมัติปัจจุบันได้ DApp กำลังดำเนินการภายใต้สมมติฐานว่าผู้ใช้คือ EOAs: ผู้ใช้ต้องอนุมัติจำนวนเงินที่เพียงพอให้สัญญา DApp เพื่อหลีกเลี่ยงการอยู่ออนไลน์อยู่เสมอและอนุมัติธุรกรรมอย่างต่อเนื่อง สิ่งนี้ทำให้ประสบการณ์ของผู้ใช้ดีขึ้นอย่างมีนัยสำคัญ
ตัวอย่างเช่น การใช้งานที่มีเงื่อนไข เช่น คำสั่งซื้อที่ถูกจำกัดหรือ DCA ต้องการผู้ใช้ที่จะอนุมัติจำนวนมากของสินทรัพย์ไว้ล่วงหน้าเพื่อให้ DApp สามารถดำเนินการเมื่อเงื่อนไขถูกตรวจพบ ซึ่งอาจเกิดขึ้นได้หลายครั้ง
อย่างไรก็ตาม นี่ต้องการผู้ใช้ให้ความไว้วางใจใน DApp หรือหลีกเลี่ยงการอนุมัติ DApp เท็จ และพวกเขาต้องสามารถยกเลิกการอนุมัติในเวลาจริง
โมเดลการอนุญาตล่าสุด เช่น EIP-2612 หรือ Permit2 ที่ไม่ใช่ภาษาเหมือนว่าจะมีจุดมุ่งหมายในการปรับปรุงประสบการณ์ของผู้ใช้ในการอนุญาตและความปลอดภัย ผู้ใช้ไม่จำเป็นต้องอนุมัติจำนวนสินทรัพย์มากในแต่ละสัญญา DApp แทนที่นั้น พวกเขาสามารถให้สิทธิให้ DApps ถอนจำนวนสินทรัพย์ที่ระบุภายในเวลาที่ระบุโดยการเซ็นครั้งเดียว สิ่งนี้จะลดพื้นที่โจมตีอย่างมากและเสริมประสบการณ์ของผู้ใช้
△ ผู้ใช้เพียงต้องลงลายมือชื่อออกจากระบบเท่านั้น และพวกเขาสามารถระบุจำนวนสินทรัพย์และระยะเวลาที่ถูกต้องเพื่อให้มีประสบการณ์ผู้ใช้ที่ดีขึ้นและปลอดภัยกว่าการอนุมัติ
อย่างไรก็ตาม ในความเป็นจริง ไม่ใช่เพียงแค่การอนุมัติเท่านั้น โหมดการอนุญาตยังถูกใช้ประจำอย่างบ่อยเป็นวิธีหลอกลวง ผู้เสียหายทำให้เสียหายโดยละเมิดสิทธิ์ที่เชื่อว่าเป็นการใช้ DApp แต่แท้จริงกำลังให้สิทธิ์ให้ผู้โจมตี
△ เมื่อผู้ใช้ลงนามใบอนุญาต พวกเขาสามารถเห็นเฉพาะว่าใครเป็นผู้ให้สิทธิ์ แต่ไม่ทราบว่าจะมีการดำเนินการอะไรร่วมกันกับมัน
หมายเหตุ:การออกแบบใบอนุญาตปัจจุบันไม่สามารถทำงานร่วมกับ DApps ที่ต้องการดำเนินการซ้ำซ้อน เช่น DCA หรือแอปพลิเคชันการชำระเงินรายวันอื่น ๆ นั้นเพราะใบอนุญาตมีกลไกกันซ้ำ ดังนั้นเมื่อธุรกรรมเสร็จสิ้นแล้ว ใบอนุญาตเดียวกันจะไม่สามารถใช้ได้อีกครั้ง โดยรวมแล้วผู้ใช้จำเป็นต้องลงลายเซ็นใบอนุญาตล่วงหน้าสำหรับแต่ละการดำเนินการที่ซ้ำซ้อนในอนาคต
เรียนรู้เพิ่มเติม:
เพื่อเข้าใจเพิ่มเติมเกี่ยวกับเหตุการณ์ที่โหมดการอนุญาตถูกใช้เป็นวิธีการโกง โปรดคัดลอกลิงก์ต่อไปนี้ลงในเบราวเซอร์ของคุณเพื่อข้อมูลเพิ่มเติม:
อย่างไรก็ตาม EIP-3074 นำเสนอโอกาสใหม่: เมื่อนักพัฒนา DApp รู้สึกว่า EOA สามารถดำเนินการซับซ้อนทางด้านการเรียกใช้ผ่าน Invoker การออกแบบของการโต้ตอบ DApp จะไม่ต้องเสียความปลอดภัยเพื่อประสบการณ์ผู้ใช้ที่ดีขึ้นอีกต่อไป เช่น "ผู้ใช้อนุมัติจำนวนมากของสินทรัพย์ล่วงหน้า" หรือ "ผู้ใช้ลงนามในข้อความอนุญาตเพื่ออนุญาตให้ถอน"
แทนที่ผู้ใช้จะผูกการดำเนินการ DApp กับการกระทำการอนุมัติ การดำเนินการพวกเขาผ่าน Invoker อะตอมิก: ไม่ว่าการอนุมัติและการดำเนินการ DApp จะสำเร็จรวมกันหรือล้มเหลวร่วมกัน ไม่มีโอกาสที่การกระทำการอนุมัติจะสำเร็จเพียงอย่างเดียว ดังนั้นผู้ใช้สามารถมั่นใจได้ว่าการกระทำการอนุมัตินี้เป็นเฉพาะสำหรับการดำเนินการปัจจุบัน
นอกจากนี้ผู้ใช้ยินยอมใช้ลายมือชื่อนอกโซน ดังนั้นประสบการณ์ของผู้ใช้จะเหมือนกับการอนุญาต! นี่หมายความว่า DApps จะไม่ต้องใช้โหมดอนุญาตอีกต่อไป! ในอนาคต กระเป๋าสตางค์สามารถบล็อกโดยตรงหรือตรวจสอบคำขอลายมือชื่ออนุญาตอย่างเข้มข้นมากขึ้นโดยไม่ต้องกังวลเรื่องการป้องกันผู้ใช้ไม่สามารถเข้าถึง DApps บางตัว (แต่กล่าวถึงการถูกใช้งานโดยโกง)
△ ผู้ใช้จะไม่ได้มอบอำนาจให้ที่อยู่บางส่วนอีกต่อไป แต่ยังระบุว่ามีการดำเนินการได้บ้าง และพวกเขายังสามารถดูผลลัพธ์การดำเนินการจำลองได้
หมายเหตุ: นี่ไม่ได้หมายความว่าการหลอกลวงสามารถป้องกันได้อย่างสมบูรณ์! ผู้ใช้ยังสามารถถูกหลอกให้เข้าสู่เว็บไซต์หลอกลวงและเว็บไซต์หลอกลวงยังสามารถสร้างการดําเนินการอนุมัติหรือถ่ายโอนเพื่อให้ผู้ใช้ลงนามได้ อย่างไรก็ตาม ณ จุดนี้อย่างน้อยผู้ใช้สามารถดูการดําเนินการที่ลายเซ็นได้รับอนุญาต กระเป๋าเงินยังสามารถจําลองและแสดงผลการดําเนินการแสดงให้ผู้ใช้เห็นอย่างชัดเจนว่าใครจะเสียเงินและใครจะได้รับเงิน เมื่อเทียบกับใบอนุญาตที่ผู้ใช้ไม่สามารถทราบผลการดําเนินการหรือการดําเนินการตอนนี้ผู้ใช้มีข้อมูลเพิ่มเติมเพื่อตัดสินใจว่าจะอนุญาตหรือไม่ แม้ว่าจะไม่ใช่โซลูชันที่สมบูรณ์แบบ แต่ก็ยังเป็นการปรับปรุงที่สําคัญในสถานการณ์ปัจจุบัน
ขณะนี้การออกแบบของ EIP-3074 รวมถึงค่า nonce ของ EOA ในเนื้อหาลายเซ็นเจอร์ด้วย ดังนั้นเมื่อ EOA ส่งธุรกรรมไปยังเชื่อมือที่เปลี่ยนแปลงค่า nonce ทุก EIP-3074 ที่มีอยู่ก็กลายเป็นโมฆะ
หากผู้ใช้ให้สิทธิให้ผู้อื่นดำเนินการในนามของตนเอง เช่น ผ่านวิธีการกุญแจเซสชันหรือวิธีการกู้คืนทางสังคมที่กล่าวถึงข้างต้น จะต้องมีการเปลี่ยนแปลงค่านอนซ์ของ EOA ไม่ได้ มิฉะนั้น การให้สิทธิทั้งหมดจะต้องทำการเซ็นต์อีกครั้งและส่งมอบให้กับคณะผู้ปกครอง ซึ่งจะมีผลกระทบอย่างมากต่อประสบการณ์ของผู้ใช้และความแข็งแกร่งของกลไก
หากผู้ใช้กำลังให้สิทธิให้ตนเองเรียกใช้งาน การเปลี่ยนแปลง EOA nonce ไม่จำเป็น ลายเซ็นเจอ EIP-3074 เหมือนธุรกรรม คาดว่าจะถูกดำเนินการภายในระยะเวลาหนึ่ง อย่างไรก็ตาม กระเป๋าจะต้องจัดการธุรกรรม EIP-3074 สำหรับ EOA: หากมีลายเซ็นเจอ EIP-3074 รอการดำเนินการบนเชื่อมต่อ ธุรกรรม EOA จะต้องรอ
หมายเหตุ:ค่าเริ่มต้นของสัญญา Invoker ต้องรักษากลไก nonce แยกต่างหากโดยที่ลายเซ็นต์แต่ละชุดต้องถูกต่ออายุใหม่ไม่ว่าจะมีการเปลี่ยนแปลงใด ๆ ใน EOA nonce
คีย์เซสชันและการกู้คืนทางสังคมน่าจะได้รับการนำมาใช้อย่างแพร่หลายเท่านั้นหลังจาก EIP-3074 ปรับเปลี่ยนกฎเพื่อลบ EOA nonce จากเนื้อหาลายเซ็นเจอร์ ดังนั้น กระเป๋าเงินควรให้ความสำคัญกับสถานการณ์ที่ “ผู้ใช้ให้อนุญาตตัวเองให้ทำงาน” และจัดการลายเซ็นเจอร์ EIP-3074 เหมือนกับธุรกรรม หลีกเลี่ยงความกังวลเกี่ยวกับธุรกรรม EOA ที่เปลี่ยนแปลง nonce
อย่างไรก็ตาม หากผู้ใช้ต้องการส่งลายเซ็น EIP-3074 ของตนเองบนเชือกโดยตรง จะมีข้อเสียสองประการ:
ผู้ใช้ต้องเซ็นสองครั้ง: ครั้งแรกสำหรับลายเซ็น EIP-3074 และครั้งสองสำหรับลายเซ็นธุรกรรม on-chain
เนื่องจากธุรกรรม on-chain จะเพิ่ม EOA nonce ก่อนการดำเนินการ ต้องมีการเพิ่ม EOA nonce ของลายเซ็นเจ EIP-3074 ล่วงหน้าเพื่อให้เข้าขั้นตอนของ nonce ที่เปลี่ยนไปจากธุรกรรม on-chain
△ เนื่องจากการทำธุรกรรมบนเชนทำให้ EOA nonce เพิ่มขึ้น การตรวจสอบลายเซ็นเจน EIP-3074 จะล้มเหลวหาก nonces ไม่ตรงกัน
△ ผู้ใช้จำเป็นต้องทำการเพิ่มค่าล่วงหน้าของ EOA nonce ในลายเซ็น EIP-3074 เพื่อผ่านการตรวจสอบเรียบร้อย
โดยเข้าใจรายละเอียดเหล่านี้ ผู้ให้บริการกระเป๋าสตางค์สามารถจัดการกับการจัดการ EOA nonce ได้ดียิ่งขึ้น โดยทำให้ประสบการณ์ของผู้ใช้ที่มีความราบรื่นและปลอดภัยมากขึ้นกับการอนุญาต EIP-3074
EIP-3074 ช่วยให้ผู้ใช้ EOA มอบหมายควบคุมไปยังสัญญาที่ระบุไว้ ซึ่งสามารถเรียกใช้ความสามารถในการดำเนินการอย่างหรูหราเหมือนกับสัญญา ก่อน EIP-3074 EOA สามารถดำเนินการเพียงหนึ่งคำสั่งต่อธุรกรรมเท่านั้น เช่น การอนุมัติโทเค็น ERC20 หรือการทำสวอพบน Uniswap หลัง EIP-3074 EOA สามารถดำเนินการหลายคำสั่งในธุรกรรมเดียว ทำให้เกิดกรณีการใช้งานที่ไม่เคยเคยมองเห็นได้ก่อน โดยหลักการ EIP-3074 ปรับปรุงประสบการณ์ผู้ใช้อย่างมีนัยสำคัญ และเปลี่ยนรูปแบบวิธีการอนุญาตที่เราเคยคุ้นเคยในขณะเสริมความปลอดภัย
นอกจากนี้ ด้วย EIP-3074 บัญชีผู้ใช้ธรรมดา (EOAs) ไม่จำเป็นต้องส่งธุรกรรมบนเชื่อมต่อตนเองอีกต่อไป ซึ่งหมายความว่าไม่ต้องทำการเรียกเก็บ ETH ก่อนเพื่อจ่ายค่าธุรกรรม
สัญญาที่สามารถเข้าถึง EOA เรียกว่า สัญญา Invoker ไม่ใช่ทุกสัญญาที่สามารถเข้าถึงได้ EOA ต้องลงนามด้วยกุญแจส่วนตัวของตัวเอง ระบุว่าสัญญา Invoker และการดำเนินการใดที่ EOA ให้สิทธิให้ สัญญา Invoker ดำเนินการ
กระบวนการโดยปกติมักเกิดขึ้นด้วย:
Alice ลงนามด้วยกุญแจส่วนตัว EOA ของเธอ ระบุสัญญา Invoker และการดำเนินการที่ได้รับอนุญาต
Alice ส่งเนื้อหาที่ลงนามและลายเซ็นต์ไปยัง Relayer
Relayer ส่งธุรกรรมในเชื่อมต่อไปยังสัญญา Invoker บนเชื่อมต่อ
Invoker ยืนยันลายเซ็นและเมื่อการตรวจสอบถูกต้อง จะดำเนินการด้วยภาพลักษณ์ของ Alice เช่นการอนุมัติ USDC, สลับสินทรัพย์บน Uniswap, และใช้บางส่วนของ USDC เพื่อจ่ายค่าธรรมเนียมให้กับ Relayer
หมายเหตุ: ผู้ถ่ายโอนเป็นเรื่องทางทางเลือก; อลิซสามารถส่งเนื้อหาที่ได้รับลายเซ็นและลายเซ็นบนเชือกได้เอง
ผู้เรียกใช้ดำเนินการเหมือนกับมีควบคุมจำกัดของ EOA ของ Alice อย่างไรก็ตาม Nonce ของ EOA จะไม่เพิ่มขึ้นหลังจากการดำเนินการ ซึ่งหมายความว่าลายเซ็นเดียวกันอาจถูกใช้อีกครั้งหาก Nonce ของ EOA ยังคงเหมือนเดิม ดังนั้น ผู้เรียกใช้จำเป็นต้องนำ Nonce mechanism เข้ามาใช้เพื่อป้องกันการโจมตีแบบเล่นซ้ำ
เรียนรู้เพิ่มเติม
สำหรับข้อมูลที่เป็นรายละเอียดเกี่ยวกับการทำงานของ EIP-3074 โปรดอ้างถึงที่นี่:https://medium.com/taipei-ethereum-meetup/eip3074-%E7%B0%A1%E4%BB%8B-2a880b918234
Batchcall ช่วยให้ผู้ใช้สามารถรวมธุรกรรมหลายรายการเข้าด้วยกันในหนึ่งรายการ ช่วยประหยัดกระบวนการขออนุญาตหลายรายการและบางค่าใช้จ่ายในแก๊สบางส่วน โปรดทราบว่านี้ต้องการ DApps ที่รองรับฟังก์ชัน Batchcall เช่น EIP-5792 ที่ตอนนี้กำลังสนับสนุน หากไม่มีการสนับสนุนดังกล่าว DApps จะสั่งให้ทำธุรกรรมแยกต่างหากสำหรับแต่ละดำเนินการ จัดการผู้ใช้ให้เป็น EOA ปกติ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ EIP-5792 โปรดอ้างถึงที่: EIP-5792.
คีย์เซสชัน
ผู้ใช้สามารถมอบหมายการดำเนินการให้กับบุคคลที่สามในเงื่อนไขเฉพาะโดยใช้คีย์เซสชัน ในตัวอย่างด้านล่าง คีย์ที่ถูกมอบหมายแทนบุคคลที่สามที่ได้รับอนุญาตในขณะที่นโยบายการเข้าถึงกำหนดข้อจำกัดด้านการดำเนินการ เช่น จำกัดการกระทำไปที่ Uniswap จำกัดการโอนไปยัง 1 ETH ต่อวัน หรือตั้งวันหมดอายุในการอนุญาต เงื่อนไขเหล่านี้ถูกออกแบบและตรวจสอบภายในสัญญา Invoker หลังจากที่การตรวจสอบผ่านแล้ว บุคคลที่สามสามารถดำเนินการเป็นตามบทบาทของผู้ใช้ EOA
ตัวอย่างเช่นบอท Telegram อาจได้รับอนุญาตให้ดำเนินการบางอย่างในนามของ EOA ของผู้ใช้
ใบอนุญาต ETH ธรรมชาติ
หากเงื่อนไขถูกต้อง (เช่นลายเซ็นอนุญาตถูกต้อง) การดำเนินการสามารถดำเนินการได้เป็นผู้มีอำนาจ EOA โดยเปิดใช้งานความสามารถการอนุญาต ETH ธรรมชาติ
คำสั่งจำกัด
ผู้ใช้สามารถตั้งเงื่อนไขคำสั่งจำกัด ซึ่งเมื่อตรงตามที่กำหนดแล้วจะอนุญาตให้ดำเนินการเป็นชื่อของผู้ใช้ EOA ซึ่งรวมถึงการอนุมัติสินทรัพย์ดิจิทัลที่เกี่ยวข้องสำหรับ DEX และการสลับสินทรัพย์บน DEX โดยเปรียบเทียบกับความสามารถในการตั้งเงื่อนไขคำสั่งจำกัดที่ DEXs เองมีให้ ผู้ใช้ไม่จำเป็นต้องอนุมัติสินทรัพย์ล่วงหน้าสำหรับ DEX
ตัวอย่างเช่น เมื่อ Alice ทำใบสั่งซื้อสูงสุด การอนุมัติจะดำเนินการพร้อมกันโดยกำจัดความจำเป็นในการอนุมัติล่วงหน้า
โดยการออกแบบเงื่อนไขอย่างทั่วไป สามารถสร้างสัญญาใจความ: ตลอดจนเงื่อนไขที่ระบุถูกตอบสนอง ใครก็สามารถดำเนินการในนามของ EOA ของผู้ใช้
การกู้คืนทางสังคม
หากผู้ใช้สูญเสียกุญแจส่วนตัว EOA ของตน พวกเขาสามารถใช้การอนุญาต EIP-3074 ที่ได้รับลายเซ็นก่อนหน้านี้พร้อมกับลายเซ็นจากฝ่ายที่ได้รับอนุญาต (เช่น สามีและตัวแทนที่เชื่อถือได้) เพื่อโอนสินทรัพย์ทั้งหมดจาก EOA นี้ เป็นการกู้คืนสินทรัพย์ (ที่สามารถโอนได้) ไม่ใช่การควบคุมบัญชี หลังจากที่สูญเสียกุญแจส่วนตัว EOA แล้ว EOA จะไม่สามารถใช้ได้อีก
EIP-3074 มีศักยภาพที่จะปรับปรุงหรือแทนที่วิธีการอนุมัติปัจจุบันได้ DApp กำลังดำเนินการภายใต้สมมติฐานว่าผู้ใช้คือ EOAs: ผู้ใช้ต้องอนุมัติจำนวนเงินที่เพียงพอให้สัญญา DApp เพื่อหลีกเลี่ยงการอยู่ออนไลน์อยู่เสมอและอนุมัติธุรกรรมอย่างต่อเนื่อง สิ่งนี้ทำให้ประสบการณ์ของผู้ใช้ดีขึ้นอย่างมีนัยสำคัญ
ตัวอย่างเช่น การใช้งานที่มีเงื่อนไข เช่น คำสั่งซื้อที่ถูกจำกัดหรือ DCA ต้องการผู้ใช้ที่จะอนุมัติจำนวนมากของสินทรัพย์ไว้ล่วงหน้าเพื่อให้ DApp สามารถดำเนินการเมื่อเงื่อนไขถูกตรวจพบ ซึ่งอาจเกิดขึ้นได้หลายครั้ง
อย่างไรก็ตาม นี่ต้องการผู้ใช้ให้ความไว้วางใจใน DApp หรือหลีกเลี่ยงการอนุมัติ DApp เท็จ และพวกเขาต้องสามารถยกเลิกการอนุมัติในเวลาจริง
โมเดลการอนุญาตล่าสุด เช่น EIP-2612 หรือ Permit2 ที่ไม่ใช่ภาษาเหมือนว่าจะมีจุดมุ่งหมายในการปรับปรุงประสบการณ์ของผู้ใช้ในการอนุญาตและความปลอดภัย ผู้ใช้ไม่จำเป็นต้องอนุมัติจำนวนสินทรัพย์มากในแต่ละสัญญา DApp แทนที่นั้น พวกเขาสามารถให้สิทธิให้ DApps ถอนจำนวนสินทรัพย์ที่ระบุภายในเวลาที่ระบุโดยการเซ็นครั้งเดียว สิ่งนี้จะลดพื้นที่โจมตีอย่างมากและเสริมประสบการณ์ของผู้ใช้
△ ผู้ใช้เพียงต้องลงลายมือชื่อออกจากระบบเท่านั้น และพวกเขาสามารถระบุจำนวนสินทรัพย์และระยะเวลาที่ถูกต้องเพื่อให้มีประสบการณ์ผู้ใช้ที่ดีขึ้นและปลอดภัยกว่าการอนุมัติ
อย่างไรก็ตาม ในความเป็นจริง ไม่ใช่เพียงแค่การอนุมัติเท่านั้น โหมดการอนุญาตยังถูกใช้ประจำอย่างบ่อยเป็นวิธีหลอกลวง ผู้เสียหายทำให้เสียหายโดยละเมิดสิทธิ์ที่เชื่อว่าเป็นการใช้ DApp แต่แท้จริงกำลังให้สิทธิ์ให้ผู้โจมตี
△ เมื่อผู้ใช้ลงนามใบอนุญาต พวกเขาสามารถเห็นเฉพาะว่าใครเป็นผู้ให้สิทธิ์ แต่ไม่ทราบว่าจะมีการดำเนินการอะไรร่วมกันกับมัน
หมายเหตุ:การออกแบบใบอนุญาตปัจจุบันไม่สามารถทำงานร่วมกับ DApps ที่ต้องการดำเนินการซ้ำซ้อน เช่น DCA หรือแอปพลิเคชันการชำระเงินรายวันอื่น ๆ นั้นเพราะใบอนุญาตมีกลไกกันซ้ำ ดังนั้นเมื่อธุรกรรมเสร็จสิ้นแล้ว ใบอนุญาตเดียวกันจะไม่สามารถใช้ได้อีกครั้ง โดยรวมแล้วผู้ใช้จำเป็นต้องลงลายเซ็นใบอนุญาตล่วงหน้าสำหรับแต่ละการดำเนินการที่ซ้ำซ้อนในอนาคต
เรียนรู้เพิ่มเติม:
เพื่อเข้าใจเพิ่มเติมเกี่ยวกับเหตุการณ์ที่โหมดการอนุญาตถูกใช้เป็นวิธีการโกง โปรดคัดลอกลิงก์ต่อไปนี้ลงในเบราวเซอร์ของคุณเพื่อข้อมูลเพิ่มเติม:
อย่างไรก็ตาม EIP-3074 นำเสนอโอกาสใหม่: เมื่อนักพัฒนา DApp รู้สึกว่า EOA สามารถดำเนินการซับซ้อนทางด้านการเรียกใช้ผ่าน Invoker การออกแบบของการโต้ตอบ DApp จะไม่ต้องเสียความปลอดภัยเพื่อประสบการณ์ผู้ใช้ที่ดีขึ้นอีกต่อไป เช่น "ผู้ใช้อนุมัติจำนวนมากของสินทรัพย์ล่วงหน้า" หรือ "ผู้ใช้ลงนามในข้อความอนุญาตเพื่ออนุญาตให้ถอน"
แทนที่ผู้ใช้จะผูกการดำเนินการ DApp กับการกระทำการอนุมัติ การดำเนินการพวกเขาผ่าน Invoker อะตอมิก: ไม่ว่าการอนุมัติและการดำเนินการ DApp จะสำเร็จรวมกันหรือล้มเหลวร่วมกัน ไม่มีโอกาสที่การกระทำการอนุมัติจะสำเร็จเพียงอย่างเดียว ดังนั้นผู้ใช้สามารถมั่นใจได้ว่าการกระทำการอนุมัตินี้เป็นเฉพาะสำหรับการดำเนินการปัจจุบัน
นอกจากนี้ผู้ใช้ยินยอมใช้ลายมือชื่อนอกโซน ดังนั้นประสบการณ์ของผู้ใช้จะเหมือนกับการอนุญาต! นี่หมายความว่า DApps จะไม่ต้องใช้โหมดอนุญาตอีกต่อไป! ในอนาคต กระเป๋าสตางค์สามารถบล็อกโดยตรงหรือตรวจสอบคำขอลายมือชื่ออนุญาตอย่างเข้มข้นมากขึ้นโดยไม่ต้องกังวลเรื่องการป้องกันผู้ใช้ไม่สามารถเข้าถึง DApps บางตัว (แต่กล่าวถึงการถูกใช้งานโดยโกง)
△ ผู้ใช้จะไม่ได้มอบอำนาจให้ที่อยู่บางส่วนอีกต่อไป แต่ยังระบุว่ามีการดำเนินการได้บ้าง และพวกเขายังสามารถดูผลลัพธ์การดำเนินการจำลองได้
หมายเหตุ: นี่ไม่ได้หมายความว่าการหลอกลวงสามารถป้องกันได้อย่างสมบูรณ์! ผู้ใช้ยังสามารถถูกหลอกให้เข้าสู่เว็บไซต์หลอกลวงและเว็บไซต์หลอกลวงยังสามารถสร้างการดําเนินการอนุมัติหรือถ่ายโอนเพื่อให้ผู้ใช้ลงนามได้ อย่างไรก็ตาม ณ จุดนี้อย่างน้อยผู้ใช้สามารถดูการดําเนินการที่ลายเซ็นได้รับอนุญาต กระเป๋าเงินยังสามารถจําลองและแสดงผลการดําเนินการแสดงให้ผู้ใช้เห็นอย่างชัดเจนว่าใครจะเสียเงินและใครจะได้รับเงิน เมื่อเทียบกับใบอนุญาตที่ผู้ใช้ไม่สามารถทราบผลการดําเนินการหรือการดําเนินการตอนนี้ผู้ใช้มีข้อมูลเพิ่มเติมเพื่อตัดสินใจว่าจะอนุญาตหรือไม่ แม้ว่าจะไม่ใช่โซลูชันที่สมบูรณ์แบบ แต่ก็ยังเป็นการปรับปรุงที่สําคัญในสถานการณ์ปัจจุบัน
ขณะนี้การออกแบบของ EIP-3074 รวมถึงค่า nonce ของ EOA ในเนื้อหาลายเซ็นเจอร์ด้วย ดังนั้นเมื่อ EOA ส่งธุรกรรมไปยังเชื่อมือที่เปลี่ยนแปลงค่า nonce ทุก EIP-3074 ที่มีอยู่ก็กลายเป็นโมฆะ
หากผู้ใช้ให้สิทธิให้ผู้อื่นดำเนินการในนามของตนเอง เช่น ผ่านวิธีการกุญแจเซสชันหรือวิธีการกู้คืนทางสังคมที่กล่าวถึงข้างต้น จะต้องมีการเปลี่ยนแปลงค่านอนซ์ของ EOA ไม่ได้ มิฉะนั้น การให้สิทธิทั้งหมดจะต้องทำการเซ็นต์อีกครั้งและส่งมอบให้กับคณะผู้ปกครอง ซึ่งจะมีผลกระทบอย่างมากต่อประสบการณ์ของผู้ใช้และความแข็งแกร่งของกลไก
หากผู้ใช้กำลังให้สิทธิให้ตนเองเรียกใช้งาน การเปลี่ยนแปลง EOA nonce ไม่จำเป็น ลายเซ็นเจอ EIP-3074 เหมือนธุรกรรม คาดว่าจะถูกดำเนินการภายในระยะเวลาหนึ่ง อย่างไรก็ตาม กระเป๋าจะต้องจัดการธุรกรรม EIP-3074 สำหรับ EOA: หากมีลายเซ็นเจอ EIP-3074 รอการดำเนินการบนเชื่อมต่อ ธุรกรรม EOA จะต้องรอ
หมายเหตุ:ค่าเริ่มต้นของสัญญา Invoker ต้องรักษากลไก nonce แยกต่างหากโดยที่ลายเซ็นต์แต่ละชุดต้องถูกต่ออายุใหม่ไม่ว่าจะมีการเปลี่ยนแปลงใด ๆ ใน EOA nonce
คีย์เซสชันและการกู้คืนทางสังคมน่าจะได้รับการนำมาใช้อย่างแพร่หลายเท่านั้นหลังจาก EIP-3074 ปรับเปลี่ยนกฎเพื่อลบ EOA nonce จากเนื้อหาลายเซ็นเจอร์ ดังนั้น กระเป๋าเงินควรให้ความสำคัญกับสถานการณ์ที่ “ผู้ใช้ให้อนุญาตตัวเองให้ทำงาน” และจัดการลายเซ็นเจอร์ EIP-3074 เหมือนกับธุรกรรม หลีกเลี่ยงความกังวลเกี่ยวกับธุรกรรม EOA ที่เปลี่ยนแปลง nonce
อย่างไรก็ตาม หากผู้ใช้ต้องการส่งลายเซ็น EIP-3074 ของตนเองบนเชือกโดยตรง จะมีข้อเสียสองประการ:
ผู้ใช้ต้องเซ็นสองครั้ง: ครั้งแรกสำหรับลายเซ็น EIP-3074 และครั้งสองสำหรับลายเซ็นธุรกรรม on-chain
เนื่องจากธุรกรรม on-chain จะเพิ่ม EOA nonce ก่อนการดำเนินการ ต้องมีการเพิ่ม EOA nonce ของลายเซ็นเจ EIP-3074 ล่วงหน้าเพื่อให้เข้าขั้นตอนของ nonce ที่เปลี่ยนไปจากธุรกรรม on-chain
△ เนื่องจากการทำธุรกรรมบนเชนทำให้ EOA nonce เพิ่มขึ้น การตรวจสอบลายเซ็นเจน EIP-3074 จะล้มเหลวหาก nonces ไม่ตรงกัน
△ ผู้ใช้จำเป็นต้องทำการเพิ่มค่าล่วงหน้าของ EOA nonce ในลายเซ็น EIP-3074 เพื่อผ่านการตรวจสอบเรียบร้อย
โดยเข้าใจรายละเอียดเหล่านี้ ผู้ให้บริการกระเป๋าสตางค์สามารถจัดการกับการจัดการ EOA nonce ได้ดียิ่งขึ้น โดยทำให้ประสบการณ์ของผู้ใช้ที่มีความราบรื่นและปลอดภัยมากขึ้นกับการอนุญาต EIP-3074