{
  "schema_version": "ecdlp-track-v1",
  "track_id": "point_double-secp256k1-v1",
  "spec_version": "2026-06-18-package1",
  "status": "active",
  "title": "secp256k1 affine point-doubling primitive",
  "curve": {
    "name": "secp256k1",
    "field_modulus": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
    "a": "0x0",
    "b": "0x7",
    "generator_x": "0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
    "generator_y": "0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
  },
  "operation": "P -> 2P",
  "coordinate_model": "affine_separate_output",
  "point_at_infinity": "excluded_for_mvp",
  "artifact_schema": "ecdlp-benchmark-package-metadata-v1",
  "submission_type": "benchmark_package_metadata",
  "score_model": "primitive-ccx-ccz-v1",
  "rank_gate": "trusted_9024_package",
  "primary_score": "round(metrics.toffoli) * metrics.qubits",
  "input_registers": [
    {
      "name": "x",
      "bits": 256,
      "role": "input"
    },
    {
      "name": "y",
      "bits": 256,
      "role": "input"
    }
  ],
  "output_registers": [
    {
      "name": "x2",
      "bits": 256,
      "role": "output"
    },
    {
      "name": "y2",
      "bits": 256,
      "role": "output"
    }
  ],
  "ancilla_contract": "trusted eval_circuit must report phase cleanliness and ancilla cleanup across all ranked shots",
  "submission_package": {
    "schema_version": 1,
    "benchmark": "point-double-secp256k1-v1",
    "manifest": "benchmark.json",
    "score_path": "score.json",
    "archive": "submission.tar.gz",
    "note": "submission-note.md",
    "artifact": "ops.bin",
    "editable_paths": [
      "src/point_double"
    ],
    "max_note_bytes": 10240,
    "max_archive_bytes": 26214400,
    "score_model": "primitive-ccx-ccz-v1",
    "validation_shots": 9024,
    "validation_gate": "fiat_shamir_point_double",
    "required_validation_checks": [
      "classical correctness",
      "input preservation",
      "phase cleanliness",
      "ancilla cleanup"
    ],
    "description": "Contenders submit the dist/submission-metadata.json and dist/submission-note.md produced by tools/package-submission.ps1 in the baseline repository. The source archive is bounded to benchmark.json editablePaths."
  },
  "submission_validation": {
    "deterministic_shots": 9024,
    "generator": "fiat_shamir_point_double",
    "seed_hash": "SHAKE256",
    "seed_domain": "ecdlp-point-double-fiat-shamir-v1",
    "description": "The trusted Rust evaluator in the baseline repository validates 9024 Fiat-Shamir secp256k1 point-doubling shots and writes score.json before package metadata is submitted."
  },
  "baseline": {
    "name": "primitive_affine_double_baseline",
    "repository": "https://github.com/ecdlp-contest/ecdlp-point-double",
    "manifest_path": "benchmark.json",
    "score_path": "score.json",
    "artifact": "ops.bin",
    "score_model": "primitive-ccx-ccz-v1",
    "score": 178858631168,
    "metrics": {
      "toffoli": 38772736,
      "ccx": 38772736,
      "ccz": 0,
      "clifford": 75806688,
      "qubits": 4613,
      "ops": 128288929,
      "score": 178858631168
    },
    "validation": {
      "shots": 9024,
      "gate": "fiat_shamir_point_double",
      "checks": [
        "classical correctness",
        "input preservation",
        "phase cleanliness",
        "ancilla cleanup"
      ]
    }
  },
  "legacy_macro_artifact": {
    "artifact_schema": "ecdlp-macro-circuit-artifact-v1",
    "submission_type": "macro_circuit_artifact",
    "status": "local_compatibility_only"
  },
  "allowed_operations": [
    "copy",
    "const",
    "add",
    "sub",
    "neg",
    "mul",
    "square",
    "inv",
    "clear"
  ],
  "cost_model": {
    "copy": {
      "toffoli": 0,
      "toffoli_depth": 0,
      "cnot": 256,
      "clifford": 256,
      "scratch_bits": 0
    },
    "const": {
      "toffoli": 0,
      "toffoli_depth": 0,
      "cnot": 0,
      "clifford": 16,
      "scratch_bits": 0
    },
    "add": {
      "toffoli": 64,
      "toffoli_depth": 16,
      "cnot": 512,
      "clifford": 768,
      "scratch_bits": 128
    },
    "sub": {
      "toffoli": 64,
      "toffoli_depth": 16,
      "cnot": 512,
      "clifford": 768,
      "scratch_bits": 128
    },
    "neg": {
      "toffoli": 32,
      "toffoli_depth": 8,
      "cnot": 256,
      "clifford": 384,
      "scratch_bits": 64
    },
    "mul": {
      "toffoli": 4096,
      "toffoli_depth": 512,
      "cnot": 8192,
      "clifford": 12288,
      "scratch_bits": 512
    },
    "square": {
      "toffoli": 3072,
      "toffoli_depth": 384,
      "cnot": 6144,
      "clifford": 9216,
      "scratch_bits": 512
    },
    "inv": {
      "toffoli": 32768,
      "toffoli_depth": 4096,
      "cnot": 65536,
      "clifford": 98304,
      "scratch_bits": 1024
    },
    "clear": {
      "toffoli": 0,
      "toffoli_depth": 0,
      "cnot": 0,
      "clifford": 0,
      "scratch_bits": 0
    }
  },
  "fixed_test_vectors": [
    {
      "label": "G",
      "scalar": "1"
    },
    {
      "label": "2G",
      "scalar": "2"
    },
    {
      "label": "3G",
      "scalar": "3"
    },
    {
      "label": "5G",
      "scalar": "5"
    },
    {
      "label": "7G",
      "scalar": "7"
    }
  ],
  "random_validation": {
    "deterministic_scalars": [
      "11",
      "13",
      "17",
      "19",
      "23"
    ]
  }
}