Account abstraction là gì? Công cụ hướng tới mass adoption năm 2022

Những người nào theo dõi lâu năm của Vitalik Buterin hay những người ủng hộ Ethereum sẽ không còn mấy xa lạ với cụm từ account abstraction trong khoảng thời gian gần đây. Đây là một khái niệm được Vitalik nhắc tới rất nhiều, không những vậy, Vitalik đã đề xuất một vài proposal dành riêng cho công việc triển khai Account Abstraction và đây được xem là long-term dream của các nhà phát triển trên Ethereum.

Gần đây nhất, 2 dự án đang phát triển của nền tảng Layer 2 là StarkNet và zkSync đã cho ra thông báo sẽ khởi 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 tài khoản Ethereum, đề xuất AA này đã cho phép chuyển đổi các loại tài khoản thành các smart contract với logic riêng của chúng để có thể xác định thế nào là một phiên giao dịch hợp lệ, được trả phí giao dịch và thực hiện việc khởi chạy các giao dịch.

Account abstraction là gì?

Trong thuật ngữ ngành computer science, các account đó được coi là đã được trừu tượng hoá (abstracted), từ đó dẫn đến sự ra đời của cái tên Account abstraction.

Điều này sẽ có nghĩa là không còn trường hợp một tài khoản được sử dụng cho tất cả mục đích. Giống như việc tách nhỏ các “vật thể” đang nắm giữ token (account) ra khỏi “vật thể”  đang được sử dụng để trao quyền/cho phép các giao dịch token (signer).

Ethereum Account là gì?

Ethereum Account được xem như là một thực thể (entity) có số dư ETH và có thể được thực hiện các giao dịch trên mạng lưới của Ethereum. Các tài khoảng này 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 smart contract.

Ethereum có 2 loại tài khoản chính:

  • Externally-owned Accounts (EOA): Được kiểm soát bởi bất kì ai chỉ cần người đó nắm giữ private key.
  • Contract Accounts (CA): Là những smart contract đượ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 account trên đều có những tính năng:

  • Nhận, giữ, gửi ETH và các loại token khác trên mạng lưới Ethereum.
  • Tương tác với các hợp đồng thông minh khác.

Một vài điểm khác biệt cơ bản giữa 2 loại account:

Với Externally-owned:

  • Tạo ra các toàn khoản Externally-owned đơn giản và miễn phí.
  • Có thể khởi tạo các phiên giao dịch.
  • Giao dịch giữa 2 account Externally-owned chỉ có thể là giao dịch ETH/token.

Với Contract:

  • Việc tạo một ra contract sẽ cần có một khoản phí do sử dụng bộ nhớ của mạng lưới
  • Chỉ có thể gửi phiên giao dịch khi nhận được giao dịch
  • Các giao dịch đến từ tài khoản External tới một tài khoản Contract có thể được kích hoạt mã code thực thi nhiều việc khác nhau như giao dịch token, và tạo một hợp đồng mới…

Ethereum Account là gì?

Nhìn chung, cả 2 loại tài khoản đều có 4 thuộc tính:

  • Nonce: Một bộ đếm để biết số lượng giao dịch được gửi từ tài khoản, đảm bảo cho các giao dịch sẽ chỉ được thực hiện 1 lần. Với tài khoản hợp đồng, con số này đại diện cho số hợp đồng được tạo bởi tài khoản này.
  • Balance: Số dư đại diện cho ETH mà tài khoản sở hữu
  • codeHash: 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 hợp đồng có các đoạn mã được lập trình để thực hiện các hành đồng khác nhau. Khác với các đặc tính khác, mã này sẽ không thể bị thay đổi.
  • storageRoot: Còn được gọi là hàm băm lữu trữ (storage hash), được dùng để mã hoá hàm băm của nội dung được lưu trữ trên các tài khoản.

Điều gì sẽ xảy ra nếu người dùng đánh mất private key?

Cơ chế của account và signer về mặt thực tế đã từng bị tin tặc lợi dụng để chiếm đoạt tài sản người dùng trong quá khứ. Một câu hỏi đặt ra là nếu người dùng đánh mất private key thì điều gì xảy ra?

Private key cũng được coi là tài khoản của người dùng, mất private key đồng nghĩa với việc tài khoản bị mất và tất cả token trong tài khoản đó. Với trường hợp này, người dùng sẽ hầu như không còn cách nào để cứu chữa, đã có hàng triệu đô la bị mất hoặc đánh cắp với các lí do liên quan đến private key.

Tất nhiên, người dùng cũng có thể sử dụng các thiết bị ví cứng lưu trữ private key trong những môi trường không có liên kết mạng và viết private key ra giấy. Đây sẽ là biện pháp an toàn nhất cho đến thời điểm hiện tại, tuy nhiên đây vẫn chưa phải là cách tối ưu nhất, sẽ rất khó để tiến tới mass adoption với hàng trăm triệu người dùng với cách thức này.

Chính vì thế, các nhà phát triển của nền tảng Ethereum đang tiến hành phát triển cơ chế Account abstraction để giải quyết các vấn đề trên.

