Skip to content
Tất cả hướng dẫn quyền chọn
Ủy quyền tài khoản Ethereum9 phút đọc

EIP-7702: Ủy quyền mã cho EOA và các rủi ro

Tìm hiểu cách EIP-7702 cho phép EOA trỏ tới mã đã triển khai, nội dung chữ ký ủy quyền type-4 và những quyền cùng rủi ro cần kiểm tra.

Trong hướng dẫn nàyEIP-7702 thay đổi đường chạy mã, không thay khóa

Tóm tắt ngắn

EIP-7702 cho phép tài khoản do bên ngoài kiểm soát (EOA) hiện có đặt một dấu chỉ tới mã đã triển khai. Địa chỉ và khóa riêng vẫn giữ nguyên, nhưng lời gọi tới tài khoản có thể chạy mã đó với quyền của tài khoản. Tiêu chuẩn không bảo đảm quyền bị giới hạn hay an toàn. Hãy kiểm tra mã đích và người kiểm soát trước khi ký.

EIP-7702 thay đổi đường chạy mã, không thay khóa

EOA thông thường ký giao dịch bằng khóa riêng và không có mã chạy được tại địa chỉ của nó. EIP-7702 cho phép tài khoản trỏ tới mã đã triển khai ở địa chỉ khác rồi chạy mã trong ngữ cảnh của tài khoản. Vì vậy địa chỉ, số dư và vùng lưu trữ vẫn thuộc tài khoản ủy quyền, dù mã nằm ở nơi khác. Đây không phải chuyển sang địa chỉ hợp đồng mới hay thay khóa.

Đặc tả EIP-7702 định nghĩa giao dịch set-code type 4 và danh sách ủy quyền. Hướng dẫn Pectra của Ethereum.org cũng mô tả con trỏ tới mã đã triển khai. Nhãn “tài khoản thông minh” trong ví không cho biết quy tắc xác thực, cách khôi phục hay mã nào đang được dùng. Hãy kiểm tra ai có thể sửa mã và mã có quyền gì với tài sản, vùng lưu trữ.

Giao dịch type-4 có danh sách ủy quyền với chữ ký riêng

Giao dịch set-code có byte loại 0x04. Mỗi mục ủy quyền gồm chain ID, địa chỉ mã, nonce của tài khoản cấp quyền và chữ ký của tài khoản đó. Bên cấp quyền ký mục này; người gửi ký giao dịch bên ngoài riêng. Hai vai trò có thể thuộc các tài khoản khác nhau.

Chain ID thường giới hạn ủy quyền trong một mạng. Giá trị 0 cho phép phạm vi rộng hơn trên các chain hỗ trợ EIP-7702, nhưng không bảo đảm giao dịch thành công ở mọi nơi: nonce và trạng thái tài khoản vẫn phải khớp. Đối chiếu mạng, tài khoản và địa chỉ đích đầy đủ trên màn hình ký với trình khám phá khối đáng tin cậy. Tài liệu giao dịch Ethereum.org mô tả danh sách này. Type-4 khác với UserOperation và paymaster ERC-4337 trong hướng dẫn tài khoản thông minh.

Dấu ủy quyền trỏ tới mã, không chứa mã

Dấu trong mã EOA gồm tiền tố 0xef0100 và địa chỉ đích. Máy khách nhận ra dấu này rồi tải mã từ địa chỉ đó khi chạy lời gọi. Địa chỉ tài khoản và địa chỉ mã là hai địa chỉ khác nhau. Mã được lấy từ chain hiện tại; cùng một địa chỉ có thể có mã khác hoặc không có mã ở chain khác.

Mã được ủy quyền chạy trong ngữ cảnh thực thi của tài khoản và có thể dùng vùng lưu trữ của tài khoản. Tùy logic, mã có thể gửi ETH hay token, gọi hợp đồng bên ngoài và sửa dữ liệu. EIP-7702 không tự giới hạn như “chỉ token này”. Nếu đích là proxy, hãy kiểm tra quản trị viên và quyền nâng cấp.

