
Ví hợp đồng thông minh và trừu tượng hóa tài khoản: quy trình thực thi ERC-4337
Ví thông minh và trừu tượng hóa tài khoản chuyển hoạt động ví Ethereum từ các quy tắc giao dịch eoa cố định sang một quy trình lập trình, nơi một UserOperation được mô phỏng, định giá và chỉ sau đó được chuyển thành giao dịch trên chuỗi bởi một bundler. ERC-4337 là thiết kế lớp ứng dụng chiếm ưu thế cho điều này, và điều quan trọng là hiểu các trung gian mới, API và các chế độ thất bại thay vì chỉ ghi nhớ các tính năng UX.
Điểm chính
- ERC-4337 thay thế đối tượng giao dịch thông thường bằng một UserOperation nằm trong một mempool riêng cho đến khi một bundler đưa nó vào chuỗi thông qua EntryPoint’s handleOps.
- Bundlers là các bộ chọn và bộ thực thi, không phải là các bộ chuyển tiếp thụ động, vì họ mô phỏng các hoạt động, quản lý rủi ro spam và chọn những gì để gộp lại.
- ERC-7769 chuẩn hóa các phương thức JSON-RPC ví↔bundler như eth_sendUserOperation và eth_getUserOperationReceipt, cho phép tính di động của bundler và theo dõi biên nhận tốt hơn.
- Trừu tượng hóa tài khoảntạo ra các bề mặt DoS và chi phí tính toán mới, vì vậy các quy tắc xác thực, hệ thống danh tiếng và việc gia cố sản xuất như chặn các điểm cuối debug_* trở thành một phần của mô hình bảo mật.
Cách mà ví thông minh khác với EOAs
Hai loại “tài khoản” khác nhau xuất hiện trên một màn hình Ethereum: một eoa ký một giao dịch trực tiếp, và một tài khoản hợp đồng chỉ thực hiện bất kỳ điều gì khi mã được thực thi. Một ví thông minh làm cho tài khoản hợp đồng đó trở thành ví chính, vì vậy các kiểm tra chữ ký, quy tắc nonce và logic thực thi trở nên có thể lập trình.
Đó là cốt lõi của trừu tượng hóa tài khoản, và nó nằm trong bản đồ rộng hơn của các loại ví tiền điện tử được giải thích: “ví” không còn chỉ là một cặp khóa và một bộ đếm nonce.Hệ quả ngay lập tức là các tính năng ví ngừng được mã cứng vào các quy tắc eoa của giao thức. Một tài khoản thông minh có thể chấp nhận các sơ đồ chữ ký khác nhau, thực thi các chính sách chi tiêu, hoặc chặn các hành động dựa trên nhiều điều kiện vì xác thực là mã. Đó là nơi mà các tính năng như phục hồi xã hội và danh mục rộng hơn của các ví không có hạt giống và phục hồi xã hội xuất hiện. Chi tiết quan trọng là những tính năng này nằm ở phía hạ nguồn của mô hình thực thi, không phải mô hình tự nó.Trên Ethereum, con đường chiếm ưu thế để trừu tượng hóa tài khoản là ERC-4337, được định hình rõ ràng là cấp ứng dụng thay vì thay đổi lớp đồng thuận. Cách định hình đó quan trọng vì nó ngụ ý một chuỗi cung ứng giao dịch mới thay vì một bản viết lại giao thức. “Hành động ví” không còn đồng nghĩa với “một giao dịch được phát sóng đến mempool công cộng.” Nó trở thành một đối tượng ý định cần một tác nhân bao gồm.Lớp tác nhân bao gồm đó là nơi mà hầu hết các giải thích trở nên lười biếng. Mô hình tâm lý hữu ích không phải là “một giao dịch bình thường với các bước bổ sung.” Mô hình hữu ích là “một thị trường giao dịch song song” với mempool riêng của nó, các bộ định tuyến riêng của nó và các ràng buộc hoạt động riêng của nó.Luồng hoạt động của người dùng ERC-4337
Một UserOperation không tự động xuất hiện trên chuỗi. Nó sống ngoài chuỗi cho đến khi một bundler quyết định rằng nó đáng để chuyển thành một giao dịch trên chuỗi.
Các định nghĩa của ERC-7769 làm cho chuỗi này trở nên rõ ràng: trong các luồng ERC-4337, các giao dịch của người dùng được thay thế bằng các đối tượng UserOperation, và một bundler thu thập một hoặc nhiều UserOperations và gửi chúng đến hợp đồng EntryPoint trong một cuộc gọi handleOps duy nhất.
Quy trình đó có một thứ tự sự kiện rõ ràng:
1. Ví xây dựng một UserOperation mã hóa những gì người dùng muốn làm và cách phí sẽ được chi trả. 2. UserOperation được gửi đến một nút mempool UserOperation xác thực và mô phỏng nó trước khi chấp nhận. 3. Một bundler chọn các UserOperations đã được chấp nhận, đóng gói chúng và gửi một giao dịch trên chuỗi gọi EntryPoint.handleOps. 4.
EntryPoint thực thi các hoạt động, và chuỗi tạo ra một biên nhận giao dịch bình thường cho gói cộng với kết quả theo từng UserOperation.
Luận điểm “thị trường song song” xuất hiện ở bước 3. Việc bao gồm và định giá không còn hoàn toàn là vấn đề của người dùng trong việc thiết lập maxFeePerGas và chờ đợi. Bundler chịu chi phí tính toán và rủi ro lựa chọn. Đó là lý do tại sao một số nhà phát triển lập luận rằng giá trị chính của ERC-4337 là một thị trường phí phi tập trung cho các hoạt động của người dùng vào ví thông minh, không chỉ là UX tốt hơn.
Đây cũng là nơi mà “trừu tượng hóa tài khoản được giải thích” thường sai. Đối tượng mà người dùng ký không được đảm bảo sẽ trở thành một giao dịch. Người dùng có thể làm mọi thứ đúng và vẫn không được bao gồm nếu bundlers không chọn nó, nếu mô phỏng thất bại, hoặc nếu hoạt động hết hạn. Tư thế UX đúng là coi băm UserOperation như là tay cầm theo dõi chính cho đến khi bao gồm, sau đó ánh xạ nó đến băm giao dịch gói sau đó.
API và công cụ từ ví đến bundler
ERC-4337 chỉ trở nên khả dụng ở quy mô khi các ví có thể giao tiếp với các bundler theo cách chuẩn hóa. Đó là những gì ERC-7769 thêm vào: một bề mặt JSON-RPC phản ánh sự tiện lợi của việc gửi giao dịch Ethereum bình thường và tìm kiếm biên nhận, nhưng cho các UserOperations.
Các phương thức cốt lõi mà ERC-7769 định nghĩa là những phương thức thay đổi quyết định tích hợp hàng ngày:
1. eth_sendUserOperation gửi một UserOperation đến mempool UserOperation. Khách hàng xác thực và mô phỏng nó, và chỉ nên trả về một userOpHash nếu nó đã vượt qua mô phỏng và được chấp nhận vào hồ. 2. eth_estimateUserOperationGas ước lượng các trường “gas” cho một UserOperation, với chữ ký bị bỏ qua cho mục đích ước lượng. 3.
eth_getUserOperationByHash cho phép một ví truy vấn xem một hoạt động đang chờ, đã được bao gồm, hoặc không xác định, và trả về siêu dữ liệu bao gồm như blockNumber và transactionHash khi có sẵn. 4. eth_getUserOperationReceipt trả về một biên nhận theo từng hoạt động khi đã được bao gồm, bao gồm actualGasCost, actualGasUsed và một cờ thành công, trong khi cũng trả về biên nhận giao dịch của gói. 5.
eth_supportedEntryPoints cho biết ví địa chỉ EntryPoint nào mà bundler hỗ trợ, đây là kiểm tra tính di động đầu tiên mà một backend ví nên thực hiện.
Đây là câu chuyện cơ sở hạ tầng yên tĩnh: sự chuẩn hóa là điều làm cho một thị trường bundler cạnh tranh trở nên khả thi. Nếu một ví nói ERC-7769, nó có thể thay đổi các backend bundler mà không cần viết lại toàn bộ logic gửi và theo dõi của nó. Đó là sự phi tập trung qua giao diện, không phải qua khẩu hiệu.
ERC-7769 cũng vạch ra một ranh giới rõ ràng giữa thử nghiệm và sản xuất. Nó định nghĩa các phương thức debug_ cho phát triển và thử nghiệm tương thích, và chỉ định rằng các phương thức JSON-RPC debug_ này nên bị chặn trên các máy chủ sản xuất. Đó không phải là phép lịch sự. Nó là một phần của mô hình bảo mật cho bất kỳ ai vận hành cơ sở hạ tầng AA công cộng.
ERC-7769 cũng tham chiếu rõ ràng đến hỗ trợ eip 7702 trong đối tượng UserOperation trên các mạng nơi nó được kích hoạt, thông qua một tuple eip7702Auth. Các nguồn cung cấp không xác định rõ ràng phạm vi hoặc trạng thái kích hoạt cuối cùng của eip 7702 trên các mạng, nhưng công việc giao diện trong ERC-7769 cho thấy rằng hệ thống ống dẫn ví↔bundler đang được thiết kế để phù hợp với hướng đó.
An toàn mempool, mô phỏng và rủi ro DoSMô phỏng là trung tâm chi phí khiến trừu tượng hóa tài khoản cảm thấy như đang vận hành một động cơ khớp thay vì một hộp RPC thụ động. ERC-7769 rất thẳng thắn về điều này: vận hành một nút ERC-4337 công cộng là tốn kém về tính toán và có thể là mục tiêu DoS. Đó là sự đánh đổi để có một mempool UserOperation riêng biệt nơi các nút phải xác thực và mô phỏng trước khi chấp nhận các hoạt động.Bề mặt DoS là cấu trúc. Một tác nhân độc hại có thể gửi các hoạt động rẻ để gửi nhưng đắt để mô phỏng, buộc các bundler và các nút mempool phải tiêu tốn tính toán. ERC-7769 chỉ ra các biện pháp giảm thiểu thông qua các quy tắc xác thực ERC-7562 và các cơ chế danh tiếng, được thiết kế để ngăn chặn các nút chấp nhận các UserOperations được chế tạo độc hại và theo dõi danh tiếng của người tham gia. Sự nhấn mạnh của tài liệu cùng về việc chặn debug_* trong sản xuất là một biện pháp giảm thiểu thực tiễn khác, vì các điểm cuối debug có thể tiết lộ các hành vi đặt lại trạng thái và gộp buộc mà hữu ích trong các bài kiểm tra và nguy hiểm trên internet công cộng.
ERC-5189 tồn tại vì sức khỏe của mempool là phần khó khăn, và nó tấn công vấn đề từ một góc độ khác. Nó đề xuất trừu tượng hóa tài khoản thông qua một cấu trúc Operation và các hợp đồng “endorser”, tránh rõ ràng các loại giao dịch mới trên lớp đồng thuận trong khi vẫn tương thích với các ví hợp đồng thông minh hiện có.
Công việc của endorser là giúp các bundler lọc “các hoạt động tốt” từ “các hoạt động xấu” trong một mempool hoạt động chuyên dụng.Cơ chế chính trong ERC-5189 là endorser trả về thông tin sẵn sàng cộng với thông tin phụ thuộc. Tín hiệu phụ thuộc đó cho biết các bundler những thay đổi trạng thái nào nên kích hoạt việc đánh giá lại, đây là một cách để giữ cho một mempool không bị thối rữa với các hoạt động không còn hợp lệ. ERC-5189 vẫn không thoát khỏi ràng buộc cốt lõi: các bundler phải mô phỏng thực thi ngoài chuỗi trước khi bao gồm, và các nhà điều hành mempool có thể cấm các endorser cư xử không đúng. Thiết kế đang thương lượng sự đánh đổi giữa tính mở và khả năng chống spam, chỉ với các ống dẫn khác nhau.Các con đường cạnh tranh cho trừu tượng hóa tài khoản
Các nhà phát triển Ethereum không tranh luận về việc liệu ví hợp đồng thông minh có hữu ích hay không. Họ đang tranh luận về con đường nào trở thành mặc định lâu dài và những đánh đổi nào là chấp nhận được.
Một đường ranh rõ ràng là EIP-3074 so với ERC-4337, với các lập luận rằng 3074 có thể mang lại những cải tiến UX ngay lập tức hơn trong khi nhóm 4337 nhấn mạnh các thuộc tính như khả năng chống kiểm duyệt và, quan trọng, thị trường phí phi tập trung cho các hoạt động của người dùng.Cuộc tranh luận đó quan trọng đối với các nhà xây dựng vì nó thay đổi ý nghĩa của “cơ sở hạ tầng ví”.
ERC-4337 đẩy sự phức tạp vào một thị trường giao dịch song song: UserOperations, bundlers, EntryPoint, quy tắc mô phỏng, hệ thống danh tiếng, và giờ là RPC chuẩn hóa thông qua ERC-7769.
Ngăn xếp đó có thể phát triển mà không cần một nhánh giao thức cứng, nhưng nó cũng tạo ra các trung gian mới mà động lực và thời gian hoạt động của chúng trở thành một phần của trải nghiệm người dùng.Lý do khác mà nhiều đề xuất tồn tại là “trừu tượng hóa tài khoản” là một thuật ngữ bao quát. Một số đề xuất tập trung vào việc gửi ý định và thị trường bao gồm.
Những đề xuất khác tập trung vào cách làm cho các tài khoản hợp đồng cảm thấy như EOAs mà không buộc mỗi ví phải nâng cấp. Mục tiêu tương thích của ERC-5189 là rõ ràng: hỗ trợ các triển khai ví hợp đồng thông minh hiện có mà không yêu cầu mỗi phiên bản ví phải được nâng cấp thủ công.
Các nguồn cũng đánh dấu eip 7702 như một hướng đi mới được giới thiệu vào tháng 5 năm 2024 bởi Vitalik Buterin và những người khác, được định hình như giải quyết các hạn chế của cách tiếp cận cấp ứng dụng.
Tài liệu cung cấp không bao gồm các chi tiết về đặc điểm kỹ thuật eip 7702, vì vậy điều duy nhất có thể rút ra có trách nhiệm là nhận thức về phạm vi: hệ sinh thái đang xây dựng các giao diện, như tuple eip7702Auth tùy chọn của ERC-7769, dự đoán sự thay đổi.
Những hiểu lầm phổ biến về ví hợp đồng thông minh và trừu tượng hóa tài khoản
“Trừu tượng hóa tài khoản là một bản nâng cấp giao thức thay đổi các tài khoản Ethereum.” ERC-4337 được định hình là cấp ứng dụng, có nghĩa là nó không thay đổi cách mà giao thức Ethereum tự nó nhìn nhận các tài khoản. Giao thức vẫn nhìn thấy EOAs và tài khoản hợp đồng. Sự trừu tượng được xây dựng bởi các hợp đồng cộng với cơ sở hạ tầng ngoài chuỗi.
“Bundlers chỉ là các bộ chuyển tiếp.” Một bộ chuyển tiếp chuyển tiếp một giao dịch. Một bundler thực hiện xác thực và mô phỏng, chọn những UserOperations nào để chấp nhận, và đóng gói chúng vào một cuộc gọi handleOps đến EntryPoint. Vai trò lựa chọn đó là lý do tại sao các bundler thừa hưởng sự tiếp xúc với DoS và tại sao các cơ chế danh tiếng và lọc xuất hiện trong các tiêu chuẩn.
“AA chủ yếu liên quan đến phục hồi xã hội và khóa phiên.” Đó là các tính năng ví trở nên dễ dàng hơn khi xác thực có thể lập trình, và phục hồi xã hội là một ví dụ phổ biến. Yếu tố phân biệt thay đổi cấu trúc thị trường là quy trình UserOperation + bundler + EntryPoint và mempool riêng mà nó ngụ ý.
“Theo dõi hoạt động giống như các băm giao dịch bình thường.” ERC-7769 rõ ràng thêm các phương thức theo băm và biên nhận cho các UserOperations vì ngữ nghĩa băm giao dịch không áp dụng cho đến khi một bundler bao gồm hoạt động. Các ví mà coi việc gửi là cuối cùng sẽ gửi các trạng thái chờ bị hỏng và xử lý thất bại gây nhầm lẫn.
Lời Nhận Xét
Tôi đã thấy các đội phát triển "trải nghiệm người dùng tài khoản thông minh" trông rất ấn tượng trong các buổi trình diễn nhưng sau đó đã sụp đổ dưới tải trọng vì họ coi ERC-4337 như một giao dịch bình thường được trang trí. Sai lầm tốn kém là bỏ qua lớp bao gồm. Một UserOperation là một đơn hàng trong một địa điểm riêng biệt, và nó chỉ trở thành một giao dịch chuỗi khi một bundler chọn định tuyến nó qua EntryPoint.handleOps.
Nếu có một tư thế nào đó tiết kiệm thời gian, đó là xây dựng xung quanh hệ thống hạ tầng: các phương thức ERC-7769 cho việc gửi và theo dõi biên nhận, các trạng thái chờ rõ ràng, và khả năng di động của bundler thông qua eth_supportedEntryPoints. Về mặt hạ tầng, tôi đã thấy mọi người công khai các điểm cuối debug_* trên các máy chủ công cộng và tỏ ra ngạc nhiên khi chúng bị lạm dụng. ERC-7769 chỉ ra điều đó vì một lý do. Trừu tượng tài khoản là một thị trường giao dịch song song, và các thị trường thu hút dòng chảy đối kháng.
Nguồn
Đề xuất Cải tiến Ethereum
Đề xuất Cải tiến Ethereum
Không bị ràng buộc
blockcryptowriter.medium.com
Frequently Asked Questions
Sự khác biệt giữa EOA và ví hợp đồng thông minh là gì?
EOA ký và phát sóng một giao dịch Ethereum tiêu chuẩn trực tiếp, với các quy tắc xác thực cố định. Ví hợp đồng thông minh là một tài khoản hợp đồng, vì vậy các quy tắc xác thực và thực thi có thể được lập trình, điều này là cơ sở của trừu tượng tài khoản.
Trừu tượng tài khoản ERC-4337 thực sự đưa một giao dịch lên chuỗi như thế nào?
Ví gửi một UserOperation đến một mempool riêng biệt, nơi nó được xác thực và mô phỏng. Một bundler sau đó chọn các UserOperations để bao gồm và gửi một giao dịch lên chuỗi đến hợp đồng EntryPoint, hợp đồng này thực thi chúng thông qua handleOps.
Bundler làm gì trong ERC-4337?
Bundler thu thập các UserOperations, thực hiện xác thực và mô phỏng, và quyết định những gì nên được đóng gói vào một gói. Sau đó, nó gửi gói đến EntryPoint trong một cuộc gọi handleOps duy nhất, chịu chi phí tính toán và rủi ro lựa chọn.
Các phương thức JSON-RPC nào mà ví sử dụng để gửi và theo dõi UserOperations?
ERC-7769 định nghĩa các phương thức bao gồm eth_sendUserOperation, eth_estimateUserOperationGas, eth_getUserOperationByHash, eth_getUserOperationReceipt, và eth_supportedEntryPoints. Những phương thức này cho phép ví gửi các hoạt động, ước lượng gas và theo dõi sự bao gồm bằng cách sử dụng userOpHash thay vì giả định ngữ nghĩa tx-hash.
EIP-7702 là gì và nó liên quan đến trừu tượng tài khoản như thế nào?
Các nguồn cung cấp mô tả eip 7702 như một hướng đi mới được giới thiệu vào tháng 5 năm 2024 bởi Vitalik Buterin và những người khác để giải quyết các hạn chế của AA cấp ứng dụng. ERC-7769 dự đoán các mạng mà eip 7702 được kích hoạt bằng cách cho phép một UserOperation bao gồm một tuple eip7702Auth, nhưng các nguồn ở đây không chỉ rõ thiết kế cuối cùng hoặc trạng thái triển khai.