Với những người theo dõi lâu năm của Vitalik Buterin hay những người ủng hộ Ethereum sẽ không mấy xa lạ với cụm từ account abstraction trong thời gian gần đây. Đây là khái niệm được Vitalik nhắc tới rất nhiều, không chỉ vậy, Vitalik đã đề xuất một vài proposal dành riêng cho việc triển khai Account Abstraction và coi đây là long-term dream của các developers trên Ethereum.
Mới đây nhất, 2 dự án đang phát triển của mảng Layer 2 là StarkNet và zkSync đã đưa ra thông báo sẽ chạy mô hình native account abstraction của riêng họ.
Account abstraction là gì?
Account abstraction (AA) là một loại Ethereum Account, đề xuất AA này cho phép chuyển đổi các loại tài khoản thành các hợp đồng thông minh với logic riêng của chúng để có thể tự xác định thế nào là một giao dịch hợp lệ, trả phí giao dịch và thực hiện việc khởi tạo giao dịch.
Trong thuật ngữ ngành khoa học máy tính, các tài khoản đó được coi là đã được trừu tượng hoá (abstracted), từ đó dẫn đến cái tên Account abstraction.
Điều này có nghĩa là sẽ không còn trường hợp một tài khoản được sử dụng cho tất cả các mục đích. Giống như việc tách các “vật thể” đang nắm giữ token (account) ra khỏi “vật thể” được sử dụng để trao quyền/cho phép giao dịch các token (signer).
Việc này hướng tới việc giúp cho mỗi user có thể có một loại tài khoản phù hợp với nhu cầu cá nhân của họ.
Với những user muốn sử dụng thuật toán xác minh chữ ký khác ngoài ECDSA, sử dụng nhiều key để cấp quyền các giao dịch, thay đổi signer của tài khoản mỗi tuần, họ có thể viết một tài khoản riêng để thực hiện những điều đó.
Trên thực tế, khái niệm Account abstraction không phải quá mới, Vitalik đã đề cập đến AA từ đề xuất EIP-86 của Ethereum từ năm 2017, tuy nhiên do yêu cầu quá nhiều thay đổi từ protocol để thực hiện. Sau đó, Vitalik đã cập nhật thêm các bản cải tiến là EIP-2938 và phiên bản gần nhất là EIP-4337 để có thể dễ dàng triển khai hơn.
Hai dự án đã công bố chính thức áp dụng Account abstraction là các dự án Layer 2 StarkNet và zkSync phiên bản 2.0.
Ethereum Account là gì?
Ethereum Account được định nghĩa là một thực thể (entity) có số dư ETH và có thể thực hiện các giao dịch trên mạng lưới Ethereum. Các account có thể do người dùng điều khiển hoặc cũng có thể được triển khai dưới dạng hợp đồng thông minh.
Ethereum có 2 loại account chính:
- Externally-owned Accounts (EOA): Kiểm soát bởi bất kì ai chỉ cần người đó nắm giữ private key.
- Contract Accounts (CA): Là các hợp đồng thông minh được triển khai trên mạng lưới, kiểm soát bởi các dòng code.
Cả 2 loại tài khoản trên đều có những khả năng:
- Nhận, giữ, gửi ETH và các loại token trên mạng Ethereum.
- Tương tác với các smart contracts khác.
Một vài điểm khác biệt cơ bản giữa 2 loại tài khoản:
Với Externally-owned:
- Tạo các toàn khoản Externally-owned đơn giản và miễn phí.
- Có thể khởi tạo các giao dịch.
- Giao dịch giữa 2 toàn khoản Externally-owned chỉ có thể là giao dịch chuyển ETH/token.
Với Contract:
- Việc tạo một contract sẽ cần có một khoản phí do sử dụng bộ nhớ mạng
- Chỉ có thể gửi giao dịch khi nhận được giao dịch
- Các giao dịch từ tài khoản External tới một tài khoản Contract có thể kích hoạt mã code thực thi nhiều hành động khác nhau như giao dịch token, tạo một contract mới…
4 đặc tính Externally-owned:
Nhìn chung, cả 2 loại tài khoản đều có 4 đặc tính:
- Nonce: Một bộ đếm cho biết số lượng giao dịch được gửi từ tài khoản, đảm bảo các giao dịch sẽ chỉ được thực hiện 1 lần. Với Contract account, con số này đại diện cho số contracts được tạo bởi tài khoản này.
- Balance: Số dư đại diện cho lượng ETH tài khoản sở hữu
- codeHash: Mã hàm băm này được tham khảo từ mã của một tài khoản trên Ethereum Virtual Machine (EVM). Tài khoản Contract có các đoạn mã được lập trình để thực hiện các hoạt động khác nhau. Khác với các trường đặc tính khác, mã này không thể bị thay đổi.
- storageRoot: Hay còn được gọi là hàm băm lữu trữ (storage hash), được sử dụng để mã hoá hàm băm của nội dung được lữu trữ trên tài khoản.