This commit includes: ## Audit & Testing Infrastructure - scripts/audit.sh: 12-section comprehensive codebase audit - scripts/test.sh: 7 test types (unit, integration, race, bench, coverage, contracts, pkg) - scripts/check-compliance.sh: SPEC.md compliance validation - scripts/check-docs.sh: Documentation coverage checker - scripts/dev.sh: Unified development script with all commands ## Documentation - SPEC.md: Authoritative technical specification - docs/AUDIT_AND_TESTING.md: Complete testing guide (600+ lines) - docs/SCRIPTS_REFERENCE.md: All scripts documented (700+ lines) - docs/README.md: Documentation index and navigation - docs/DEVELOPMENT_SETUP.md: Environment setup guide - docs/REFACTORING_PLAN.md: Systematic refactoring plan ## Phase 1 Refactoring (Critical Fixes) - pkg/validation/helpers.go: Validation functions for addresses/amounts - pkg/sequencer/selector_registry.go: Thread-safe selector registry - pkg/sequencer/reader.go: Fixed race conditions with atomic metrics - pkg/sequencer/swap_filter.go: Fixed race conditions, added error logging - pkg/sequencer/decoder.go: Added address validation ## Changes Summary - Fixed race conditions on 13 metric counters (atomic operations) - Added validation at all ingress points - Eliminated silent error handling - Created selector registry for future ABI migration - Reduced SPEC.md violations from 7 to 5 Build Status: ✅ All packages compile Compliance: ✅ No race conditions, no silent failures Documentation: ✅ 1,700+ lines across 5 comprehensive guides 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
71 lines
1.6 KiB
Bash
Executable File
71 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Generate Go bindings from ABIs using abigen
|
|
|
|
set -e
|
|
|
|
echo "🔧 Generating Go bindings from contract ABIs"
|
|
echo "=============================================="
|
|
echo ""
|
|
|
|
# Check if abigen is available
|
|
if ! command -v abigen &> /dev/null; then
|
|
echo "⚠️ abigen not found, installing..."
|
|
cd /tmp
|
|
go install github.com/ethereum/go-ethereum/cmd/abigen@latest
|
|
cd -
|
|
fi
|
|
|
|
# Function to generate binding
|
|
generate_binding() {
|
|
local abi_file=$1
|
|
local pkg_name=$2
|
|
local type_name=$3
|
|
local output_file=$4
|
|
|
|
echo "📄 Generating $type_name..."
|
|
|
|
abigen \
|
|
--abi="$abi_file" \
|
|
--pkg="$pkg_name" \
|
|
--type="$type_name" \
|
|
--out="$output_file"
|
|
|
|
echo " ✅ Generated: $output_file"
|
|
}
|
|
|
|
# Generate UniswapV2 bindings
|
|
echo "🦄 UniswapV2 Bindings"
|
|
generate_binding \
|
|
"bindings/uniswap_v2/IUniswapV2Router02.json" \
|
|
"uniswap_v2" \
|
|
"UniswapV2Router" \
|
|
"bindings/uniswap_v2/router.go"
|
|
|
|
generate_binding \
|
|
"bindings/uniswap_v2/IUniswapV2Pair.json" \
|
|
"uniswap_v2" \
|
|
"UniswapV2Pair" \
|
|
"bindings/uniswap_v2/pair.go"
|
|
|
|
echo ""
|
|
|
|
# Generate UniswapV3 bindings
|
|
echo "🦄 UniswapV3 Bindings"
|
|
generate_binding \
|
|
"bindings/uniswap_v3/ISwapRouter.json" \
|
|
"uniswap_v3" \
|
|
"SwapRouter" \
|
|
"bindings/uniswap_v3/router.go"
|
|
|
|
echo ""
|
|
|
|
echo "✅ All bindings generated successfully!"
|
|
echo ""
|
|
echo "Generated bindings:"
|
|
find bindings -name "*.go" -type f | sort
|
|
|
|
echo ""
|
|
echo "💡 Add to imports:"
|
|
echo " import \"github.com/your-org/mev-bot/bindings/uniswap_v2\""
|
|
echo " import \"github.com/your-org/mev-bot/bindings/uniswap_v3\""
|