s3p-core 0.1.0

BlockNet S³P core: chunking, AEAD, RS erasure, Merkle
Documentation
# S³P Core — Step A

Минимальное ядро для BlockNet S³P:
- порезка на чанки;
- шифрование XChaCha20-Poly1305 (через HKDF-SHA256);
- код Рида–Соломона (GF(2^8)) для устойчивости к потерям;
- Merkle root и проверки включения;
- сквозной тест: encrypt → shard → потерять часть шардов → reconstruct → decrypt.

## Требования
- Rust (stable) и Cargo: https://www.rust-lang.org/ (на Windows установите также сборочные инструменты)
- Интернет для скачивания crate-зависимостей при первой сборке.

## Быстрый старт
```bash
unzip s3p-core-step-a.zip
cd s3p-core
cargo test
```

Ожидаемый результат — прохождение теста `end_to_end_with_losses_and_merkle`.

## Структура проекта
```
s3p-core/
  Cargo.toml
  src/
    lib.rs
    errors.rs
    types.rs
    chunk.rs
    aead.rs
    rs.rs
    merkle.rs
  tests/
    step_a_pipeline.rs
```

## Что именно проверяем
- **AEAD:** данные шифруются/расшифровываются с AAD.
- **Erasure (RS):** данные режутся на data+parity шардов; при потере до `parity_shards` всё восстанавливается.
- **Merkle:** считаем корень и строим proof для произвольного листа; верификация проходит.
- **End-to-end:** сборка исходного буфера полностью совпадает с оригиналом.

## Полезные параметры
Откройте `tests/step_a_pipeline.rs` и правьте:
- `chunk_size` — размер чанка (байт).
- `data_shards`, `parity_shards` — параметры Рида–Соломона (чем больше parity, тем выше устойчивость).
- уровень потерь — простая стохастика `~33%` в примере; можно менять по своему сценарию.

## Типичные проблемы
- **Windows MSVC:** установите «Desktop development with C++» (Build Tools) для компиляции некоторых зависимостей.
- **Memory/Time:** если тест долго идёт — уменьшите `payload_len` и/или `chunk_size`.

## Что дальше (Step B)
- Добавим слой преобразования (Identity→Walsh-Hadamard) и фонтанные пакеты (LT-style).
- Опишем `SeriesCommit` и JSON-кодек, подготовим scid.
- Интеграционные тесты с libp2p (Node.js harness).


## Исправление ошибки chacha20poly1305
Если видите сообщение наподобие:

> package `s3p-core` depends on `chacha20poly1305` with feature `xchacha20` but `chacha20poly1305` does not have that feature

Просто используйте зависимость без фичи `xchacha20` (в проекте уже поправлено):

```toml
chacha20poly1305 = "0.10"
```
Затем выполните:

```bash
cargo update
cargo clean
cargo test
```