Tác giả gốc: Jarrod Watts
Biên soạn gốc: Frank, Tin tức tầm nhìn xa
Đề xuất EIP-7702 mới nhất của Vitalik Buterin có thể là một trong những thay đổi có ảnh hưởng nhất trong lịch sử của Ethereum. Bài viết này sẽ giới thiệu cách thức hoạt động của đề xuất mới này và mọi thứ bạn cần biết để triển khai nó.
Đầu tiên, đề xuất EIP-7702 mới ngắn đến mức đáng ngạc nhiên, điều này khiến một số người bối rối về cách thức hoạt động thực sự của nó. Để hiểu được 7702, trước tiên chúng ta cần hiểu ba đề xuất khác được đề cập trong đó:
EIP-4337
EIP-3074
EIP-5003
Hãy bắt đầu với mục tiêu chung của tất cả các đề xuất này, "trừu tượng hóa tài khoản" - tài khoản EOA ("thông thường") trên Ethereum rất tệ, chúng rủi ro và có chức năng rất hạn chế, trong khi việc trừu tượng hóa tài khoản cho phép người dùng sử dụng hợp đồng thông minh làm tài khoản để thêm nhiều tính năng và bảo mật hơn để giải quyết vấn đề này.
EIP-4337
EIP-4337, xuất hiện trực tuyến trên mạng chính vào tháng 3 năm 2023, cho phép các hợp đồng thông minh được viết giống như tài khoản để chúng có thể xác minh và thực hiện giao dịch, giúp cải thiện nhiều trải nghiệm người dùng (UX).
Kể từ khi phát hành, EIP-4337 đã được áp dụng rộng rãi, chủ yếu là Polygon, trong khi Base đã chứng kiến hoạt động gia tăng trong vài tháng qua.
Cải tiến mới nhất liên quan đến EIP-4337 đến từ hệ sinh thái Coinbase và Ví thông minh Coinbase, dựa trên công nghệ sinh trắc học và có trải nghiệm người dùng tuyệt vời. Tôi đã tạo một bản demo nhỏ khác tại ETH Global Sydney vào cuối tuần trước để chứng minh điều này.
Vậy EIP-4337 có vấn đề gì? Tại sao hôm nay lại có một đề xuất tóm tắt tài khoản khác? Bởi vì EOA cho đến nay vẫn là loại tài khoản được sử dụng rộng rãi nhất.
Ngoài ra, hầu hết các tài khoản hợp đồng thông minh EIP-4337 đều được kiểm soát bởi một người ký EOA duy nhất. Đây là mã mẫu:
Vì không có cách nào để "chuyển đổi" EOA của người dùng thành tài khoản hợp đồng thông minh nên có giải pháp bước giữa kỳ lạ này - chủ yếu là do thiếu hỗ trợ riêng để kết nối tài khoản hợp đồng thông minh trong ứng dụng Web3, hầu hết mọi người ngày nay vẫn sử dụng plug-in. -trong các ví như MetaMask Sử dụng EOA.
EIP-3074
Điều này dẫn chúng ta đến đề xuất tiếp theo: EIP-3074.
Trên thực tế, đề xuất này đã được đưa ra trước EIP-4337, nhưng nó vẫn chưa được sáp nhập vào mạng chính. EIP-3074 cố gắng trao thêm quyền lực cho EOA, cho phép họ ủy quyền kiểm soát EOA của mình cho các hợp đồng thông minh.
Đề xuất phác thảo những điều sau đây, thêm hai opcode mới:
AUTH: EOA có thể gọi AUTH để ủy quyền cho một hợp đồng thông minh nhất định thực hiện các hoạt động thay mặt cho EOA của nó;
AUTHCALL: Hợp đồng thông minh được ủy quyền có thể sử dụng AUTHCALL để thực hiện các giao dịch cho EOA;
Điều này cho phép nhiều trường hợp sử dụng tương tự như EIP-4337 mà không yêu cầu mỗi người dùng triển khai hợp đồng thông minh mới. Điểm khác biệt chính là giao dịch đến từ EOA của người dùng, thay vì hợp đồng mới không có bất kỳ lịch sử tài khoản, ETH, NFT, mã thông báo nào của người dùng, v.v.
Câu trả lời phổ biến đối với EIP-3074 là “Điều gì sẽ xảy ra nếu ai đó thực hiện một hợp đồng độc hại và người dùng ủy quyền cho họ?” Rốt cuộc, việc ủy quyền cho một hợp đồng độc hại có thể khiến tất cả tài sản tiền điện tử trong ví của người dùng bị cạn kiệt.
Giải pháp cho vấn đề này là nhà cung cấp dịch vụ ví thậm chí không cho phép người dùng ủy quyền bất kỳ hợp đồng nào, họ có thể giữ một danh sách trắng các hợp đồng thông minh mà người dùng có thể ủy quyền và mọi hợp đồng ngoài danh sách này sẽ không được hiển thị cho người dùng.
Điểm mấu chốt của ủy quyền EIP-3074 là việc ủy quyền không phải là vĩnh viễn "Một giao dịch EOA sẽ khiến số nonce tăng lên, do đó làm mất hiệu lực ủy quyền chưa hoàn thành."
Về cơ bản, sau khi người dùng đặt giao dịch mới, lệnh sẽ không còn hiệu lực.
EIP-5003
Chúng tôi cũng thực sự không muốn trao thêm quyền lực cho EOA. Suy cho cùng, mục tiêu của những đề xuất này là chuyển người dùng từ EOA sang tài khoản hợp đồng thông minh, vậy tại sao chúng tôi lại thêm chức năng vào EOA?
Điều này dẫn đến đề xuất tiếp theo của chúng tôi: EIP-5003. EIP-5003 thêm một mã opcode khác "AUTHUSURP" triển khai mã tại địa chỉ được ủy quyền EIP-3074.
Sự khác biệt giữa EIP-3074 và EIP-5003 là:
EIP-3074 là ủy quyền tạm thời cho hợp đồng thông minh và có thể bị thu hồi;
EIP-5003 là quá trình di chuyển vĩnh viễn từ EOA và "chuyển đổi" từ EOA sang tài khoản hợp đồng thông minh;
Một vấn đề lớn với EIP-3074 + EIP-5003 là nó không tương thích lắm với sơ đồ trừu tượng hóa tài khoản hiện tại thông qua EIP-4337, vì vậy một số người trong cộng đồng Ethereum lo lắng rằng chúng tôi sẽ “tạo ra hai hệ sinh thái mã riêng biệt”.
EIP-7702
Điều đó đưa chúng ta đến đề xuất của Vitalik Buterin ngày hôm nay: EIP-7702 - anh ấy đề xuất sửa đổi EIP-3074 để làm cho nó hợp lý hơn và tương thích hơn với EIP-4337, để chúng tôi không kết thúc với hai hệ sinh thái trừu tượng hóa tài khoản riêng biệt mà còn Hãy coi EIP-5003 là bước tiếp theo trong quá trình di chuyển vĩnh viễn.
EIP-7702 đề xuất một loại giao dịch mới chấp nhận cả trường mã_hợp đồng và chữ ký, đặt mã hợp đồng của tài khoản người ký thành mã_hợp đồng khi bắt đầu thực hiện giao dịch. Khi kết thúc giao dịch, nó sẽ đặt lại mã đánh dấu để trống.
Điều này giống như EIP-3074, thực hiện chức năng ủy quyền tạm thời của EOA cho các hợp đồng thông minh. Tuy nhiên, EIP-7702 không giới thiệu các opcode mới (cần phải hard fork), mà thay vào đó xác định các hàm được gọi:
AUTH -> gọi "xác minh" (xác minh)
AUTHCALL -> gọi "thực thi"
Cụ thể là:
Kiểm tra xem mã hợp đồng tài khoản của bạn có trống không;
Nếu trống, nó được đặt thành mã hợp đồng được cung cấp;
Thực hiện giao dịch theo cách hợp đồng thông minh được cung cấp xử lý giao dịch;
Khôi phục cài đặt mã hợp đồng tài khoản thành trống;
“Mã hợp đồng” theo nghĩa đen có nghĩa là mã của hợp đồng thông minh được lưu trữ trong “mã hợp đồng”. Vì bản thân EOA không phải là hợp đồng nên trường này thường trống. Tuy nhiên, điều thông minh về EIP-7702 là nó tạm thời đưa một số mã hợp đồng thông minh vào trường này trong quá trình thực hiện giao dịch.
Đây là một cách để cung cấp cho EOA của bạn hành vi mới (dưới dạng mã đánh dấu) để thực hiện giao dịch cụ thể này, bước tiếp theo là biến điều này thành thay đổi hành vi vĩnh viễn, chỉ cần chọn "Không đặt mã đánh dấu sau khi giao dịch đóng" null ".
Một trong những điều tốt nhất về đề xuất này là nó có khả năng tương thích cao với tất cả công việc trừu tượng hóa tài khoản được xây dựng cho EIP-4337 cho đến nay, "mã hợp đồng mà người dùng cần ký thực sự có thể là mã ví EIP-4337 hiện có."
Khi thay đổi này có hiệu lực, EOA hiện tại của người dùng có thể thực thi bất kỳ mã hợp đồng thông minh nào. Với EIP bổ sung, EOA cũng có thể được nâng cấp vĩnh viễn để chạy mã cụ thể.
Theo thời gian, điều này có thể cách mạng hóa cách tất cả chúng ta tương tác với các ứng dụng Web3.