Mục đích của Account abstraction

Mục đích của việc triển khai Account Abstraction là để cải thiện đáng kể trải nghiệm người dùng trong việc tương tác với hệ sinh thái Ethereum qua các ví, DeFi, Dapps, . Account abstraction đang đóng vai trò là một base layer trên Ethereum để có thể quyết định khi nào một tài khoản có thể tự trả phí giao dịch và hình thức trả phí giao dịch diễn ra như thế nào.

Cụ thể, Account Abstraction giúp giải quyết các hạn chế ngăn chặn sự phát triển trong một vài lĩnh vực quan trọng:

  • Tạo ví smart contract sử dụng các loại xác minh chữ ký khác ngoài ECDSA (Schnorr, BLS…).
  • Tạo ví smart contract bao gồm các tính năng như xác minh multisig, khôi phục xã hội (social recovery), giảm rủi ro mất hoặc bị đánh cắp tài sản.
  • Các hệ thống bảo vệ quyền riêng tư như tornado.cash.
  • Nâng cao cải thiện hiệu quả sử dụng phí giao dịch của các DeFi protocols bằng việc ngăn chặn các giao dịch không đáp ứng các điều kiện cao cấp được đưa vào chuỗi.
  • Giúp cho người dùng có thể sử dụng một loại token khác để trả phí thay vì buộc phải sử dụng ETH (ví dụ: chuyển đổi các token đó thành ETH cần để trả phí giao dịch ngay trong giao dịch theo thời gian thực).

Một trong các ví dụ dễ hiểu nhất của Account abstraction có thể được cho là như sau.

Giả sử như người dùng muốn chuyển token sang muốn ví mới vì lí do bảo mật. Sau đó, người dùng lại vô tình gửi toàn bộ số ETH tới ví mới trước. Điều này đồng nghĩa không có ETH, ví cũ sẽ có thể chuyển các token còn lại.

Cách hoạt động của cấu trúc Account abstraction

Theo như giới thiệu của EIP-2938 trên trang chủ Ethereum, EIP-2938 có thể hoạt động bằng việc đưa ra các protocol changes với một loại giao dịch Account Abstraction mới yêu cầu 2 mã opcode mới: PAYGAS và NONCE ; thay đổi quy tắc của mempool và extensions để hỗ trợ cho các ứng dụng nâng cao.

Tuy nhiên với cách làm này tương đối phức tạp, Vitalik đã cho ra các phiên bản phát triển ERC-4337 để đạt được  như những gì EIP-2938 làm được mà không cần đến protocol changes.

Người dùng sẽ gửi các tin nhắn một cách off-chain được gọi là UserOperation, sau đó tin nhắn đó sẽ được thu thập và đóng gói hàng loạt thành giao dịch bởi người đề xuất khối qua các module bundler.

Người đề xuất khối sẽ chịu trách nghiệm lọc các hoạt động để đảm bảo rằng các hoạt động có trả phí được chấp nhận. Sau đó có một mempool riêng cho các UserOperation và các node được liên kết với mempool này để thực thi xác thực chuyên dụng cho ERC-4337 để đảm bảo UserOperation bất kì luôn được trả phí trước khi được chuyển đi.

Cách hoạt động của cấu trúc Account abstraction

Roadmap dự kiến của Account abstraction

Do phiên bản Account Abstraction hoàn thiện nhất đến thời điểm hiện tại là ERC-4337 nên bài viết sẽ tập trung vào lộ trình của ERC-4337.

Trong short-term

  • Đưa ERC-4337 trở thành một sản phẩm hoàn thiện. Mở rộng thêm tính năng tổng hợp chữ ký.
  • Phát triển các ví trình duyệt dễ tiếp cận sử dụng các loại ví ERC-4337.
  • Khởi động các hệ sinh thái ERC-4337 trong giao thức Layer 2, ở đó phí giao dịch rẻ hơn rất nhiều.

Trong medium-term

  • Triển khai các Verkle trees (tương tự với Merkle Tree), thêm các EIPs mới để giảm phí giao dịch.
  • Thêm những giải pháp tuỳ chọn nâng cấp EOA lên ERC-4337.
  • Có thể thêm các crList logic.

Trong long-term

  • Cân nhắc việc áp dụng chuyển đổi bắt buộc từ EOA.

Tổng kết

Account abstraction từ rất lâu đã là giấc mơ chung của cộng đồng các nhà phát triển nền tảng Ethereum. Thay vì các dòng EVM code chỉ được ứng dụng để triển khai logic của các ứng dụng/dapps, nó còn có thể được ứng dụng để triển khai logic của các ví user.

Điều này đã mở ra cánh cửa cho sự sáng tạo trong cách thiết kế ví, mang lại cho người dùng nhiều tính năng quan trọng mới mà không phải quá phụ thuộc vào private key nữa. Cùng chờ đón các sự phát triển của Account abstraction nói chung và ERC-4337 nói riêng trong tương lai nhé!

Comments (No)

Leave a Reply