프로젝트 소개
FlashLoanArbitrage는 플래시 론을 이용한 이더리움 DeFi 트레이딩을 위한 소규모 Node.js 프로젝트입니다. 저장소 목록에는 DeFi 포트폴리오 관리자로 설명되어 있으나, README 파일에는 로컬 스크립트(goflash.js)와 동반 스마트 컨트랙트로 구성된 플래시 론 차익거래 봇으로 문서화되어 있습니다.
작동 방식
이 스크립트는 기준 가격으로 사용되는 Chainlink 오라클, Uniswap V2, SushiSwap, Curve Finance, Balancer 등 5개 소스의 ETH/USDC 가격을 비교합니다. 손실 거래를 피하기 위해 거래소 간 가격 차이가 최소 0.9%가 될 때까지 모니터링하며, 스프레드가 충분히 커지면 README에 설명된 흐름에 따라 작동합니다. 먼저 사용자의 ETH를 USDC로 변환하고, 컨트랙트가 USDC로 플래시 론을 받은 뒤, 저렴한 플랫폼에서 ETH를 매수하여 비싼 플랫폼에 매도합니다. 이후 론 금액과 플래시 론 수수료 및 가스비를 상환하고, 남은 수익을 USDC에서 다시 ETH로 변환합니다. README에 따르면 지갑 잔액은 가스비로만 사용되며 ETH가 컨트랙트로 전송되지는 않습니다.
플래시 론 제공자 및 한도
네 가지 프로토콜이 플래시 론 소스로 나열되어 있으며, 각각의 수수료와 USDC 기준 최대 대출 한도는 다음과 같습니다: Aave (0.05%, 최대 10,000,000), dYdX (0.05%, 최대 500,000), Uniswap V3 (0.01%, 최대 5,000,000), Balancer (0.02%, 최대 1,000,000). README는 대출 규모가 클수록 수수료가 많아지므로 수수료가 낮은 dYdX나 Uniswap V3를 권장합니다.
설치 및 사용법
로컬 머신 설치 안내에 따라 goflash.js와 package.json을 폴더에 넣고 npm install을 실행한 후 node goflash.js를 실행합니다. 처음 실행 시 스크립트는 새 지갑 생성(주소와 개인키가 표시되며 키는 동일 폴더의 wallet.json에 저장됨) 또는 0x 접두사가 붙은 개인키를 통한 기존 지갑 가져오기 옵션을 제공합니다. 이후 지갑 잔액과 주소가 표시되는 대화형 터미널 메뉴가 나타나며, 여기서 DeFi 프로토콜 선택, ETH 단위 대출 금액 설정, 지갑 재생성, 개인키로 다른 지갑 가져오기, 차익거래 시작 및 종료를 선택할 수 있습니다. 차익거래 모드는 약 60초마다 모든 플랫폼의 가격을 스캔하며, 상승/하락/유지 표시가 포함된 실시간 가격 표와 관찰된 최대 스프레드를 출력합니다.
경고 및 동작 참고 사항
README는 개인키 보안에 대해 반복적으로 경고합니다. wallet.json이나 키를 절대 공유하지 말고, .gitignore에 추가하며, 오프라인 백업을 유지하고 전용 지갑을 사용하라고 조언합니다. 또한 가스비 때문에 지갑 잔액이 0.1 ETH 미만이면 10 ETH 이상의 대출을 처리하기에 부족하며, 고려된 비용(거래 수수료 0.1%, 슬리피지 0.05%, 가스비, 플래시 론 수수료)을 명시합니다. 문제 해결 섹션에서는 모듈 형식 오류, 잘못된 개인키 형식, 잔액 부족, RPC 사용 불가 및 V2 페어 누락 등을 다룹니다. 실제 시장에서 0.9%의 가격 차이는 드물며, 시연을 위해 가끔 시뮬레이션된 기회가 표시된다고 명시하고 있습니다. 또한 이 프로젝트는 교육 목적으로 '있는 그대로' 공유되며 사용자의 책임하에 사용해야 한다고 밝히고 있습니다.
기술 세부 사항
이 프로젝트는 JavaScript/Node.js 애플리케이션으로 세 가지 의존성을 가집니다: 이더리움 상호작용을 위한 ethers (^6.11.1), 대화형 CLI를 위한 inquirer (^8.2.6), 컬러 콘솔 출력을 위한 chalk (^4.1.2)입니다. 문서화된 파일 구조는 goflash.js, package.json, 자동 생성되는 wallet.json 및 README로 구성됩니다. 교육용 사용 및 사용자 책임 원칙 외의 라이선스 약관은 없으며, 테스트, 배포 스크립트 또는 공개 성능 결과는 설명되어 있지 않습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.