Mã được ủy quyền có thể nắm quyền rộng đối với tài khoản

Xác thực sai có thể cho phép chuyển tài sản, cấp quyền token, gọi tùy ý hợp đồng khác hoặc sửa vùng lưu trữ. Lưu ý bảo mật của EIP nhấn mạnh cần ràng buộc chống phát lại, đích và calldata, giá trị ETH cùng điều kiện gas vào chữ ký. Nếu thiếu các yếu tố này, bên tài trợ có thể gửi lời gọi khác ý định hoặc khiến giao dịch thất bại.

Hãy kiểm tra tài khoản gọi được hợp đồng nào, chữ ký được xác thực ra sao, ai có quyền khẩn cấp hoặc nâng cấp, và mã triển khai có khớp nguồn đã xác minh không. Nhãn kiểm toán không chứng minh địa chỉ và phiên bản trong yêu cầu của bạn đã được kiểm tra. Với thao tác gộp phê duyệt token và hoán đổi, hãy đọc cả hai lời gọi và giới hạn phê duyệt đúng mức cần thiết.

Giao dịch bên ngoài thất bại vẫn có thể để lại ủy quyền

EIP-7702 xử lý danh sách ủy quyền trước khi chạy giao dịch bên ngoài. Đặc tả nêu rằng dấu ủy quyền đã được xử lý không bị hoàn tác nếu phần thực thi sau đó thất bại hoặc revert. Vì vậy biên nhận báo lỗi không có nghĩa tài khoản đã trở lại trạng thái cũ. Hãy kiểm tra riêng biên nhận và mã hiện tại của tài khoản.

Ủy quyền có thể được áp dụng trong khi lời gọi khởi tạo sau đó thất bại, khiến ủy quyền vẫn hoạt động nhưng thiết lập chưa hoàn tất. Trước khi gửi lại, hãy đối chiếu mã giao dịch, tài khoản cấp quyền, nonce và con trỏ mã; nonce có thể đã đổi khiến chữ ký cũ không còn hợp lệ.

Xóa ủy quyền không xóa trạng thái khác

Ủy quyền mới có thể trỏ sang mã khác. Ủy quyền tới địa chỉ null xóa dấu và làm mã tài khoản rỗng, nhưng không xóa vùng lưu trữ, allowance trong hợp đồng ERC-20, giao dịch chuyển tài sản đã xong hay thay đổi ở hợp đồng ngoài. Hãy kiểm tra và thu hồi quyền token riêng.

Mã mới có thể hiểu vùng lưu trữ cũ theo cách khác. Kiểm tra bố cục lưu trữ và kế hoạch di chuyển trước khi đổi. Xem hướng dẫn phê duyệt và allowance token. Nếu khóa hay cụm từ khôi phục bị lộ, xóa mã không lấy lại được khóa; hãy tham khảo hướng dẫn khôi phục ví.

Kiểm tra chain, đích và trạng thái sau lỗi trước khi ký

Xác nhận trong tài liệu chính thức của ví rằng ví hỗ trợ EIP-7702 trên mạng đã chọn. Kiểm tra chain ID, tài khoản, địa chỉ đích, mã đã xác minh và quản trị viên proxy. Phân biệt chữ ký ủy quyền với người gửi và người trả phí cho giao dịch bên ngoài; có tài trợ phí không làm mã an toàn hơn.

Nếu ủy quyền đang hoạt động, hãy xem dấu hiện tại và địa chỉ mã thay vì chỉ nhìn trạng thái giao dịch. Nếu khác dự kiến, dừng lời gọi và phê duyệt mới. Xem hướng dẫn phí gas Ethereum và hướng dẫn giao dịch đang chờ để hiểu phí, nonce.

Phân biệt tính năng giao thức với cam kết của ví

