Tổng quan
Có thể trước đây bạn đã nghe về những trường hợp mất tài sản chỉ vì một sai lầm ngớ ngẩn chính là quên seed phases (1 bộ những từ khóa ngẫu nhiên giúp khôi phục ví). Hay là bạn cảm thấy vô cùng khó chịu vì giao dịch trên mạng lưới Ethereum thì phải có sẵn ETH bên trong ví. Thậm chí đôi khi ví mình bị hack mà chẳng biết nguyên nhân đến từ đâu, khiến bạn lo ngại về tính an toàn của mạng lưới blockchain. Và còn vô vàn vấn đề khác.
Tuy nhiên, tất cả là vì bạn chỉ đang sử dụng một tài khoản “bình thường” mà không có sự đổi thay. Công nghệ đang chạy đua, và bạn chắc chắn cũng cần thay đổi.
Sự thật là để giải quyết những vấn đề trên, từ năm 2017, Vitalik Bunterin (nhà sáng lập Ethereum) đã đề xuất ra một giải pháp tiên tiến hơn nhưng tốc độ triển khai vẫn còn khá chậm chạp và chưa phổ biến, chính là Account Abstraction (AA). Vậy AA là gì? Ứng dụng của nó ra sao? Hãy cùng GFS tìm hiểu qua bài viết này nhé!
Tuy vậy, trước hết hãy xem qua Account blockchain là gì?
Account blockchain là gì?
Có phải điều đầu tiên xuất hiện trong đầu bạn là:
“account là tài khoản giao dịch chứ gì nữa”
“ai muốn giao dịch thì chả phải tạo tài khoản”
“nó cũng giống như account Facebook thôi”
“tải ví về rồi tạo account thôi“…
Nhưng về bản chất, nó không đơn giản như thế. Có 2 loại tài khoản đang được sử dụng trong blockchain là:
- Externally Owned Accounts (EOA)
- Contract Account (CA)
Tài khoản bình thường bạn đang sử dụng là Externally Owned Accounts, hiểu nôm na là tài khoản được sở hữu bên ngoài, mà bên ngoài ở đây chính là bên ngoài mạng lưới blockchain. Vì vậy các ví như Trust Wallet, Metamask,… có thể hiểu chính là cửa ngõ nối đến blockchain nhưng không thực sự là 1 phần của blockchain.
Cũng vì đặc điểm trên mà tài khoản của bạn có những hạn chế như giao dịch cần có phí giao dịch là token quản trị của mạng lưới đó, không thể chỉnh sửa theo nhu cầu và không phi tập trung như bạn nghĩ vì bị giám sát và kiểm soát bởi chính nền tảng ví (ví dụ Metamask có thể block bạn khỏi những Dapp bị cấm, block người dùng ở một số quốc gia…).
Tài khoản EOA có chức năng:
- Nhận, giữ, gửi các loại token và token quản trị
- Tương tác với các smart contract khác
Contract Account thì ngược lại, đó là các smart contract, và là một phần của mạng lưới. Tuy nhiên các Contract Account hiện tại đang chỉ được sử dụng như là một nơi chứa token cho các Dapp. Mỗi khi được đưa lên mạng lưới, nó sẽ không thể chỉnh sửa. Các Contract Account chỉ có thể nhận message từ EOA và sau đó thực hiện các lệnh được code sẵn mà không thể gửi message đi.
Vậy nhìn chung, EOA là account cho người dùng, còn CA là account cho Dapp. Trong bài viết này, chúng ta sẽ chỉ đào sâu hơn về EOA để làm rõ những đặc điểm của một account và ưu nhược điểm của chúng, trước khi tìm hiểu về Account Abstraction.
Các đặc điểm của EOA
Một EOA có 3 đặc điểm sau:
- Số dư (balance), thể hiện số lượng token có trong tài khoản của bạn
- Nonce, một bộ đếm số lượng giao dịch từ tài khoản, để đảm bảo mỗi giao dịch là duy nhất
- Khi một EOA được tạo và liên kết với một mạng lưới, sẽ có một địa chỉ ví cụ thể xuất hiện để xác định danh tính của bạn trên mạng lưới
Trạng thái blockchain và trạng thái EOA chỉ có thể được chỉnh sửa thông qua các giao dịch. Các giao dịch này sẽ đến từ bên ngoài (EOA) và được xử lý bởi máy ảo (ví dụ đối với Ethereum là EVM). Máy ảo sẽ quy định lượng token quản trị phải trả cho miner để xử lý giao dịch trước khi được ghi nhận vào blockchain (đối với EVM là ETH, điều này rất khó để thay đổi, nên không có cách nào khác cho EOA là phải trả ETH). Sau đó trạng thái EOA (balance) và blockchain sẽ được cập nhật.
Có 1 điểm cần chú ý đối với tài khoản EOA là số dư hiển thị trong tài khoản của bạn chỉ là số dư cập nhật từ sổ cái blockchain chứ bạn không thực sự sở hữu chúng (không có token nào được chuyển vào ví của bạn)
Bên cạnh đó, cơ chế mật mã học của EOA, được tạo thành từ signer, hay còn gọi là cặp khóa. Cặp khóa bao gồm 2 thành phần là public key và private key.
Private key dùng để kí những message (hay những giao dịch) của bạn, và public key là để xác định chữ kí được kí đúng bởi private key tương ứng. Tức là giao dịch đó được thực hiện bởi bạn và chỉ bạn và chỉ bạn mà thôi. Theo cách đơn giản nhất mà mình có thể hiểu thì public key là một phần địa chỉ ví trên mạng lưới, còn private key là mật khẩu/ seed phase đăng nhập vào EOA.
Với cách tiếp cận này của các ví truyền thống, concept của một account (một nơi lưu trữ token) và concept của signer (một cách để cho phép thực hiện giao dịch) hoàn toàn là một. Nếu bạn mất hoặc bị lộ private key, tài sản trong account của bạn cũng tan thành mây khói.
Mặc dù EOA khá đơn giản và thân thiện với người dùng, nhưng vì nó không phải là một phần của blockchain, bạn không thể thay đổi bất cứ điều gì với địa chỉ ví trên mạng lưới của mình. Nó chỉ đơn giản là một dãy số không thể tương thích với những yêu cầu của bạn và có số dư có thể bị lấy đi bất cứ lúc nào.
Tất nhiên, bạn có thể sử dụng ví lạnh thay cho ví nóng với tài khoản EOA như mô tả bên trên. Ví lạnh sẽ giúp bạn thực sự sở hữu crypto và private key được lưu trữ offline chứ không cần nhập online giúp bạn giảm rủi ro bị lộ mật mã quan trọng này, và nếu có bị lộ thì cũng không lo mất tài sản nếu hacker không cầm được ví lạnh trên tay. Nhưng phương pháp này không phù hợp để áp dụng đại trà (mass adoption) cho hàng trăm triệu người dùng.
Thế giới blockchain đang thay đổi và dần đi vào cuộc sống, chúng ta rõ ràng cần những giải pháp account gần gũi hơn với mạng lưới, phi tập trung và an toàn hơn. Đó là lí do mà Account Abstraction với smart contract wallet ra đời.
Account Abstraction là gì?
Account Abstraction là một user account nhưng được xây dựng dưới dạng một smart contract (biến account thành một phần của blockchain), không chỉ có thể nhận, rút, gửi token và message mà còn có thể chỉnh sửa theo ý muốn để phù hợp với nhu cầu. Điều này có nghĩa không còn trường hợp một-tài-khoản-cho-mọi-trường-hợp, mà concept account đã được tách bạch với concept signer. Yêu cầu duy nhất là chúng cần tuân thủ một giao diện với các phương pháp xác thực và thực hiện giao dịch cụ thể.
- Bạn có muốn sử dụng một phương pháp xác minh chữ kí khác ngoài ECDSA không? Đã có Account Abstraction.
- Bạn có muốn sử dụng nhiều khóa để ủy quyền giao dịch thay vì chỉ 1 private key không? Đã có Account Abstraction.
- Bạn có muốn thay đổi signer của mình hàng tuần không? Đã có Account Abstraction.
Trong khoa học máy tính, người ta gọi tài khoản đó đã được abstracted (trừu tượng hóa), do đó có thuật ngữ: Account Abstraction. Và giờ đây, tài khoản ví của bạn hiện hữu trên blockchain, chứ không còn chỉ là một dãy số địa chỉ vô tri vô giác.
Ngoài ra bạn còn có thuật ngữ smart contract wallet, bởi vì muốn sử dụng AA cũng cần có một giao diện ví, và ví đó là smart contract wallet.
Để dễ hiểu thì:
- Account Abstraction = EOA + Smart contract
- Smart contract wallet (ví mà ta sẽ sử dụng) ∈ Account Abstraction
- Smart contract wallet = on-chain wallet
- EOA = off-chain wallet
Về bản chất, AA là một smart contract, tức là một tiêu chuẩn, chứ không phải là một ứng dụng. Đối với người dùng bình thường, muốn khởi tạo AA thì cần một giao diện ví. Giống như tiêu chuẩn của NFT là ERC-721, muốn mint NFT thì có thể sử dụng sàn OpenSea.
Tác dụng của Account Abstration
Trái ngược với EOA, Account Abstraction cho phép khả năng lập trình, cá nhân hóa ở mức độ rất cao. Qua đó mở ra một cánh cửa rộng lớn trong thiết kế ví và giao thức người dùng, xử lý được nhiều vấn đề cụ thể có thể xảy ra. Nhìn chung, Account Abstraction có thể:
- Mở rộng khả năng nâng cấp.
- Việc triển khai các smart contract wallet giúp cải thiện trải nghiệm người dùng về lưu trữ và khôi phục private key (ví dụ: khôi phục xã hội – social recovery, multisig).
- Mở rộng khả năng thanh toán phí gas bằng các mã thông báo khác ngoài ETH.
- Mở rộng khả năng sửa đổi public key và private key của các tài khoản.
- Bổ sung, sửa đổi các điều kiện không liên quan đến mật mã học trong giao dịch. Ví dụ có thể cài đặt thời gian hết hạn của giao dịch, thứ tự của giao dịch,…
- Sự đa dạng trong các hệ thống xác minh chữ ký (ví dụ: ECDSA, Schnorr, BLS), bao gồm cả các thuật toán chữ ký an toàn post-quantum (ví dụ: Lamport, Winternitz).
Từ đó đem lại vô vàn lợi ích về bảo mật lẫn trải nghiệm người dùng khi sử dụng smart contract wallet.
Về mặt bảo mật
- Khôi phục khóa cá nhân: Trong trường hợp khóa cá nhân bị mất hoặc bị xâm phạm, smart contract wallet có thể thêm các cơ chế để thay thế khóa kiểm soát tài khoản một cách an toàn. Không còn lo lắng về việc mất seed phase của bạn. Các cơ chế đó có thể bao gồm như sử dụng nhiều khóa cá nhân thay vì chỉ 1 khóa để kích hoạt tài khoản (ví dụ 2/3 khóa hoạt động mới có thể đăng nhập vào tài khoản, tăng độ bảo mật), hoặc là khôi phục xã hội (nhờ sự hỗ trợ của các người dùng khác, được gọi là guardians để khôi phục tài khoản).
- Giám sát gian lận (fraud monitoring): Kiểm tra mọi giao dịch để đảm bảo giao dịch đó tuân thủ các quy tắc bảo mật đã xác định và ngăn người dùng gửi tài sản đến địa chỉ lừa đảo hoặc smart contract không chính xác. Ví dụ người dùng có thể thiết lập một danh sách các địa chỉ lừa đảo để không bao giờ chuyển tiền vào chúng, hoặc là thiết lập một lượng tiền tối đa có thể chuyển, thời gian giao dịch… Một EOA sẽ không bao giờ làm được, vì nó không có khả năng can thiệp vào giao dịch blockchain.
- Phát triển chữ kí bảo mật: Tại bất kỳ thời điểm nào, smart contract wallet có thể thay đổi sơ đồ chữ ký của thành sơ đồ chữ ký đơn giản hơn, hiệu quả hơn, tối ưu chi phí gas hơn. Hoặc thậm chí sử dụng cơ chế bảo mật của các thiết bị iOS và Android để biến điện thoại di động của bạn thành một ví cứng.
Về mặt trải nghiệm người dùng
- Đa giao dịch (multicall): Nhóm nhiều giao dịch thành một, bạn sẽ không cần phải ký quá nhiều lần để làm những gì bạn muốn. Thao tác nhanh hơn, dễ dàng hơn và an toàn hơn khi tương tác với các Dapp.
- Thanh toán phí gas bằng bất kỳ token nào: Người dùng sẽ không bao giờ phải lo lắng về việc thanh toán phí bằng một token nhất định. Với Account Abstraction, người dùng sẽ có thể thanh toán bằng bất kỳ tài sản nào mà họ sở hữu. Ví dụ trong ví của bạn không có ETH mà chỉ có BTC, bạn vẫn có thể sử dụng BTC để làm phí gas trên mạng Ethereum. Điều này được thực hiện nhờ cơ chế hoạt động smart contract của AA, cho phép swap BTC sang ETH để tương thích với quy định vận hành của EVM.
- Khóa phiên (session keys): Với chúng, smart contract wallet có thể tạo trải nghiệm liền mạch bằng cách cho phép người dùng phê duyệt trước các giao dịch dựa trên một bộ tiêu chí. Họ có thể cài đặt một khoảng thời gian nhất định, lượng gas tối đa, khối lượng giao dịch tối đa của một token nhất định hoặc một chức năng xác định trên một hợp đồng cụ thể. Ví dụ, người dùng cài đặt một lệnh mua BTC lúc 2h sáng khi họ đi ngủ mà không cần thức dậy để phê duyệt giao dịch.
Đây chỉ là một vài khả năng điển hình được AA tạo ra, còn các trường hợp sử dụng thực tế là vô tận. Khả năng mở rộng, bảo mật và một trải nghiệm tuyệt vời – đó là điều cần thiết để đưa blockchain lại gần người dùng hơn, phi tập trung hơn và cá nhân hóa hơn.
—–> Xem thêm: Trải nghiệm ưu việt với ví account abstraction
Tình hình triển khai Account Abstraction
Account Abstraction dù không phải là một khái niệm mới, nhưng tình hình triển khai nó vẫn đang còn khá mới và chậm chạp. Chúng ta hãy cùng xem xét trên 3 nền tảng sau:
- L1 Ethereum
- L2 Ethereum
- Smart contract wallet
L1 Ethereum
Vì Account Abstraction là một hợp đồng thông minh, nên vì vậy để triển khai được nó cần nâng cấp mạng lưới, đông thời xây dựng tiêu chuẩn mới. Thực tế, AA đã được tích hợp trên mạng Near từ những ngày đầu phát triển (2020), tuy nhiên, trên các blockchain EVM, mà Ethereum là nhà tiên phong, nó mới đang chỉ được phát triển với tên gọi là ERC-4337. Từ lâu, AA đã được xem là “giấc mơ của cộng đồng developer” trên Ethereum.
AA đã có một hành trình dài trên Ethereum và ở thời điểm hiện tại là đề xuất EIP-4337. Bởi vì các lớp vận hành chính của Ethereum đang rất bận với The Merge, nên EIP-4337 cố gắng đạt được những mục tiêu chính cho AA mà không tác động quá nhiều đến mạng lưới:
- Đạt được các yếu tố quan trọng của AA: cho phép người dùng sử dụng smart contract wallet có chứa logic xác minh tùy ý làm tài khoản chính của họ thay vì EOA. Loại bỏ hoàn toàn mọi nhu cầu đối với EOA.
- Sự phi tập trung:
- Cho phép bất kỳ bundler (hay còn là miner có nhiệm vụ xác thực các bundle transactions (các giao dịch được đóng gói lại thành một giao dịch lớn) của người dùng smart contract wallet) tham gia vào quá trình bao gồm các hoạt động của người dùng AA.
- Làm việc với tất cả các hoạt động diễn ra trên mempool công khai; người dùng không cần biết địa chỉ giao tiếp trực tiếp (vd IP) của bất kỳ tác nhân cụ thể nào.
- Tránh các giả định về độ tin cậy (trust assumption) đối với bundler.
- Không yêu cầu bất kỳ thay đổi đồng thuận Ethereum nào: Sự phát triển lớp đồng thuận Ethereum đang tập trung vào The Merge và sau đó là các tính năng định hướng khả năng mở rộng và có thể không có bất kỳ cơ hội nào cho các thay đổi giao thức tiếp theo trong một thời gian dài. Do đó, để tăng cơ hội được chấp nhận nhanh hơn, đề xuất này tránh những thay đổi về sự đồng thuận của Ethereum.
- Cố gắng hỗ trợ các trường hợp sử dụng khác:
- Các ứng dụng bảo vệ quyền riêng tư.
- Đa hoạt động nguyên tử (mục tiêu tương tự như EIP 3074).
- Thanh toán phí gas bằng mã thông báo ERC20, cho phép nhà phát triển trả phí cho người dùng của họ và các trường hợp sử dụng giao dịch được tài trợ giống EIP 3074.
—–> Xem đầy đủ quá khứ và sự phát triển của Account Abstraction tại đây.
L2 Ethereum
Khác với L1 quá cồng kềnh, trên L2, việc triển khai Account Abstraction đơn giản hơn nhiều.
Cả 2 nền tảng dẫn đầu zk rollup layer 2 là StarkNet and zkSync, đã thông báo họ sẽ ra mắt native Account Abstraction, tức là AA sẽ tương thích hoàn toàn tự nhiên trên 2 mạng lưới này.
Trước đó optimistic rollup layer 2 Optimism cũng đã có dự tính về Account Abstraction. Trong phiên bản đầu tiên, họ cũng đã triển khai một dạng AA cơ bản bằng cách giới thiệu ba chức năng mới trong trình quản lý thực thi, cung cấp cho người dùng smart contract wallet có thể nâng cấp. Mặc dù rất hứa hẹn, chúng đã bị loại bỏ trong phiên bản thứ hai vì những nỗ lực tương thích hoàn toàn với EVM và vì những lo ngại về bảo mật.
Smart contract wallet
Như đã nói ở trên, AA là một tiêu chuẩn smart contract, nên đối với người dùng bình thường, nếu muốn khởi tạo AA cần một giao diện ví trung gian. Hiện nay đã có một số ví nổi bật như Argent X, Gnosis Safe, Loopring wallet… giúp bạn có những tài khoản ví “hiện đại” và có nhiều tính năng bằng cách tận dụng các đặc tính của AA như social recovery, multicall, multisigs…
Dưới góc nhìn của mình, với tình hình phát triển công nghệ của mạng lưới blockchain, cũng như định hướng tương lai của Ethereum và các Layer 2, sự phát triển smart contract wallet dường như là điều tất yếu. Nếu các ví truyền thống không bắt kịp xu hướng này, sự thay thế có thể chỉ là vấn đề thời gian.
—–> Xem thêm: Top 10 dự án account abstraction tiềm năng
Tổng kết
Như vậy qua bài viết này, bạn đọc đã được tìm hiểu về bản chất của account EOA mà bạn đang sử dụng và lý do tại sao nó kém tiện dụng, cũng như không thể nâng cấp các tính năng. Với Account Abstraction và smart contract wallet, giờ đây account của bạn đã có nhiều chức năng hơn, an toàn hơn, và tiện dụng hơn. Còn chần chờ gì nữa mà không tải thử một smart contract wallet và trải nghiệm những điều tuyệt vời đó!
Nếu bạn thích bài viết này hay có những suy nghĩ khác về Account Abstraction, hãy bình luận bên dưới cho chúng mình biết nhé!