Flash Loan คืออะไร?

Chainlink Thailand
Chainlink Community
4 min readFeb 16, 2023

นิยาม : Flash loan เป็นสินเชื่อประเภทหนึ่งที่ผู้ใช้สามารถยืมสินทรัพย์โดยไม่มีหลักประกัน และชำระคืนสินทรัพย์ที่ยืมภายในธุรกรรมบล็อกเชนเดียวกัน

Flash loan เป็นสินเชื่อที่ไม่มีหลักประกันประเภทหนึ่ง (uncollateralized loan) โดยให้ user สามารถยืมสินทรัพย์ได้โดยไม่มีหลักประกันตราบใดที่ transaction ที่ยืมสินทรัพย์ และ transaction การชำระคืนเกิดขึ้นภายใน transaction เดียวกัน

Ecosystem ของ Decentralize finance (DeFi) เริ่มต้นจากการสร้างบริการทางการเงินรูปดั้งเดิมขึ้นมาใหม่บน blockchain เช่น ตลาดกู้-ยืม (Lending and Borrowing), ตลาดซื้อ-ขาย (Exchange), ตลาด future และ option เมื่อ​ ecosystem เติบโตขึ้น service ใหม่ๆ ก็ถูกสร้างขึ้น ซึ่งเป็น service ที่เกิดขึ้นได้ด้วยคุณสมบัติเฉพาะของ blockchain และความ permissionless เป็นสิ่งที่เรียกว่า Smart contract application

เช่นเดียวกับแนวคิด yield farming เพราะ flash loan เป็นพื้นฐานทางการเงินใหม่ที่น่าตื่นเต้น flash loan ช่วยให้ user สามารถยืมสินทรัพย์จาก liquidity pool โดยไม่ต้องมีหลักประกันล่วงหน้า ตราบใดที่จำนวนเงินของสภาพคล่องที่ยืม (borrowed amount) บวกกับค่าธรรมเนียม (fee) เล็กน้อยถูกชำระคืนไปยัง liquidity pool ภายใน transaction เดียวกัน หากผู้กู้ (borrower) ไม่ชำระเงินกู้ใน transaction เดียวกัน transaction ทั้งหมดจะถูกย้อนกลับ (reverted) ตั้งแต่ทั้งการยืมครั้งแรกและการดำเนินการใดๆ ระหว่างนั้น นวัตกรรมใหม่นี้เพิ่มโอกาสการเข้าถึงเงินทุนสำหรับ user สำหรับ use-case ที่หลากหลาย ในขณะเดียวกันก็รับประกันความปลอดภัยของเงินต้นของ Liquidity pool บน network

ในบทความนี้ เราสรุปกลไกการทำงานของ flash loan, นำ flashloan มาใช้ทำอะไร และสิ่งที่ DeFi สามารถทำได้เพื่อลดความเสี่ยงจากการถูกโจมตีที่อาจเกิดขึ้นด้วย service ทางการเงินแบบใหม่นี้

Flash Loan ทำงานอย่างไร?

ในกรณีของสินเชื่อที่มีหลักประกัน ผู้กู้จำเป็นต้องวางเงินหลักประกัน (collateral) เพื่อกู้ยืมเงิน หากผู้กู้ไม่ทำตามเงื่อนไขของการกู้ ผู้ให้กู้ยังคงได้รับเงินกู้คืนได้โดยเก็บจากหลักประกันของผู้กู้ Flash loan ไม่มีเงื่อนไขแบบนี้ การกู้จะเกิดขึ้นก็ต่อเมื่อผู้กู้ชำระเงินคืนภายใน transaction เดียวกัน ดังนั้นการผิดนัดชำระ (default) ในการกู้แบบ flash loan จึงเป็นไปไม่ได้ เนื่องจากถ้าผิดนัดชำระการทำ transaction ทั้งหมดจะย้อนกลับ

ในช่วงเวลาสั้นๆ เพียงแค่ภายใน transaction เดียว flash loan สามารถเปลี่ยนใครก็ตามให้กลายเป็นคนมีเงินทุนมหาศาลได้ สภาพคล่องมูลค่าหลายร้อยล้านดอลลาร์ที่ได้จาก flash loan สร้างโอกาสสำหรับการ arbitrage, การ liquidate, การเปลี่ยนหลักประกัน และกาสร้าง position แบบ leverage แต่ flash loan ก็ยังสร้างความเสี่ยงโดยเฉพาะอย่างยิ่งสำหรับ ecosystem ของ financial protocol ใหม่ๆ ที่มีการกระจายอำนาจและความปลอดภัยในระดับที่แตกต่างกัน ความเสี่ยงเหล่านี้ smart contract developer ควรทำความเข้าใจ เพื่อให้สามารถสร้าง application ที่มีประสิทธิภาพมากขึ้นสำหรับ user

Flash Loan ใช้สำหรับทำอะไร?

การใช้ flash loan ที่เป็นที่นิยมมากที่สุดคือใช้สำหรับการ arbitrage คือการใช้เงินทุนจำนวนมากหาผลตอบแทนจากความไร้ประสิทธิภาพของตลาด เมื่อสินทรัพย์ชนิดเดียวกันในแต่ละตลาดมีอัตราแลกเปลี่ยนที่แตกต่างกัน arbitrageur สามารถทำกำไรโดยการทำให้ตลาดกลับเข้าสู่ราคาดุลยภาพอีกครั้ง และปรับปรุงสภาพคล่องแก่ตลาด DeFi

อีก use-case หนึ่งคือการ liquidation โปรโตคอล Lending ส่วนใหญ่สร้างแรงจูงใจแก่ 3rd party liquidator ที่สามารถได้รับ rewad สำหรับการ liquidate การกู้ที่ไม่เป็นไปตามข้อกำหนดที่มีอัตราส่วนการค้ำประกันเกิดเกณฑ์ที่กำหนด การเข้าถึงเงินทุนจำนวนมากด้วย flash loan ทำให้การกู้ที่เสี่ยงต่อการผิดนัดชำระจะถูก liquidate และ Lending protocol ยังคงปลอดภัย

Flash loan ยังสามารถนำมาใช้ในการ collateral swap เทคนิคที่ user ชำระเงินที่กู้มาด้วยเงินที่ยืมมาและเปิดการเงินกู้ใหม่ทันทีโดยมีสินทรัพย์อื่นเป็น collateral และ flash loan ยังสามารถลดความซับซ้อนของการเปิด leverage position หรือจะให้โอนเงินกู้ข้าม protocol อย่างราบรื่นก็สามารถทำได้

Flash Loan และการโจมตีราคา Oracle

Flash loan เป็นที่ถกเถียงอย่างมาก เพราะนอกเหนือจาก use-case ข้างต้นแล้ว flash loan ยังสามารถใช้เป็นเงินทุนในการโจมตีประเภทต่างๆ บน DeFi ได้เช่นกัน เมื่อช่องโหว่เปิดเผยโดยผู้ไม่ประสงค์ดี ผู้โจมตีสามารถ manipulate บาง function ของ protocol โดยใช้เงินทุนจาก flash loan และทำกำไรโดยดูดเงิน user ออกมาจาก smart contract ของ protocol ยิ่งกว่านั้น transaction ของ flash loan จะย้อนกลับ (revert) เมื่อแผนของผู้โจมตีล้มเหลว hacker จึงไม่ต้องรับความเสี่ยงด้านเงินทุนจำนวนมากด้วยตัวเอง

สิ่งสำคัญคือต้องแยกแตกต่างของสิ่งที่เกิดขึ้นนี้ก่อน สิ่งที่ flash loan ทำไม่ใช้ปัญหาโดยตัวมันเอง เนื่องจาก flash loan เกิดข้ึนมาเพื่อช่วยจัดหาแหล่งเงินทุน ปัญหาที่แท้จริงคือช่องโหว่ของ protocol ต่างๆ อาจถูกเปิดเผยหลังการโจมที่ที่ผู้โจมตีใช้ flash loan เป็นเครื่องมือ ในระยะยาว flash loan อาจเป็นประโยชน์ต่อความปลอดภัยของ ecosystem เนื่องจาก protocol engineer ต้องพิจารณาถึงความเสี่ยงการโจมตีที่อาจเกิดขึ้น flash loan จะทำให้เหห็นความเสี่ยงของจำนวนเงินที่มากที่กระทบกับ function ของ protocol โดยให้โอกาสการเข้าถึงสภาพคล่องจำนวนมากในทันที

แม้ว่าวิธีการและขอบเขตของแต่ละการโจมตีจะแตกต่างกัน แต่สาเหตุการโจมตีด้วย flash loan ส่วนใหญ่สำเร็จนั้นมีสาเหตุมาจาก manipulate บน protocol ที่ใช้ Oracle ดึงราคา spot จาก Decentralized exchange (DEX) เพียงที่เดียว ตามที่อธิบายไว้ในบทความคุณภาพข้อมูลสำหรับ DeFi Smart Contract ที่เคยเขียนไว้ protocol ที่ดึงราคาจากแหล่งข้อมูลเพียงที่เดียวสามารถถูกโจมตีได้ง่ายโดยผู้ไม่ประสงค์ดีที่มีเงินทุนจำนวนมาก ซึ่งสามารถ manipulate ตลาดด้วยการซื้อ-ขาย volume ขนาดใหญ่เพียงครั้งเดียว DeFi protocol จะต้องเพิ่มการกระจายอำนาจ (decentralization) และการต้านทานการเซ็นเซอร์ (censorship resistance) Oracle ราคาที่รวมศูนย์ (แหล่งข้อมูลเดียว) ขัดกับวัตถุประสงค์ที่ว่ามานี้โดยเป็นความเสี่ยงที่เป็น single point of failure

ต่อไปนี้จะเป็นตัวอย่างของการโจมตีด้วย flash loan บน DeFi ประเภท Lending protocol โดยใช้ Oracle ดึงราคา spot จาก Decentralized exchange (DEX) เพียงที่เดียว

1) ผู้โจมตีกู้ Token A จำนวนมากจาก protocol ที่ให้บริการ flash loan

2) ผู้โจมตีขาย Token A เป็น Token B บน DEX (ทำให้ราคา spot ของ Token A ลดลง และราคาส spot ของ Token B เพิ่มขึ้นบน DEX)

3) ผู้โจมตีนำ Token B ที่ซื้อไว้วางเป็น collateral บน Lending protocol ที่ใช้ราคา spot จาก DEX ข้างต้นเป็น feed ราคาเพียงที่เดียว และทำการกู้ Token A ปริมาณที่มากกว่าที่ควรจะได้ตามปกติ เนื่องจากราคาของ Token ถูก Manipulate

4) ผู้โจมตีใช้ Token A ที่ได้มาส่วนหนึ่งชำระเงิน flash loan คืน และเก็บ Token ส่วนต่างที่เหลือไว้ ซึ่งถือเป็นกำไรที่ได้จากการ manipulate ราคาที่ดึงข้อมูลจาก Oracle

5) เมื่อราคา spot ของ Token A และ B บน DEX นั้นถูก arbitrage กลับไปเป็นราคาตลาดจริง position ของ Lending protocol นั้นจะกลายเป็นมีหลักประกันต่ำกว่าความเป็นจริง (undercollateralized)

ขั้นตอนของผู้โจมตีที่ทำการ manipulate ราคาด้วย flash loan

เนื่องจากผู้โจมตีสามารถใช้ flash loan ในการ manipulate ราคาบน Exchange ที่ Protocol ใดๆ ใช้ Oracle ที่ดึงราคา spot บน exchange นั้นเพียงที่เดียวได้ ทำให้ผู้โจมตีสามารถเพิ่มราคาของ Token ที่ใช้เป็นหลักประกัน (collateral) และลดมูลค่าของ Token ที่ยืมมา ทำให้ผู้โจมตีสามารถยืมเงินได้มากกว่าที่ควรจะทำได้ในกรณีปกติ ส่งผลให้ protocol อยูาในภาวะที่ไม่สามารถ liquidate ได้เต็มจำนวนเนื่องจากหลักประกันมีมูลค่าน้อยกว่าหนี้ การโจมตีนี้อาจเกิดขึ้นได้ภายใน transaction เดียว แต่สามารถทำซ้ำได้หลายครั้ง (ทำหลาย transaction) ซึ่งจะยิ่งเพิ่มความเสียหายกับ protocol

นอกจากนี้ เมื่อดึงราคา Price feed จาก Exchange แบบ On-chain เพียงที่เดียวจะให้การครอบคลุมตลาดที่จำกัดมาก เนื่องจากเป็นตัวแทนของกิจกรรมการซื้อ-ขายจาก Exchange เพียงที่เดียวเท่านั้น ส่งผลให้ Protocol ที่ทำการดึงราคา spot จาก DEX นั้นๆ มีความเสี่ยงที่จะถูก manipulate ราคา หาก volume การซื้อ-ขายโยกย้ายไปที่ exchange อื่น หรือผู้ที่มีเงินทุนจำนวนมากทำการ manipulate ราคาของ exchange นั้นชั่วคราว โดยเฉพาะอย่างยิ่งสำหรับสินทรัพย์ที่มีสภาพคล่องต่ำซึ่งงถูกใช้เป็น collateral มากขึ้นใน Lending protocol

ดังนั้น การโจมตีรูปแบบนี้จึงสามารถป้องกันได้ด้วย Oracle แบบกระจายอำนาจ ที่มาพร้อมความครอบคลุมตลาดที่เหมาะสม

Chainlink Oracle ป้องกันการโจมตีของ Flash Loan ได้อย่างไร?