EIP-7702 chuẩn hóa định dạng giao dịch nối EOA với mã đã triển khai. Gộp lời gọi, tài trợ phí, quyền phiên và khôi phục phụ thuộc vào mã và dịch vụ cụ thể. Thông báo Pectra mainnet của Ethereum Foundation mô tả khả năng thay thế hoặc thu hồi ủy quyền; UserOperation và paymaster ERC-4337 là cơ chế khác.

Nhãn “tài khoản thông minh” không cho biết ai giữ khóa, ai nâng cấp mã hay thay đổi khôi phục. Hãy kiểm tra triển khai, cài đặt và hỗ trợ chain trước khi sửa tài khoản có tài sản. Bài này giải thích cơ chế, không khuyến nghị ví hay bên nhận ủy quyền cụ thể.

Câu hỏi thường gặp

Q1EIP-7702 có biến EOA thành ví hợp đồng thông minh thông thường không?

Không. Nó cho phép EOA ủy quyền lời gọi cho mã, nhưng không tự thêm chính sách ví, khôi phục hay quyền cụ thể.

Q2Chữ ký ủy quyền có giống chữ ký giao dịch type-4 không?

Không. Tài khoản cấp quyền ký đích, chain ID và nonce; người gửi ký riêng giao dịch bên ngoài.

Q3Xóa ủy quyền có thu hồi phê duyệt token không?

Không. Hợp đồng token lưu allowance riêng. Hãy kiểm tra và thu hồi bằng hợp đồng token hoặc luồng ví đáng tin cậy.

Q4Cần kiểm tra gì ở đích ủy quyền?

Kiểm tra địa chỉ và mã trên chain hiện tại, nguồn đã xác minh, quản trị viên nâng cấp và quyền đối với tài sản cùng vùng lưu trữ.

Nguồn và tài liệu đọc thêm

Báo lỗi

Chúng tôi sẽ soạn email kèm liên kết bài viết này. Mark chỉ nhận được báo cáo sau khi bạn gửi email

Kiểm tra nhanh

Đọc xong hướng dẫn? Hãy kiểm tra với 3 câu hỏi

Câu hỏi 1 / 3

Câu hỏi 01

Điều gì có thể xảy ra nếu phần thực thi bên ngoài lỗi sau khi xử lý ủy quyền hợp lệ?

Chọn một đáp án để xem giải thích

Bảng thuật ngữ quyền chọn

Cơ chế quyền chọnGiao quyền chọn là gì?Hiểu cách việc giao quyền chọn biến một call hoặc put bán thành nghĩa vụ đối với cổ phiếu, khi nào điều đó có thể xảy ra và cách chuẩn bị tiền mặt và cổ phiếuSố hợp đồng được phép không giống ngân sách rủi roGiải thích giới hạn vị thế so với giới hạn thực hiện quyền chọnTìm hiểu giới hạn vị thế của quyền chọn niêm yết khác giới hạn thực hiện thế nào, vì sao việc gộp cùng phía và báo cáo quan trọng, và vì sao ký quỹ hoặc sức mua không cho biết một số lượng có được phép hay khôngGiao dịch quyền chọnSpread bid-ask của quyền chọn là gì?Tìm hiểu bid, ask, midpoint, độ rộng spread, số lượng và loại lệnh ảnh hưởng thế nào đến mức giá bạn thực sự có thể nhận hoặc trảGiao dịch quyền chọnSố lượng hợp đồng mở và thanh khoản cho bạn biết gì về một quyền chọn?Hiểu số lượng hợp đồng mở, khối lượng, chênh lệch giá mua-bán, quy mô hiển thị và chất lượng báo giá trước khi đánh giá thanh khoản thực của một quyền chọnĐáo hạnQuyền chọn 0DTE là gì?Tìm hiểu quyền chọn 0DTE là gì, vì sao suy giảm theo thời gian và thanh khoản thay đổi nhanh, và cách kiểm tra thời điểm chốt giao dịch, thanh toán cùng quy tắc môi giới trước khi vào lệnh