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 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
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.
Đọc hướng dẫn chuyên sâuBid-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.
Đọc hướng dẫn chuyên sâu0DTEAn option that expires on the current trading day; little time remains for the thesis to work, while gamma and execution risk can change quickly.
Đọc hướng dẫn chuyên sâu