EIP-7702: การมอบหมายโค้ด EOA และความเสี่ยง
เรียนรู้ว่า EIP-7702 ให้ EOA ชี้ไปยังโค้ดที่ติดตั้งแล้วอย่างไร การอนุญาต type-4 ลงนามอะไร และควรตรวจสอบสิทธิ์กับความเสี่ยงใดบ้าง
ในคู่มือนี้EIP-7702 เปลี่ยนเส้นทางการทำงาน ไม่ได้เปลี่ยนคีย์
สรุปสั้น
EIP-7702 ช่วยให้บัญชีที่มีเจ้าของภายนอก (EOA) ตั้งเครื่องหมายชี้ไปยังโค้ดที่ติดตั้งแล้วได้ ที่อยู่และคีย์ยังเหมือนเดิม แต่การเรียกบัญชีอาจรันโค้ดนั้นด้วยสิทธิ์ของบัญชี มาตรฐานไม่ได้รับประกันสิทธิ์ที่จำกัดหรือความปลอดภัย ก่อนลงนามให้ตรวจสอบโค้ดเป้าหมายและผู้ควบคุม
EIP-7702 เปลี่ยนเส้นทางการทำงาน ไม่ได้เปลี่ยนคีย์
EOA ทั่วไปลงนามธุรกรรมด้วยคีย์ส่วนตัวและไม่มีโค้ดที่รันได้อยู่ในที่อยู่ของตน EIP-7702 ให้บัญชีชี้ไปยังโค้ดที่ติดตั้งไว้ในอีกที่อยู่ แล้วรันโค้ดนั้นในบริบทของบัญชี ดังนั้นที่อยู่ ยอดคงเหลือ และพื้นที่จัดเก็บยังเป็นของบัญชีผู้มอบหมาย นี่ไม่ใช่การย้ายไปที่อยู่สัญญาใหม่หรือเปลี่ยนคีย์
ข้อกำหนด EIP-7702 กำหนดธุรกรรม set-code type 4 และรายการ authorization ส่วนคู่มือ Pectra ของ Ethereum.org อธิบายว่าเป็นตัวชี้ไปยังโค้ดที่ติดตั้งแล้ว คำว่า “smart account” ในวอลเล็ตไม่ได้บอกกฎตรวจสอบ วิธีการกู้คืน หรือโค้ดที่ใช้จริง ตรวจสอบว่าใครแก้โค้ดได้และโค้ดมีสิทธิ์ทำอะไรกับสินทรัพย์และพื้นที่จัดเก็บ
ธุรกรรม type-4 มีรายการ authorization ที่ลงนามแยกกัน
ธุรกรรม set-code มีไบต์ชนิด 0x04 แต่ละรายการ authorization มี chain ID ที่อยู่โค้ด nonce ของบัญชีผู้อนุญาต และลายเซ็นของบัญชีนั้น ผู้มีอำนาจลงนาม authorization ส่วนผู้ส่งลงนามธุรกรรมชั้นนอกแยกต่างหาก ทั้งสองบทบาทอาจเป็นคนละบัญชี
ปกติ chain ID จะจำกัด authorization ไว้ที่เชนเดียว ค่า 0 เปิดขอบเขตกว้างบนเชนที่รองรับ EIP-7702 แต่ไม่ได้รับประกันว่าจะสำเร็จ เพราะ nonce และสถานะบัญชียังต้องตรงกัน เปรียบเทียบเครือข่าย บัญชี และที่อยู่เป้าหมายเต็มในหน้าลงนามกับ block explorer ที่เชื่อถือได้ รายการอาจถูกข้ามหากการตรวจสอบล้มเหลว
เอกสารธุรกรรมของ Ethereum.org อธิบายรายการ authorization ของ type-4 ธุรกรรมชั้นนอกยังมีเงื่อนไข gas และผู้จ่ายค่าธรรมเนียม กลไกนี้ต่างจาก UserOperation และ paymaster ของ ERC-4337 ในคู่มือ smart account
เครื่องหมายการมอบหมายชี้ไปยังโค้ด ไม่ได้บรรจุโค้ด
เครื่องหมายประกอบด้วย prefix 0xef0100 และที่อยู่เป้าหมาย ไคลเอนต์จะรู้จำเครื่องหมายและโหลดโค้ดจากที่อยู่นั้นเมื่อมีการเรียก ที่อยู่บัญชีกับที่อยู่โค้ดจึงต่างกัน โค้ดมาจากเชนปัจจุบัน ที่อยู่เดียวกันอาจมีโค้ดต่างกันหรือไม่มีโค้ดในอีกเชน
โค้ดที่ได้รับมอบหมายทำงานในบริบทบัญชีและใช้พื้นที่จัดเก็บของบัญชีได้ ตามตรรกะของโค้ด มันอาจส่ง ETH หรือโทเคน เรียกสัญญาภายนอก หรือแก้ค่าที่บันทึกไว้ EIP-7702 ไม่ได้เพิ่มข้อจำกัดอย่าง “ใช้ได้เฉพาะโทเคนนี้” โดยอัตโนมัติ หากเป้าหมายเป็น proxy ให้ตรวจผู้ดูแลและสิทธิ์อัปเกรด
โค้ดที่ได้รับมอบหมายอาจมีอำนาจกว้างต่อบัญชี
การตรวจสอบที่ผิดพลาดอาจเปิดให้โอนสินทรัพย์ อนุมัติโทเคน เรียกสัญญาภายนอกตามใจ หรือเปลี่ยนพื้นที่จัดเก็บ ข้อพิจารณาด้านความปลอดภัยของ EIP เตือนให้ผูกการป้องกัน replay เป้าหมาย calldata มูลค่า ETH และเงื่อนไข gas ไว้กับลายเซ็น หากไม่มี ผู้สนับสนุนธุรกรรมอาจส่งการเรียกอื่นหรือทำให้ธุรกรรมล้มเหลว
ตรวจสอบว่าสัญญาใดที่บัญชีเรียกได้ ตรวจสอบลายเซ็นอย่างไร ใครมีสิทธิ์ฉุกเฉินหรืออัปเกรด และโค้ดที่ติดตั้งตรงกับแหล่งที่ตรวจสอบแล้วหรือไม่ ตราตรวจสอบไม่ได้พิสูจน์ว่าได้ตรวจที่อยู่และรุ่นตามคำขอจริง หากรวมการอนุมัติโทเคนกับการแลกเปลี่ยน ให้อ่านทั้งสองการเรียกและจำกัดวงเงินเท่าที่จำเป็น
ธุรกรรมชั้นนอกที่ล้มเหลวอาจทิ้งการมอบหมายไว้
EIP-7702 ประมวลผลรายการ authorization ก่อนเริ่มรันธุรกรรมชั้นนอก ข้อกำหนดระบุว่าเครื่องหมายที่ประมวลผลแล้วจะไม่ถูกย้อนกลับ แม้การทำงานภายหลังล้มเหลวหรือ revert ดังนั้นใบเสร็จที่ระบุว่าล้มเหลวไม่ได้หมายความว่าสถานะบัญชีกลับไปเหมือนเดิม ตรวจใบเสร็จกับโค้ดบัญชีปัจจุบันแยกกัน
authorization อาจสำเร็จแต่การเรียกเริ่มต้นภายหลังล้มเหลว ทำให้การมอบหมายยังทำงานทั้งที่การตั้งค่ายังไม่เสร็จ ก่อนลองใหม่ให้เทียบ transaction hash บัญชีผู้อนุญาต nonce และตัวชี้โค้ด เพราะ nonce ที่เปลี่ยนอาจทำให้ลายเซ็นเดิมใช้ไม่ได้
การลบการมอบหมายไม่ลบสถานะอื่น
authorization ใหม่ชี้ไปยังโค้ดอื่นได้ การอนุญาตที่อยู่ null จะลบเครื่องหมายและทำให้โค้ดบัญชีว่าง แต่ไม่ลบพื้นที่จัดเก็บ allowance ในสัญญา ERC-20 การโอนที่เสร็จแล้ว หรือการเปลี่ยนแปลงสัญญาภายนอก ตรวจสอบและเพิกถอนสิทธิ์โทเคนแยกต่างหาก
โค้ดใหม่อาจตีความพื้นที่จัดเก็บเดิมต่างออกไป ตรวจสอบเลย์เอาต์และแผนย้ายก่อนเปลี่ยน เปรียบเทียบกับคู่มือการอนุมัติและ allowance ของโทเคน หากคีย์หรือวลีกู้คืนรั่ว การลบโค้ดไม่ได้กู้คีย์กลับมา ดูคู่มือกู้คืนวอลเล็ต
ตรวจเชน เป้าหมาย และสถานะหลังล้มเหลวก่อนลงนาม
ตรวจเอกสารทางการของวอลเล็ตว่ารองรับ EIP-7702 บนเครือข่ายที่เลือกหรือไม่ ตรวจ chain ID บัญชี ที่อยู่เป้าหมาย โค้ดที่ยืนยันแล้ว และผู้ดูแล proxy แยกลายเซ็น authorization จากผู้ส่งและผู้จ่ายค่าธรรมเนียมของธุรกรรมชั้นนอก การมีผู้สนับสนุนไม่ได้ทำให้โค้ดปลอดภัย
หากเปิดใช้การมอบหมายแล้ว ให้ตรวจเครื่องหมายและที่อยู่โค้ดปัจจุบัน ไม่ใช่ดูแค่สถานะธุรกรรม หากไม่ตรงที่คาด ให้หยุดการเรียกและการอนุมัติเพิ่มเติม เรื่องค่า gas ดูคู่มือค่าธรรมเนียม Ethereum และเรื่อง nonce กับธุรกรรมค้างดูคู่มือธุรกรรมที่รอดำเนินการ
แยกความสามารถของโปรโตคอลจากคำรับรองของวอลเล็ต
EIP-7702 กำหนดรูปแบบธุรกรรมที่เชื่อม EOA กับโค้ดที่ติดตั้งแล้ว การรวมหลายคำสั่ง การสนับสนุนค่าธรรมเนียม สิทธิ์แบบ session และการกู้คืนขึ้นอยู่กับโค้ดและบริการเฉพาะ ประกาศ Pectra mainnet ของ Ethereum Foundation กล่าวถึงการเปลี่ยนหรือเพิกถอน authorization ส่วน UserOperation และ paymaster ของ ERC-4337 เป็นอีกกลไกหนึ่ง
คำว่า “smart account” ไม่ได้บอกว่าใครถือคีย์ ใครอัปเกรดโค้ด หรือใครเปลี่ยนวิธีกู้คืน ตรวจการใช้งานจริง การตั้งค่า และการรองรับเชนก่อนเปลี่ยนบัญชีที่มีสินทรัพย์ บทความนี้อธิบายกลไก ไม่ได้แนะนำวอลเล็ตหรือผู้รับมอบหมายรายใด
คำถามที่พบบ่อย
Q1EIP-7702 เปลี่ยน EOA เป็นวอลเล็ตสัญญาอัจฉริยะทั่วไปหรือไม่?
ไม่ใช่ EIP-7702 ให้ EOA มอบหมายการเรียกไปยังโค้ดได้ แต่ไม่ได้เพิ่มนโยบายวอลเล็ต การกู้คืน หรือสิทธิ์เฉพาะโดยอัตโนมัติ
Q2ลายเซ็น authorization กับลายเซ็นธุรกรรม type-4 เหมือนกันหรือไม่?
ไม่เหมือน บัญชีผู้อนุญาตลงนามเป้าหมาย chain ID และ nonce ส่วนผู้ส่งลงนามธุรกรรมชั้นนอกแยกกัน
Q3การลบการมอบหมายเพิกถอนการอนุมัติโทเคนหรือไม่?
ไม่ สัญญาโทเคนเก็บ allowance แยกจากเครื่องหมายโค้ดของ EOA ตรวจสอบและเพิกถอนผ่านสัญญาโทเคนหรือขั้นตอนวอลเล็ตที่เชื่อถือได้
Q4ควรตรวจอะไรในเป้าหมายการมอบหมาย?
ตรวจที่อยู่และโค้ดบนเชนปัจจุบัน แหล่งโค้ดที่ยืนยันแล้ว ผู้ดูแลการอัปเกรด และสิทธิ์ต่อสินทรัพย์กับพื้นที่จัดเก็บบัญชี
แหล่งข้อมูลและการอ่านเพิ่มเติม
รายงานปัญหา
เราจะเตรียมอีเมลพร้อมลิงก์บทความนี้ Mark จะได้รับรายงานเมื่อคุณส่งอีเมลแล้วเท่านั้น
ตรวจสอบอย่างรวดเร็ว
อ่านคู่มือจบแล้ว ลองตอบคำถาม 3 ข้อ
คำถาม 01
หากธุรกรรมชั้นนอกล้มเหลวหลังประมวลผล authorization ที่ถูกต้อง อะไรอาจเกิดขึ้น?
เลือกคำตอบเพื่อดูคำอธิบาย
อภิธานศัพท์ออปชัน
The process that requires an option writer to fulfill the contract after an exercise notice is allocated; it can create or remove an underlying position.
อ่านคู่มือฉบับละเอียดBid-ask spreadThe gap between the best displayed bid and ask, which is a practical trading cost and a signal of how uncertain an immediate fill may be.
อ่านคู่มือฉบับละเอียด0DTEAn option that expires on the current trading day; little time remains for the thesis to work, while gamma and execution risk can change quickly.
อ่านคู่มือฉบับละเอียด