프로젝트 소개
FlashLoanArbitrage는 플래시 론을 사용하여 DeFi 차익거래를 수행하는 JavaScript 명령줄 도구입니다. README에는 거래 시퀀스를 수행하는 스마트 컨트랙트와, 사용자의 컴퓨터에서 실행되어 가격 기회를 포착했을 때 컨트랙트를 트리거하는 로컬 스크립트인 goflash.js의 두 부분이 설명되어 있습니다.
작동 방식에 따르면, 컨트랙트는 USDC 단위의 플래시 론을 받아 한 거래소에서 ETH를 저렴하게 매수하고 다른 거래소에서 더 높게 매도한 뒤, 대출금과 수수료 및 가스비를 상환하고 남은 수익을 USDC에서 ETH로 다시 전환합니다. 로컬 스크립트는 여러 플랫폼의 ETH/USDC 가격을 폴링하며, 손실 가능성을 줄이기 위해 저자가 설정한 임계값인 0.9% 이상의 차이가 발생할 때만 작동합니다.
README에 나열된 플래시 론 제공업체는 Aave(수수료 0.05%, 최대 10,000,000 USDC), dYdX(0.05%, 최대 500,000 USDC), Uniswap V3(0.01%, 최대 5,000,000 USDC), Balancer(0.02%, 최대 1,000,000 USDC)입니다. 대출 규모가 클수록 수수료가 높아지므로, 지갑 잔액이 적을 때 과도한 대출을 받지 말 것을 권고합니다. 스캔 대상 가격 소스는 오라클 참조용 Chainlink, Uniswap V2, SushiSwap, Curve Finance, Balancer입니다.
실행 방법은 goflash.js와 package.json을 폴더에 다운로드하고 npm install을 실행한 후 node goflash.js를 입력하는 것입니다. 처음 실행 시 스크립트는 새 지갑을 생성하거나 개인 키(0x 접두사가 붙은 64자리 16진수)를 통해 기존 지갑을 가져오는 옵션을 제공합니다. 생성된 개인 키는 동일 폴더의 wallet.json에 저장되며, README는 이 파일을 Git에 올리지 말고 키를 절대 공유하지 말라고 반복해서 경고합니다. inquirer로 구축된 대화형 메뉴를 통해 DeFi 프로토콜 선택, ETH 단위 대출 금액 설정, 지갑 재생성 또는 가져오기, 차익거래 시작 및 종료 옵션을 제공하며, 콘솔 출력 색상을 위해 chalk를, Ethereum 접속을 위해 ethers를 사용합니다.
README에 따르면 모니터링 시 플랫폼별 ETH/USDC 가격 테이블이 상승/하락/유지 표시 및 거래소 간 최대 스프레드와 함께 주기적으로(60초 스캔 주기 언급) 갱신되어 출력됩니다. 또한 실무적인 주의사항으로, 지갑 잔액이 0.1 ETH 미만이면 10 ETH 이상의 대출에 필요한 가스비를 충당하기에 부족하며, 비용에는 플래시 론 수수료, 약 0.1%의 거래 수수료, 약 0.05%의 슬리피지와 가스비가 포함된다고 명시합니다. 0.9%의 거래소 간 스프레드는 실제 시장에서 드물며, 스크립트가 시연을 위해 가끔 시뮬레이션된 기회를 보여줄 수 있다고 설명합니다. 문제 해결 섹션에서는 모듈 형식 오류, 잘못된 개인 키 형식, 가스비 부족, 지갑 잔액 0 및 RPC 재연결 등을 다루며, V2에서 ETH/USDC 페어가 없는 것은 정상이라고 언급합니다.
명시된 의존성 라이브러리는 ethers ^6.11.1, inquirer ^8.2.6, chalk ^4.1.2입니다. 이 프로젝트는 교육 목적으로 '있는 그대로' 게시되었으며 사용에 따른 위험은 사용자가 부담합니다. 이를 평가하는 독자는 수익 구조와 컨트랙트 코드를 주의 깊게 살펴봐야 합니다. 워크플로우상 자금이 들어있는 지갑의 개인 키를 다뤄야 하며, 온체인 컨트랙트는 감사(audit)를 받았다고 설명되어 있지 않고, README 자체에서도 명시된 임계값에서의 실제 기회는 흔치 않음을 인정하고 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.