อ่านข้อเสนอ EIP-7702 ใหม่ของ Vitalik ได้ในบทความเดียว: แนวทางขั้นสูงสุดสำหรับการลบบัญชีหรือไม่
ผู้เขียนต้นฉบับ: จาร์รอด วัตต์ส
การรวบรวมต้นฉบับ: Frank, Foresight News
เมื่อเร็วๆ นี้ Vitalik Buterin ได้เสนอข้อเสนอ EIP-7702 ซึ่งอาจเป็นหนึ่งในการเปลี่ยนแปลงที่มีอิทธิพลมากที่สุดในประวัติศาสตร์ของ Ethereum บทความนี้จะแนะนำวิธีการทำงานของข้อเสนอใหม่และทุกสิ่งที่คุณจำเป็นต้องรู้เพื่อนำไปใช้
ก่อนอื่น ข้อเสนอ EIP-7702 ใหม่นั้นสั้นจนน่าประหลาดใจ ซึ่งทำให้บางคนสับสนและไม่รู้ว่ามันทำงานอย่างไรจริงๆ เพื่อที่จะเข้าใจ 7702 เราต้องเข้าใจข้อเสนออีกสามข้อที่กล่าวถึงในนั้นก่อน:
EIP-4337
EIP-3074
EIP-5003
เริ่มจากเป้าหมายทั่วไปของข้อเสนอทั้งหมดเหล่านี้ "นามธรรมบัญชี" - EOA (บัญชี "ธรรมดา") บน Ethereum นั้นแย่มาก มีความเสี่ยงและมีฟังก์ชันการทำงานที่จำกัดมาก ในขณะที่นามธรรมบัญชีทำให้ผู้ใช้สามารถใช้สัญญาอัจฉริยะเป็นบัญชีเพื่อเพิ่มได้ คุณสมบัติและความปลอดภัยเพิ่มเติมเพื่อแก้ไขปัญหานี้

EIP-4337
EIP-4337 ซึ่งเปิดใช้งานบน mainnet ในเดือนมีนาคม 2023 อนุญาตให้เขียนสัญญาอัจฉริยะได้เหมือนกับบัญชี เพื่อให้สามารถตรวจสอบและดำเนินการธุรกรรม ซึ่งปรับปรุงประสบการณ์ผู้ใช้ (UX) มากมาย
นับตั้งแต่เปิดตัว EIP-4337 ก็มีการใช้งานอย่างกว้างขวาง ซึ่งนำโดย Polygon เป็นหลัก ในขณะที่ Base มีกิจกรรมเพิ่มขึ้นในช่วงไม่กี่เดือนที่ผ่านมา

นวัตกรรมล่าสุดที่เกี่ยวข้องกับ EIP-4337 มาจากระบบนิเวศของ Coinbase และ Coinbase Smart Wallet ซึ่งใช้เทคโนโลยีไบโอเมตริกซ์และมีประสบการณ์การใช้งานที่ยอดเยี่ยม ฉันได้ทำการ สาธิตขนาดเล็ก อีกครั้งเพื่อสาธิตสิ่งนี้ที่ ETH Global Sydney เมื่อสุดสัปดาห์ที่ผ่านมา
แล้วมีอะไรผิดปกติกับ EIP-4337? เหตุใดจึงมีข้อเสนอนามธรรมบัญชีอีกในวันนี้? เนื่องจาก EOA ยังคงเป็นประเภทบัญชีที่ใช้กันอย่างแพร่หลายที่สุด
นอกจากนี้ บัญชีสัญญาอัจฉริยะของ EIP-4337 ส่วนใหญ่ได้รับการควบคุมโดยผู้ลงนาม EOA คนเดียว นี่คือโค้ดตัวอย่าง:

เนื่องจากไม่มีวิธี "แปลง" EOA ของผู้ใช้ให้เป็นบัญชีสัญญาอัจฉริยะ จึงมีวิธีแก้ปัญหาขั้นตอนกลางที่แปลกประหลาดนี้ - สาเหตุหลักมาจากการขาดการสนับสนุนดั้งเดิมสำหรับการเชื่อมต่อบัญชีสัญญาอัจฉริยะในแอปพลิเคชัน Web3 คนส่วนใหญ่ในปัจจุบันยังคงใช้ปลั๊ก -ในกระเป๋าเงินเช่น MetaMask ใช้ EOA
EIP-3074
สิ่งนี้นำเราไปสู่ข้อเสนอถัดไปของเรา: EIP-3074
ในความเป็นจริง ข้อเสนอนี้ถูกเสนอก่อน EIP-4337 แต่ยังไม่ได้รวมเข้ากับเครือข่ายหลัก EIP-3074 พยายามให้อำนาจแก่ EOA มากขึ้น ทำให้พวกเขามอบหมายการควบคุม EOA ให้กับสัญญาอัจฉริยะได้
ข้อเสนอสรุปสิ่งต่อไปนี้ โดยเพิ่ม opcode ใหม่สองตัว:
AUTH: EOA สามารถเรียก AUTH เพื่ออนุญาตสัญญาอัจฉริยะที่กำหนดเพื่อดำเนินการในนามของ EOA ได้
AUTHCALL: สัญญาอัจฉริยะที่ได้รับอนุญาตสามารถใช้ AUTHCALL เพื่อดำเนินธุรกรรมสำหรับ EOA;

ซึ่งเปิดใช้งานกรณีการใช้งานหลายกรณีเช่นเดียวกับ EIP-4337 โดยไม่ต้องให้ผู้ใช้แต่ละรายปรับใช้สัญญาอัจฉริยะใหม่ ข้อแตกต่างที่สำคัญคือธุรกรรมมาจาก EOA ของผู้ใช้ แทนที่จะเป็นสัญญาใหม่โดยไม่มีประวัติบัญชีของผู้ใช้, ETH, NFT, โทเค็น ฯลฯ

คำตอบทั่วไปสำหรับ EIP-3074 คือ "จะเกิดอะไรขึ้นถ้ามีคนทำสัญญาที่เป็นอันตรายและผู้ใช้มอบหมายให้พวกเขา" ท้ายที่สุดแล้ว การมอบหมายให้กับสัญญาที่เป็นอันตรายอาจทำให้สินทรัพย์ crypto ทั้งหมดในกระเป๋าเงินของผู้ใช้หมดลง
วิธีแก้ปัญหานี้คือผู้ให้บริการกระเป๋าเงินไม่อนุญาตให้ผู้ใช้อนุญาตสัญญาใด ๆ พวกเขาอาจเก็บรายการสัญญาอัจฉริยะที่ผู้ใช้สามารถมอบหมายการอนุญาตได้ และสัญญาใด ๆ ที่อยู่นอกรายการนี้จะไม่ปรากฏให้ผู้ใช้เห็น

ประเด็นสำคัญของการมอบหมาย EIP-3074 คือการมอบสิทธิ์ไม่ถาวร "การทำธุรกรรมครั้งเดียวของ EOA จะทำให้ nonce เพิ่มขึ้น ซึ่งจะทำให้การอนุญาตที่ยังไม่เสร็จสมบูรณ์เป็นโมฆะ"
โดยพื้นฐานแล้ว หลังจากที่ผู้ใช้ทำการซื้อขายใหม่ คำสั่งซื้อขายจะไม่ถูกต้องอีกต่อไป

