아무 일도 일어나지 않는다: 비스포츠형 Polymarket 시장에서 항상 ‘No’를 매수하는 봇
4 hours ago
1
- Polymarket의 비스포츠 예/아니오 시장에서 자동으로 ‘No’ 포지션만 매수하는 비동기 Python 봇으로, 엔터테인먼트 용도로 제공됨
- 모의 거래와 실거래 모드를 구분하며, 실거래 시에는 여러 환경 변수와 개인 키 설정이 필수임
- 대시보드 인터페이스를 통해 상태를 모니터링하고, 주문 전송이 활성화되면 실시간 복구 상태를 저장함
- Heroku 배포 스크립트를 포함해 앱 상태 확인, 로그 조회, 실거래 전환, 프로세스 종료 등을 자동화함
- 테스트와 데이터 관리 도구가 포함되어 있어, 로컬 및 클라우드 환경 모두에서 안전하게 실행 및 검증 가능함
개요
- Nothing Ever Happens는 Polymarket 플랫폼의 비스포츠형 예/아니오 시장에서 항상 ‘No’ 포지션을 매수하는 비동기 Python 기반 봇임
- 엔터테인먼트 목적으로 제공되며, 보증이나 책임 없이 사용자의 위험 부담하에 실행됨
- 저장소는 bot/, scripts/, tests/ 디렉터리로 구성되어 있으며, 각각 거래 로직, 운영 스크립트, 테스트 코드를 포함함
런타임 구조
- 런타임은 독립형 시장을 스캔하고, 설정된 가격 상한 이하의 ‘No’ 항목을 탐색해 포지션을 추적함
- 대시보드를 통해 상태를 표시하며, 주문 전송이 활성화된 경우 실시간 복구 상태를 저장함
- 실행 모듈은 nothing_happens이며, 비활성 모드에서는 PaperExchangeClient를 사용함
안전 모델
- 실제 주문 전송을 위해서는 다음 세 가지 환경 변수가 모두 설정되어야 함
- BOT_MODE=live
- LIVE_TRADING_ENABLED=true
- DRY_RUN=false
- 위 조건 중 하나라도 누락되면 모의 거래 모드로 전환됨
- 실거래 모드에서는 추가로 다음 환경 변수가 필요함
- PRIVATE_KEY
- FUNDER_ADDRESS (서명 타입 1, 2용)
- DATABASE_URL
- POLYGON_RPC_URL (프록시 지갑 승인 및 상환용)
설정 및 구성
- 설치는 pip install -r requirements.txt 후, 예시 설정 파일을 복사해 로컬 구성으로 사용함
- config.json은 비밀이 아닌 런타임 설정, .env는 비밀 키 및 실행 플래그를 포함함
- 런타임 설정은 strategies.nothing_happens 하위에 위치하며, CONFIG_PATH 환경 변수로 다른 설정 파일을 지정할 수 있음
로컬 실행
- 로컬에서는 python -m bot.main 명령으로 실행 가능
- 대시보드는 $PORT 또는 DASHBOARD_PORT 환경 변수에 바인딩됨
Heroku 배포 워크플로
- Heroku 환경에서는 HEROKU_APP_NAME을 사용하거나 명시적 앱 이름 인자를 전달함
- 제공된 스크립트:
- alive.sh: 앱 상태 확인
- logs.sh: 로그 조회
- live_enabled.sh / live_disabled.sh: 실거래 모드 전환
- kill.sh: 프로세스 종료
- 일반적인 배포 절차는 다음과 같음
- 환경 변수 설정 (BOT_MODE, DRY_RUN, LIVE_TRADING_ENABLED, PRIVATE_KEY, FUNDER_ADDRESS, POLYGON_RPC_URL, DATABASE_URL)
- git push heroku <branch>:main
- heroku ps:scale web=1 worker=0
- worker 프로세스는 의도치 않게 실행될 경우 빠르게 실패하도록 설계됨
테스트
- 테스트는 pytest를 사용해 단위 및 회귀 검증을 수행함
- 명령어: python -m pytest -q
포함된 스크립트
-
scripts/db_stats.py
- 실시간 데이터베이스 테이블 수와 최근 활동을 점검
-
scripts/export_db.py
- DATABASE_URL 또는 Heroku 앱에서 테이블을 내보냄
-
scripts/wallet_history.py
-
scripts/parse_logs.py
- Heroku JSON 로그를 터미널 또는 HTML 형식으로 변환
저장소 관리
- 로컬 설정, 원장, 내보낸 데이터, 보고서, 배포 산출물 등은 기본적으로 git에서 제외됨
- 저장소는 운영 환경과 로컬 환경을 명확히 분리하도록 구성됨
-
Homepage
-
개발자
- 아무 일도 일어나지 않는다: 비스포츠형 Polymarket 시장에서 항상 ‘No’를 매수하는 봇