
Hãy bắt đầu với những khái niệm cơ bản trước. Để hiểu về Account Abstraction, trước tiên chúng ta cần hiểu tài khoản là gì khi nói về Ethereum.
Ethereum có hai loại tài khoản khác nhau:
- Contract Accounts (Tài khoản hợp đồng):
- Externally Owned Accounts (EOA – Tài khoản do người sở hữu từ bên ngoài):
Bạn có thể nghĩ về tài khoản hợp đồng như là mã (smart contract) sống trên blockchain và xác định cách tài khoản đó hoạt động, còn EOA thì giống như người sở hữu (mặc dù một người có thể có nhiều EOA).
Có lẽ bạn đã quen thuộc với EOA. Ví MetaMask của bạn chẳng hạn là một EOA. EOA được tạo thành từ cặp khóa mật mã: khóa công khai và khóa riêng tư điều khiển các hoạt động của tài khoản.
Tuy nhiên, tài khoản hợp đồng không có khóa riêng tư. Chúng là các smart contract được kiểm soát bởi mã logic bên trong chúng; chúng không được kiểm soát bởi người dùng.
Ý chính ở đây là mã xác định tài khoản hợp đồng thực hiện những gì, và người dùng kiểm soát những gì EOA thực hiện. Điều này quan trọng vì smart contract có khả năng thực hiện bất cứ điều gì mà bạn có thể viết trong mã, trong khi EOA chỉ có thể ký giao dịch một cách đơn giản.
Thực tại về EOA
Hiện tại, việc thực hiện các hành động trên blockchain thường chậm và mất công. Mỗi khi bạn muốn ghi thông tin mới lên blockchain, bạn phải ký một giao dịch từ EOA của mình để thực hiện điều đó.
Khi bạn quen với quy trình này, nó trở thành trải nghiệm tiêu chuẩn.
Tuy nhiên, đối với người dùng mới, đó là một cơn ác mộng.
Quá trình bắt đầu từ đầu và tương tác với một ứng dụng web3 lần đầu tiên là đủ để khiến bất kỳ ai cũng không muốn tham gia vào không gian này, và đó chỉ là khởi đầu.
Dưới đây là trải nghiệm từng bước mà một người dùng mới trải qua để thực hiện hành động đầu tiên trên một ứng dụng phi tập trung từ EOA mới tạo:
- Tạo ví (EOA): Người dùng mới phải tạo một ví (EOA) cho mình. Điều này bao gồm tạo cặp khóa công khai và khóa riêng tư để kiểm soát tài khoản.
- Lưu trữ khóa riêng tư một cách an toàn: Người dùng phải đảm bảo rằng khóa riêng tư được lưu trữ một cách an toàn và không bị mất, vì nó rất quan trọng để duyệt và xác nhận các giao dịch sau này.
- Nạp tài khoản với Ether: Trước khi có thể tham gia vào mạng Ethereum, người dùng phải có Ether (đơn vị tiền tệ của Ethereum) trong tài khoản của họ để trả phí giao dịch và thực hiện các hành động.
- Tìm ứng dụng dApps: Người dùng phải tìm một ứng dụng phi tập trung (dApp) mà họ muốn sử dụng và tương tác.
- Kết nối với ví và mạng: Người dùng phải kết nối ví của mình với ứng dụng dApp và chọn mạng Ethereum để gửi các giao dịch.
- Xác nhận giao dịch: Mỗi lần thực hiện một hành động trên dApp, người dùng phải xác nhận giao dịch trên ví của họ bằng cách ký điều này, điều này mất thời gian và làm cho trải nghiệm người dùng trở nên khó khăn.
Như bạn có thể thấy, quá trình này có nhiều bước phức tạp và thậm chí có thể khiến người dùng mới cảm thấy lo lắng về việc tương tác với blockchain. Điều này đòi hỏi sự hiểu biết kỹ thuật và gây khó khăn trong việc tiếp cận và sử dụng ứng dụng phi tập trung.
EOA rất rủi ro
Bạn có thể đã quen thuộc với việc có người quen mất quyền truy cập vào EOA của họ do vô tình chia sẻ hoặc mất quyền truy cập vào khóa riêng tư. Dưới đây là một số ví dụ:
Hàng triệu đô la tiền điện tử bị ‘mất’ sau khi người đàn ông qua đời chỉ với mật khẩu.
Người đàn ông sở hữu 321 triệu đô la bitcoin nhưng không thể truy cập vì đã mất mật khẩu.
Mức trách nhiệm mà bạn phải chịu với EOA truyền thống là rất cao và đáng lo ngại.
Thậm chí còn có một câu nói nói về điều này: “không giữ khóa riêng tư của bạn, thì tiền điện tử không phải của bạn”; ám chỉ việc nếu có bất kỳ ai khác từng sở hữu khóa riêng tư của bạn (như trên một sàn giao dịch tập trung), họ có quyền kiểm soát số tiền của bạn; điều này đã được chứng minh hàng ngàn lần trong quá khứ.
Sự thật khắc nghiệt là khóa riêng tư dễ bị mất và không thể phục hồi.
EOA có nhiều hạn chế
Như chúng ta đã đề cập trước đó, EOA có khả năng hạn chế.
Từ EOA của bạn, bạn thường thực hiện một trong hai hành động thông thường sau:
Gửi giao dịch để chuyển mã thông báo (token) cho một EOA khác.
Gửi giao dịch thực thi một chức năng trên một tài khoản hợp đồng.
Ai sở hữu khóa riêng tư có thể ký các tin nhắn và khởi tạo bất kỳ giao dịch nào mà EOA có thể thực hiện. Biết khóa riêng tư của một EOA cho phép bạn thực hiện mọi thứ mà EOA có khả năng làm được.
EOA không bao giờ đạt được sự thông dụng rộng rãi
Trong thế giới thực, mất thẻ tín dụng không đồng nghĩa bạn hoàn toàn bị mất hết.
Có các quy định cho phép bạn thực hiện các hành động như đặt giới hạn thanh toán, ngừng giao dịch, phát hiện gian lận, chuyển quỹ sang một tài khoản mới, chỉ cho phép chuyển tiền trong một số điều kiện nhất định, v.v.
Trong web3, nếu bạn mắc một sai lầm, toàn bộ tài khoản của bạn sẽ bị xâm phạm và không thể phục hồi.
Vậy Account Abstraction là gì?
Account Abstraction là đề xuất cho phép người dùng sử dụng ví hợp đồng thông minh (smart contract wallet) thay vì EOA (Externally Owned Account). Điều này hoàn toàn loại bỏ bất kỳ yêu cầu nào cho người dùng sử dụng EOA để thực hiện giao dịch.
Nhưng tại sao lại cần thay đổi này? Vì sao tài khoản hợp đồng lại có những khả năng mà EOA không có?
Các smart contract có khả năng vô hạn và linh hoạt hơn nhiều so với EOA. Mỗi tài khoản hợp đồng thông minh có thể xác định các quy tắc và cấu hình khác nhau bên trong mã của nó.
Dưới đây là một số ví dụ về các trường hợp sử dụng:
- Kiểm soát quyền hạn: EOA sử dụng khóa riêng tư để cấp quyền truy cập đầy đủ vào mọi thứ. Trong khi đó, tài khoản hợp đồng có thể xác định danh sách các cấp độ quyền hạn khác nhau. Ví dụ, yêu cầu 3 trong 5 người ký phê duyệt một giao dịch.
- Giao dịch hàng loạt: Mỗi hành động riêng lẻ từ EOA đều yêu cầu một chữ ký riêng biệt. Tài khoản hợp đồng có khả năng gom nhóm các giao dịch lại với nhau; ví dụ, phê duyệt việc chuyển mã thông báo và chuyển mã thông báo trong cùng một hoạt động.
- Khôi phục tài khoản: Mất hoặc tiết lộ khóa riêng tư đồng nghĩa với việc hoàn toàn mất kiểm soát với ví tiền. Trong tài khoản hợp đồng, không có khóa riêng tư. Bạn có thể viết bất kỳ mã logic nào cho phép bạn phục hồi số tiền trong ví.
- Giới hạn giao dịch: Bất kỳ giao dịch nào mà ví của bạn ký đều sẽ thực hiện. Bạn không thể hạn chế bất kỳ điều gì. Trong tài khoản hợp đồng, bạn có thể viết bất kỳ mã logic nào để kiểm soát cách chuyển tiền. Ví dụ, một hàm để tạm dừng các giao dịch đến các địa chỉ khác trong khi bạn khôi phục tài khoản của mình.
Việc sử dụng tài khoản hợp đồng thông minh có tiềm năng cải thiện nhiều khía cạnh của trải nghiệm người dùng và mang lại nhiều tính linh hoạt hơn so với việc sử dụng EOA truyền thống.
Đây chỉ là một số khả năng mà các tài khoản hợp đồng cung cấp hơn so với các EOA truyền thống. Điều quan trọng là; các tài khoản hợp đồng là mã.
Điều này có nghĩa là bất cứ điều gì bạn có thể viết trong mã, thì đều có thể thực hiện được trong một tài khoản hợp đồng.
Lịch sử các đề xuất Account Abstraction
Tuy nhiên, tại sao chúng ta chưa thực hiện điều này từ trước đến nay? Trước khi trả lời câu hỏi đó, hãy tóm lược về lịch sử của các đề xuất về Account Abstraction từ năm 2016 và tìm hiểu tại sao EIP-4337 khác biệt.
Năm 2016: EIP-86 – Đề xuất cho phép người dùng tạo “tài khoản hợp đồng” (account contracts) có thể thực hiện bất kỳ kiểm tra chữ ký/nhận dạng số nào mà họ muốn thay vì sử dụng cơ chế hiện tại được lập trình cứng trong xử lý giao dịch.
Năm 2020: EIP-2938 – Đề xuất tạo một loại giao dịch mới có tên gọi “AA_TX_TYPE”. Giao dịch thuộc loại này được gọi là “giao dịch AA”.
Năm 2020: EIP-3074 – Đề xuất cho phép người dùng ủy quyền kiểm soát của EOA của họ cho một hợp đồng thông minh. Điều này cho phép bất kỳ EOA nào cũng có thể hoạt động như một ví hợp đồng thông minh mà không cần triển khai một hợp đồng.
Không một trong những đề xuất này đã được kết hợp vào Ethereum. Chúng hiện đều nằm trong danh mục “stagnant” (bất động); có nghĩa là chúng đã không hoạt động trong một khoảng thời gian 6 tháng hoặc lâu hơn.
Phần lý do cho những đề xuất này không được kết hợp là bởi vì chúng yêu cầu thay đổi các giao thức tầng đồng thuận (consensus-layer protocol) của mạng Ethereum.
Cho đến năm 2021, khi EIP-4337 được đề xuất; Account Abstraction trên Ethereum không cần sự thay đổi tầng đồng thuận!
EIP-4337: Account Abstraction sử dụng Alt Mempool
EIP-4337 giới thiệu một đối tượng “giả lập giao dịch” được gọi là UserOperation; một cấu trúc mô tả giao dịch được gửi thay mặt người dùng.
User Operations được đưa vào một “alt mempool” (bể chờ thay thế), một nơi lưu trữ thông tin về các giao dịch chưa được xác nhận.
Các node trên mạng Ethereum có thể chọn làm “bundler” (người gói giao dịch). Bundlers nhận các user operation từ mempool và gói chúng thành một giao dịch duy nhất gọi là “bundle transaction” (giao dịch gói).
Sau khi tạo ra giao dịch gói, bundler gửi nó đến một hợp đồng thông minh “singleton” toàn cầu được gọi là “EntryPoint” (cổng vào). Trên toàn bộ blockchain chỉ có một hợp đồng thông minh EntryPoint.
Bundler gọi một hàm trên hợp đồng thông minh EntryPoint có tên là “handleOps” (xử lý hoạt động).
Hàm này nhận giao dịch gói và gọi một hàm đặc biệt trên mỗi tài khoản: validateUserOp. Mỗi ví hợp đồng thông minh phải triển khai hàm này.
validateUserOp nên xác minh chữ ký của hoạt động và trả phí nếu tài khoản coi hoạt động này hợp lệ, trước khi tiếp tục thực hiện hoạt động.
Mỗi ví hợp đồng thông minh cũng phải triển khai một hàm thứ hai, có thể đặt tên là “execute”, để thực sự thực hiện hoạt động được gửi vào từ hợp đồng EntryPoint.
Một luồng trình đơn giản của quá trình này được thể hiện dưới đây:
Tại sao điều này quan trọng?
Tài khoản hợp đồng là bước tiến tiếp của ví tiền cần thiết để cải thiện đáng kể trải nghiệm người dùng của web3.
Các khả năng thật sự là vô tận cho những gì thay đổi này mang lại:
Tạo ví tiền cho người dùng của bạn bên trong ứng dụng khi họ đăng ký.
Session keys cho các trò chơi web3 (cho phép bất kỳ giao dịch X nào trong khoảng thời gian Y mà không cần ký chữ ký cho mỗi giao dịch).
Ví đội nhóm để sử dụng các ứng dụng phi tập trung với các cấp độ quyền khác nhau.
Tóm lại
Trong bài viết này, chúng ta đã trình bày:
Các khái niệm cơ bản về tài khoản và giao dịch trên Ethereum.
Lý do tại sao EOA không đáp ứng được trải nghiệm người dùng web3.
Account Abstraction giải quyết vấn đề đó và hoạt động như thế nào.
Account Abstraction là một sự đổi mới cho web3 và mang các ứng dụng phi tập trung đến đại chúng chính thống.
Khả năng sử dụng smart contract như ví tiền mang đến vô hạn cơ hội và EIP-4337 là đề xuất mới nhất về Account Abstraction không yêu cầu thay đổi tầng đồng thuận.
CryptoViet tổng hợp

Trả lời