EIP-5003
เราไม่ต้องการให้อำนาจแก่ EOA มากขึ้นจริงๆ ท้ายที่สุดแล้ว เป้าหมายของข้อเสนอเหล่านี้คือการย้ายผู้ใช้จาก EOA ไปยังบัญชีสัญญาอัจฉริยะ แล้วเหตุใดเราจึงเพิ่มฟังก์ชันการทำงานให้กับ EOA
สิ่งนี้นำไปสู่ข้อเสนอถัดไปของเรา: EIP-5003 EIP-5003 เพิ่ม opcode อื่น "AUTHUSURP" ซึ่งปรับใช้โค้ดในที่อยู่ที่ได้รับอนุญาต EIP-3074
ความแตกต่างระหว่าง EIP-3074 และ EIP-5003 คือ:
EIP-3074 เป็นการมอบหมายชั่วคราวให้กับสัญญาอัจฉริยะและสามารถเพิกถอนได้
EIP-5003 เป็นการโยกย้ายถาวรจาก EOA และ "การแปลง" จาก EOA ไปเป็นบัญชีสัญญาอัจฉริยะ
ปัญหาใหญ่ของ EIP-3074 + EIP-5003 คือมันเข้ากันไม่ได้กับรูปแบบนามธรรมของบัญชีปัจจุบันผ่านทาง EIP-4337 ดังนั้นบางคนในชุมชน Ethereum จึงกังวลว่าเราจะ "สร้างระบบนิเวศของโค้ดที่แยกจากกันสองแห่ง"
EIP-7702
นั่นนำเราไปสู่ข้อเสนอของ Vitalik Buterin ในวันนี้: EIP-7702 - เขาเสนอให้แก้ไข EIP-3074 เพื่อให้มีความคล่องตัวมากขึ้นและเข้ากันได้กับ EIP-4337 มากขึ้น เพื่อที่เราจะได้ไม่จบลงด้วยระบบนิเวศที่เป็นนามธรรมของบัญชีสองระบบที่แยกจากกัน แต่ยังพิจารณาด้วย EIP-5003 ก้าวต่อไปของการโยกย้ายถาวร
EIP-7702 เสนอประเภทธุรกรรมใหม่ที่ยอมรับทั้งช่อง Contract_code และลายเซ็น และเมื่อเริ่มดำเนินการธุรกรรม จะตั้งค่ารหัสสัญญาของบัญชีของผู้ลงนามเป็น Contract_code เมื่อสิ้นสุดการซื้อขาย ระบบจะรีเซ็ตทิกเกอร์ให้ว่างเปล่า
ซึ่งเหมือนกับ EIP-3074 ซึ่งใช้ฟังก์ชันการมอบหมายชั่วคราวของ EOA สำหรับสัญญาอัจฉริยะ อย่างไรก็ตาม EIP-7702 ไม่ได้แนะนำ opcode ใหม่ (ซึ่งต้องใช้ฮาร์ดฟอร์ก) แต่กำหนดฟังก์ชันที่จะเรียกใช้แทน:
AUTH -> เรียก "ยืนยัน" (การยืนยัน)
AUTHCALL -> เรียก "ดำเนินการ"

โดยเฉพาะ:
ตรวจสอบว่ารหัสสัญญาบัญชีของคุณว่างเปล่าหรือไม่
หากว่างเปล่า ระบบจะตั้งค่าเป็นรหัสสัญญาที่ให้ไว้
ดำเนินธุรกรรมตามวิธีที่สัญญาอัจฉริยะที่ให้มาจัดการธุรกรรม
คืนค่าการตั้งค่ารหัสสัญญาบัญชีให้ว่างเปล่า
"รหัสสัญญา" หมายความว่ารหัสของสัญญาอัจฉริยะถูกจัดเก็บไว้ใน "รหัสสัญญา" เนื่องจาก EOA ไม่ใช่สัญญา ช่องนี้จึงมักจะว่างเปล่า อย่างไรก็ตาม สิ่งที่ชาญฉลาดเกี่ยวกับ EIP-7702 ก็คือมันจะเติมรหัสสัญญาอัจฉริยะลงในฟิลด์นี้ชั่วคราวระหว่างการทำธุรกรรม
นี่เป็นวิธีที่จะทำให้พฤติกรรมใหม่ EOA ของคุณ (ในรูปแบบของทิกเกอร์) สำหรับการดำเนินการธุรกรรมเฉพาะนี้ ขั้นตอนต่อไปคือการเปลี่ยนแปลงพฤติกรรมนี้อย่างถาวร เพียงเลือก "อย่าตั้งค่าทิกเกอร์เป็นหลังจากปิดการซื้อขาย" null ".
หนึ่งในสิ่งที่ดีที่สุดเกี่ยวกับข้อเสนอนี้คือ เข้ากันได้สูงกับงานนามธรรมบัญชีทั้งหมดที่สร้างขึ้นสำหรับ EIP-4337 จนถึงปัจจุบัน "รหัสสัญญาที่ผู้ใช้ต้องลงนามสามารถเป็นรหัสกระเป๋าเงิน EIP-4337 ที่มีอยู่จริงได้"
เมื่อการเปลี่ยนแปลงนี้มีผล EOA ที่มีอยู่ของผู้ใช้จะสามารถรันโค้ดสัญญาอัจฉริยะใดๆ ได้ ด้วย EIP เพิ่มเติม EOA ยังสามารถอัปเกรดอย่างถาวรเพื่อเรียกใช้โค้ดเฉพาะได้อีกด้วย
เมื่อเวลาผ่านไป สิ่งนี้อาจปฏิวัติวิธีที่เราทุกคนโต้ตอบกับแอปพลิเคชัน Web3


