ipfrs-transport 0.1.0

Transport protocols and zero-copy data exchange for IPFRS distributed system
Documentation
# ipfrs-transport

TensorSwap: High-performance data exchange protocol for IPFRS.

## Overview

`ipfrs-transport` implements the data exchange layer for IPFRS, featuring:

- **TensorSwap Protocol**: Custom Bitswap variant optimized for tensor streaming
- **GraphSync**: Dependency-aware block fetching for computation graphs
- **QUIC First**: Low-latency transport with quinn
- **Backpressure Handling**: Flow control for heterogeneous network conditions

## Key Components

### TensorSwap Protocol (Custom Bitswap)
Evolution of IPFS Bitswap with neural-symbolic optimizations:

- **Priority Scheduling**: Fetch blocks in computation graph order
- **Tensor Streaming**: Chunked transfer of large model weights
- **Gradient Aware**: Bidirectional gradient exchange for federated learning
- **Debiting System**: Fair resource allocation across peers

### GraphSync Integration
- Request entire DAG subgraphs in single round-trip
- Selector-based traversal (IPLD selectors)
- Incremental verification during transfer
- Resume support for interrupted transfers

### Transport Stack
- **QUIC (Primary)**: 0-RTT connection, multiplexing, built-in encryption
- **TCP**: Fallback for restricted networks
- **WebTransport**: Browser compatibility
- **WebSocket**: Legacy IPFS gateway support

## Architecture

```
TensorSwap Engine
├── Request Manager    # Outgoing block requests
├── Response Handler   # Incoming block provides
├── Want List Manager  # Priority queue of needed blocks
└── Peer Selector      # Choose best peer for each block

    QUIC Stream (quinn)
   ipfrs-network (libp2p)
```

## Design Principles

- **Latency Sensitive**: Prioritize time-to-first-block for inference
- **Throughput Optimized**: Bulk transfer for model distribution
- **Graph Aware**: Understand dependencies in computation graphs
- **Fair**: Prevent resource monopolization

## Performance Characteristics

| Metric | Kubo Bitswap | IPFRS TensorSwap | Improvement |
|--------|--------------|------------------|-------------|
| Time to First Block | ~500ms | <50ms (QUIC) | 10x |
| Large File Throughput | ~100 MB/s | ~500 MB/s | 5x |
| Connection Setup | 2-RTT | 0-RTT (QUIC) | Instant |

## Usage Example

```rust
use ipfrs_transport::{TensorSwap, Config};
use ipfrs_core::Cid;

// Initialize TensorSwap
let swapper = TensorSwap::new(config).await?;

// Request blocks with priority
swapper.want_block(cid, Priority::High).await?;

// Stream large tensor
let stream = swapper.stream_tensor(cid).await?;
while let Some(chunk) = stream.next().await {
    // Process chunk...
}
```

## Dependencies

- `quinn` - QUIC implementation
- `libp2p` - P2P networking primitives
- `tokio` - Async runtime
- `futures` - Stream processing

## References

- IPFRS v0.3.0 Whitepaper (TensorSwap Protocol)
- Bitswap Specification: https://github.com/ipfs/specs/blob/master/BITSWAP.md
- GraphSync Spec: https://github.com/ipld/specs/blob/master/block-layer/graphsync/graphsync.md