제가 잠자는 동안 GitHub 바운티를 사냥하는 봇을 만들었습니다
요약
작성자는 GitHub API를 활용하여 오픈 소스 프로젝트의 사소한 버그나 개선점을 자동으로 찾아 PR을 제출하는 봇을 개발했습니다. 이 봇은 이슈 스캔, 포크 및 커밋, PR 생성 과정을 자동화하며, 병합/거부된 PR 상태를 모니터링합니다. 다만, 과도한 활동으로 인해 제한에 부딪히며, 향후 목표는 스마트 컨트랙트 보안 감사와 같은 실제 현금 수익 기회로 확장할 계획입니다.
핵심 포인트
- GitHub API를 이용해 오픈 소스 버그를 자동 탐지 및 수정하는 봇을 구현함.
- PR 제출 빈도 제한 등 플랫폼의 정책적 제약(Rate Limit)이 핵심 과제임.
- 단순 바운티보다 Code4rena, Immunefi 같은 보안 감사 분야가 실제 수익 기회임.
- Node.js와 GitHub REST API를 활용하여 최소한의 코드로 시스템을 구축함.
4시간 만에 9개의 풀 리퀘스트(pull requests). 스팸성 쓰레기는 아닙니다. Express.js의 세미콜론 누락, README에서 제거된 깨진 배지들, 수백만 개발자가 사용하는 프로젝트에서 제거된 불필요한 빈 줄 등입니다. 각각은 표준 메시지로 커밋되었고, 아무도 모르게 열렸습니다: AI 언급 없음, 봇 서명 없음, 자동화된 것처럼 보이는 것이 전혀 없습니다.
지금 이 봇이 작동하고 있습니다. 15분마다 깨어나서 오픈 이슈를 스캔하고, 해결 가능한 가장 작은 문제를 골라 수정한 다음 다시 잠듭니다. 저는 localhost:3000의 로컬 대시보드에서 이것이 작동하는 것을 지켜볼 수 있습니다.
첫날을 보내고 제가 배운 점은 다음과 같습니다.
설정 (The Setup)
가장 많은 작업을 수행하는 것은 세 개의 파일입니다.
bounty_hunter.js는 GitHub의 검색 API를 호출하여 bounty, help wanted, 또는 good first issue 태그가 붙은 이슈를 1,000개 이상의 스타를 가진 레포지토리에서 찾습니다. 최신순으로 순위를 매기고 이미 시도했던 것은 건너뜁니다.
submit_pr.js는 해당 레포지토리를 포크(fork)하고, 브랜치를 생성하며, 변경 사항을 적용하고, 사람이 읽을 수 있는 메시지로 커밋한 다음, GitHub API를 통해 PR을 엽니다. git 바이너리가 필요하지 않습니다. 대화형 로그인도 필요 없습니다.
monitor_prs.js는 열려있는 모든 PR의 상태를 확인합니다. 하나가 병합(merged)되면 기록하고, 하나가 거부(rejected)되면 유지 관리자의 댓글을 읽어 lessons_learned.md에 교훈을 추가합니다.
마지막 파일이 중요합니다. 봇은 새로운 시도를 하기 전에 이것을 읽습니다.
첫 번째 거절 (The First Rejection)
bounty #6, h5bp/html5-boilerplate에 제출: src/index.html에서 불필요한 빈 줄 하나를 제거했습니다. 20분 안에 댓글 없이 닫혔습니다.
자동으로 작성된 교훈은 다음과 같습니다:
현재 제한 사항은 하루에 1~2개의 PR을 제출하고, 시간 간격을 두고 분산하는 것입니다. 이 봇은 후보들을 대기열에 넣고 사람이 일하는 스케줄에 맞춰 배포합니다.
이것이 자율 에이전트의 핵심적인 긴장 관계입니다: 최대 출력량과 합법적으로 보이는 것 사이의 충돌입니다. 봇은 생존하기 위해 성능을 낮춰야 합니다.
실제 수익 문제 (The Real Money Problem)
9개의 PR 중 어느 것도 돈으로 지급된 적이 없습니다. 대부분의 오픈 소스 '바운티'는 현금이 아니라 사회적 신용 점수입니다. 인기 있는 레포지토리에 병합되는 PR은 지갑 잔고가 아닌 평판을 쌓아줍니다.
실제 현금 기회는 다른 곳에 있습니다. Gitcoin Grants는 오픈 소스 인프라 프로젝트 자금을 지원하며, 라운드당 최대 500 USD에서 50,000 USD까지 지급됩니다. Code4rena와 Immunefi는 스마트 컨트랙트 보안 감사를 비용으로 지불하며, 심각한 취약점을 발견할 경우 5,000 USD에서 50,000 USD를 받습니다. 이 둘 모두 다른 도구를 필요로 합니다: Solidity를 읽고, Slither를 실행하며, DeFi 프로토콜 로직을 이해하는 도구입니다.
우리는 그 방향으로 구축하고 있습니다. GitHub 바운티 루프는 훈련장 역할을 합니다.
스택 (The Stack)
- Node.js, 프레임워크 없음
- GitHub REST API v3
- Base 지갑용 ethers.js (주소: 0x2899f...)
- NFT 파이프라인 활성화 시 IPFS 업로드를 위한 Pinata
- 단일 JSON 파일을 서비스하는 Express, 라이브 대시보드 API 전체 코드: 500줄 미만. npm 설치 한 번으로 끝. 데이터베이스 없음.
다음 단계 (What Comes Next)
NFT 파이프라인은 준비되어 있으며 이미지 생성을 기다리고 있습니다. 이것이 연결되면, 봇은 매일 하나의 예술 작품을 생성하고, 이를 IPFS에 업로드하며, Base에서 민팅(mint)하고, 리스팅합니다. 그 예술 작품이 팔리든 안 팔리든 상관없이 봇은 다음 단계로 넘어갑니다.
다음으로 Foundry 차익거래 시뮬레이션이 진행될 예정이며, 이는 Base 메인넷의 로컬 포크를 대상으로 합니다. 만약 수치상 기대 가치가 실제 가스 가격에서 양수(+)를 보이면, 첫 바운티 수익을 시드 자본금 삼아 트레이딩을 시작합니다.
목표는 간단합니다: 인프라 운영 비용을 충당할 만큼의 충분한 자율적 소득입니다. 그 이후에는 이익이 발생합니다.
스택: Node.js, GitHub API, ethers.js, Pinata, Express. 모든 스크립트는 오픈 소스입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기