Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# API Keys for block explorers
ETHERSCAN_API_KEY=your_etherscan_api_key_here
ARBISCAN_API_KEY=your_arbiscan_api_key_here

# Optional: Ethereum RPC URL (for scanner)
ETH_RPC_URL=https://mainnet.infura.io/v3/your_key_here

# Tenderly credentials (for scanner, optional)
# These can also be set in scanner/config.yaml
TENDERLY_USER=your_user
TENDERLY_PROJECT=your_project
TENDERLY_ACCESS_KEY=your_access_key
60 changes: 60 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,62 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
venv/
.venv/
env/
ENV/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual environments
venv/
.venv/

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# Project specific
*.json
!package.json
*.log
output_contracts/
contract_cache.json
contract_graph.gexf
eth
eth_tvl
euler-v2
euler-v2.json
avg_tvls.py_old

# Environment variables
.env
.env.local
.env.*.local

# Test coverage
.coverage
htmlcov/
.pytest_cache/

# Ruff cache
.ruff_cache/
103 changes: 103 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
.PHONY: lint lint-fix format format-check test cichecks tvl avgtvl help

help:
@echo "Available commands:"
@echo " make lint - Check code style with ruff"
@echo " make lint-fix - Auto-fix linting issues"
@echo " make format - Format code with ruff"
@echo " make format-check - Check formatting without changing files"
@echo " make test - Run tests"
@echo " make cichecks - Run all CI checks (test, lint, format-check)"
@echo " make tvl - Get TVL data (use: make tvl PROTOCOL=euler START=2025-01-01 END=2025-01-15)"
@echo " make avgtvl - Get average TVL (use: make avgtvl PROTOCOL=euler START=2025-01-01 END=2025-01-15)"
@echo ""
@echo "TVL Examples:"
@echo " make tvl PROTOCOL=euler START=2025-01-01 END=2025-01-15"
@echo " make tvl PROTOCOL=aave START=2025-01-01 END=2025-01-31"
@echo " make tvl PROTOCOL=uniswap START=2024-12-01 END=2024-12-31 OPTS='--no-extrapolate'"
@echo " make tvl PROTOCOL=euler START=2025-01-01 END=2025-01-15 OPTS='--mean'"
@echo ""
@echo "Average TVL Examples:"
@echo " make avgtvl PROTOCOL=euler START=2025-01-01 END=2025-01-15"
@echo " make avgtvl PROTOCOL=aave START=2025-01-01 END=2025-01-31"
@echo " make avgtvl PROTOCOL=compound START=2024-01-01 END=2024-12-31"

lint:
uv run ruff check .

lint-fix:
uv run ruff check --fix .

format:
uv run ruff format .

format-check:
uv run ruff format --check .

test:
uv run python -m unittest discover -s . -p 'test_*.py'

cichecks:
@echo "=== CI CHECKS START ==="; \
echo ""; \
echo "--- SECTION: Tests ---"; \
uv run python -m unittest discover -s . -p 'test_*.py' 2>&1; \
TEST_EXIT=$$?; \
if [ $$TEST_EXIT -eq 0 ]; then \
echo "STATUS: TESTS_PASSED"; \
else \
echo "STATUS: TESTS_FAILED"; \
fi; \
echo ""; \
echo "--- SECTION: Linting ---"; \
uv run ruff check . 2>&1; \
LINT_EXIT=$$?; \
if [ $$LINT_EXIT -eq 0 ]; then \
echo "STATUS: LINT_PASSED"; \
else \
echo "STATUS: LINT_FAILED"; \
fi; \
echo ""; \
echo "--- SECTION: Format Check ---"; \
uv run ruff format --check . 2>&1; \
FORMAT_EXIT=$$?; \
if [ $$FORMAT_EXIT -eq 0 ]; then \
echo "STATUS: FORMAT_PASSED"; \
else \
echo "STATUS: FORMAT_FAILED"; \
fi; \
echo ""; \
echo "=== CI CHECKS SUMMARY ==="; \
if [ $$TEST_EXIT -eq 0 ] && [ $$LINT_EXIT -eq 0 ] && [ $$FORMAT_EXIT -eq 0 ]; then \
echo "RESULT: PASSED"; \
exit 0; \
else \
echo "RESULT: FAILED"; \
exit 1; \
fi

# Get TVL data for a protocol
# Usage: make tvl PROTOCOL=euler START=2025-01-01 END=2025-01-15
# Optional: OPTS='--no-extrapolate' or OPTS='--mean'
tvl:
@if [ -z "$(PROTOCOL)" ] || [ -z "$(START)" ] || [ -z "$(END)" ]; then \
echo "Error: Missing required parameters"; \
echo "Usage: make tvl PROTOCOL=<protocol> START=<start-date> END=<end-date>"; \
echo "Example: make tvl PROTOCOL=euler START=2025-01-01 END=2025-01-15"; \
echo "Optional: Add OPTS='--mean' or OPTS='--no-extrapolate'"; \
exit 1; \
fi
@uv run python avg_tvls.py $(PROTOCOL) $(START) $(END) $(OPTS)

# Get average TVL for a protocol (with interpolation/extrapolation)
# Usage: make avgtvl PROTOCOL=euler START=2025-01-01 END=2025-01-15
# Optional: OPTS='--no-extrapolate' to disable extrapolation
avgtvl:
@if [ -z "$(PROTOCOL)" ] || [ -z "$(START)" ] || [ -z "$(END)" ]; then \
echo "Error: Missing required parameters"; \
echo "Usage: make avgtvl PROTOCOL=<protocol> START=<start-date> END=<end-date>"; \
echo "Example: make avgtvl PROTOCOL=euler START=2025-01-01 END=2025-01-15"; \
echo "Optional: Add OPTS='--no-extrapolate' to disable extrapolation"; \
exit 1; \
fi
@uv run python avg_tvls.py $(PROTOCOL) $(START) $(END) --mean $(OPTS)
Loading