Trừu tượng hóa tài khoản nhằm cải thiện trải nghiệm người dùng và nhà phát triển trên toàn bộ hệ sinh thái Ethereum. Bên cạnh việc làm cho trải nghiệm trên chuỗi truyền thông trở nên dễ tiếp cận và thú vị hơn đối với người dùng, nó cũng giúp nhà phát triển có thể thực hiện những việc mạnh mẽ hơn trên Ethereum và phục vụ người dùng một cách ý nghĩa hơn.
Phân loại của chúng tôi về các phương pháp trừu tượng hóa tài khoản như sau:
Phương pháp này có cơ chế cho phép một EOA chuyển đổi thành một CA, mà không cần di chuyển tài sản của nó, như EIP 7377 và EIP 5003(khi xem xét cùng với EIP 3074).
Trước đây đã có nhiều đề xuất được đưa ra để tạo ra các tài khoản thông minh và trừu tượng hóa tài khoản được ghi nhận ở mức giao thức; EIP-86 và EIP-2938Những điều này là một số trong số những điều được trích dẫn nhiều nhất. Tuy nhiên, đã có rất nhiều phản đối do sự phức tạp được cho là đã được giới thiệu bởi thiết kế này và ý kiến phần lớn rằng Ethereum chưa sẵn sàng cho sự phức tạp như vậy.
Sau khi Vitalik hồi sinh chủ đề sau khi The Merge,ERC-4337được đề xuất như một phiên bản tùy chọn của tiêu chuẩn tài khoản thông minh, tương tự như cơ sở hạ tầng PBS (Tách Biệt Người Đề Xuất-Xây Dựng) cho MEV (Giá Trị Có Thể Trích Xuất Tối Đa). Do đó, người dùng muốn truy cập các lợi ích của tài khoản thông minh có thể đơn giản sử dụng đường ống ERC-4337 để định lại logic tài khoản và quy tắc hợp lệ của giao dịch trong các cấu trúc được gọi là Một Phép Vận Hành Người Dùng (hoặc UserOps tóm gọn).
ERC 4337 mang lại những lợi ích của tài khoản thông minh cho Ethereum hiện tại mà không khắc phục bất kỳ sự phức tạp nào, bằng cách hoạt động như một lựa chọn ngoài giao thức cho các tài khoản thông minh đã được khắc phục. Tuy nhiên, điều này không có nghĩa là cơ sở hạ tầng hiện tại là tối ưu vì sự phức tạp của nó vẫn là một điểm yếu đáng kể.
Để giải quyết sự phức tạp này, RIP 7560được soạn thảo như một phiên bản được khắc sâu của cơ sở hạ tầng ERC 4337 trên Ethereum và L2 của nó, để nó kế thừa các chương trình chống sybil của mạng thay vì phải định nghĩa một tập hợp quy tắc mới (như ERC 4337 với ERC 7562.
Trong báo cáo này, chúng tôi sẽ tập trung khám phá tính khả chương trình của EOA, đánh giá các EIP khác nhau mô tả các giải pháp theo hướng này và thảo luận những ưu điểm và nhược điểm của chúng. Trong phần 2 và 3 của loạt bài viết này, chúng tôi sẽ bao gồm hai lớp tiếp cận còn lại của trừu tượng hóa tài khoản được khai thác trong Ethereum.
Để tìm hiểu những gì có thể được trừu tượng hóa, chúng ta cần có một bức tranh (khoảng) đầy đủ về thiết kế tài khoản hiện tại. Phần này chủ yếu sẽ phục vụ như một bài ôn tập về tài khoản trên Ethereum thực sự là gì, và cách giao dịch của họ được xác minh và thực thi.
Tài khoản Ethereum là các thực thể có số dư ether (ETH) và có khả năng gửi giao dịch trên blockchain Ethereum. Chúng được đại diện bằng một địa chỉ hexa 42 ký tự, đóng vai trò như một con trỏ duy nhất đến số dư và giao dịch của tài khoản.
Một địa chỉ hoạt động như một chìa khóa vào bộ ba trạng thái của blockchain. Các nút lá của trie này là cấu trúc dữ liệu tài khoản có thể được phân tách thành bốn trường:
Nội dung của bốn trường này được sử dụng để xác định loại tài khoản và cuối cùng là để xác định phạm vi của chức năng của nó. Do đó, hai loại tài khoản Ethereum là:
EOAs có các trường codeHash và storageHash trống và chỉ có thể được kiểm soát bởi bất kỳ ai nắm giữ các khóa riêng. Địa chỉ của họ có thể được lấy từ khóa công khai tương ứng bằng cách thêm tiền tố “0x” vào hai mươi ký tự cuối cùng của mã băm keccak-256 của khóa công khai của tài khoản.
Các giao dịch của họ hoàn toàn dựa vào việc rút ra và dựa trên logic mã đã triển khai của họ.
Vì những tài khoản này chỉ có thể được kiểm soát bởi nội dung mã của họ, họ không cần một khóa riêng tư và chỉ có một khóa công khai. Do đó, bất kỳ đại lý nào có khả năng cập nhật/thay đổi nội dung mã của tài khoản hợp đồng đều có thể truy cập vào số dư của nó.
Địa chỉ của một CA được suy ra từ địa chỉ người tạo và nonce của nó cho đến thời điểm triển khai hợp đồng.
Giao dịch
Gần đây, chúng tôi đã mô tả các tài khoản như các thực thể có khả năng gửi giao dịch trên Ethereum. Chúng ta có thể hiểu rằng một mục đích chính của một tài khoản là gửi và nhận giao dịch, trong khi blockchain hoạt động như một sổ cái ghi lại lịch sử giao dịch cũng như mô tả cách giao dịch thay đổi các trường tài khoản dựa trên các quy tắc được mô tả trong quy định của giao thức blockchain.
Vậy những 'giao dịch' này là gì?
Giao dịch là các hoạt động được gửi từ một tài khoản, gây ra sự thay đổi trong 'trạng thái' của mạng. Chúng là các hướng dẫn được ký số mật mã từ các tài khoản, gây ra cập nhật trạng thái trên toàn mạng khi được thực thi.
Không được phép đi kèm với những động cơ sai lệch, để giải quyết vấn đề này, cần phải định nghĩa quy định nghiêm ngặt (hoặc quy tắc hợp lệ) cho sự tương tác trong môi trường như vậy.
Trong ngữ cảnh này, các giao dịch phải tuân theo những quy tắc hợp lệ cụ thể để được xem xét là hợp lệ và được thực hiện. Hầu hết những quy tắc hợp lệ này được thực hiện thông qua các ràng buộc đặt ra trên tài khoản gửi giao dịch, và thay đổi dựa trên loại tài khoản đó là gì.
Trên Ethereum, EOAs được tối ưu hóa cho tính sử dụng vì chúng đối mặt trực tiếp với người dùng cuối. Chúng có khả năng gửi giao dịch theo một cách cụ thể và hoạt động hoàn toàn tự động. Chúng cũng có thể được tạo ra cục bộ, phương pháp phổ biến hơn là sử dụng các nhà cung cấp ví như MetaMask, Rainbow, Rabby, v.v.
Trong khi đó, tài khoản hợp đồng chỉ có thể gửi giao dịch được cho phép bởi logic của chúng, đáp ứng khi được “gọi”. Ngoài ra, chúng chỉ có thể được tạo bởi một EOA có số dư đủ để trả tiền cho việc lưu trữ trạng thái của nó.
Một mô tả cao cấp hơn sẽ là EOAs chỉ có thể giữ số dư, trong khi CAs có thể giữ cả số dư và logic quy định cách mà số dư này có thể được chi tiêu.
Những thuộc tính này do các thông số logic sau định nghĩa các quy tắc mà các giao dịch của một tài khoản phải tuân thủ:
Các tham số này được thiết kế để cứng nhắc cho các tài khoản EOA như sau:
Nói chung, logic thực thi của EOA hạn chế chúng chỉ thực hiện một giao dịch cho mỗi chữ ký hợp lệ.
Tuy nhiên, CAs có nhiều linh hoạt hơn với các tham số này:
Trong hầu hết các trường hợp thực tế, logic được sử dụng trong trường hợp này là một hệ thống chữ ký đa chữ ký mà quy định rằng cần có M chữ ký hợp lệ trong tổng số N chữ ký (trong đó M < N) từ các tài khoản cụ thể (thường là EOAs) để việc thay đổi logic của CA được coi là hợp lệ.
Đánh giá những tính năng này, chúng tôi quan sát thấy rằng mỗi loại tài khoản được thiết kế để có một sự đánh đổi giữa sự tự chủ và khả năng lập trình.
EOA có độc lập hoàn toàn nhưng có khả năng lập trình hạn chế; họ có thể ủy quyền và gửi giao dịch bất cứ khi nào họ muốn, nhưng những giao dịch này phải tuân theo định dạng chặt chẽ để được coi là hợp lệ. CA có khả năng lập trình đầy đủ (chỉ bị hạn chế bởi thiết kế của EVM) nhưng độc lập hạn chế; giao dịch của họ không cần tuân theo bất kỳ định dạng chặt chẽ nào, nhưng chỉ có thể được gửi ra do logic của họ được gọi trước.
Trong phần tiếp theo, chúng tôi sẽ nghiên cứu các hàm ý của những lựa chọn thiết kế này, để hiểu rõ đề xuất của mỗi EIP được thảo luận trong loạt bài này.
Bây giờ chúng ta đã hiểu một cách khái quát về các chức năng khác nhau của các tài khoản, chúng ta có thể dễ dàng xác định điểm mạnh của họ cũng như các vấn đề mà họ đem đến cho cả trải nghiệm người dùng và nhà phát triển trên Ethereum.
Như chúng tôi đã đề cập trước đây, EOA được thiết kế như các tài khoản hạng nhất nhắm mục tiêu đến người dùng cuối. Các ứng dụng được thiết kế để dễ dàng tương tác với chúng, hầu như không có sự phức tạp nào đối với chúng và tất nhiên không có chi phí để tạo ra chúng. Tuy nhiên, sự đơn giản của nó đi kèm với sự mất mát đáng kể về tính mới vì chúng được thiết kế để xác định nghiêm ngặt.
Một số mối quan ngại xoay quanh chúng là:
Không phải ai cũng muốn (hoặc có khả năng) luôn giữ ETH (nghĩa là nhìn vào hành động giá cả), vì vậy các giải pháp khả thi sẽ là cho phép nhiều loại tiền gas (quá khó, làm hỏng quá nhiều invariants như mô tả trong phần 'Tiền tệ')ở đây) hoặc cho phép thanh toán gas được giải quyết bởi một tài khoản khác không phải là nguồn gốc giao dịch.
Ở phía đầu bên kia của phổ tài khoản, CAs nhắm đến các nhà phát triển và một đối tượng người dùng kỹ thuật hơn. Chúng hoạt động như phương tiện cho các hợp đồng thông minh (tức là chúng tôi coi hợp đồng thông minh là nội dung logic hoặc mã code được chứa trong chúng) và do đó có thể triển khai định dạng giao dịch mới lạ như được cho phép bởi EVM.
Tuy nhiên, đối với tất cả những tính năng này, họ chỉ là những tài khoản cấp hai được tuyên dương vì họ không có tính tự chủ. Một số điểm hạn chế của họ như sau:
Sau khi xem xét các lựa chọn thiết kế dẫn đến các vấn đề được xác định trong phần này, chúng ta có thể tiếp tục đánh giá các giải pháp đề xuất.
Khái niệm trừu tượng hóa tài khoản (thông qua tài khoản thông minh ít nhất) luôn là một phần không thể thiếu của lộ trình Ethereum. Truyền thuyết là sự phức tạp liên quan đến việc triển khai của nó đe dọa làm chậm thêm việc ra mắt Ethereum, vì vậy nó đã bị loại bỏ cho thiết kế hiện tại với các tài khoản khác nhau cung cấp các chức năng khác nhau. Nó đã bị trì hoãn lại bởi sự tập trung của Ethereum vào The Merge, và bây giờ nó lại xuất hiện như một phần chính của nâng cấp lớn tiếp theo của mạng - Pectra. Tuy nhiên, sự phức tạp của nó vẫn được coi là một nhược điểm đáng kể ngăn cản sự thống trị của nó, đặc biệt là khi Ethereum đã chuyển hướng sang lộ trình tập trung vào Rollup.
Yêu cầu hiện nay là hai lớp:
Về mặt trực giác, khái niệm này đóng vai trò quan trọng hơn trong ngữ cảnh trừu tượng hóa chuỗi và khả năng tương tác, tuy nhiên phạm vi của chúng tôi trong báo cáo này giới hạn chỉ đến các sáng kiến kỹ thuật được thực hiện để đạt được trừu tượng hóa tài khoản chính nó.
Trừu tượng hóa tài khoản nhằm kết hợp những tính năng tốt nhất của EOAs và CAs thành một tiêu chuẩn tài khoản mới - tài khoản thông minh, cho phép tách biệt hoàn toàn hoặc một phần các quy tắc hợp lệ của bất kỳ tài khoản thành một logic xác thực và một logic thực thi; để các tài khoản có thể xác định các quy tắc hợp lệ riêng của mình - như được phép bởi EVM - giống như tài khoản hợp đồng, trong khi vẫn hoàn toàn tự động như tài khoản sở hữu bên ngoài.
Thường có sự nhầm lẫn về sự khác biệt giữa tài khoản thông minh và ví hợp đồng thông minh, vì vậy hãy mô tả rõ ràng những sự khác biệt này dưới đây:
Việc thương mại hóa ví hợp đồng thông minh đã giúp việc áp dụng CAs (chứng chỉ) dễ dàng hơn đối với một thị trường rộng hơn, cho phép người dùng ít kỹ thuật hơn tận dụng các tính năng mà chúng cung cấp. Tuy nhiên, họ vẫn đối mặt với những khó khăn liên quan đến CAs.
Quay trở lại cuộc trò chuyện; chúng ta đã thảo luận trước đó về các tham số được sử dụng để xác định các quy tắc hợp lệ của giao dịch tài khoản:
Giá trị của bốn tham số đầu tiên có thể được gọi chung là logic xác thực của một tài khoản, đó là các kiểm tra xảy ra trước khi một giao dịch bắt đầu thực thi.
Tham số cuối cùng xác định cách thực hiện giao dịch sẽ tiến hành.
Trong phần giới thiệu, chúng tôi cung cấp một cái nhìn tổng quan về cảnh quan AA hiện tại dưới dạng một phân loại cho các thiết kế đề xuất khác nhau. Bây giờ chúng tôi sẽ tập trung vào lớp giải pháp đầu tiên cho vấn đề tài khoản Ethereum- EOA có thể lập trình.
Sức hấp dẫn lớn nhất của Ethereum là hệ sinh thái DeFi trẻ nhưng sôi động, có nhiều ứng dụng phi tập trung là điểm nhấn thanh khoản chính của nó. Hầu hết các DApp này được tối ưu hóa để phục vụ EOA, do đó chúng khó giao tiếp với CA và cuối cùng là tài khoản thông minh. Mặc dù ví hợp đồng thông minh giúp CA trong trường hợp này, nhưng chúng đi kèm với những hạn chế riêng và một UX hoàn toàn khác.
Một giải pháp tạm thời đang được khám phá trong khi cả DApps và nhà cung cấp ví tiền điện tử quen dần với tiêu chuẩn tài khoản thông minh, là cung cấp các cải tiến tạm thời cho EOAs để giúp họ vượt qua hầu hết các hạn chế được áp đặt, cho dù là việc xác thực hay logic thực thi của họ.
Dưới đây, chúng tôi sẽ đi qua các thông số kỹ thuật của ba EIPs chính cung cấp các tuyến đường hành động cho tính khả thi của EOA; từ cái ít người biết đếnEIP 5806đến những người tham vọngEIP 3074và sau cùng là chiến thắngEIP 7702.
Đề xuất này nhằm mục đích mang đến nhiều chức năng hơn cho tiêu chuẩn EOA bằng cách cho phép nó thực hiện cuộc gọi ủy quyền đến logic của tài khoản hợp đồng (hợp đồng thông minh của nó). Điều này hiệu quả khiến cho hợp đồng thông minh được thực thi trong ngữ cảnh của EOA gọi, tức là EOA vẫn nắm quyền kiểm tra logic của nó, trong khi logic thực thi được xử lý bởi logic tương ứng của CA.
Trước khi chúng ta tiếp tục điều gì đó, hãy cùng nhau đi một chuyến đi về quá khứ tiến hóa của EthereumEIP-7.
EIP-7 đề xuất việc tạo mã opcode 0xf4/DELEgateCALL, được sử dụng để gửi cuộc gọi tin nhắn vào một tài khoản chính với logic của một tài khoản phụ, đồng thời duy trì các giá trị của các trường [người gửi] và [giá trị] của tài khoản chính.
Nói cách khác, tài khoản chính 'kế thừa' (hoặc mượn nếu bạn muốn) logic của tài khoản phụ trong một khoảng thời gian được chỉ định trong cuộc gọi tin nhắn, để logic của tài khoản sau được thực thi trong ngữ cảnh của tài khoản trước.
Mã này cho phép nhà phát triển dApp chia logic ứng dụng của họ thành nhiều hợp đồng thông minh khác nhau trong khi duy trì sự phụ thuộc lẫn nhau, để họ có thể dễ dàng vượt qua các rào cản về kích thước mã và gas.
Okay, vậy cuộc gọi đại diện nào cho phép CAs phụ thuộc lẫn nhau? EIP-5806 sử dụng EIP-7 làm nguồn cảm hứng để đề xuất mở rộng chức năng cuộc gọi đại diện đến EOAs; tức là, hãy cho phép EOAs cũng phụ thuộc lẫn nhau với CAs, vì sao không.
EIP 5806 giới thiệu một tuân thủ EIP-2718loại giao dịch được đóng gói như sau:
rlp([chainID, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, data, access_list, signature_y_parity, signature_r, signature_s]).
Các giao dịch này được thiết kế sao cho trường [to] - đại diện cho địa chỉ người nhận - chỉ có thể chấp nhận địa chỉ làm đầu vào 20 byte, vô hiệu hóa người gửi sử dụng opcode CREATE.
Động lực đằng sau mỗi thành phần của hệ thống RLP như sau:
Trong khi việc đóng gói giao dịch EIP-5806 trong phong bì EIP-2718 cho phép chúng tương thích ngược tốt, Tài khoản địa chỉ không tương đương với Tài khoản thông thường. Vì vậy, một số hạn chế nhất định phải được định nghĩa trong cách mà một Tài khoản địa chỉ sử dụng cuộc gọi ủy quyền để ngăn chặn việc phá vỡ không biến đổi.
Những hạn chế này nhắm vào các opcode sau đây:
Ứng dụng chính của EIP 5806 là trừu tượng hóa thực thi cho các tài khoản ngoại vi. Cho phép các tài khoản ngoại vi tương tác một cách không cần tin cậy với hợp đồng thông minh vượt ra ngoài các cuộc gọi đơn giản tới logic của chúng, cấp họ các tính năng như:
Các thay đổi được đề xuất bởi EIP-5806, trong khi cho phép các tính năng cần thiết, không đặc biệt mới mẻ; sự tồn tại của nó chủ yếu dựa trên EIP-7 đã hoạt động. Điều này cho phép nó vượt qua nhiều rào cản tiềm năng để được chấp nhận.
Một trong những mối quan tâm chính được đề cập trong những ngày đầu của nó là nguy cơ tiềm ẩn khi cho phép EOAs truy cập và thay đổi lưu trữ, tương tự như CAs hiện tại làm. Điều này vi phạm nhiều điều kiện không thể thay đổi của mạng về cách EOAs thực hiện giao dịch, và vì vậy đã được giải quyết bằng cách đưa ra các hạn chế được đề cập trong phần tiếp theo.
Một lời chỉ trích thứ hai (hơi giống con dao hai lưỡi) là sự đơn giản của EIP-5806; có một số ý kiến cho rằng phần thưởng do chấp nhận EIP-5806 có thể không đáng giá, vì nó chỉ cho phép trừu tượng hóa thực hiện và không có nhiều thứ khác. Mọi hạn chế về hiệu lực khác vẫn được xác định theo mạng cho các EOA chọn tham gia EIP-5806, trái ngược với các EIP tương tự khác mà chúng ta thảo luận trong các tiểu mục sau.
EIP-3074 đề xuất cho phép các EOA ủy quyền hầu hết logic xác thực của họ cho các tài khoản hợp đồng chuyên biệt, được gọi là người gọi, bằng cách chồng logic ủy quyền của người sau lên logic của họ đối với các hình thức giao dịch cụ thể.
Điều này được đạt được bằng cách ký quyền truy cập của họ cho một hợp đồng triệu tập, sau đó hợp đồng này trở thành người chịu trách nhiệm xác định chính sách truy cập của EOA.
EIP này đề xuất việc thêm hai mã opcode mới vào EVM:
Hai mã opcode này cho phép EOA ủy quyền kiểm soát cho một CA đã thiết lập trước đó và do đó hoạt động như một thông qua nó, mà không cần triển khai hợp đồng và chịu các chi phí và yếu tố bên ngoài liên quan đến điều đó.
EIP-3074 cho phép các giao dịch sử dụng định dạng ký [MAGIC] để tránh xung đột với các định dạng ký giao dịch khác. Tài khoản hiện hoạt mà lệnh [AUTHCALL] được chuyển đến được định nghĩa là trường biến ngữ cảnh có tên [được ủy quyền], chỉ tồn tại thông qua một giao dịch duy nhất và phải được xác định lại cho mỗi [AUTHCALL] mới.
Trước khi xử lý các phức tạp của mỗi opcode, đây là các thực thể liên quan đến giao dịch EIP-3074:
Hợp đồng invoker nhận tin nhắn [AUTH] với giá trị [COMMIT] từ [authority]; giá trị này xác định các hạn chế mà tài khoản muốn đặt ra đối với việc thực hiện các lệnh [AUTHCALL] của [được ủy quyền].
Do đó, những người triệu tập chịu trách nhiệm đảm bảo rằng [contract_code] được xác định trong một tài khoản [authorized] không phải là độc hại và có khả năng đáp ứng các điều kiện được đặt ra bởi tài khoản ký chính trong một giá trị [COMMIT].
Mã [AUTH] có ba ngăn xếp đầu vào; hoặc đơn giản hơn — nó được định nghĩa bởi ba đầu vào tính toán một đầu ra duy nhất. Các đầu vào này là:
Hai đầu vào cuối cùng được sử dụng để mô tả một phạm vi bộ nhớ có thể sửa đổi từ 0 đến 97, trong đó:
Các biến [yParity], [r] và [s] được hiểu chung là chữ ký ECDSA, [magic], trên đường cong secp256k1 trên thông điệp:
[keccak256 (MAGIC || chainID || nonce || invoker address || COMMIT)]
nơi:
Nếu chữ ký tính toán được xác thực và địa chỉ người ký bằng với [authority], trường [authorized] được cập nhật thành giá trị được cung cấp bởi [authority]. Nếu bất kỳ yêu cầu nào không được đáp ứng, trường [authorized] vẫn giữ nguyên trạng thái trước đó hoặc là một giá trị chưa được thiết lập.
Chi phí gas cho opcode này được tính bằng tổng của:
[AUTH] được thực hiện để không sửa đổi bộ nhớ và lấy giá trị của [authority] làm đối số để xác minh giá trị của nó từ chữ ký được cung cấp là tầm thường.
Mã [AUTHCALL] có bảy phần tử đầu vào của ngăn xếp được sử dụng để tính toán một phần tử đầu ra của ngăn xếp duy nhất.
Nó có cùng logic như mã [CALL], tức là; nó được sử dụng để gửi cuộc gọi tin nhắn vào một tài khoản và kích hoạt logic cụ thể trong hợp đồng của nó. Sự khác biệt duy nhất trong logic của chúng là [AUTHCALL] được thiết kế để đặt giá trị [CALLER] trước khi tiến hành thực thi.
Do đó, [AUTHCALL] được sử dụng bởi [authority] để kích hoạt hành vi cụ thể trong [authorized] với kiểm tra logic được thực hiện như sau:
Chi phí gas cho [AUTHCALL] được tính như tổng của:
Dữ liệu được trả về từ một [AUTHCALL] được truy cập thông qua:
Để kết hợp tất cả với ít hơn sự nói chuyện kỹ thuật; Giao dịch Ethereum thường chỉ định hai giá trị:
Trong các EOA, như đã đề cập trước đây, ủy quyền được kết hợp chặt chẽ với việc thực thi, tức là; (tx.origin == msg.sender). Bất biến đơn giản này làm phát sinh hầu hết các vấn đề mà chúng tôi đã giải thích trong tiểu mục "Tài khoản và tính hợp lệ của giao dịch" của báo cáo này.
[AUTH] tin nhắn từ [authority] cho phép nó bù đắp chức năng tx.origin thành [authorized], trong khi vẫn là msg.sender. Nó cũng cho phép nó định nghĩa các hạn chế cho đặc quyền này bằng giá trị [COMMIT].
[AUTHCALL] sau đó cho phép [authorized] truy cập vào logic của hợp đồng, sử dụng một [invoker] làm trung gian để đảm bảo hợp đồng mà nó muốn truy cập là không gây hại. Đó là, đối với mỗi [AUTHCALL], [authorized] phải chỉ định một [invoker] cụ thể cho [COMMIT] của họ.
EIP 3074 chịu trách nhiệm chủ yếu cho việc cho phép các EOAs ủy quyền logic ủy quyền của họ cho một tài khoản khác, tuy nhiên thiết kế mở của nó còn cho phép nhiều hơn trong các ngữ cảnh khác nhau.
Toàn bộ logic xác nhận của EOA có thể được trừu tượng hóa bằng cách áp dụng các hạn chế / đổi mới khác nhau cho trình gọi khi cần thiết, một số thiết kế có thể dựa trên logic đích của chúng bao gồm:
Ngoài ra, logic thực thi được trừu tượng hóa một cách trực quan; xét cho cùng, người gọi (là CA) hiện chịu trách nhiệm thực hiện các yêu cầu giao dịch thay mặt cho EOA.
Trích dẫnmột trong các tác giả của nó: “Tôi không mong đợi các ví tiền điện tử tiết lộ chức năng để ký giao dịch cho các bên gọi hàm tùy ý …”. Có lẽ vấn đề lớn nhất mà sáng kiến 3074 mang lại là sự dễ dàng của việc phát triển độc quyền và luồng giao dịch sở hữu; giống như các phiên bản hiện tại của thị trường MEV và PBS của Ethereum.
Mặc định, hợp đồng gọi phải được kiểm tra kỹ để ngăn chặn các cuộc tấn công tồi tệ hơn những gì hiện tại đang có thể. Điều này sẽ dẫn đến một hệ sinh thái chỉ có một vài hợp đồng gọi được phát triển bởi các nhân vật ảnh hưởng được chấp nhận như mặc định cho các nhà phát triển ví. Do đó, đó là một sự đánh đổi giữa việc theo con đường phi tập trung khó khăn của việc kiểm tra và hỗ trợ hợp đồng gọi với nguy cơ an ninh của người dùng; hoặc đơn giản là áp dụng hợp đồng gọi từ các nguồn đáng tin cậy đã được thiết lập với các bảo đảm tốt hơn cho an ninh người dùng và ít giám sát hơn về an toàn của hợp đồng.
Một khía cạnh khác của vấn đề này là hàm chi phí liên quan đến việc thiết kế, kiểm toán và tiếp thị một người gọi chức năng và an toàn. Những nhóm nhỏ hầu như luôn bị các tổ chức lớn vượt mặt – đặc biệt là ở mặt tiếp thị – mà đã có một số danh tiếng đã được lập, ngay cả khi sản phẩm của họ tốt hơn.
EIP-3074 củng cố chủ đề chữ ký ECDSA, vì nó vẫn được coi là hợp lệ hơn phương thức ủy quyền được giới thiệu thông qua bộ kích hoạt. Trong khi có những lập luận cho rằng khả năng chống lại lượng tử không phải là một vấn đề xác định trong thời điểm hiện tại, và rằng có nhiều vấn đề tồi tệ hơn trong một tương lai khi ECDSA có thể bị hỏng; Mục tiêu không được công bố rõ ràng của Ethereum là luôn luôn tiên phong trong việc giải quyết những vấn đề như vậy. Việc hy sinh khả năng chống lại lượng tử và kiểm duyệt để cải thiện chút ít trải nghiệm người dùng có thể không phải là lựa chọn tốt nhất trong tương lai gần.
Một điểm khác trong lập luận về sự tương thích về phía trước là trong khi những lợi ích của 3074 vẫn đang được đánh giá, ERC-4337 (không yêu cầu bất kỳ thay đổi nào trong giao thức) hiện nay đã có một thị trường tốt, vì vậy bạn cũng phải tương thích với nó để tránh sự phân tách của các hệ sinh thái.
Ngay cả với lộ trình trừu tượng hóa tài khoản, các opcode [AUTH] và [AUTHCALL] sẽ cuối cùng trở nên lỗi thời trên EVM, gây ra một khoản nợ kỹ thuật lớn cho Ethereum để mang lại một lượng cải thiện UX không đáng kể.
Sau khi gửi một tin nhắn [AUTH] và ủy quyền kiểm soát, EOA được mong đợi sẽ tránh sử dụng hệ thống xác thực khóa riêng thông thường, vì việc gửi một giao dịch “bình thường” sẽ làm cho quyền ủy quyền mà nó đã giao cho mọi người gọi bị thu hồi.
Do đó, hệ thống ECDSA vẫn hoàn toàn vượt trội so với bất kỳ hệ thống ủy quyền nào mà các hợp đồng liên quan có thể cho phép, có nghĩa là mất chìa khóa riêng tư sẽ dẫn đến mất hết tài sản của tài khoản.
Đề xuất này ban đầu được thiết lập như một biến thể tương đối tối giản của EIP 3074 và đã ...đã có ý địnhđể là một bản cập nhật cho nó. Nó được sinh ra để giải quyết những không hiệu quả được cho là của EIP 3074, đặc biệt là những lo ngại về tính không tương thích của nó với hệ sinh thái 4337 đang phát triển và đề xuất trừu tượng hóa tài khoản cục bộ - RIP 7560.
Cách tiếp cận của nó là thêm một loại giao dịch tuân thủ EIP 2718 mới - [SET_CODE_TX_TYPE] - cho phép một EOA hoạt động như một tài khoản thông minh cho các giao dịch cụ thể.
Thiết kế này cho phép các tính năng giống như EIP 5806 và một số tính năng khác, đồng thời vẫn tương thích với lộ trình trừu tượng hóa tài khoản cố định và các sáng kiến hiện tại.
EIP-7702 cho phép một EOA "nhập" nội dung mã của một hợp đồng thông qua một giao dịch tuân thủ [SET_CODE_TX_TYPE] 2718 có định dạng:
rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, value, data, access_list, authorization_list, signature_y_parity, signature_r, signature_s])
Gói tin này hoàn toàn giống với EIP 5806, ngoại trừ nó giới thiệu một 'danh sách ủy quyền'. Danh sách này là một chuỗi các giá trị có định dạng được sắp xếp theo thứ tự:
[[chain_id, địa chỉ, nonce, y_parity, r, s], …]
nơi mỗi bộ ba xác định giá trị của [địa chỉ].
Trước khi tiếp tục, các bên liên quan trong một SET_CODE_TX_TYPE là:
Khi [authority] ký một SET_CODE_TX_TYPE chỉ định [address], một người chỉ định ủy quyền được tạo ra. Đây là một “chương trình con trỏ” khiến tất cả các yêu cầu truy xuất mã do hành động của [authority] tại bất kỳ thời điểm nào đều được chuyển đến mã quan sát của [address].
Đối với mỗi bộ tứ [chain_id, địa chỉ, nonce, y_parity, r, s], luồng logic của giao dịch loại 7702 được thực hiện như sau:
Phew! Để kết nối lại tất cả; EIP này cho phép EOAs gửi giao dịch để thiết lập một con trỏ đến mã của hợp đồng, cho phép họ thực hiện logic này như là của riêng họ trong các giao dịch tiếp theo. Theo cách này, nó mạnh hơn EIP 5806, vì nó cho phép EOAs thực sự có nội dung mã trong suốt thời gian họ muốn (không giống như EIP 5806 chỉ cho phép EOAs gửi các cuộc gọi ủy quyền).
Trong khi có thể đưa ra lập luận rằng đó không còn là một trừu tượng nữa khi EOA chủ động tiếp nhận logic mà nó muốn thực thi, nhưng nó vẫn không phải là 'chủ sở hữu chính' của logic đó. Ngoài ra, nó không trực tiếp chứa logic, chỉ đơn giản là chỉ định một con trỏ đến logic (nhằm giảm độ phức tạp tính toán). Vì vậy, chúng tôi chọn trừu tượng hóa thực thi!
Trong khi invariante require (msg.sender == tx.origin) bị phá vỡ để cho phép tự tài trợ, EIP vẫn cho phép tích hợp các trình kết nối giao dịch được tài trợ. Tuy nhiên, điều cần lưu ý là các trình kết nối như vậy cần có hệ thống dựa trên danh tiếng hoặc cổ phần để ngăn chặn cuộc tấn công griefing.
EOA chỉ có thể trỏ đến một phần cụ thể của mã tài khoản, sao cho chỉ có logic của phần đó được thực thi trong ngữ cảnh của chúng.
Điều này cũng cho phép sự tồn tại của các khóa phụ, từ đó cho phép “giảm đặc quyền”, để các dAPP cụ thể chỉ có quyền truy cập vào số dư tài khoản trong các điều kiện cụ thể. Ví dụ, bạn có thể tưởng tượng một quyền để tiêu ERC-20 nhưng không phải ETH, hoặc tiêu không quá 1% số dư tổng cộng mỗi ngày, hoặc tương tác chỉ với một ứng dụng cụ thể.
Do tính không hạn chế của nó, giao dịch EIP-7702 có thể cho phép người dùng truy cập vào mã opcode CREATE2 và sử dụng nó để triển khai mã bytecode tới địa chỉ mà không có bất kỳ thông số hạn chế nào khác như logic thị trường phí (ví dụ như EIP-1559 và EIP-4844). Điều này cho phép địa chỉ được khôi phục và sử dụng trên nhiều máy trạng thái, với cùng mã bytecode, trong đó tài khoản của nó trên mỗi chuỗi sau đó phụ trách xác định các thông số ngữ cảnh khác.
Trong khi EIP-7702 vẫn rất mới, đã có rất nhiều việc thử nghiệm và kiểm tra cho các phụ thuộc và nhược điểm tiềm năng của nó, nhưng mô hình tối giản của nó đảm bảo cho nó nhiều tính linh hoạt và do đó giá trị trong các ngữ cảnh khác nhau. Tuy nhiên, nó phá vỡ quá nhiều nguyên tắc và không tương thích ngược ngay lập tức.
Một số phần của nó bao gồm:
Hầu hết người dùng không hiểu rõ nội dung thực tế của một tài khoản (hoặc thậm chí là sự khác biệt giữa một tài khoản và một địa chỉ!), vì vậy cho phép va chạm địa chỉ có nghĩa là một EOA có thể giả mạo thành một CA và thu hút quỹ của người dùng một cách dài dòng để cuối cùng đánh cắp tất cả. EIP-3607 đã giải quyết vấn đề này bằng cách quy định rằng các tài khoản chứa mã không được phép chi tiêu số dư của mình bằng cách sử dụng logic ủy quyền riêng của chúng. Tuy nhiên, EIP 7702 phá vỡ tính không biến này để cho phép EOAs tự trị ngay cả sau khi có một số khả năng lập trình.
Việc ký quyền địa chỉ tài khoản thay vì nội dung mã của nó về cơ bản giống như sơ đồ 3074 với người gọi. Điều này không đảm bảo nghiêm ngặt về tính nhất quán của nội dung mã chéo chuỗi, vì một địa chỉ có thể chứa nội dung mã khác nhau trên các chuỗi khác nhau. Điều này có nghĩa là một địa chỉ mà nội dung mã chứa cùng logic trên một chuỗi có thể là ác quỷ hoặc trực tiếp độc hại trên một chuỗi khác, và điều này có thể dẫn đến mất mát quỹ người dùng.
EOA ở dạng hiện tại hôm nay bị hạn chế rất nhiều vì họ không cho phép người dùng tận dụng các tính năng lập trình được cung cấp bởi EVM. Trong khi có nhiều con đường để nâng cấp tài khoản, như chúng tôi đã đề cập ở đầu báo cáo này, giải pháp được chọn phải duy trì các nguyên tắc tự lưu trữ an toàn và bảo mật. Hơn nữa, việc nâng cấp EOA có thể ảnh hưởng đáng kể đến cả trải nghiệm người dùng và các nhà phát triển ứng dụng nên tất cả các ý kiến của các bên liên quan phải được xem xét.
Cho phép EOAs thực thi mã theo bất kỳ cách nào mở rộng đáng kể chức năng của tài khoản, nhưng tính linh hoạt mới này đi kèm với những rủi ro ý nghĩa và những điểm mù có thể xảy ra. Giải quyết những sự đánh đổi này là rất quan trọng để mang lại lợi ích UX không thể tranh cãi cho người dùng Ethereum.
Văn hóa thảo luận mở của Ethereum khiến nó trở thành một môi trường thử nghiệm tuyệt vời cho những đổi mới như vậy, vì hầu hết mọi khía cạnh của mọi thiết kế đều được phân tích kỹ lưỡng bởi các chuyên gia. Sự xem xét toàn diện này sẽ giúp giảm thiểu rủi ro phạm pháp từ những đối thủ.
EIP-7702 hiện đang là điển hình cho các cơ chế nhằm đưa tính khả thi lập trình EVM đến các EOA, đã được đánh dấu là sự thay thế cho khe EIP 3074 trong nâng cấp Pectra. Nó thừa hưởng thiết kế mở của cơ chế 3074 trong khi giảm thiểu đáng kể diện tích tấn công / rủi ro. Nó cũng cho phép nhiều hơn bằng cách tránh các hạn chế của 3074 đối với một số lớp opcode nhất định.
Trong khi vẫn còn một số điều chỉnh được thực hiện trên thiết kế của đề xuất, nó đã nhận được rất nhiều thiện ý và sự ủng hộ từ các nhà phát triển, đặc biệt là khi nó có sự hỗ trợ trực tiếp từ Vitalik.
Trong cộng đồng có những tuyên bố rằng cách tiếp cận trừu tượng hóa tài khoản này thậm chí có thể tốt hơn tài khoản thông minh. Bài bình luận này nhấn mạnh rằng con đường này đòi hỏi ít thay đổi hơn và không phức tạp và các EOA đã được lưu giữ. Tuy nhiên, chúng ta phải nhớ cột mốc bảo mật trong tương lai của kháng lượng tử ở mọi cấp độ của mạng Ethereum. Sự an toàn lượng tử này là không khả thi với lõi mô hình tài khoản hiện tại do việc sử dụng các sơ đồ chữ ký dựa trên ECDSA để ủy quyền EOA.
Do đó, tính khả năng lập trình của EOA được xem như là một bước tiến trên con đường đến tài khoản thông minh và không phải là điểm đến cuối cùng. Nó tăng tốc độ cho EOAs và cải thiện trải nghiệm người dùng và nhà phát triển, đồng thời vẫn tương thích với mục tiêu trừu tượng hóa tài khoản tối đa của tài khoản thông minh.
Trong báo cáo tiếp theo của chúng tôi, chúng tôi sẽ đi sâu vào các kế hoạch di cư EOA để xem chúng có phù hợp với lộ trình trừu tượng hóa tài khoản hay không, hãy đồng hành!
Trừu tượng hóa tài khoản nhằm cải thiện trải nghiệm người dùng và nhà phát triển trên toàn bộ hệ sinh thái Ethereum. Bên cạnh việc làm cho trải nghiệm trên chuỗi truyền thông trở nên dễ tiếp cận và thú vị hơn đối với người dùng, nó cũng giúp nhà phát triển có thể thực hiện những việc mạnh mẽ hơn trên Ethereum và phục vụ người dùng một cách ý nghĩa hơn.
Phân loại của chúng tôi về các phương pháp trừu tượng hóa tài khoản như sau:
Phương pháp này có cơ chế cho phép một EOA chuyển đổi thành một CA, mà không cần di chuyển tài sản của nó, như EIP 7377 và EIP 5003(khi xem xét cùng với EIP 3074).
Trước đây đã có nhiều đề xuất được đưa ra để tạo ra các tài khoản thông minh và trừu tượng hóa tài khoản được ghi nhận ở mức giao thức; EIP-86 và EIP-2938Những điều này là một số trong số những điều được trích dẫn nhiều nhất. Tuy nhiên, đã có rất nhiều phản đối do sự phức tạp được cho là đã được giới thiệu bởi thiết kế này và ý kiến phần lớn rằng Ethereum chưa sẵn sàng cho sự phức tạp như vậy.
Sau khi Vitalik hồi sinh chủ đề sau khi The Merge,ERC-4337được đề xuất như một phiên bản tùy chọn của tiêu chuẩn tài khoản thông minh, tương tự như cơ sở hạ tầng PBS (Tách Biệt Người Đề Xuất-Xây Dựng) cho MEV (Giá Trị Có Thể Trích Xuất Tối Đa). Do đó, người dùng muốn truy cập các lợi ích của tài khoản thông minh có thể đơn giản sử dụng đường ống ERC-4337 để định lại logic tài khoản và quy tắc hợp lệ của giao dịch trong các cấu trúc được gọi là Một Phép Vận Hành Người Dùng (hoặc UserOps tóm gọn).
ERC 4337 mang lại những lợi ích của tài khoản thông minh cho Ethereum hiện tại mà không khắc phục bất kỳ sự phức tạp nào, bằng cách hoạt động như một lựa chọn ngoài giao thức cho các tài khoản thông minh đã được khắc phục. Tuy nhiên, điều này không có nghĩa là cơ sở hạ tầng hiện tại là tối ưu vì sự phức tạp của nó vẫn là một điểm yếu đáng kể.
Để giải quyết sự phức tạp này, RIP 7560được soạn thảo như một phiên bản được khắc sâu của cơ sở hạ tầng ERC 4337 trên Ethereum và L2 của nó, để nó kế thừa các chương trình chống sybil của mạng thay vì phải định nghĩa một tập hợp quy tắc mới (như ERC 4337 với ERC 7562.
Trong báo cáo này, chúng tôi sẽ tập trung khám phá tính khả chương trình của EOA, đánh giá các EIP khác nhau mô tả các giải pháp theo hướng này và thảo luận những ưu điểm và nhược điểm của chúng. Trong phần 2 và 3 của loạt bài viết này, chúng tôi sẽ bao gồm hai lớp tiếp cận còn lại của trừu tượng hóa tài khoản được khai thác trong Ethereum.
Để tìm hiểu những gì có thể được trừu tượng hóa, chúng ta cần có một bức tranh (khoảng) đầy đủ về thiết kế tài khoản hiện tại. Phần này chủ yếu sẽ phục vụ như một bài ôn tập về tài khoản trên Ethereum thực sự là gì, và cách giao dịch của họ được xác minh và thực thi.
Tài khoản Ethereum là các thực thể có số dư ether (ETH) và có khả năng gửi giao dịch trên blockchain Ethereum. Chúng được đại diện bằng một địa chỉ hexa 42 ký tự, đóng vai trò như một con trỏ duy nhất đến số dư và giao dịch của tài khoản.
Một địa chỉ hoạt động như một chìa khóa vào bộ ba trạng thái của blockchain. Các nút lá của trie này là cấu trúc dữ liệu tài khoản có thể được phân tách thành bốn trường:
Nội dung của bốn trường này được sử dụng để xác định loại tài khoản và cuối cùng là để xác định phạm vi của chức năng của nó. Do đó, hai loại tài khoản Ethereum là:
EOAs có các trường codeHash và storageHash trống và chỉ có thể được kiểm soát bởi bất kỳ ai nắm giữ các khóa riêng. Địa chỉ của họ có thể được lấy từ khóa công khai tương ứng bằng cách thêm tiền tố “0x” vào hai mươi ký tự cuối cùng của mã băm keccak-256 của khóa công khai của tài khoản.
Các giao dịch của họ hoàn toàn dựa vào việc rút ra và dựa trên logic mã đã triển khai của họ.
Vì những tài khoản này chỉ có thể được kiểm soát bởi nội dung mã của họ, họ không cần một khóa riêng tư và chỉ có một khóa công khai. Do đó, bất kỳ đại lý nào có khả năng cập nhật/thay đổi nội dung mã của tài khoản hợp đồng đều có thể truy cập vào số dư của nó.
Địa chỉ của một CA được suy ra từ địa chỉ người tạo và nonce của nó cho đến thời điểm triển khai hợp đồng.
Giao dịch
Gần đây, chúng tôi đã mô tả các tài khoản như các thực thể có khả năng gửi giao dịch trên Ethereum. Chúng ta có thể hiểu rằng một mục đích chính của một tài khoản là gửi và nhận giao dịch, trong khi blockchain hoạt động như một sổ cái ghi lại lịch sử giao dịch cũng như mô tả cách giao dịch thay đổi các trường tài khoản dựa trên các quy tắc được mô tả trong quy định của giao thức blockchain.
Vậy những 'giao dịch' này là gì?
Giao dịch là các hoạt động được gửi từ một tài khoản, gây ra sự thay đổi trong 'trạng thái' của mạng. Chúng là các hướng dẫn được ký số mật mã từ các tài khoản, gây ra cập nhật trạng thái trên toàn mạng khi được thực thi.
Không được phép đi kèm với những động cơ sai lệch, để giải quyết vấn đề này, cần phải định nghĩa quy định nghiêm ngặt (hoặc quy tắc hợp lệ) cho sự tương tác trong môi trường như vậy.
Trong ngữ cảnh này, các giao dịch phải tuân theo những quy tắc hợp lệ cụ thể để được xem xét là hợp lệ và được thực hiện. Hầu hết những quy tắc hợp lệ này được thực hiện thông qua các ràng buộc đặt ra trên tài khoản gửi giao dịch, và thay đổi dựa trên loại tài khoản đó là gì.
Trên Ethereum, EOAs được tối ưu hóa cho tính sử dụng vì chúng đối mặt trực tiếp với người dùng cuối. Chúng có khả năng gửi giao dịch theo một cách cụ thể và hoạt động hoàn toàn tự động. Chúng cũng có thể được tạo ra cục bộ, phương pháp phổ biến hơn là sử dụng các nhà cung cấp ví như MetaMask, Rainbow, Rabby, v.v.
Trong khi đó, tài khoản hợp đồng chỉ có thể gửi giao dịch được cho phép bởi logic của chúng, đáp ứng khi được “gọi”. Ngoài ra, chúng chỉ có thể được tạo bởi một EOA có số dư đủ để trả tiền cho việc lưu trữ trạng thái của nó.
Một mô tả cao cấp hơn sẽ là EOAs chỉ có thể giữ số dư, trong khi CAs có thể giữ cả số dư và logic quy định cách mà số dư này có thể được chi tiêu.
Những thuộc tính này do các thông số logic sau định nghĩa các quy tắc mà các giao dịch của một tài khoản phải tuân thủ:
Các tham số này được thiết kế để cứng nhắc cho các tài khoản EOA như sau:
Nói chung, logic thực thi của EOA hạn chế chúng chỉ thực hiện một giao dịch cho mỗi chữ ký hợp lệ.
Tuy nhiên, CAs có nhiều linh hoạt hơn với các tham số này:
Trong hầu hết các trường hợp thực tế, logic được sử dụng trong trường hợp này là một hệ thống chữ ký đa chữ ký mà quy định rằng cần có M chữ ký hợp lệ trong tổng số N chữ ký (trong đó M < N) từ các tài khoản cụ thể (thường là EOAs) để việc thay đổi logic của CA được coi là hợp lệ.
Đánh giá những tính năng này, chúng tôi quan sát thấy rằng mỗi loại tài khoản được thiết kế để có một sự đánh đổi giữa sự tự chủ và khả năng lập trình.
EOA có độc lập hoàn toàn nhưng có khả năng lập trình hạn chế; họ có thể ủy quyền và gửi giao dịch bất cứ khi nào họ muốn, nhưng những giao dịch này phải tuân theo định dạng chặt chẽ để được coi là hợp lệ. CA có khả năng lập trình đầy đủ (chỉ bị hạn chế bởi thiết kế của EVM) nhưng độc lập hạn chế; giao dịch của họ không cần tuân theo bất kỳ định dạng chặt chẽ nào, nhưng chỉ có thể được gửi ra do logic của họ được gọi trước.
Trong phần tiếp theo, chúng tôi sẽ nghiên cứu các hàm ý của những lựa chọn thiết kế này, để hiểu rõ đề xuất của mỗi EIP được thảo luận trong loạt bài này.
Bây giờ chúng ta đã hiểu một cách khái quát về các chức năng khác nhau của các tài khoản, chúng ta có thể dễ dàng xác định điểm mạnh của họ cũng như các vấn đề mà họ đem đến cho cả trải nghiệm người dùng và nhà phát triển trên Ethereum.
Như chúng tôi đã đề cập trước đây, EOA được thiết kế như các tài khoản hạng nhất nhắm mục tiêu đến người dùng cuối. Các ứng dụng được thiết kế để dễ dàng tương tác với chúng, hầu như không có sự phức tạp nào đối với chúng và tất nhiên không có chi phí để tạo ra chúng. Tuy nhiên, sự đơn giản của nó đi kèm với sự mất mát đáng kể về tính mới vì chúng được thiết kế để xác định nghiêm ngặt.
Một số mối quan ngại xoay quanh chúng là:
Không phải ai cũng muốn (hoặc có khả năng) luôn giữ ETH (nghĩa là nhìn vào hành động giá cả), vì vậy các giải pháp khả thi sẽ là cho phép nhiều loại tiền gas (quá khó, làm hỏng quá nhiều invariants như mô tả trong phần 'Tiền tệ')ở đây) hoặc cho phép thanh toán gas được giải quyết bởi một tài khoản khác không phải là nguồn gốc giao dịch.
Ở phía đầu bên kia của phổ tài khoản, CAs nhắm đến các nhà phát triển và một đối tượng người dùng kỹ thuật hơn. Chúng hoạt động như phương tiện cho các hợp đồng thông minh (tức là chúng tôi coi hợp đồng thông minh là nội dung logic hoặc mã code được chứa trong chúng) và do đó có thể triển khai định dạng giao dịch mới lạ như được cho phép bởi EVM.
Tuy nhiên, đối với tất cả những tính năng này, họ chỉ là những tài khoản cấp hai được tuyên dương vì họ không có tính tự chủ. Một số điểm hạn chế của họ như sau:
Sau khi xem xét các lựa chọn thiết kế dẫn đến các vấn đề được xác định trong phần này, chúng ta có thể tiếp tục đánh giá các giải pháp đề xuất.
Khái niệm trừu tượng hóa tài khoản (thông qua tài khoản thông minh ít nhất) luôn là một phần không thể thiếu của lộ trình Ethereum. Truyền thuyết là sự phức tạp liên quan đến việc triển khai của nó đe dọa làm chậm thêm việc ra mắt Ethereum, vì vậy nó đã bị loại bỏ cho thiết kế hiện tại với các tài khoản khác nhau cung cấp các chức năng khác nhau. Nó đã bị trì hoãn lại bởi sự tập trung của Ethereum vào The Merge, và bây giờ nó lại xuất hiện như một phần chính của nâng cấp lớn tiếp theo của mạng - Pectra. Tuy nhiên, sự phức tạp của nó vẫn được coi là một nhược điểm đáng kể ngăn cản sự thống trị của nó, đặc biệt là khi Ethereum đã chuyển hướng sang lộ trình tập trung vào Rollup.
Yêu cầu hiện nay là hai lớp:
Về mặt trực giác, khái niệm này đóng vai trò quan trọng hơn trong ngữ cảnh trừu tượng hóa chuỗi và khả năng tương tác, tuy nhiên phạm vi của chúng tôi trong báo cáo này giới hạn chỉ đến các sáng kiến kỹ thuật được thực hiện để đạt được trừu tượng hóa tài khoản chính nó.
Trừu tượng hóa tài khoản nhằm kết hợp những tính năng tốt nhất của EOAs và CAs thành một tiêu chuẩn tài khoản mới - tài khoản thông minh, cho phép tách biệt hoàn toàn hoặc một phần các quy tắc hợp lệ của bất kỳ tài khoản thành một logic xác thực và một logic thực thi; để các tài khoản có thể xác định các quy tắc hợp lệ riêng của mình - như được phép bởi EVM - giống như tài khoản hợp đồng, trong khi vẫn hoàn toàn tự động như tài khoản sở hữu bên ngoài.
Thường có sự nhầm lẫn về sự khác biệt giữa tài khoản thông minh và ví hợp đồng thông minh, vì vậy hãy mô tả rõ ràng những sự khác biệt này dưới đây:
Việc thương mại hóa ví hợp đồng thông minh đã giúp việc áp dụng CAs (chứng chỉ) dễ dàng hơn đối với một thị trường rộng hơn, cho phép người dùng ít kỹ thuật hơn tận dụng các tính năng mà chúng cung cấp. Tuy nhiên, họ vẫn đối mặt với những khó khăn liên quan đến CAs.
Quay trở lại cuộc trò chuyện; chúng ta đã thảo luận trước đó về các tham số được sử dụng để xác định các quy tắc hợp lệ của giao dịch tài khoản:
Giá trị của bốn tham số đầu tiên có thể được gọi chung là logic xác thực của một tài khoản, đó là các kiểm tra xảy ra trước khi một giao dịch bắt đầu thực thi.
Tham số cuối cùng xác định cách thực hiện giao dịch sẽ tiến hành.
Trong phần giới thiệu, chúng tôi cung cấp một cái nhìn tổng quan về cảnh quan AA hiện tại dưới dạng một phân loại cho các thiết kế đề xuất khác nhau. Bây giờ chúng tôi sẽ tập trung vào lớp giải pháp đầu tiên cho vấn đề tài khoản Ethereum- EOA có thể lập trình.
Sức hấp dẫn lớn nhất của Ethereum là hệ sinh thái DeFi trẻ nhưng sôi động, có nhiều ứng dụng phi tập trung là điểm nhấn thanh khoản chính của nó. Hầu hết các DApp này được tối ưu hóa để phục vụ EOA, do đó chúng khó giao tiếp với CA và cuối cùng là tài khoản thông minh. Mặc dù ví hợp đồng thông minh giúp CA trong trường hợp này, nhưng chúng đi kèm với những hạn chế riêng và một UX hoàn toàn khác.
Một giải pháp tạm thời đang được khám phá trong khi cả DApps và nhà cung cấp ví tiền điện tử quen dần với tiêu chuẩn tài khoản thông minh, là cung cấp các cải tiến tạm thời cho EOAs để giúp họ vượt qua hầu hết các hạn chế được áp đặt, cho dù là việc xác thực hay logic thực thi của họ.
Dưới đây, chúng tôi sẽ đi qua các thông số kỹ thuật của ba EIPs chính cung cấp các tuyến đường hành động cho tính khả thi của EOA; từ cái ít người biết đếnEIP 5806đến những người tham vọngEIP 3074và sau cùng là chiến thắngEIP 7702.
Đề xuất này nhằm mục đích mang đến nhiều chức năng hơn cho tiêu chuẩn EOA bằng cách cho phép nó thực hiện cuộc gọi ủy quyền đến logic của tài khoản hợp đồng (hợp đồng thông minh của nó). Điều này hiệu quả khiến cho hợp đồng thông minh được thực thi trong ngữ cảnh của EOA gọi, tức là EOA vẫn nắm quyền kiểm tra logic của nó, trong khi logic thực thi được xử lý bởi logic tương ứng của CA.
Trước khi chúng ta tiếp tục điều gì đó, hãy cùng nhau đi một chuyến đi về quá khứ tiến hóa của EthereumEIP-7.
EIP-7 đề xuất việc tạo mã opcode 0xf4/DELEgateCALL, được sử dụng để gửi cuộc gọi tin nhắn vào một tài khoản chính với logic của một tài khoản phụ, đồng thời duy trì các giá trị của các trường [người gửi] và [giá trị] của tài khoản chính.
Nói cách khác, tài khoản chính 'kế thừa' (hoặc mượn nếu bạn muốn) logic của tài khoản phụ trong một khoảng thời gian được chỉ định trong cuộc gọi tin nhắn, để logic của tài khoản sau được thực thi trong ngữ cảnh của tài khoản trước.
Mã này cho phép nhà phát triển dApp chia logic ứng dụng của họ thành nhiều hợp đồng thông minh khác nhau trong khi duy trì sự phụ thuộc lẫn nhau, để họ có thể dễ dàng vượt qua các rào cản về kích thước mã và gas.
Okay, vậy cuộc gọi đại diện nào cho phép CAs phụ thuộc lẫn nhau? EIP-5806 sử dụng EIP-7 làm nguồn cảm hứng để đề xuất mở rộng chức năng cuộc gọi đại diện đến EOAs; tức là, hãy cho phép EOAs cũng phụ thuộc lẫn nhau với CAs, vì sao không.
EIP 5806 giới thiệu một tuân thủ EIP-2718loại giao dịch được đóng gói như sau:
rlp([chainID, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, data, access_list, signature_y_parity, signature_r, signature_s]).
Các giao dịch này được thiết kế sao cho trường [to] - đại diện cho địa chỉ người nhận - chỉ có thể chấp nhận địa chỉ làm đầu vào 20 byte, vô hiệu hóa người gửi sử dụng opcode CREATE.
Động lực đằng sau mỗi thành phần của hệ thống RLP như sau:
Trong khi việc đóng gói giao dịch EIP-5806 trong phong bì EIP-2718 cho phép chúng tương thích ngược tốt, Tài khoản địa chỉ không tương đương với Tài khoản thông thường. Vì vậy, một số hạn chế nhất định phải được định nghĩa trong cách mà một Tài khoản địa chỉ sử dụng cuộc gọi ủy quyền để ngăn chặn việc phá vỡ không biến đổi.
Những hạn chế này nhắm vào các opcode sau đây:
Ứng dụng chính của EIP 5806 là trừu tượng hóa thực thi cho các tài khoản ngoại vi. Cho phép các tài khoản ngoại vi tương tác một cách không cần tin cậy với hợp đồng thông minh vượt ra ngoài các cuộc gọi đơn giản tới logic của chúng, cấp họ các tính năng như:
Các thay đổi được đề xuất bởi EIP-5806, trong khi cho phép các tính năng cần thiết, không đặc biệt mới mẻ; sự tồn tại của nó chủ yếu dựa trên EIP-7 đã hoạt động. Điều này cho phép nó vượt qua nhiều rào cản tiềm năng để được chấp nhận.
Một trong những mối quan tâm chính được đề cập trong những ngày đầu của nó là nguy cơ tiềm ẩn khi cho phép EOAs truy cập và thay đổi lưu trữ, tương tự như CAs hiện tại làm. Điều này vi phạm nhiều điều kiện không thể thay đổi của mạng về cách EOAs thực hiện giao dịch, và vì vậy đã được giải quyết bằng cách đưa ra các hạn chế được đề cập trong phần tiếp theo.
Một lời chỉ trích thứ hai (hơi giống con dao hai lưỡi) là sự đơn giản của EIP-5806; có một số ý kiến cho rằng phần thưởng do chấp nhận EIP-5806 có thể không đáng giá, vì nó chỉ cho phép trừu tượng hóa thực hiện và không có nhiều thứ khác. Mọi hạn chế về hiệu lực khác vẫn được xác định theo mạng cho các EOA chọn tham gia EIP-5806, trái ngược với các EIP tương tự khác mà chúng ta thảo luận trong các tiểu mục sau.
EIP-3074 đề xuất cho phép các EOA ủy quyền hầu hết logic xác thực của họ cho các tài khoản hợp đồng chuyên biệt, được gọi là người gọi, bằng cách chồng logic ủy quyền của người sau lên logic của họ đối với các hình thức giao dịch cụ thể.
Điều này được đạt được bằng cách ký quyền truy cập của họ cho một hợp đồng triệu tập, sau đó hợp đồng này trở thành người chịu trách nhiệm xác định chính sách truy cập của EOA.
EIP này đề xuất việc thêm hai mã opcode mới vào EVM:
Hai mã opcode này cho phép EOA ủy quyền kiểm soát cho một CA đã thiết lập trước đó và do đó hoạt động như một thông qua nó, mà không cần triển khai hợp đồng và chịu các chi phí và yếu tố bên ngoài liên quan đến điều đó.
EIP-3074 cho phép các giao dịch sử dụng định dạng ký [MAGIC] để tránh xung đột với các định dạng ký giao dịch khác. Tài khoản hiện hoạt mà lệnh [AUTHCALL] được chuyển đến được định nghĩa là trường biến ngữ cảnh có tên [được ủy quyền], chỉ tồn tại thông qua một giao dịch duy nhất và phải được xác định lại cho mỗi [AUTHCALL] mới.
Trước khi xử lý các phức tạp của mỗi opcode, đây là các thực thể liên quan đến giao dịch EIP-3074:
Hợp đồng invoker nhận tin nhắn [AUTH] với giá trị [COMMIT] từ [authority]; giá trị này xác định các hạn chế mà tài khoản muốn đặt ra đối với việc thực hiện các lệnh [AUTHCALL] của [được ủy quyền].
Do đó, những người triệu tập chịu trách nhiệm đảm bảo rằng [contract_code] được xác định trong một tài khoản [authorized] không phải là độc hại và có khả năng đáp ứng các điều kiện được đặt ra bởi tài khoản ký chính trong một giá trị [COMMIT].
Mã [AUTH] có ba ngăn xếp đầu vào; hoặc đơn giản hơn — nó được định nghĩa bởi ba đầu vào tính toán một đầu ra duy nhất. Các đầu vào này là:
Hai đầu vào cuối cùng được sử dụng để mô tả một phạm vi bộ nhớ có thể sửa đổi từ 0 đến 97, trong đó:
Các biến [yParity], [r] và [s] được hiểu chung là chữ ký ECDSA, [magic], trên đường cong secp256k1 trên thông điệp:
[keccak256 (MAGIC || chainID || nonce || invoker address || COMMIT)]
nơi:
Nếu chữ ký tính toán được xác thực và địa chỉ người ký bằng với [authority], trường [authorized] được cập nhật thành giá trị được cung cấp bởi [authority]. Nếu bất kỳ yêu cầu nào không được đáp ứng, trường [authorized] vẫn giữ nguyên trạng thái trước đó hoặc là một giá trị chưa được thiết lập.
Chi phí gas cho opcode này được tính bằng tổng của:
[AUTH] được thực hiện để không sửa đổi bộ nhớ và lấy giá trị của [authority] làm đối số để xác minh giá trị của nó từ chữ ký được cung cấp là tầm thường.
Mã [AUTHCALL] có bảy phần tử đầu vào của ngăn xếp được sử dụng để tính toán một phần tử đầu ra của ngăn xếp duy nhất.
Nó có cùng logic như mã [CALL], tức là; nó được sử dụng để gửi cuộc gọi tin nhắn vào một tài khoản và kích hoạt logic cụ thể trong hợp đồng của nó. Sự khác biệt duy nhất trong logic của chúng là [AUTHCALL] được thiết kế để đặt giá trị [CALLER] trước khi tiến hành thực thi.
Do đó, [AUTHCALL] được sử dụng bởi [authority] để kích hoạt hành vi cụ thể trong [authorized] với kiểm tra logic được thực hiện như sau:
Chi phí gas cho [AUTHCALL] được tính như tổng của:
Dữ liệu được trả về từ một [AUTHCALL] được truy cập thông qua:
Để kết hợp tất cả với ít hơn sự nói chuyện kỹ thuật; Giao dịch Ethereum thường chỉ định hai giá trị:
Trong các EOA, như đã đề cập trước đây, ủy quyền được kết hợp chặt chẽ với việc thực thi, tức là; (tx.origin == msg.sender). Bất biến đơn giản này làm phát sinh hầu hết các vấn đề mà chúng tôi đã giải thích trong tiểu mục "Tài khoản và tính hợp lệ của giao dịch" của báo cáo này.
[AUTH] tin nhắn từ [authority] cho phép nó bù đắp chức năng tx.origin thành [authorized], trong khi vẫn là msg.sender. Nó cũng cho phép nó định nghĩa các hạn chế cho đặc quyền này bằng giá trị [COMMIT].
[AUTHCALL] sau đó cho phép [authorized] truy cập vào logic của hợp đồng, sử dụng một [invoker] làm trung gian để đảm bảo hợp đồng mà nó muốn truy cập là không gây hại. Đó là, đối với mỗi [AUTHCALL], [authorized] phải chỉ định một [invoker] cụ thể cho [COMMIT] của họ.
EIP 3074 chịu trách nhiệm chủ yếu cho việc cho phép các EOAs ủy quyền logic ủy quyền của họ cho một tài khoản khác, tuy nhiên thiết kế mở của nó còn cho phép nhiều hơn trong các ngữ cảnh khác nhau.
Toàn bộ logic xác nhận của EOA có thể được trừu tượng hóa bằng cách áp dụng các hạn chế / đổi mới khác nhau cho trình gọi khi cần thiết, một số thiết kế có thể dựa trên logic đích của chúng bao gồm:
Ngoài ra, logic thực thi được trừu tượng hóa một cách trực quan; xét cho cùng, người gọi (là CA) hiện chịu trách nhiệm thực hiện các yêu cầu giao dịch thay mặt cho EOA.
Trích dẫnmột trong các tác giả của nó: “Tôi không mong đợi các ví tiền điện tử tiết lộ chức năng để ký giao dịch cho các bên gọi hàm tùy ý …”. Có lẽ vấn đề lớn nhất mà sáng kiến 3074 mang lại là sự dễ dàng của việc phát triển độc quyền và luồng giao dịch sở hữu; giống như các phiên bản hiện tại của thị trường MEV và PBS của Ethereum.
Mặc định, hợp đồng gọi phải được kiểm tra kỹ để ngăn chặn các cuộc tấn công tồi tệ hơn những gì hiện tại đang có thể. Điều này sẽ dẫn đến một hệ sinh thái chỉ có một vài hợp đồng gọi được phát triển bởi các nhân vật ảnh hưởng được chấp nhận như mặc định cho các nhà phát triển ví. Do đó, đó là một sự đánh đổi giữa việc theo con đường phi tập trung khó khăn của việc kiểm tra và hỗ trợ hợp đồng gọi với nguy cơ an ninh của người dùng; hoặc đơn giản là áp dụng hợp đồng gọi từ các nguồn đáng tin cậy đã được thiết lập với các bảo đảm tốt hơn cho an ninh người dùng và ít giám sát hơn về an toàn của hợp đồng.
Một khía cạnh khác của vấn đề này là hàm chi phí liên quan đến việc thiết kế, kiểm toán và tiếp thị một người gọi chức năng và an toàn. Những nhóm nhỏ hầu như luôn bị các tổ chức lớn vượt mặt – đặc biệt là ở mặt tiếp thị – mà đã có một số danh tiếng đã được lập, ngay cả khi sản phẩm của họ tốt hơn.
EIP-3074 củng cố chủ đề chữ ký ECDSA, vì nó vẫn được coi là hợp lệ hơn phương thức ủy quyền được giới thiệu thông qua bộ kích hoạt. Trong khi có những lập luận cho rằng khả năng chống lại lượng tử không phải là một vấn đề xác định trong thời điểm hiện tại, và rằng có nhiều vấn đề tồi tệ hơn trong một tương lai khi ECDSA có thể bị hỏng; Mục tiêu không được công bố rõ ràng của Ethereum là luôn luôn tiên phong trong việc giải quyết những vấn đề như vậy. Việc hy sinh khả năng chống lại lượng tử và kiểm duyệt để cải thiện chút ít trải nghiệm người dùng có thể không phải là lựa chọn tốt nhất trong tương lai gần.
Một điểm khác trong lập luận về sự tương thích về phía trước là trong khi những lợi ích của 3074 vẫn đang được đánh giá, ERC-4337 (không yêu cầu bất kỳ thay đổi nào trong giao thức) hiện nay đã có một thị trường tốt, vì vậy bạn cũng phải tương thích với nó để tránh sự phân tách của các hệ sinh thái.
Ngay cả với lộ trình trừu tượng hóa tài khoản, các opcode [AUTH] và [AUTHCALL] sẽ cuối cùng trở nên lỗi thời trên EVM, gây ra một khoản nợ kỹ thuật lớn cho Ethereum để mang lại một lượng cải thiện UX không đáng kể.
Sau khi gửi một tin nhắn [AUTH] và ủy quyền kiểm soát, EOA được mong đợi sẽ tránh sử dụng hệ thống xác thực khóa riêng thông thường, vì việc gửi một giao dịch “bình thường” sẽ làm cho quyền ủy quyền mà nó đã giao cho mọi người gọi bị thu hồi.
Do đó, hệ thống ECDSA vẫn hoàn toàn vượt trội so với bất kỳ hệ thống ủy quyền nào mà các hợp đồng liên quan có thể cho phép, có nghĩa là mất chìa khóa riêng tư sẽ dẫn đến mất hết tài sản của tài khoản.
Đề xuất này ban đầu được thiết lập như một biến thể tương đối tối giản của EIP 3074 và đã ...đã có ý địnhđể là một bản cập nhật cho nó. Nó được sinh ra để giải quyết những không hiệu quả được cho là của EIP 3074, đặc biệt là những lo ngại về tính không tương thích của nó với hệ sinh thái 4337 đang phát triển và đề xuất trừu tượng hóa tài khoản cục bộ - RIP 7560.
Cách tiếp cận của nó là thêm một loại giao dịch tuân thủ EIP 2718 mới - [SET_CODE_TX_TYPE] - cho phép một EOA hoạt động như một tài khoản thông minh cho các giao dịch cụ thể.
Thiết kế này cho phép các tính năng giống như EIP 5806 và một số tính năng khác, đồng thời vẫn tương thích với lộ trình trừu tượng hóa tài khoản cố định và các sáng kiến hiện tại.
EIP-7702 cho phép một EOA "nhập" nội dung mã của một hợp đồng thông qua một giao dịch tuân thủ [SET_CODE_TX_TYPE] 2718 có định dạng:
rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, value, data, access_list, authorization_list, signature_y_parity, signature_r, signature_s])
Gói tin này hoàn toàn giống với EIP 5806, ngoại trừ nó giới thiệu một 'danh sách ủy quyền'. Danh sách này là một chuỗi các giá trị có định dạng được sắp xếp theo thứ tự:
[[chain_id, địa chỉ, nonce, y_parity, r, s], …]
nơi mỗi bộ ba xác định giá trị của [địa chỉ].
Trước khi tiếp tục, các bên liên quan trong một SET_CODE_TX_TYPE là:
Khi [authority] ký một SET_CODE_TX_TYPE chỉ định [address], một người chỉ định ủy quyền được tạo ra. Đây là một “chương trình con trỏ” khiến tất cả các yêu cầu truy xuất mã do hành động của [authority] tại bất kỳ thời điểm nào đều được chuyển đến mã quan sát của [address].
Đối với mỗi bộ tứ [chain_id, địa chỉ, nonce, y_parity, r, s], luồng logic của giao dịch loại 7702 được thực hiện như sau:
Phew! Để kết nối lại tất cả; EIP này cho phép EOAs gửi giao dịch để thiết lập một con trỏ đến mã của hợp đồng, cho phép họ thực hiện logic này như là của riêng họ trong các giao dịch tiếp theo. Theo cách này, nó mạnh hơn EIP 5806, vì nó cho phép EOAs thực sự có nội dung mã trong suốt thời gian họ muốn (không giống như EIP 5806 chỉ cho phép EOAs gửi các cuộc gọi ủy quyền).
Trong khi có thể đưa ra lập luận rằng đó không còn là một trừu tượng nữa khi EOA chủ động tiếp nhận logic mà nó muốn thực thi, nhưng nó vẫn không phải là 'chủ sở hữu chính' của logic đó. Ngoài ra, nó không trực tiếp chứa logic, chỉ đơn giản là chỉ định một con trỏ đến logic (nhằm giảm độ phức tạp tính toán). Vì vậy, chúng tôi chọn trừu tượng hóa thực thi!
Trong khi invariante require (msg.sender == tx.origin) bị phá vỡ để cho phép tự tài trợ, EIP vẫn cho phép tích hợp các trình kết nối giao dịch được tài trợ. Tuy nhiên, điều cần lưu ý là các trình kết nối như vậy cần có hệ thống dựa trên danh tiếng hoặc cổ phần để ngăn chặn cuộc tấn công griefing.
EOA chỉ có thể trỏ đến một phần cụ thể của mã tài khoản, sao cho chỉ có logic của phần đó được thực thi trong ngữ cảnh của chúng.
Điều này cũng cho phép sự tồn tại của các khóa phụ, từ đó cho phép “giảm đặc quyền”, để các dAPP cụ thể chỉ có quyền truy cập vào số dư tài khoản trong các điều kiện cụ thể. Ví dụ, bạn có thể tưởng tượng một quyền để tiêu ERC-20 nhưng không phải ETH, hoặc tiêu không quá 1% số dư tổng cộng mỗi ngày, hoặc tương tác chỉ với một ứng dụng cụ thể.
Do tính không hạn chế của nó, giao dịch EIP-7702 có thể cho phép người dùng truy cập vào mã opcode CREATE2 và sử dụng nó để triển khai mã bytecode tới địa chỉ mà không có bất kỳ thông số hạn chế nào khác như logic thị trường phí (ví dụ như EIP-1559 và EIP-4844). Điều này cho phép địa chỉ được khôi phục và sử dụng trên nhiều máy trạng thái, với cùng mã bytecode, trong đó tài khoản của nó trên mỗi chuỗi sau đó phụ trách xác định các thông số ngữ cảnh khác.
Trong khi EIP-7702 vẫn rất mới, đã có rất nhiều việc thử nghiệm và kiểm tra cho các phụ thuộc và nhược điểm tiềm năng của nó, nhưng mô hình tối giản của nó đảm bảo cho nó nhiều tính linh hoạt và do đó giá trị trong các ngữ cảnh khác nhau. Tuy nhiên, nó phá vỡ quá nhiều nguyên tắc và không tương thích ngược ngay lập tức.
Một số phần của nó bao gồm:
Hầu hết người dùng không hiểu rõ nội dung thực tế của một tài khoản (hoặc thậm chí là sự khác biệt giữa một tài khoản và một địa chỉ!), vì vậy cho phép va chạm địa chỉ có nghĩa là một EOA có thể giả mạo thành một CA và thu hút quỹ của người dùng một cách dài dòng để cuối cùng đánh cắp tất cả. EIP-3607 đã giải quyết vấn đề này bằng cách quy định rằng các tài khoản chứa mã không được phép chi tiêu số dư của mình bằng cách sử dụng logic ủy quyền riêng của chúng. Tuy nhiên, EIP 7702 phá vỡ tính không biến này để cho phép EOAs tự trị ngay cả sau khi có một số khả năng lập trình.
Việc ký quyền địa chỉ tài khoản thay vì nội dung mã của nó về cơ bản giống như sơ đồ 3074 với người gọi. Điều này không đảm bảo nghiêm ngặt về tính nhất quán của nội dung mã chéo chuỗi, vì một địa chỉ có thể chứa nội dung mã khác nhau trên các chuỗi khác nhau. Điều này có nghĩa là một địa chỉ mà nội dung mã chứa cùng logic trên một chuỗi có thể là ác quỷ hoặc trực tiếp độc hại trên một chuỗi khác, và điều này có thể dẫn đến mất mát quỹ người dùng.
EOA ở dạng hiện tại hôm nay bị hạn chế rất nhiều vì họ không cho phép người dùng tận dụng các tính năng lập trình được cung cấp bởi EVM. Trong khi có nhiều con đường để nâng cấp tài khoản, như chúng tôi đã đề cập ở đầu báo cáo này, giải pháp được chọn phải duy trì các nguyên tắc tự lưu trữ an toàn và bảo mật. Hơn nữa, việc nâng cấp EOA có thể ảnh hưởng đáng kể đến cả trải nghiệm người dùng và các nhà phát triển ứng dụng nên tất cả các ý kiến của các bên liên quan phải được xem xét.
Cho phép EOAs thực thi mã theo bất kỳ cách nào mở rộng đáng kể chức năng của tài khoản, nhưng tính linh hoạt mới này đi kèm với những rủi ro ý nghĩa và những điểm mù có thể xảy ra. Giải quyết những sự đánh đổi này là rất quan trọng để mang lại lợi ích UX không thể tranh cãi cho người dùng Ethereum.
Văn hóa thảo luận mở của Ethereum khiến nó trở thành một môi trường thử nghiệm tuyệt vời cho những đổi mới như vậy, vì hầu hết mọi khía cạnh của mọi thiết kế đều được phân tích kỹ lưỡng bởi các chuyên gia. Sự xem xét toàn diện này sẽ giúp giảm thiểu rủi ro phạm pháp từ những đối thủ.
EIP-7702 hiện đang là điển hình cho các cơ chế nhằm đưa tính khả thi lập trình EVM đến các EOA, đã được đánh dấu là sự thay thế cho khe EIP 3074 trong nâng cấp Pectra. Nó thừa hưởng thiết kế mở của cơ chế 3074 trong khi giảm thiểu đáng kể diện tích tấn công / rủi ro. Nó cũng cho phép nhiều hơn bằng cách tránh các hạn chế của 3074 đối với một số lớp opcode nhất định.
Trong khi vẫn còn một số điều chỉnh được thực hiện trên thiết kế của đề xuất, nó đã nhận được rất nhiều thiện ý và sự ủng hộ từ các nhà phát triển, đặc biệt là khi nó có sự hỗ trợ trực tiếp từ Vitalik.
Trong cộng đồng có những tuyên bố rằng cách tiếp cận trừu tượng hóa tài khoản này thậm chí có thể tốt hơn tài khoản thông minh. Bài bình luận này nhấn mạnh rằng con đường này đòi hỏi ít thay đổi hơn và không phức tạp và các EOA đã được lưu giữ. Tuy nhiên, chúng ta phải nhớ cột mốc bảo mật trong tương lai của kháng lượng tử ở mọi cấp độ của mạng Ethereum. Sự an toàn lượng tử này là không khả thi với lõi mô hình tài khoản hiện tại do việc sử dụng các sơ đồ chữ ký dựa trên ECDSA để ủy quyền EOA.
Do đó, tính khả năng lập trình của EOA được xem như là một bước tiến trên con đường đến tài khoản thông minh và không phải là điểm đến cuối cùng. Nó tăng tốc độ cho EOAs và cải thiện trải nghiệm người dùng và nhà phát triển, đồng thời vẫn tương thích với mục tiêu trừu tượng hóa tài khoản tối đa của tài khoản thông minh.
Trong báo cáo tiếp theo của chúng tôi, chúng tôi sẽ đi sâu vào các kế hoạch di cư EOA để xem chúng có phù hợp với lộ trình trừu tượng hóa tài khoản hay không, hãy đồng hành!