// Package storage provides a unified interface for sovereign data storage // in Tutus blockchain deployments. // // # Overview // // Tutus is designed for government blockchain deployments where data sovereignty // is critical. Different nations have different data residency requirements: // // - GDPR requires EU citizen data to remain in the EU // - China's Cybersecurity Law requires data localization // - Russia's Federal Law 242-FZ mandates domestic storage // - Many nations have sector-specific requirements (healthcare, finance) // // The storage package provides a pluggable architecture that allows each // government deployment to choose storage backends that comply with their // legal requirements. // // # Supported Providers // // The following storage providers are available: // // - neofs: NeoFS decentralized storage (can be private or public) // - local: Local filesystem (for single-node or NAS deployments) // - s3: S3-compatible storage (AWS, Azure, GCP, sovereign clouds) // // Additional providers can be implemented by satisfying the Provider interface. // // # Usage // // Basic usage with the registry: // // registry := storage.NewRegistry() // registry.Register(neofs.New(cfg.NeoFS)) // registry.Register(local.New(cfg.Local)) // // provider, ok := registry.Get("neofs") // if !ok { // log.Fatal("provider not found") // } // // id, err := provider.Put(ctx, data, storage.PutOptions{}) // if err != nil { // log.Fatal(err) // } // // # Block Storage // // For blockchain-specific operations, use the BlockStorage interface: // // bs := neofs.NewBlockStorage(cfg) // id, err := bs.PutBlock(ctx, blockIndex, blockData) // block, err := bs.GetBlock(ctx, blockIndex) // // # State Storage // // For state snapshots, use the StateStorage interface: // // ss := local.NewStateStorage(cfg) // id, err := ss.PutState(ctx, height, stateData) // state, err := ss.GetState(ctx, height) // // # Configuration // // Storage is configured in the node configuration file: // // storage: // provider: neofs // neofs: // endpoints: // - "grpc://neofs.example.gov:8080" // container: "7s23kG4..." // timeout: 30s // local: // path: /var/lib/tutus/storage // s3: // endpoint: "s3.sovereign-cloud.gov" // bucket: "tutus-blocks" // region: "national-1" // // # Data Sovereignty // // When deploying Tutus for a government: // // 1. Assess data residency requirements for the jurisdiction // 2. Choose storage providers that comply (sovereign cloud, on-premises, etc.) // 3. Configure network policies to prevent cross-border data transfer // 4. Enable encryption at rest and in transit // 5. Implement access controls per government security standards // // For NeoFS in sovereign deployments, run a private NeoFS network within // the nation's infrastructure rather than using the public network. package storage