# Tìm hiểu sâu ERC-4337

> Tiêu chuẩn Trừu tượng Tài khoản — công nghệ khiến tiền điện tử trở nên đơn giản.

***

## ERC-4337 là gì?

**ERC-4337** là một tiêu chuẩn Ethereum cho **Trừu tượng Tài khoản**. Nó cho phép "ví thông minh" (Tài khoản Thông minh) với chức năng mở rộng, mà không cần thay đổi giao thức Ethereum bản thân nó.

Trước ERC-4337, ví rất đơn giản — một khóa ký một giao dịch, giao dịch được trả bằng ETH. Với ERC-4337, ví trở nên **có thể lập trình**.

***

## Các Thành Phần Chính

### UserOperation

Thay vì một giao dịch thông thường, người dùng tạo một **UserOperation** — một mô tả về những gì họ muốn làm:

```
UserOperation {
  sender         địa chỉ Tài khoản Thông minh
  nonce          Số thứ tự của thao tác
  initCode       Mã để tạo TA (nếu chưa được triển khai)
  callData       Những gì cần thực thi (chuyển khoản, hoán đổi, v.v.)

  callGasLimit           Giới hạn gas cho việc thực thi
  verificationGasLimit   Giới hạn gas cho việc xác minh
  preVerificationGas     Gas trước khi xác minh
  maxFeePerGas           Giá gas tối đa
  maxPriorityFeePerGas   Phí ưu tiên

  paymasterAndData   Dữ liệu Paymaster (nếu được tài trợ)
  signature          Chữ ký của chủ sở hữu
}
```

### EntryPoint

Mục **single entry point** — một hợp đồng thông minh mà:

1. Nhận UserOperations từ Bundler
2. Xác minh chữ ký của chủ sở hữu
3. Thực thi thao tác thông qua Tài khoản Thông minh
4. Thanh toán gas với Paymaster

EntryPoint là cùng một hợp đồng trên tất cả các mạng EVM (địa chỉ được tiêu chuẩn hóa).

### Bundler

Mục **dịch vụ đóng gói** — thu thập UserOperations từ người dùng và gửi chúng lên blockchain như một giao dịch thông thường tới EntryPoint.

### Paymaster

Mục **gas sponsor** — một hợp đồng thông minh có thể trả gas cho người dùng. Ký quyền cho phép trong `paymasterAndData`, và EntryPoint trừ gas từ nó.

***

## Luồng Giao Dịch

```
┌──────────┐     ┌──────────┐     ┌──────────┐     ┌──────────┐
│          │     │          │     │          │     │          │
│  Wallet  │────▶│ Paymaster│────▶│ Bundler  │────▶│EntryPoint│
│  App     │     │          │     │          │     │(on-chain)│
│          │     │          │     │          │     │          │
└──────────┘     └──────────┘     └──────────┘     └──────────┘
                                                        │
  1. Tạo           2. Nhận gas +    3. Gửi tới     4. Xác minh
     UserOp          paymaster       mempool         và thực thi
                     dữ liệu
```

### Chi tiết:

1. **Ứng Dụng Ví** tạo một UserOperation với `callData` (cần làm gì) và `nonce`
2. **Paymaster** thêm dữ liệu gas và chữ ký của nó (`paymasterAndData`)
3. Ứng Dụng Ví **ký** băm UserOp bằng khóa EOA
4. **Bundler** chấp nhận UserOp đã ký và gửi nó lên blockchain
5. **EntryPoint** xác minh chữ ký → thực hiện callData → trừ Paymaster cho gas

***

## Triển khai Lười

Tài khoản Thông minh không cần được tạo trước. Trong giao dịch đầu tiên, `initCode` trong UserOperation chứa lệnh triển khai:

```
Giao dịch đầu tiên:
  initCode = [factory.createAccount(owner, salt)]  ← triển khai TA
  callData = [transfer(to, amount)]                ← và ngay lập tức thực hiện chuyển khoản
```

Bundler và EntryPoint xử lý cả hai hành động trong một giao dịch duy nhất.

***

## CREATE2 — Địa chỉ Tuyệt đối

Địa chỉ Tài khoản Thông minh được tính toán **về mặt toán học**, trước khi tạo:

```
SA_address = CREATE2(factory, keccak256(owner + salt))
```

Cùng tham số = cùng địa chỉ trên **bất kỳ** mạng EVM. Đó là lý do địa chỉ TA của bạn giống nhau trên Base, Arbitrum, Polygon và tất cả các mạng khác.

***

## Thao Tác Gộp

Tài khoản Thông minh có thể thực thi **nhiều cuộc gọi** trong một UserOperation:

```
UserOperation.callData = executeBatch([
  approve(USDC, spender, amount),
  swap(USDC, ETH, amount),
  collectFee(treasury, feeAmount)
])
```

Ba thao tác — một chữ ký, một giao dịch, một lần trả gas.

***

## Lợi ích của ERC-4337

| Thuộc tính                     | Ví Thông thường (EOA) | Tài khoản Thông minh (ERC-4337) |
| ------------------------------ | :-------------------: | :-----------------------------: |
| Thanh toán gas                 |        Chỉ ETH        |     ETH, USDC, hoặc miễn phí    |
| Thao tác gộp                   |         Không         |                Có               |
| Luật tùy chỉnh                 |         Không         |                Có               |
| Khôi phục                      |  Chỉ cụm từ khôi phục |   Khôi phục xã hội (tương lai)  |
| Cùng địa chỉ trên tất cả chuỗi |           Có          |           Có (CREATE2)          |
| Tài trợ                        |         Không         |            Paymaster            |
