Skip to content
คู่มือออปชันทั้งหมด
การมอบหมายบัญชี Ethereumอ่าน 9 นาที

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 ข้อ

คำถาม 1 / 3

คำถาม 01

หากธุรกรรมชั้นนอกล้มเหลวหลังประมวลผล authorization ที่ถูกต้อง อะไรอาจเกิดขึ้น?

เลือกคำตอบเพื่อดูคำอธิบาย

อภิธานศัพท์ออปชัน

กลไกออปชันการถูกใช้สิทธิ์ออปชันคืออะไรทำความเข้าใจว่าการถูก assign เปลี่ยน short call หรือ put ให้เป็นภาระผูกพันต่อหุ้นได้อย่างไร เกิดขึ้นเมื่อใด และเตรียมเงินสดกับหุ้นอย่างไรจำนวนสัญญาที่อนุญาตไม่ใช่งบประมาณความเสี่ยงPosition limits เทียบกับ exercise limits ของออปชันอธิบายอย่างไรเรียนรู้ว่า position limits ของออปชันที่จดทะเบียนต่างจาก exercise limits อย่างไร เหตุใดการรวมฝั่งเดียวกันและการรายงานจึงสำคัญ และเหตุใดมาร์จินหรือ buying power จึงไม่บอกว่าจำนวนหนึ่งได้รับอนุญาตการซื้อขายออปชันBid-ask spread ของออปชันคืออะไรเรียนรู้ว่า bid, ask, midpoint, ความกว้างของ spread, size และประเภทคำสั่งมีผลต่อราคาที่คุณได้รับหรือจ่ายจริงอย่างไรการซื้อขายออปชันOpen interest และสภาพคล่องบอกอะไรเกี่ยวกับออปชันทำความเข้าใจ open interest ปริมาณซื้อขาย สเปรด bid-ask ขนาดที่แสดง และคุณภาพราคาเสนอก่อนตัดสินสภาพคล่องจริงของออปชันExpiration0DTE options คืออะไร?เรียนรู้ว่า 0DTE option คืออะไร เหตุใดการเสื่อมค่าตามเวลาและสภาพคล่องจึงเปลี่ยนเร็ว และควรตรวจ cutoff การเทรดสุดท้าย settlement และกฎโบรกเกอร์ก่อนเข้าอย่างไร