File size: 1,191 Bytes
9f8cf99 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | """SQKD protocol scaffolding for quantum key distribution flows."""
from __future__ import annotations
from dataclasses import replace
from surface_code_in_stem.rl_control.envs.base import EnvBuildContext
from surface_code_in_stem.protocols.base import ProtocolContract, QuantumProtocol
class SQKDProtocol:
"""Experimental SQKD protocol contract."""
contract = ProtocolContract(
name="sqkd",
family="qkd",
description="Pluggable contract for satellite QKD-oriented execution flows.",
capabilities=["bb84_mapping", "satellite_channel", "basis_sifting"],
)
def supports(self, context: EnvBuildContext) -> bool:
return context.distance >= 3 and context.rounds >= 1
def normalize_context(self, context: EnvBuildContext) -> EnvBuildContext:
metadata = dict(context.protocol_metadata)
metadata.setdefault("qkd_mode", "bb84")
return replace(context, protocol_metadata=metadata)
def validate_context(self, context: EnvBuildContext) -> None:
self.contract.validate_context(context)
if context.distance < 3:
raise ValueError("SQKD protocol currently requires distance >= 3.")
|