# Быстрый Старт

Это руководство поможет быстро запустить блокчейн инфраструктуру.

## Шаг 1: Установка зависимостей

```bash
cd blockchain
npm install
```

## Шаг 2: Настройка переменных окружения

```bash
cp .env.example .env
```

Для разработки можно использовать тестовый приватный ключ (НЕ для production!):
```
PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
```

## Шаг 3: Запуск приватной блокчейн сети

```bash
cd docker
docker-compose up -d
```

Подождите 10-15 секунд для инициализации нод.

## Шаг 4: Проверка статуса сети

```bash
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://localhost:8545
```

Должен вернуться номер блока в hex формате.

## Шаг 5: Компиляция контрактов

```bash
npm run compile
```

## Шаг 6: Развертывание контрактов

```bash
npm run deploy:private -- --network optovia
```

Результат будет сохранен в `deployments/optovia-private.json`.

## Шаг 7: Проверка развертывания

Откройте Block Explorer: http://localhost:4000

Вы должны увидеть транзакции развертывания контрактов.

## Шаг 8: Запуск тестов (опционально)

```bash
# Запустите локальную Hardhat ноду в отдельном терминале
npm run node

# В другом терминале запустите тесты
npm test
```

## Быстрая проверка функциональности

### Создание тестовой отгрузки

Создайте файл `scripts/test-shipment.js`:

```javascript
const { ethers } = require("hardhat");
const deployment = require("../deployments/optovia-private.json");

async function main() {
  const [signer] = await ethers.getSigners();

  const shipmentTracker = await ethers.getContractAt(
    "ShipmentTracker",
    deployment.contracts.ShipmentTracker.address,
    signer
  );

  console.log("Creating test shipment...");
  const tx = await shipmentTracker.createShipment(
    "TEST-" + Date.now(),
    signer.address,
    "Test Manufacturer",
    "MFG-001",
    signer.address,
    "Test Buyer",
    "BYR-001",
    ethers.keccak256(ethers.toUtf8Bytes("test data"))
  );

  const receipt = await tx.wait();
  console.log("Shipment created! TX:", receipt.hash);

  const totalShipments = await shipmentTracker.getTotalShipments();
  console.log("Total shipments:", totalShipments.toString());
}

main().catch(console.error);
```

Запустите:
```bash
node scripts/test-shipment.js --network optovia
```

## Следующие шаги

1. Изучите полную документацию в [README.md](README.md)
2. Ознакомьтесь с API контрактов
3. Интегрируйте с вашим backend (см. раздел "Интеграция с Платформой" в README)

## Остановка сети

```bash
cd docker
docker-compose down
```

Для полной очистки (удаление данных блокчейна):
```bash
docker-compose down -v
rm -rf besu/node1 besu/node2
```

## Решение проблем

### Порты заняты
Если порты 8545, 8546, 4000 заняты, измените маппинг портов в `docker-compose.yml`.

### Контракты не деплоятся
1. Проверьте, что Besu ноды запущены: `docker ps`
2. Проверьте логи: `docker logs optovia-besu-node1`
3. Убедитесь, что в .env указан корректный PRIVATE_KEY

### BlockScout не работает
BlockScout может требовать 1-2 минуты для инициализации. Проверьте логи:
```bash
docker logs optovia-blockscout
```
