#!/usr/bin/env bash # # Развёртывание smart-updown на localnet (solana-test-validator). # Использование: ./deploy-localnet.sh # # Требования: Solana CLI (solana-test-validator, solana program deploy). # Если нужно пересобрать программу из исходников, см. README (опционально). set -euo pipefail HERE="$(cd "$(dirname "$0")" && pwd)" PROGRAM_SO="$HERE/deploy/smart_updown.so" PROGRAM_KEYPAIR="$HERE/deploy/smart_updown-keypair.json" PROGRAM_ID="9ALsnxXNzDBv3mokngCHbruRTWUZiWR7pf7vswS1fCpf" RPC_URL="http://127.0.0.1:8899" # 1. Настройка CLI на localhost solana config set --url "$RPC_URL" solana-keygen pubkey "$PROGRAM_KEYPAIR" >/dev/null 2>&1 || { echo "Ошибка: нет deploy/smart_updown-keypair.json" exit 1 } # 2. Запуск валидатора с предзагруженной программой (если ещё не запущен) if ! solana cluster-version >/dev/null 2>&1; then echo ">>> Стартую solana-test-validator с программой $PROGRAM_ID" solana-test-validator --reset \ --bpf-program "$PROGRAM_ID" "$PROGRAM_SO" \ >test-ledger.log 2>&1 & sleep 6 fi solana cluster-version # 3. Убеждаемся, что программа на месте if ! solana program show "$PROGRAM_ID" >/dev/null 2>&1; then echo ">>> Деплою программу" solana program deploy --program-id "$PROGRAM_KEYPAIR" "$PROGRAM_SO" else echo ">>> Программа уже задеплоена: $PROGRAM_ID" fi solana program show "$PROGRAM_ID" | head -12 echo echo "Готово. Vault/Global инициализируется первым запуском relayer: npm run init" echo "Дальше: npm run loop (непрерывно) или npm run run (один прогон)." echo