67 lượt xem

Vụ tấn công dựa trên flash loan lần thứ 2 trong tuần


Vụ tấn công dựa trên flash loan lần thứ 2 trong tuần (vụ lần trước là Bunny).
Vậy flash loan là gì? Những ai có thể thực hiện flashloan? Thực hiện flashloan như thế nào
Flash loan nghĩa là vay nóng mà không cần thế chấp bất cứ tài sản gì. Và nó cần phải nóng đến mức cả vay và trả ngay trong 1 giao dịch.
Vậy thì vay rồi trả ngay trong 1 giao dịch thì có lợi ích gì?

Có thể sử dụng để làm bot arbitrage, có thể kiếm lời và ăn chênh lệch bằng flashloan. Vay ở sàn DEX này rồi bán ở DEX kia để để ăn chênh lệch giá (nếu có), ngay sau đó trả lại số tiền đã vay lúc đầu.
Tất cả diễn ra trong 1 giao dịch, không cần vốn (chỉ cần cần vốn để thanh toán phí gas giao dịch và phí swap cho DEX nếu có).

Hoặc thực hiện các vụ tấn công vào các smartcontract và kiếm lời từ vài triệu đô đến hàng trăm triệu đô như vụ Bogged hay Bunny.

Những ai có thể thực hiện flashloan: Flashloan có vẻ không sinh ra để giành cho người dùng bình thường. Vì để sử dụng flashloan thì cần phải sử dụng smartcontract, để thực hiện các nghiệp vụ sinh ra lợi luận sau khi vay và trước khi trả lại tiền.

Các smartcontract LP của uniswap, pancake swap,.. đều có thể thực hiện flashloan.
Hãy cùng tìm hiểu hàm swap của các DEX nổi tiếng, Ta sẽ biết cách để thực hiện flashloan như thế nào.
Ảnh minh họa của bài viết là source code smart contract LP của pancakeswap.

Cách thức hoạt động của hàm swap:

1.Kiểm tra xem LP đủ tiền để chuyển hay không
2.Nếu đủ, chuyển tiền cho địa chỉ “to”
3.Nếu tham số data có length >0 thì call back lại function pancakeCall của “to”. (**CHÚ Ý CHỖ NÀY**)
4. Tính toán lại số dư thực tế sau khi chuyển đi.
5. Nếu số dư 2 token trong LP thỏa mãn điều kiện (tăng giảm số dư 2 token và phí giao dịch 0.25%) thì transaction thành công. Nếu không thỏa mãn thì revert (hoàn nguyên lại giao dịch).
Luồng hoạt động của transaction swap bình thường:
1. Pancake router sẽ chuyển X token A từ sender đến LP contract
2. Pancake router call function swap của LP contract (với “to” là sender)
3. LP contract sẽ chuyển token B đến to
4. LP contract tính toán lại số dư, thấy thỏa mãn các điều kiện(vì đã nhận được token A ở bước 1.)==> transaction thành công. Sender chuyển token A cho LP contract và nhận lại token B.
Luồng hoạt động nếu là flash loan
1. Contact flashloan call thẳng đến swap của LP contract với “to” là địa chỉ của chính contract flashloan(hoặc 1 contract khác chuyên phụ trách logic flashloan) và set parameter “data” có length>0
2. LP contract sẽ chuyển token A, B đến Flashloan contract, bao nhiêu cũng được, miễn là có đủ số dư
3. LP contract call ngược lại đến function pancakeCall của Flashloan contract (nếu không có sẽ tự nhảy vào fallback function của Flashloan).Chính là chỗ mình đã node lưu ý ở trên)
Lúc này, Flashloan có thể làm gì đó tùy thích, như swap chỗ này chỗ kia, farming, stake,……
Sau đó trước khi kết thúc function, chỉ cần chuyển trả lại token cho LP kèm theo 0.25% phí swap là được
4. LP contract tính toán lại số dư, thấy thỏa mãn các điều kiện==> transaction thành công.

(Theo Fb Nguyễn Việt Dinh)

Thẻ tìm kiếm:

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *