Triangular arbitrage on Uniswap v3

กลาง5/7/2024, 10:38:35 AM
การอาร์บิเทรจสามเหลี่ยมเป็นกลยุทธ์ในการซื้อขายแลกเปลี่ยนสกุลเงินดิจิทัล โดยใช้ความแตกต่างในอัตราแลกเปลี่ยนภายในตลาดเดียวหรือในตลาดหลายแห่ง

นำมาใช้ด้วยการสลับหลายระดับ

การอัตราแลกเปลี่ยนสามเหลี่ยมเป็นกลยุทธ์ในการซื้อขายแลกเปลี่ยนเครื่องมือการเงินดิจิทัล โดยใช้ประโยชน์จากความแตกต่างของอัตราแลกเปลี่ยนในตลาดเดียวหรือในตลาดหลายแห่ง วิธีนี้ประกอบด้วยการซื้อขายที่ต่อเนื่องสามครั้ง: แลกเปลี่ยนเหรียญดิจิตอลเริ่มต้นเป็นเหรียญดิจิตอลที่สอง สองเป็นสาม และในที่สุด เหรียญดิจิตอลที่สามกลับไปเป็นเหรียญดิจิตอลเริ่มต้น โดยมีจุดมุ่งหมายเพื่อทำกำไร ดังนั้น คำว่า "สามเหลี่ยม" นำมาเชื่อมถึงกระบวนการสามขั้นตอน

ภาพที่สร้างขึ้นโดย AI

วิธีการทำงาน

ใน DEX โอกาสสำหรับการอะบิทราจสามเหลี่ยมมักเกิดจากความแตกต่างใน Likelihood ข้ามสระว่ายน้ำหลายราย พวกเขามักจะอยู่ไม่นาน เฉพาะเพียงไม่กี่วินาที หรือน้อยกว่านั้น โดยที่ตลาดสั่งสลับราคาให้ทันที ดังนั้น อัลกอริทึมการซื้อขายแบบอัตโนมัติที่จัดการด้วยการดำเนินการซื้อขายอย่างรวดเร็วถูกใช้เพื่อใช้ประโยชน์จากความแตกต่างที่ผ่านไปได้อย่างรวดเร็ว ในการช่วยในการเข้าใจแนวคิด นี่คือตัวอย่าง:

การธุรกรรมสามเหลี่ยมด้านบนเริ่มต้นจาก 01 - การซื้อ 1 wBTC ด้วย $60,000 USDC ตามด้วย 02 - การซื้อ 16 WETH ด้วย 1 wBTC และจบด้วย 03 - การขาย 16 WETH ด้วย $66,000 USDC ที่สุดของการเดินทางเราจะได้รับ $6,000 USDC เป็นกำไร

การนำไปใช้กับ Mutihop Swaps บน Uniswap v3

มีสองรูปแบบของการสว็อปหลายระดับที่ใช้งานได้บน Uniswap v3: ขาเข้าที่แน่นอนและขาออกที่แน่นอน ตามที่ชื่อแสดง ขาเข้าตั้งคายาสต์โทเคนที่ตรงกับจำนวนที่ต้องการเป็นอินพุทของการสว็อปและเมื่อสิ้นสุดลงแล้วจะได้รับโทเคนที่ตรงกับจำนวนนั้นตามอัตราแลกเปลี่ยน; ขาออกต้องการจำนวนที่ระบุไว้เป็นจำนวนที่ต้องการเป็นเอาท์พุท จำนวนโทเคนเพียงพอเพื่อใช้เป็นอินพุทสามารถทำให้การสว็อปสำเร็จตามอัตราแลกเปลี่ยน

ด้วยลักษณะธุรกิจของการอาร์บิเทรจมุม เราอยากจะเหมาะกับโทเค็นที่มีจำนวนที่แน่นอนเป็นอินพุท และสลับมันเป็นเหรียญอื่น ๆ และจากนั้นสลับกลับมาให้เป็นโทเค็นเดิมเพื่อได้กำไรตามที่เราต้องการ

address constant SWAP_ROUTER_02 = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45;

address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

address constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;

address constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;

contract MultiHopSwap { using SafeERC20 for IERC20;ISwapRouter02 private constant ROUTER = ISwapRouter02(SWAP_ROUTER_02);uint256 private constant MAX_INT =   115792089237316195423570985008687907853269984665640564039457584007913129639935;function swapExactInputMultiHop(uint256 amountIn) external {   IERC20(USDC).safeApprove(address(ROUTER), MAX_INT);   IERC20(WETH).safeApprove(address(ROUTER), MAX_INT);   IERC20(DAI).safeApprove(address(ROUTER), MAX_INT);   bytes memory path =       abi.encodePacked(USDC, uint24(3000), WETH, uint24(3000), DAI, uint24(3000), USDC) ;   ISwapRouter02.ExactInputParams memory params = ISwapRouter02       .ExactInputParams({       path: path,       recipient: address(this),       amountIn: amountIn,       amountOutMinimum: 1   });   ROUTER.exactInput(params); }}

เราใช้ Router02 ที่ 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45บนเครือข่ายหลัก

SafeERC20 เป็นชั้นป้องกันที่สร้างขึ้นจากธุรกรรม ERC20 ทําให้มั่นใจได้ถึงการโต้ตอบที่ปลอดภัยกับโทเค็น ERC20 ภายในสัญญาของเรา ซึ่งแตกต่างจากฟังก์ชัน ERC20 ทั่วไป SafeERC20 ช่วยเพิ่มความปลอดภัยโดยการตรวจสอบค่าผลตอบแทนบูลีนของการทํางาน ERC20 หากการดําเนินการใด ๆ ล้มเหลวธุรกรรมจะถูกเปลี่ยนกลับลดความเสี่ยง นอกจากนี้ SafeERC20 ยังรองรับโทเค็น ERC20 ที่ไม่ได้มาตรฐานซึ่งไม่มีค่าผลตอบแทนบูลีน ให้ความยืดหยุ่นและความทนทานในการจัดการโทเค็น ด้วยการอนุมัติจํานวนเงินสูงสุดเราอนุญาตให้ Router02 โอนโทเค็นในนามของเรา โดยไม่ต้องทําเช่นนั้นคุณคาดว่าจะเห็นข้อความแสดงข้อผิดพลาด STF ซึ่ง STF หมายถึงการดําเนินการจะถูกเปลี่ยนกลับโดยต้องมีการยืนยันในฟังก์ชัน TransferHelper.safeTransferFrom

ต่อไปเราจะมองว่าเส้นทางสามเหลี่ยมถูกกำหนดอย่างไร:

bytes memory path = abi.encodePacked(USDC, uint24(3000),

WETH, uint24(3000),                                DAI,  uint24(3000),                                USDC) ;

ผ่าน abi.encodePacked, Solidity บีบอัดค่าหลาย ๆ ค่าโดยไม่เพิ่มการเติมพื้นที่ใด ๆ มันต่อกันข้อมูลทวิภาคของแต่ละพารามิเตอร์ ไม่ยากที่จะเข้าใจว่าพารามิเตอร์จะทำให้สวาปพร้อมค่าธรรมเนียมระหว่างคู่สกุลเงินดิจิตัล เส้นทางเริ่มต้นจาก USDC และหยุดที่ USDC โดยคาดหวังกำไร จากนั้นถูกห่อด้วย ExactInputParams พร้อมกับพารามิเตอร์ที่จำเป็นอื่น ๆ และนำเข้าไปยังเราเตอร์สำหรับการสวาปหลายรอบ

การทดสอบ

เราใช้เทคนิคเดียวกันโดยforking mainnet with impersonationเมื่อเครดิต 10 USDC ถูกยืนยันว่าเข้าบัญชีคอนแทรค เรียกใช้การสลับหลายระดับได้ดังต่อไปนี้:

it("ดำเนินการสลับหลายรอบ", async () => {balance = await swap.tokenBalance(USDC);console.log(`ยอดคงเหลือปัจจุบันของ USDC = ${balance}`);console.log(`กำลังสลับ ${initialFundingHuman} USDC`);const tx = await swap.swapExactInputMultiHop(ethers.parseUnits(initialFundingHuman, DECIMALS));receipt = await tx.wait();balance = await swap.tokenBalance(USDC);console.log(`ยอดคงเหลือปัจจุบันของ USDC = ${balance}`);expect(balance).not.equal(0);});

ผลการทดสอบควรดูเหมือนด้านล่าง:

ยอด USDC ของปลาวาฬ: 170961218210457n

เริ่มการปลอมแปลง

การปลอมตัวเสร็จสิ้น

ยอดเงินปัจจุบันของ USDC = 100000000

การแลกเปลี่ยน 100 USDC

ยอดคงเหลือปัจจุบันของ USDC = 91677417

หลังจากกระโดดผ่านข้อบังคับ เราเสียเงิน — โดยเจตนาที่เส้นทางกับอัตราสกอต ไม่ได้เป็นที่ชื่นชอบกับเรา แต่คุณจะได้เข้าใจถึงวิธีการอาร์บิเทรจสามเหลี่ยมควรทำอย่างไรโดยใช้การแลกเปลี่ยนหลายระดับบน Uniswap v3

การอะบิตราจารย์สามเหลี่ยมทำดุลให้กู้ยืมแฟลช

ฉันไม่ได้บอกแหล่งเงินทุนที่มีอิทธิพลที่สุดในระบบ DeFi คือ Flash loan? มันไม่จําเป็นต้องมีความคิดสร้างสรรค์มากสําหรับคุณในการสร้างเงินกู้ Flash ได้รับทุนสนับสนุนกลยุทธ์การซื้อขายการเก็งกําไรสามเหลี่ยมโดยใช้ทั้งเงินกู้ Flash และการแลกเปลี่ยน multihop ที่ฉันสอนเกี่ยวกับ ตรรกะรวมสามารถอธิบายได้ด้วยแผนภาพลําดับที่อัปเดตดังนี้:

Sequnce diagram for Flash loan funded triangular arbitrage on Uniswap v3 (Ignored some operations for simplicity)

Check out my source code for both Flash loan and Multihop swaps implemented on Uniswap v3 — https://medium.com/cryptocurrency-scripts/flash-loan-on-uniswap-v3-84bca2bfe255 digest the sequence diagram and do you own homework to get the combined the smart contracts done.

ข้อคิดถึงความกำไร

First thing we want to looked at is the path that comprises of the sequence of the 3 trades: To be profitable, they must be the right 3 pairs of crypto at the right rates. In order to find all this rightness, you need to develop a program that permutates tradable pairs in the pattern of triangle arbitrage and simulate the swaps to check the profitability. Retrieving rates from blockchain can be slow and it will further slow down the process if there are too many paths waiting to be verified for profitability. You may want to narrow down the list of triangular paths by calculating Profit & Loss based on the surface prices provided by a DEX’s GraphQL pricing endpoints if any (here comes Uniswap v3’s) เนื่องจาก GraphQL APIs ทำงานเร็วกว่าบล็อกเชนในการ提供ข้อมูลการเสนอราคา หลังจากที่เส้นทางถูกเลือกไว้แล้ว ให้ทำการรันด้วยคำพูดที่ได้รับจากเชนเพื่อคำนวณกำไรและขาดทุนที่แม่นยำมากขึ้น

เพิ่มโอกาสการลงทุนของคุณด้วย Flash loan สามารถขยายผลกําไรเพิ่มเติมได้ — การยืมโทเค็นด้วยดอกเบี้ยต่ําและลงทุนด้วยกลยุทธ์ที่ทํากําไรได้จะเป็นความคิดที่ดีเสมอ ในทางทฤษฎีตราบใดที่กําไรขั้นต้นเป็นสิ่งที่ดีที่จะครอบคลุมเงินกู้ Flash และค่าธรรมเนียมการแลกเปลี่ยนกลยุทธ์การเก็งกําไรสามเหลี่ยมจะถือว่าทํากําไรได้ เคล็ดลับสําคัญอย่างหนึ่งในการปกป้องผลกําไรของคุณและลดความเสี่ยงในการซื้อขายโดยรวมคือการมีตรรกะในสัญญาซื้อขายของคุณที่จะล้มเหลวในการแปลงสัญญาเงินกู้แฟลชหากการตรวจสอบความสามารถในการทํากําไรขั้นต้นล้มเหลวด้วยเหตุผลเมื่อ trascation ล้มเหลวการดําเนินการทั้งหมดจะย้อนกลับและคุณไม่จําเป็นต้องแบกรับการสูญเสียและแม้แต่ค่าธรรมเนียมสําหรับการแปลง ตรรกะชิ้นนี้จะทํางานเป็นผู้รักษาประตูที่จับได้ทั้งหมดเพื่อป้องกันการลื่นไถลหรือการเคลื่อนไหวของอัตราแลกเปลี่ยนที่ไม่เอื้ออํานวยต่อเรา

พูดถึงเรื่องนั้น ไม่ว่าจะสำเร็จหรือล้มเหลวของธุรกรรม ค่าธรรมเนียมแก๊สเป็นสิ่งหนึ่งที่คุณไม่สามารถหลบหนีได้ และอาจเป็นสาเหตุหลักที่คุณสูญเสียเงินจากการอะบิทราจ คำนึงถึงค่าธรรมเนียมแก๊สสำหรับธุรกรรมของกลยุทธ์ของคุณเสมอ และนำมาคำนวณกำไรของคุณ โปรดอ้างอิงถึงกรณีทดสอบการประเมินค่าธรรมเนียมแก๊สในโค้ดต้นฉบับของฉัน

ข้อความปฏิเสธความรับผิดชอบ:

  1. บทความนี้ถูกพิมพ์ซ้ำจาก [Gateสคริปต์สกุลเงินดิจิทัล], สิทธิ์ในการเผยแพร่สงวนสิทธิ์กับผู้เขียนเดิม [Aaron Li]. หากมีข้อสงสัยใดๆเกี่ยวกับการพิมพ์ซ้ำนี้ โปรดติดต่อ Gate Learnทีม และพวกเขาจะดำเนินการโดยเร็ว
  2. Liability Disclaimer: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนเท่านั้น และไม่เกิดเป็นการให้คำแนะนำทางการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่นๆ จะถูกดำเนินการโดยทีม Gate Learn หากไม่ได้ระบุไว้ การคัดลอก การกระจาย หรือการลอกเลียนบทความที่ถูกแปลนั้นถือเป็นการละเมิดกฎหมาย

Triangular arbitrage on Uniswap v3

กลาง5/7/2024, 10:38:35 AM
การอาร์บิเทรจสามเหลี่ยมเป็นกลยุทธ์ในการซื้อขายแลกเปลี่ยนสกุลเงินดิจิทัล โดยใช้ความแตกต่างในอัตราแลกเปลี่ยนภายในตลาดเดียวหรือในตลาดหลายแห่ง

นำมาใช้ด้วยการสลับหลายระดับ

การอัตราแลกเปลี่ยนสามเหลี่ยมเป็นกลยุทธ์ในการซื้อขายแลกเปลี่ยนเครื่องมือการเงินดิจิทัล โดยใช้ประโยชน์จากความแตกต่างของอัตราแลกเปลี่ยนในตลาดเดียวหรือในตลาดหลายแห่ง วิธีนี้ประกอบด้วยการซื้อขายที่ต่อเนื่องสามครั้ง: แลกเปลี่ยนเหรียญดิจิตอลเริ่มต้นเป็นเหรียญดิจิตอลที่สอง สองเป็นสาม และในที่สุด เหรียญดิจิตอลที่สามกลับไปเป็นเหรียญดิจิตอลเริ่มต้น โดยมีจุดมุ่งหมายเพื่อทำกำไร ดังนั้น คำว่า "สามเหลี่ยม" นำมาเชื่อมถึงกระบวนการสามขั้นตอน

ภาพที่สร้างขึ้นโดย AI

วิธีการทำงาน

ใน DEX โอกาสสำหรับการอะบิทราจสามเหลี่ยมมักเกิดจากความแตกต่างใน Likelihood ข้ามสระว่ายน้ำหลายราย พวกเขามักจะอยู่ไม่นาน เฉพาะเพียงไม่กี่วินาที หรือน้อยกว่านั้น โดยที่ตลาดสั่งสลับราคาให้ทันที ดังนั้น อัลกอริทึมการซื้อขายแบบอัตโนมัติที่จัดการด้วยการดำเนินการซื้อขายอย่างรวดเร็วถูกใช้เพื่อใช้ประโยชน์จากความแตกต่างที่ผ่านไปได้อย่างรวดเร็ว ในการช่วยในการเข้าใจแนวคิด นี่คือตัวอย่าง:

การธุรกรรมสามเหลี่ยมด้านบนเริ่มต้นจาก 01 - การซื้อ 1 wBTC ด้วย $60,000 USDC ตามด้วย 02 - การซื้อ 16 WETH ด้วย 1 wBTC และจบด้วย 03 - การขาย 16 WETH ด้วย $66,000 USDC ที่สุดของการเดินทางเราจะได้รับ $6,000 USDC เป็นกำไร

การนำไปใช้กับ Mutihop Swaps บน Uniswap v3

มีสองรูปแบบของการสว็อปหลายระดับที่ใช้งานได้บน Uniswap v3: ขาเข้าที่แน่นอนและขาออกที่แน่นอน ตามที่ชื่อแสดง ขาเข้าตั้งคายาสต์โทเคนที่ตรงกับจำนวนที่ต้องการเป็นอินพุทของการสว็อปและเมื่อสิ้นสุดลงแล้วจะได้รับโทเคนที่ตรงกับจำนวนนั้นตามอัตราแลกเปลี่ยน; ขาออกต้องการจำนวนที่ระบุไว้เป็นจำนวนที่ต้องการเป็นเอาท์พุท จำนวนโทเคนเพียงพอเพื่อใช้เป็นอินพุทสามารถทำให้การสว็อปสำเร็จตามอัตราแลกเปลี่ยน

ด้วยลักษณะธุรกิจของการอาร์บิเทรจมุม เราอยากจะเหมาะกับโทเค็นที่มีจำนวนที่แน่นอนเป็นอินพุท และสลับมันเป็นเหรียญอื่น ๆ และจากนั้นสลับกลับมาให้เป็นโทเค็นเดิมเพื่อได้กำไรตามที่เราต้องการ

address constant SWAP_ROUTER_02 = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45;

address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

address constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;

address constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;

contract MultiHopSwap { using SafeERC20 for IERC20;ISwapRouter02 private constant ROUTER = ISwapRouter02(SWAP_ROUTER_02);uint256 private constant MAX_INT =   115792089237316195423570985008687907853269984665640564039457584007913129639935;function swapExactInputMultiHop(uint256 amountIn) external {   IERC20(USDC).safeApprove(address(ROUTER), MAX_INT);   IERC20(WETH).safeApprove(address(ROUTER), MAX_INT);   IERC20(DAI).safeApprove(address(ROUTER), MAX_INT);   bytes memory path =       abi.encodePacked(USDC, uint24(3000), WETH, uint24(3000), DAI, uint24(3000), USDC) ;   ISwapRouter02.ExactInputParams memory params = ISwapRouter02       .ExactInputParams({       path: path,       recipient: address(this),       amountIn: amountIn,       amountOutMinimum: 1   });   ROUTER.exactInput(params); }}

เราใช้ Router02 ที่ 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45บนเครือข่ายหลัก

SafeERC20 เป็นชั้นป้องกันที่สร้างขึ้นจากธุรกรรม ERC20 ทําให้มั่นใจได้ถึงการโต้ตอบที่ปลอดภัยกับโทเค็น ERC20 ภายในสัญญาของเรา ซึ่งแตกต่างจากฟังก์ชัน ERC20 ทั่วไป SafeERC20 ช่วยเพิ่มความปลอดภัยโดยการตรวจสอบค่าผลตอบแทนบูลีนของการทํางาน ERC20 หากการดําเนินการใด ๆ ล้มเหลวธุรกรรมจะถูกเปลี่ยนกลับลดความเสี่ยง นอกจากนี้ SafeERC20 ยังรองรับโทเค็น ERC20 ที่ไม่ได้มาตรฐานซึ่งไม่มีค่าผลตอบแทนบูลีน ให้ความยืดหยุ่นและความทนทานในการจัดการโทเค็น ด้วยการอนุมัติจํานวนเงินสูงสุดเราอนุญาตให้ Router02 โอนโทเค็นในนามของเรา โดยไม่ต้องทําเช่นนั้นคุณคาดว่าจะเห็นข้อความแสดงข้อผิดพลาด STF ซึ่ง STF หมายถึงการดําเนินการจะถูกเปลี่ยนกลับโดยต้องมีการยืนยันในฟังก์ชัน TransferHelper.safeTransferFrom

ต่อไปเราจะมองว่าเส้นทางสามเหลี่ยมถูกกำหนดอย่างไร:

bytes memory path = abi.encodePacked(USDC, uint24(3000),

WETH, uint24(3000),                                DAI,  uint24(3000),                                USDC) ;

ผ่าน abi.encodePacked, Solidity บีบอัดค่าหลาย ๆ ค่าโดยไม่เพิ่มการเติมพื้นที่ใด ๆ มันต่อกันข้อมูลทวิภาคของแต่ละพารามิเตอร์ ไม่ยากที่จะเข้าใจว่าพารามิเตอร์จะทำให้สวาปพร้อมค่าธรรมเนียมระหว่างคู่สกุลเงินดิจิตัล เส้นทางเริ่มต้นจาก USDC และหยุดที่ USDC โดยคาดหวังกำไร จากนั้นถูกห่อด้วย ExactInputParams พร้อมกับพารามิเตอร์ที่จำเป็นอื่น ๆ และนำเข้าไปยังเราเตอร์สำหรับการสวาปหลายรอบ

การทดสอบ

เราใช้เทคนิคเดียวกันโดยforking mainnet with impersonationเมื่อเครดิต 10 USDC ถูกยืนยันว่าเข้าบัญชีคอนแทรค เรียกใช้การสลับหลายระดับได้ดังต่อไปนี้:

it("ดำเนินการสลับหลายรอบ", async () => {balance = await swap.tokenBalance(USDC);console.log(`ยอดคงเหลือปัจจุบันของ USDC = ${balance}`);console.log(`กำลังสลับ ${initialFundingHuman} USDC`);const tx = await swap.swapExactInputMultiHop(ethers.parseUnits(initialFundingHuman, DECIMALS));receipt = await tx.wait();balance = await swap.tokenBalance(USDC);console.log(`ยอดคงเหลือปัจจุบันของ USDC = ${balance}`);expect(balance).not.equal(0);});

ผลการทดสอบควรดูเหมือนด้านล่าง:

ยอด USDC ของปลาวาฬ: 170961218210457n

เริ่มการปลอมแปลง

การปลอมตัวเสร็จสิ้น

ยอดเงินปัจจุบันของ USDC = 100000000

การแลกเปลี่ยน 100 USDC

ยอดคงเหลือปัจจุบันของ USDC = 91677417

หลังจากกระโดดผ่านข้อบังคับ เราเสียเงิน — โดยเจตนาที่เส้นทางกับอัตราสกอต ไม่ได้เป็นที่ชื่นชอบกับเรา แต่คุณจะได้เข้าใจถึงวิธีการอาร์บิเทรจสามเหลี่ยมควรทำอย่างไรโดยใช้การแลกเปลี่ยนหลายระดับบน Uniswap v3

การอะบิตราจารย์สามเหลี่ยมทำดุลให้กู้ยืมแฟลช

ฉันไม่ได้บอกแหล่งเงินทุนที่มีอิทธิพลที่สุดในระบบ DeFi คือ Flash loan? มันไม่จําเป็นต้องมีความคิดสร้างสรรค์มากสําหรับคุณในการสร้างเงินกู้ Flash ได้รับทุนสนับสนุนกลยุทธ์การซื้อขายการเก็งกําไรสามเหลี่ยมโดยใช้ทั้งเงินกู้ Flash และการแลกเปลี่ยน multihop ที่ฉันสอนเกี่ยวกับ ตรรกะรวมสามารถอธิบายได้ด้วยแผนภาพลําดับที่อัปเดตดังนี้:

Sequnce diagram for Flash loan funded triangular arbitrage on Uniswap v3 (Ignored some operations for simplicity)

Check out my source code for both Flash loan and Multihop swaps implemented on Uniswap v3 — https://medium.com/cryptocurrency-scripts/flash-loan-on-uniswap-v3-84bca2bfe255 digest the sequence diagram and do you own homework to get the combined the smart contracts done.

ข้อคิดถึงความกำไร

First thing we want to looked at is the path that comprises of the sequence of the 3 trades: To be profitable, they must be the right 3 pairs of crypto at the right rates. In order to find all this rightness, you need to develop a program that permutates tradable pairs in the pattern of triangle arbitrage and simulate the swaps to check the profitability. Retrieving rates from blockchain can be slow and it will further slow down the process if there are too many paths waiting to be verified for profitability. You may want to narrow down the list of triangular paths by calculating Profit & Loss based on the surface prices provided by a DEX’s GraphQL pricing endpoints if any (here comes Uniswap v3’s) เนื่องจาก GraphQL APIs ทำงานเร็วกว่าบล็อกเชนในการ提供ข้อมูลการเสนอราคา หลังจากที่เส้นทางถูกเลือกไว้แล้ว ให้ทำการรันด้วยคำพูดที่ได้รับจากเชนเพื่อคำนวณกำไรและขาดทุนที่แม่นยำมากขึ้น

เพิ่มโอกาสการลงทุนของคุณด้วย Flash loan สามารถขยายผลกําไรเพิ่มเติมได้ — การยืมโทเค็นด้วยดอกเบี้ยต่ําและลงทุนด้วยกลยุทธ์ที่ทํากําไรได้จะเป็นความคิดที่ดีเสมอ ในทางทฤษฎีตราบใดที่กําไรขั้นต้นเป็นสิ่งที่ดีที่จะครอบคลุมเงินกู้ Flash และค่าธรรมเนียมการแลกเปลี่ยนกลยุทธ์การเก็งกําไรสามเหลี่ยมจะถือว่าทํากําไรได้ เคล็ดลับสําคัญอย่างหนึ่งในการปกป้องผลกําไรของคุณและลดความเสี่ยงในการซื้อขายโดยรวมคือการมีตรรกะในสัญญาซื้อขายของคุณที่จะล้มเหลวในการแปลงสัญญาเงินกู้แฟลชหากการตรวจสอบความสามารถในการทํากําไรขั้นต้นล้มเหลวด้วยเหตุผลเมื่อ trascation ล้มเหลวการดําเนินการทั้งหมดจะย้อนกลับและคุณไม่จําเป็นต้องแบกรับการสูญเสียและแม้แต่ค่าธรรมเนียมสําหรับการแปลง ตรรกะชิ้นนี้จะทํางานเป็นผู้รักษาประตูที่จับได้ทั้งหมดเพื่อป้องกันการลื่นไถลหรือการเคลื่อนไหวของอัตราแลกเปลี่ยนที่ไม่เอื้ออํานวยต่อเรา

พูดถึงเรื่องนั้น ไม่ว่าจะสำเร็จหรือล้มเหลวของธุรกรรม ค่าธรรมเนียมแก๊สเป็นสิ่งหนึ่งที่คุณไม่สามารถหลบหนีได้ และอาจเป็นสาเหตุหลักที่คุณสูญเสียเงินจากการอะบิทราจ คำนึงถึงค่าธรรมเนียมแก๊สสำหรับธุรกรรมของกลยุทธ์ของคุณเสมอ และนำมาคำนวณกำไรของคุณ โปรดอ้างอิงถึงกรณีทดสอบการประเมินค่าธรรมเนียมแก๊สในโค้ดต้นฉบับของฉัน

ข้อความปฏิเสธความรับผิดชอบ:

  1. บทความนี้ถูกพิมพ์ซ้ำจาก [Gateสคริปต์สกุลเงินดิจิทัล], สิทธิ์ในการเผยแพร่สงวนสิทธิ์กับผู้เขียนเดิม [Aaron Li]. หากมีข้อสงสัยใดๆเกี่ยวกับการพิมพ์ซ้ำนี้ โปรดติดต่อ Gate Learnทีม และพวกเขาจะดำเนินการโดยเร็ว
  2. Liability Disclaimer: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนเท่านั้น และไม่เกิดเป็นการให้คำแนะนำทางการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่นๆ จะถูกดำเนินการโดยทีม Gate Learn หากไม่ได้ระบุไว้ การคัดลอก การกระจาย หรือการลอกเลียนบทความที่ถูกแปลนั้นถือเป็นการละเมิดกฎหมาย
Empieza ahora
¡Registrarse y recibe un bono de
$100
!