Tác giả: Jarrod Watts

Dịch: Frank, Foresight News

Vitalik Buterin đã đề xuất gần đây EIP-7702, có thể là một trong những thay đổi quan trọng nhất trong lịch sử của Ethereum. Bài viết này sẽ giới thiệu nguyên lý 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ạc nhiên ngắn gọn, điều này đã làm cho một số người bối rối về cách hoạt động thực sự của nó. Để hiểu rõ về 7702, 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" - EOAs ("Tài khoản Sở Hữu Bên Ngoài") trên Ethereum không tốt, chúng rủi ro và có chức năng rất hạn chế. 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 như các tài khoản để thêm chức năng và bảo mật hơn để giải quyết vấn đề này.

EIP-4337

EIP-4337 đã được triển khai trên mainnet vào tháng 3 năm 2023, cho phép viết hợp đồng thông minh giống như các tài khoản để họ có thể xác minh và thực thi giao dịch, cải thiện nhiều trải nghiệm người dùng (UX).

Kể từ khi ra mắt, EIP-4337 đã được áp dụng rộng rãi, chủ yếu do Polygon dẫn đầu, và Base cũng đã thấy sự tăng cường hoạt động trong vài tháng qua.

Đổi mới 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à cung cấp trải nghiệm người dùng tuyệt vời. Tôi đã thực hiện một bản demo nhỏ khác tại ETH Global Sydney cuối tuần trước để giới thiệu điều này.

Vậy, vấn đề nào tồn tại với EIP-4337? Tại sao lại có một đề xuất trừu tượng hóa tài khoản khác ngày nay? Bởi vì EOAs vẫn là loại tài khoản phổ biến nhất cho đến nay.

Ngoài ra, hầu hết các tài khoản hợp đồng thông minh của EIP-4337 được kiểm soát bởi một người ký EOA duy nhất. Dưới đây là một đoạn mã ví dụ:

Do không thể "chuyển đổi" EOA của người dùng thành một tài khoản hợp đồng thông minh, có giải pháp trung gian lạ này - chủ yếu vì ứng dụng Web3 thiếu hỗ trợ tự nhiên cho việc kết nối với các tài khoản hợp đồng thông minh, vì vậy hầu hết mọi người vẫn sử dụng EOAs thông qua tiện ích trình duyệt như MetaMask.

EIP-3074

Điều này dẫn chúng ta đến đề xuất tiếp theo của chúng ta: EIP-3074.

Trên thực tế, đề xuất này đã được đưa ra trước EIP-4337, nhưng chưa được hợp nhất vào mainnet. EIP-3074 nhằm mục đích trao quyền lực hơn cho EOAs, cho phép họ ủy quyền kiểm soát của EOA của họ cho các hợp đồng thông minh.

Đề xuất mô tả như sau, thêm hai mã opcode mới:

  • AUTH: EOAs có thể gọi AUTH để ủy quyền cho một hợp đồng thông minh cụ thể thực hiện thay mặt cho EOA của họ;
  • AUTHCALL: Một hợp đồng thông minh được ủy quyền có thể sử dụng AUTHCALL để thực thi giao dịch thay mặt cho EOA;

Điều này đạt được nhiều trường hợp sử dụng tương tự như EIP-4337 mà không cần mỗi người dùng triển khai một hợp đồng thông minh mới. Một điểm khác biệt quan trọng là các giao dịch đến từ EOA của người dùng, không phải từ một hợp đồng mới không có lịch sử tài khoản người dùng, ETH, NFT, token, v.v.

Phản ứng phổ biến với EIP-3074 là "Nếu ai đó triển khai một hợp đồng độc hại và người dùng ủy quyền cho họ thì sao?" Cuối cùng, ủy quyền cho một hợp đồng độc hại có thể dẫn đến việc tất cả tài sản tiền điện tử của người dùng bị rút hết khỏi ví của họ.

Giải pháp cho vấn đề này là các nhà cung cấp dịch vụ ví có thể thậm chí không cho phép sử dụng

rs để ủy quyền cho bất kỳ hợp đồng nào. Họ có thể duy trì một danh sách trắng của các hợp đồng thông minh mà người dùng có thể ủy quyền, và bất kỳ hợp đồng nào nằm ngoài danh sách này sẽ không được hiển thị cho người dùng.