เพื่อให้ครอบคลุมตลาดอย่างเต็มที่ Chainlink Price Feed ทำงานโดยเครือข่ายของ node แบบกระจายศูนย์ที่ไม่ได้รวบรวมข้อมูลราคาจากแหล่งเดียว แต่มาจากบริษัทรวบรวมข้อมูลอิสระหลายแห่ง (Data aggregation firm) Data aggregator เหล่านี้ติดตามทุก environment ของการซื้อ-ขายที่มีสภาพคล่อง ทั้ง Cexntralized exchange และ Decentralized exchange เพื่อสร้างราคาเฉลี่ยถ่วงน้ำหนักจาก volume (volume-weighted average pricing ) ที่สะท้อนราคาของสินทรัพย์ทั้งตลาด Data aggregator จะคำนึงถึงความแตกต่างที่หลากหลายของแต่ละ exchange และกรองค่าผิดปกติ (outlier) ของตลาดอย่างต่อเนื่อง เช่น flash crash และ wash trading

หากคุณต้องการลงรายละเอียดถึงข้อดีของการใช้ Chainlink Price Feed สำหรับ DeFi สามารถอ่านบทความ Chainlink Price Feed รักษาความปลอดภัย ecosystem ของ DeFi อย่างไร?

เนื่องจาก flash loan เกิดขึ้นในกรอบเวลาเพียง transaction เดียวบน Network เท่านั้น การ manipulate ใดๆที่เกิดขึ้นจะถูกย้อนกลับ (revert) เมื่อสิ้นสุด transaction เนื่องจาก Chainlink Price Feed รวบรวมข้อมูลราคาแบบ off-chain จากแหล่งข้อมูลหลายที่ และเผยแพร่ข้อมูลไปยัง On-chain แบบ asynchronous ดังนั้นการเกิด flash loan จะไม่มีผลกระทบต่อข้อมูลราคาของ Oracle ที่ทำการรวบรวมมา

เพื่อป้องกันการโจมตีด้าน Price Oracle จาก flash loan ขอแนะนำให้ Smart contract developer หลีกเลี่ยงการดึงข้อมูลราคาจาก DEX ที่ถูก manipulate ได้ง่าย และใช้ Chainlink Price Feed แทน ซึ่งเป็นแหล่งข้อมูลที่ผ่านการตรวจสอบมาแล้ว ช่วยให้มั่นใจว่า DeFi จะได้รับข้อมูลราคาที่รวบรวมมาวึ่งสะท้อนถึงกิจกรรมการซื้อขายทั้งตลาด และยังคงสามารถเป็นข้อมูลที่ดีได้แม้จะเกิด Flash loan ซึ่งช่วยป้องกันจากการโจมตี Price Oracle รูปแบบต่างๆ

Flash loan ไม่มีผลกับ Chainlink Price Feed

สรุป

Flash loan เป็นบริการทางการเงินที่ซับซ้อนบน DeFi ซึ่งจะปลดล็อค financial application ที่ซับซ้อน และลดอุปสรรคในการเข้าร่วมตลาด แม้ว่า flash loan จะถูกใช้ในการโจมตี DeFi แต่ flash loan ก็เป็นเพียงเครื่องมือทางการเงินสำหรับ developer และ user เท่านั้น Flash loan ไม่ได้สร้างช่องโหว่ แต่เปิดเผยช่องโหว่ที่มีอยู่แล้วใน protocol โดยช่องโหว่ที่พบมากที่สุดคือจากการออกแบบ Price oracle ที่ผิดพลาด

Chainlink เป็น Decentralized Oracle Network ที่ช่วยให้ DeFi ทนทานต่อการปลอมแปลงมากขึ้น โดยเฉพาะ function ที่สำคัญในการดึงข้อมูลตลาดตามแบบ real-time ซึ่งจะช่วยสนับสนุนการทำ transaction อื่นๆ บน Web3 application การมุ่งเน้นแนวทางความปลอดภัย (security-first approach) จะช่วยให้ DeFi สามารถทดลองปรับให้เข้ากับความเสี่ยงใหม่ๆ ได้, รักษาความเชื่อมั่น และสามารถ scale ได้อย่างยั่งยืนสำหรับ user หลายพันล้านคนและมูลค่าหลายล้านล้านดอลลาร์

คู่มือเรื่องวิธีประเมินความปลอดภัยของ Blockchain Oracle

หากคุณเป็น Developer และต้องการให้ application ของคุณเชื่อมต่อกับ Chainlink Price Feed อย่างรวดเร็ว โปรดไปที่ developer documentation และร่วมพูดคุยทางเทคนิคใน Discord หากคุณต้องการพูดคุยเรื่องการ integration ในเชิงลึกโปรดติดต่อที่นี่

--

--