Mục lục
Nội dung này phục vụ mục đích giáo dục, không phải lời khuyên đầu tư hoặc tín hiệu giao dịch.
Trả lời ngắn: Flash loan là thanh khoản được nhận, sử dụng và hoàn trả trong cùng một giao dịch nguyên tử. Nếu số tiền gốc cùng phí không được trả đúng điều kiện trước khi giao dịch kết thúc, các thay đổi trạng thái bị hoàn tác. Hiểu cơ chế này giúp bạn tránh nhầm “không thế chấp” với “tiền miễn phí”.
Đọc xong, bạn sẽ hiểu:
- Vì sao flash loan không tạo một khoản nợ kéo dài như vay thường.
- Cổng nguyên tử quyết định lúc nào giao dịch được chốt hoặc hoàn tác.
- Cách tách tài sản A còn lại với gas trả bằng ETH.
1. Flash loan khác khoản vay thường ở đâu?
a. Một giao dịch, không phải lời hứa trả sau
Khoản vay thường để lại nghĩa vụ sau khi nhận tiền. Flash loan khác: tài sản chỉ được dùng trong một giao dịch nguyên tử — mọi thay đổi cùng được chốt hoặc cùng bị hoàn tác.
Hình dung kho cho mượn hàng trong phòng niêm phong. Cửa chỉ chốt sổ khi cuối quy trình kho nhận đủ hàng. Thiếu thì sổ quay về trạng thái trước; điện và máy đã dùng vẫn tốn phí.
b. “Không thế chấp” không có nghĩa “không hoàn trả”
Tài sản thế chấp được khóa để bảo đảm khoản vay. Flash loan không cần lớp này vì smart contract kiểm tra ngay trong giao dịch. Tiền gốc là lượng đã nhận và vẫn phải hoàn lại cùng phí.
Đây là điều kiện máy móc: đủ thì chốt, thiếu thì hoàn tác. Aave V3 mô tả flashLoanSimple cho phép dùng một tài sản trong một giao dịch, miễn lượng nhận cộng phí được trả; nếu không, giao dịch revert (Aave V3 Pool).
c. Những thành phần chính
Smart contract là chương trình trên blockchain. Liquidity pool, hay kho thanh khoản, giữ tài sản sẵn có. Receiver contract, hay hợp đồng nhận, chạy chuỗi tác vụ. Callback là điểm pool gọi lại hợp đồng nhận; bài này không đi vào code.
Hình 1 — Flash loan chỉ được chốt khi toàn bộ chuỗi tác vụ kết thúc với điều kiện hoàn trả đạt yêu cầu.
2. Cổng nguyên tử và sổ hoàn trả hoạt động ra sao?
a. Sáu bước cần nhìn
Một tuyến đơn giản gồm:
- Hợp đồng gửi yêu cầu tới kho thanh khoản.
- Kho chuyển lượng tài sản đang có.
- Hợp đồng nhận thực hiện các tác vụ đã định.
- Kho kiểm tra số dư và quyền lấy lại tài sản.
- Tiền gốc cùng phí được hoàn trả.
- Giao dịch được chốt (commit).
Nếu kiểm tra thất bại, giao dịch revert, tức hoàn tác trạng thái. Tên hàm, phí và chế độ có thể khác theo phiên bản; sơ đồ này không phải tài liệu gọi hàm.
Hình 2 — Cùng một điểm bắt đầu, số dư cuối quyết định toàn bộ trạng thái được chốt hay quay lại.
b. Sổ tính thành công
Xét số giả định, cùng một token A:
- Nhận từ kho:
1.000 A. - Sau chuỗi tác vụ, hợp đồng có:
1.008 A. - Tiền gốc cộng phí phải trả:
1.001 A. - Số dư còn lại trước gas:
1.008 − 1.001 = 7 A.
Con số 7 A chưa phải lợi nhuận ròng. Gas là chi phí tính toán, thường trả bằng ETH trên Ethereum. Không viết 7 A − gas ETH nếu chưa quy đổi nhất quán.
c. Hòa vốn và thất bại
Nếu số dư cuối là 1.001 A và khoản phải trả cũng 1.001 A, giao dịch có thể đủ điều kiện chốt nhưng số dư A còn lại bằng 0. Sau khi tính gas ETH, kết quả kinh tế có thể âm.
Nếu số dư cuối chỉ 999 A nhưng phải trả 1.001 A, trạng thái bị hoàn tác. Ethereum.org lưu ý rằng khi EVM hoàn tác do hết gas, gas cho phần việc đã làm vẫn bị tiêu thụ (Ethereum.org). Vì thế, “revert nên không mất gì” là sai.
Hình 3 — Sổ đúng giữ tiền gốc, phí và số dư bằng A, còn gas ETH nằm ở một dòng riêng.
3. Công dụng, sai lầm và chồng rủi ro
a. Ba công dụng ở mức khái niệm
Kinh doanh chênh lệch giá có thể dùng thanh khoản tạm thời để mua ở nơi giá thấp và bán ở nơi giá cao. Nhưng chênh lệch nhìn thấy chưa phải số dư cuối; phí, trượt giá và thứ tự khớp có thể xóa nó.
Quản lý vị thế có thể dùng chuỗi nguyên tử để đổi tài sản thế chấp hoặc tái cấu trúc nợ mà không để lại trạng thái dở dang. Thanh lý cũng có thể dùng thanh khoản tạm thời.
Uniswap V2 gọi cơ chế liên quan là hoán đổi nhanh (flash swap): nhận và dùng tài sản trước khi thanh toán, miễn là thanh toán hoàn tất trong cùng giao dịch nguyên tử (Uniswap V2 Whitepaper).
b. Ba sai lầm phổ biến
Sai lầm thứ nhất: flash loan tự sinh lợi nhuận. Thực tế, nó chỉ cung cấp thanh khoản tạm thời; tuyến tác vụ phải tạo đủ số dư cuối.
Sai lầm thứ hai: giao dịch revert thì miễn phí. Trạng thái có thể quay lại, nhưng gas và công sức vẫn là chi phí.
Sai lầm thứ ba: thấy chênh giá là có cơ hội. Trượt giá là chênh giữa lượng dự kiến và thực nhận; price impact, hay tác động giá, là mức chính giao dịch làm giá thay đổi. Cả hai có thể đảo chiều sổ tính.
c. Chồng rủi ro cần kiểm tra
Hợp đồng có thể lỗi, kho có thể thiếu thanh khoản và lệnh đổi có thể trượt giá. Oracle, hay nguồn giá cho smart contract, có thể cập nhật khác kỳ vọng.
Bài trước về MEV cho thấy thứ tự giao dịch phân phối lại giá trị. Revert bảo vệ tính nguyên tử của trạng thái, không bảo vệ khỏi lỗi thiết kế, gas hoặc rủi ro phụ thuộc.
4. Checklist đọc một flash-loan transaction
a. Từ giao thức tới số dư cuối
- Xác nhận chuỗi, giao thức và phiên bản.
- Ghi tài sản, số lượng và số chữ số thập phân.
- Xác định hợp đồng nhận và các giao thức phụ thuộc.
- Ghi số dư đầu, số dư cuối, tiền gốc và phí.
- Tách bên trả gas và đơn vị gas khỏi token vay.
- Kiểm tra sự kiện hoàn trả hoặc trạng thái revert.
- Ghi điều kiện khiến giả thuyết của bạn sai.
b. Câu có điều kiện tốt hơn câu đoán chắc
- Đoán chắc: “Có flash loan thì giao dịch này chắc có lời.”
- Có điều kiện: “Tuyến này còn 7 A trước gas trong demo; chỉ gọi là dương sau khi phí, gas, trượt giá và các khoản trả đều được tính.”
Đứng ngoài khi không biết phí áp dụng, số dư cuối hoặc đường gọi bên ngoài. Dừng và xem lại khi phiên bản giao thức, đơn vị token hoặc nguồn dữ liệu khác giả định.
c. Thẻ rủi ro
Tối thiểu phải kiểm tra sáu ô: phí, thanh khoản, trượt giá, oracle, MEV và lỗi hợp đồng. Một ô chưa rõ đủ để giữ kết luận ở trạng thái “chưa xác định”.
Hình 4 — Cổng hoàn trả chỉ là một điều kiện; toàn tuyến vẫn phụ thuộc giá, thanh khoản, mã và thứ tự.
5. Bài tập 15 phút: Sổ nguyên tử
a. Công cụ và cách làm
Dùng Google Sheets hoặc máy tính miễn phí. Không kết nối ví, viết mã hay gửi giao dịch thật. Tạo các cột: trường hợp, lượng vay, số dư cuối, khoản phải trả, số dư trước gas và kết quả.
b. Mẫu đối chiếu đã điền
| Trường hợp | Lượng vay | Số dư cuối | Phải trả | Kết quả |
|---|---|---|---|---|
| Thành công | 1.000 A | 1.008 A | 1.001 A | Chốt; còn 7 A trước gas |
| Hòa vốn | 1.000 A | 1.001 A | 1.001 A | Chốt; còn 0 A; gas ETH tách riêng |
| Thất bại | 1.000 A | 999 A | 1.001 A | Hoàn tác; gas có thể vẫn mất |
Trong 15 phút, đánh dấu dòng nào cùng đơn vị A và dòng nào thuộc ETH. Sau đó thay số dư cuối bằng 1.000 A: khoản phải trả vẫn 1.001 A, nên thiếu 1 A và nhánh hoàn tác được kích hoạt.
c. Kết quả cần đạt
Bạn cần nói được: “điều kiện kỹ thuật là trả đủ; điều kiện kinh tế còn phải tính gas và rủi ro.” Nếu phí, thanh khoản, chữ số thập phân, tuyến gọi hoặc giá đổi, bảng cũ hết hiệu lực. Dừng ở mô phỏng, chưa dùng tiền thật.
6. Tổng kết
a. Năm ý chính
- Flash loan dùng và hoàn trả thanh khoản trong cùng một giao dịch nguyên tử.
- Không cần thế chấp không có nghĩa được miễn hoàn trả tiền gốc và phí.
- Thiếu khoản phải trả thì trạng thái hoàn tác, nhưng gas có thể vẫn bị tiêu thụ.
- Số dư token A và gas ETH phải được ghi thành hai đơn vị riêng.
- Phí, thanh khoản, trượt giá, oracle, MEV và mã đều có thể làm tuyến thất bại.
b. Câu hỏi tự kiểm tra
- Flash loan khác khoản vay thường ở đâu?
- Vì sao 7 A trước gas chưa phải lợi nhuận ròng?
- Khi số dư cuối 999 A nhưng phải trả 1.001 A, chuyện gì xảy ra?
- Khi nào nên đứng ngoài kết luận?
c. Gợi ý đáp án
Xem gợi ý câu 1
Flash loan nhận, dùng và hoàn trả trong cùng giao dịch; khoản vay thường để lại nghĩa vụ sau lúc nhận tiền. → xem mục 1.
Xem gợi ý câu 2
Gas được trả riêng bằng ETH và còn có các chi phí/rủi ro khác chưa trừ. → xem mục 2.
Xem gợi ý câu 3
Điều kiện hoàn trả thiếu 2 A nên trạng thái bị hoàn tác; gas có thể vẫn bị tiêu thụ. → xem mục 2.
Xem gợi ý câu 4
Đứng ngoài khi thiếu phí, số dư cuối, đơn vị, đường gọi hoặc nguồn dữ liệu đáng tin. → xem mục 4.
d. Thuật ngữ cần nhớ
| Thuật ngữ | Giải thích ngắn |
|---|---|
| Flash loan | Thanh khoản dùng và hoàn trả trong một giao dịch |
| Giao dịch nguyên tử | Mọi thay đổi cùng chốt hoặc cùng hoàn tác |
| Smart contract | Chương trình chạy trên blockchain |
| Liquidity pool | Kho tài sản chung đang sẵn có |
| Receiver contract | Hợp đồng nhận tài sản và chạy tác vụ |
| Callback | Điểm pool gọi lại hợp đồng nhận |
| Tiền gốc | Lượng tài sản đã nhận và phải trả |
| Phí | Khoản trả thêm theo quy tắc giao thức |
| Revert | Hoàn tác thay đổi trạng thái |
| Gas | Chi phí tính toán để xử lý giao dịch |
e. Nguồn tham khảo
- Aave V3 Docs — Pool flashLoan và flashLoanSimple
- Ethereum.org — Gas and fees
- Ethereum.org — Smart contracts
- Uniswap V2 Whitepaper — Flash Swaps
Bài trước: MEV là gì? #12. Bài tiếp theo: Liquidity War là gì? #14, dự kiến ở /education/liquidity-war.
Nội dung này phục vụ mục đích giáo dục, không phải lời khuyên đầu tư hoặc tín hiệu giao dịch. Smart contract, trượt giá, phí và gas có thể gây mất vốn.
Bài tiếp theo