Một điểm chính của việc ủy quyền trong EIP-3074 là việc ủy quyền không phải là vĩnh viễn, "một giao dịch duy nhất từ một EOA sẽ tăng số thứ tự, làm cho bất kỳ ủy quyền nào đang tồn tại trở nên không hợp lệ."

Về cơ bản, sau khi người dùng thực hiện một giao dịch mới, việc ủy quyền sẽ không còn hợp lệ nữa.

EIP-5003

Chúng ta cũng không thực sự muốn cung cấp quyền lực hơn cho EOAs. Cuối cùng, mục tiêu của những đề xuất này là để chuyển người dùng từ EOAs sang tài khoản hợp đồng thông minh, vì vậy tại sao lại thêm chức năng cho EOAs?

Điều này dẫn chúng ta một cách dễ dàng đến đề xuất tiếp theo của chúng ta: EIP-5003. EIP-5003 thêm một opcode khác "AUTHUSURP," triển khai mã tại địa chỉ ủy quyền của EIP-3074.

Sự khác biệt giữa EIP-3074 và EIP-5003 là:

  • EIP-3074 là việc ủy quyền tạm thời cho các hợp đồng thông minh, có thể thu hồi;
  • EIP-5003 là một quá trình di trú vĩnh viễn từ EOA và "chuyển đổi" từ EOA sang một tài khoản hợp đồng thông minh;

Một vấn đề lớn của EIP-3074 + EIP-5003 là nó không tương thích lắm với hệ thống trừu tượng 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 ngại rằng chúng ta sẽ tạo ra "hai hệ sinh thái mã riêng biệt" với hai loại trừu tượng tài khoản này.

EIP-7702

Điều này dẫn chúng ta đến đề xuất của Vitalik Buterin hôm nay: EIP-7702 - ông đề xuất sửa đổi EIP-3074 để làm cho nó ngắn gọn hơn và tương thích với EIP-4337, để chúng ta không kết thúc với hai hệ sinh thái trừu tượng tài khoản riêng biệt, và xem xét EIP-5003 là bước tiếp theo cho quá trình di trú vĩnh viễn.

EIP-7702 giới thiệu một loại giao dịch mới chấp nhận cả trường contract_code và signature. Khi giao dịch bắt đầu thực thi, nó đặt mã hợp đồng của tài khoản người ký thành contract_code. Cuối giao dịch, nó đặt lại mã thành trống.

Tương tự như EIP-3074, nó thực hiện việc ủy quyền tạm thời từ 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 (mà sẽ yêu cầu một hard fork), mà xác định các hàm để gọi:

  • AUTH -> gọi "verify" để xác thực
  • AUTHCALL -> gọi "execute" để thực thi

Cụ thể, nó:

  • Kiểm tra xem mã hợp đồng tài khoản của bạn có trống không;
  • Nếu nó trống, đặt nó thành mã hợp đồng được cung cấp;
  • Thực thi giao dịch dựa trên cách mà hợp đồng thông minh cung cấp xử lý giao dịch;
  • Khôi phục mã hợp đồng tài khoản thành trống;

"Mã hợp đồng" là chính xác, mã của hợp đồng thông minh được lưu trữ trong "mã hợp đồng." Vì một EOA chính nó không phải là một hợp đồng, trường này thường là trống. Tuy nhiên, phần thông minh của EIP-7702 là việc tạm thời điền vào trường này một số mã hợp đồng trong quá trình thực thi giao dịch.

Đây là một cách để cung cấp hành vi mới (dưới dạng mã) cho EOA của bạn thực thi giao dịch cụ thể này, bước tiếp theo là biến nó thành một thay đổi hành vi vĩnh viễn bằng cách đơn giản là "không đặt lại mã thành trống sau khi giao dịch kết thúc."

<s

Một trong những khía cạnh tốt nhất của đề xuất này là nó rất tương thích với tất cả các trừu tượng tài khoản được xây dựng cho EIP-4337 cho đến nay, </s

"Mã hợp đồng mà người dùng cần ký có thể thực sự là mã ví EIP-4337 hiện tại."

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. Thông qua các EIP bổ sung, EOAs cũng có thể được nâng cấp vĩnh viễn để chạy mã cụ thể.

Đến lúc đó, điều này có thể thay đổi căn bản cách hoạt động của hệ thống

Tất cả chúng ta tương tác với các ứng dụng Web3.