
Quantenlöser für das Problem des diskreten Logarithmus auf elliptischen Kurven unter Verwendung des Shor-Algorithmus, der mehrere Orakelstrategien implementiert, um ECC-private Schlüssel auf echter Quantenhardware wiederherzustellen.
Quantenlöser für das Problem des diskreten Logarithmus auf elliptischen Kurven (ECDLP), entwickelt für den Q-Day Prize Challenge von Project Eleven. Ziel: Wiederherstellung von ECC-privaten Schlüsseln auf echter Quantenhardware unter Verwendung des Shor-Algorithmus.
Alle Herausforderungskurven verwenden y^2 = x^3 + 7 über F_p (a = 0, b = 7), entsprechend der secp256k1-Familie. Der Löser implementiert die Zwei-Register-Variante des Shor-Algorithmus für ECDLP:
Der private Schlüssel d wird durch das Sammeln mehrerer (j, k)-Stichproben wiederhergestellt, die dieselbe lineare Beziehung modulo der Gruppenordnung n erfüllen. Der Löser unterstützt sechs Oracle-Strategien für die kontrollierten Punktadditionen, die automatisch basierend auf der Kurvengröße oder manuell über --oracle ausgewählt werden.
Verwendet für Kurven mit einer Gruppenordnung bis zu etwa 6 Bits. Implementiert in projecteleven.py.
Jede kontrollierte Punktaddition "add S" wird als eine 2^(n+1) x 2^(n+1) Permutationsmatrix dargestellt, die über qc.unitary() angewendet wird. Die Matrix kodiert die vollständige Gruppenaktion: Der obere linke Block ist die Identität (Kontrolle=0), der untere rechte Block permutiert Basiszustände gemäß der Abbildung P -> P+S (Kontrolle=1).
Verwendet für größere Kurven. Implementiert in quantum_arithmetic.py.
Anstatt dichte Matrizen zu bauen, wird jede "add S"-Permutation zykluszerlegt in Transpositionen. Jede Transposition (Tausch zweier Basiszustände |a> <-> |b>) wird implementiert mit:
Das MCX verwendet eine V-Ketten-Zerlegung mit (n-2) dedizierten Ancilla-Qubits, was O(n) Toffoli-Gatter pro MCX ergibt, statt O(n^2) ohne Ancillas. Jede kontrollierte Addition wird als isolierter Unter-Schaltkreis gebaut und als ein einzelnes undurchsichtiges Gatter angehängt, wodurch quadratisches DAG-Wachstum in Qiskit vermieden wird.
--oracle coordinate)Verfügbar für Kurven bis ~6 Bits. Implementiert in quantum_oracle.py.
Anstatt Punkte als Gruppenindizes zu kodieren, enthält das Quantenregister tatsächliche (x, y)-Feldelementkoordinaten in Binärform plus ein Identitäts-Flag. Das Punktregister-Layout ist:
x_reg: f_bits Qubits (f_bits = ceil(log2(p)))y_reg: f_bits Qubitsid_flag: 1 Qubit (1 = Punkt im Unendlichen)Jede kontrollierte "add S" wird aus der EC-Additionsformel über alle gültigen Koordinatenkodierungen berechnet, was eine Permutation auf dem Koordinatenregister erzeugt. Diese Permutation wird mit derselben CNOT-Reduktions- + MCX-Infrastruktur wie Strategie 2 in Transpositionen zykluszerlegt.
--oracle arithmetic)Framework für polynomial skalierende Punktaddition. Implementiert in quantum_oracle.py und quantum_arithmetic.py.
Verwendet Koordinatenkodierung (wie Strategie 3) mit QFT-basierten modularen arithmetischen Primitiven als Bausteine auf dem Weg zur vollständig arithmetischen Punktaddition. Die Codebasis enthält getestete Implementierungen von:
Die arithmetischen Primitive erreichen eine Skalierung von O(n^3) pro Punktaddition gegenüber O(N*n) für den Permutationsansatz. Allerdings haben die QFT-basierten Operationen einen etwa 150x größeren konstanten Faktor, was den arithmetischen Ansatz erst für Kurven oberhalb einer Gruppenordnung von ~20 Bits effizienter macht. Für die aktuellen Herausforderungsgrößen (bis zu 12 Bits) bleibt der permutationsbasierte Addierer schneller und wird standardmäßig verwendet.
--oracle google)Implementiert in google_semiclassical.py. Inspiriert von der Qubit-recycelten Phasenschätzungstechnik von Griffiths & Niu (1996), angewendet im Maßstab in Babbush et al. (2026) für secp256k1-ECDLP-Ressourcenschätzungen. Das Papier von Babbush et al. wurde am 30. März 2026 veröffentlicht.
Ersetzt die zwei Multi-Qubit-Zählregister (j, k) und die bulk inverse QFT durch zwei einzelne recycelte Qubits und klassisch konditionierte Phasenkorrekturen. Jedes Bit des Zählregisters wird sequentiell verarbeitet: Vorbereitung in |+>, Anwendung der kontrollierten Punktaddition, Phasenkorrektur basierend auf allen zuvor gemessenen Bits, dann Messung. Die dynamischen Schaltkreis-Primitive reset + if_test in Qiskit ermöglichen dies auf IBM-Quantenhardware.
Das Oracle für kontrollierte Punktadditionen wird an die vorhandene Infrastruktur delegiert (dichte unitäre für <= 6 Bits, effiziente Permutation für > 6 Bits), sodass die Qubit-Einsparungen ausschließlich aus der Eliminierung der Zählregister stammen.
--oracle ripple)Implementiert in ripple_carry_shor.py. Verwendet CDKM-Ripple-Carry-Addierer (Cuccaro et al. 2004) für die kontrollierten Punktadditionen, wodurch sowohl dichte unitäre Matrizen als auch zykluszerlegte Transpositionsschaltungen ersetzt werden.
In der Gruppenindex-Kodierung wird Punkt P = kG durch seinen Index k in der zyklischen Gruppe dargestellt. Das Addieren von S = sG wird zur modularen Addition des klassischen konstanten s (mod n). Die entscheidende Einsicht: Jede kontrollierte Punktaddition reduziert sich auf eine einzige kontrollierte modulare Addition einer bekannten Konstanten, implementiert über Qiskits CDKMRippleCarryAdder und IntegerComparator.
Das Oracle besteht aus 2m kontrollierten modularen Additionen (m pro Zählregister), wobei jede kontrollierte Mod-Add wie folgt ausgeführt wird:
Kein Wissen über den privaten Schlüssel d wird beim Schaltungsaufbau verwendet. Gruppenindizes für G-Potenzen werden als 2^i mod n (öffentlich) berechnet. Gruppenindizes für Q-Potenzen werden aus der öffentlichen Aufzählung der von G erzeugten zyklischen Gruppe abgeleitet – der Punkt Q wird in dieser Aufzählung nachgeschlagen.
Die Codebasis enthält QFT-basierte modulare arithmetische Bausteine (Beauregard/Draper-Addierer, Quanten-Quanten modulare Multiplikation, modulare Inverse/Negation) als Grundlage für eine vollständig arithmetische Koordinatenkodierung bei 256 Bit. Diese Primitive wurden mittels Statevector-Simulation für Primzahlen bis p=13 auf Korrektheit verifiziert.
Erfolgreiche Wiederherstellung privater Schlüssel auf IBM-Quantenhardware für Herausforderungskurven bis zu 17 Bit:
Alle Läufe wurden auf dem IBM-Quantum-Open-Instance-Plan ausgeführt, der 10 Minuten kostenlose Quantenberechnung pro Monat gewährt. Vollständige Ausführungsprotokolle befinden sich im Ordner executions/.
Die Ripple-Carry-Strategie (Strategie 6) ermöglichte einen großen Sprung: von 10 Bit (40 Qubits, 2M Gatter) auf 17 Bit (69 Qubits, 112K Gatter) – eine 7-Bit-Schlüsselerhöhung mit einer 18-fachen Reduktion der Zwei-Qubit-Gatteranzahl. Die Nächstnachbar-Gatterstruktur des CDKM-Addierers lässt sich effizient auf IBMs Heavy-Hex-Topologie abbilden, wodurch der Routing-Overhead nahe 1x bleibt.
Die semiklassische Strategie (--oracle google) hat erfolgreich Schlüssel bei 4 Bit, 6 Bit und 7 Bit unter Verwendung dynamischer Schaltungen (Mid-Circuit reset, klassisch konditionierte p-Gatter via if_test) auf IBM-Heron-r2-Prozessoren wiederhergestellt. Bei 7 Bit verwendet die Schaltung nur 14 Qubits (vs. 26 beim Standard-Permutationsansatz), während nach der Transpilation vergleichbare 2Q-Gatterzahlen erzielt werden.
Ab 8 Bit wird der semiklassische Ansatz auf aktueller IBM-Hardware unpraktikabel. Obwohl if_else und reset auf Heron r2 unterstützt werden (bestätigt durch Inspektion des Backend-Targets), erfordert jeder klassische Feedback-Punkt eine vollständige QPU-Synchronisation – alle 156 physikalischen Qubits müssen im Leerlauf sein, während der klassische Controller die Konditional für die ~16 aktiven Qubits verarbeitet. Bei ~295K CZ-Gattern, verteilt auf 16+ Feedback-Punkte, überschreitet der Ausführungs-Overhead pro Shot das QPU-Zeitbudget. Der Standard-Permutationsansatz, der die gleiche Gatteranzahl als einen einzigen kontinuierlichen Batch ohne dynamische Schaltungen ausführt, wird in diesem Maßstab erfolgreich abgeschlossen.
Eine approximative QFT-Trunkierung (max_corrections-Parameter) reduziert die Anzahl der if_else-Blöcke von O(n^2) auf O(n), indem nur die nächsten k Phasenkorrekturen pro Messschritt beibehalten werden (Winkel jenseits k tragen < pi/2^{k+1} bei, unterhalb des Hardware-Rauschbodens). Mit max_corrections=1 hat die 8-Bit-Schaltung 16 if_else-Blöcke – immer noch ausreichend, um bei dieser Gatteranzahl auf IBM-Hardware einen Timeout zu verursachen.
Unter Annahme einer typischen IBM-Quantum-Zwei-Qubit (CX)-Gatterfidelity von ~99,5% fällt die geschätzte Schaltungsfidelity exponentiell mit der Gatteranzahl:
Die Schaltungsfidelity wird berechnet als F ≈ (0.995)^{CX_count}. Für alles jenseits von 4 Bit ist die geschätzte Fidelity astronomisch klein – die Ausgabeverteilung ist überwältigend durch Rauschen bestimmt.
Ab 8 Bit erzeugt jeder Shot fast einen eindeutigen Bitstring (8.128 einzigartige Ergebnisse von 8.192 Shots bei 8 Bit; alle 20.000 einzigartig bei 16 Bit und 17 Bit). Die Ausgabe ist auf Bitstring-Ebene nicht von einer gleichmäßigen Zufallsstichprobe zu unterscheiden. Dennoch gewinnt der Algorithmus den korrekten privaten Schlüssel zurück.
Die entscheidende Einsicht ist, dass die Shor-Nachverarbeitung auf eine Weise robust gegenüber Rauschen ist, wie es die reine Bitstring-Analyse nicht ist. Jeder Shot erzeugt ein (j, k, r)-Messungstripel. Die Extraktion berechnet d_cand = (r - j) · k^{-1} mod n und verifiziert über d_cand · G == Q. Nur der wahre d besteht die EC-Verifikation, sodass selbst ein einziger korrekter Kandidat unter Tausenden von Rauschshots ausreicht.
Ein rein zufälliges (j, k, r)-Tripel erzeugt mit Wahrscheinlichkeit ~1/n den korrekten d_cand. Bei S Shots beträgt die erwartete Anzahl verifizierter Treffer allein aus Rauschen ~S/n. Bei 17 Bit (n=65.173, S=20.000) ergibt dies etwa 0,3 erwartete Rauschterffer – jede erfolgreiche Wiederherstellung in diesem Maßstab liefert einen Hinweis auf ein Quantensignal oberhalb des klassischen Rauschbodens.
Für die kleineren Kurven, bei denen shots >> n (z. B. 10 Bit mit n=547 und 1.024 Shots), liegt der Rauschboden bei ~1.024/547 ≈ 1,9 Stimmen pro Kandidat. Selbst eine Handvoll signaltragender Shots hebt das korrekte d über den Rauschboden. Dies erklärt, wie der Algorithmus trotz Schaltungsfidelities erfolgreich ist, die die Berechnung unmöglich erscheinen lassen würden.
Im Spielzeugmaßstab fungiert der Verifikationsschritt der Extraktion (d_cand * G == Q) als Filter, der nur den wahren d akzeptiert. Dies bedeutet, dass selbst rein zufällige (j, k, r)-Tripel gültige Kandidaten mit einer Rate von etwa shots / n pro Lauf erzeugen. Wenn shots >> n, kann allein zufälliges Rauschen d mit hoher Wahrscheinlichkeit wiederherstellen.
Um zu testen, ob der Quantenschaltkreis über diesen klassischen Rauschboden hinaus beiträgt, haben wir die 6-Bit-Herausforderung (n=31) mit nur 8 Shots (deutlich unter der Gruppenordnung) 10 Mal auf ibm_kingston ausgeführt:
Ergebnis: 4/10 Erfolge (40 %) gegenüber einer klassischen Rauschbasislinie von ~20 % (berechnet mittels Monte-Carlo-Simulation: 8 zufällige Bitstrings mit (r-j)*k_inv mod 31 gefiltert durch Verifikation). Einseitiger Binomialtest: P(X >= 4 | n=10, p=0,20) = 0,121, was auf eine 2-fache Verbesserung gegenüber dem Rauschboden hindeutet. Obwohl dies bei p < 0,05 (was 5+ Erfolge erfordern würde) nicht einzeln statistisch signifikant ist, ist die beobachtete Rate konsistent mit einem Quantensignal, das etwa 1-2 zusätzliche gültige (j, k)-Paare pro Lauf über das hinaus liefert, was der Zufall bietet.
Dieses Ergebnis liegt zwischen dem klassischen Rauschboden und dem theoretischen Quantenvorteilsbereich. Bei größeren Kurvengrößen, bei denen n >> shots, sinkt die Rauschbasislinie unter 1 %, und jede erfolgreiche Schlüsselwiederherstellung wird zu einem starken Hinweis auf Quantenberechnung.
git clone https://github.com/GiancarloLelli/quantum.git cd quantum
python -m venv . Scripts\Activate.ps1 # For Windows only
pip install -r requirements.txt
### So führen Sie es aus
Sie benötigen ein [IBM Quantum](https://quantum.ibm.com/)-Konto. Geben Sie Ihren API token beim ersten Durchlauf ein, und er wird lokal gespeichert:```bash
# Solve the 4-bit challenge curve:
python projecteleven.py --challenge 4 --token YOUR_IBM_TOKEN --backend ibm_marrakesh
# Subsequent runs (token already saved):
python projecteleven.py --challenge 4 --backend ibm_marrakesh
# Use the coordinate-based quantum oracle:
python projecteleven.py --challenge 4 --oracle coordinate --backend ibm_marrakesh
# Use the arithmetic oracle (coordinate encoding + QFT primitives):
python projecteleven.py --challenge 4 --oracle arithmetic --backend ibm_marrakesh
# Use ripple-carry modular addition (CDKM — best for 8-bit+):
python projecteleven.py --challenge 16 --oracle ripple --backend ibm_fez --shots 20000
# Use Google semiclassical phase estimation (qubit-recycled):
python projecteleven.py --challenge 4 --oracle google --backend ibm_marrakesh
# Use a specific IBM Quantum instance:
python projecteleven.py --challenge 4 --instance ibm-q/open/main --backend ibm_marrakesh
# Verify curve parameters without quantum execution:
python projecteleven.py --curve curve_4 --verify-only
projecteleven.py # Shor solver — dense unitary approach + CLI entry point quantum_arithmetic.py # Efficient permutation decomposition + QFT arithmetic primitives quantum_oracle.py # Coordinate-based oracle + arithmetic oracle framework google_semiclassical.py # Google semiclassical PE — qubit-recycled phase estimation ripple_carry_shor.py # Ripple-carry modular addition oracle (CDKM) — best for 8-bit+ input_curves.json # Challenge curves (4-bit to 30-bit) problem/curves.py # Curve generation utility requirements.txt # qiskit, qiskit-ibm-runtime
## Referenzen
- P. Shor, ["Algorithmen für Quantenberechnung: Diskrete Logarithmen und Faktorisierung"](https://arxiv.org/abs/quant-ph/9508027) (1994)
- S. Beauregard, ["Schaltung für Shors Algorithmus mit 2n+3 Qubits"](https://arxiv.org/abs/quant-ph/0205095) (2003)
- S. A. Cuccaro, T. G. Draper, S. A. Kutin, D. P. Moulton, ["Eine neue Quanten-Ripple-Carry-Additionsschaltung"](https://arxiv.org/abs/quant-ph/0410184) (2004)
- M. Roetteler, M. Naehrig, K. Svore, K. Lauter, ["Quantenressourcenabschätzungen zur Berechnung diskreter elliptischer Kurven-Logarithmen"](https://arxiv.org/abs/1706.06752) (2017)
- R. Griffiths, C.-S. Niu, ["Semiclassische Fouriertransformation für die Quantenberechnung"](https://arxiv.org/abs/quant-ph/9511007) (1996)
- R. Babbush et al., ["Sicherung von Elliptische-Kurven-Kryptowährungen gegen Quantenbedrohungen: Ressourcenabschätzungen und Abhilfemaßnahmen"](https://quantumai.google/static/site-assets/downloads/cryptocurrency-whitepaper.pdf) (2026)
## Lizenz
Dieses Projekt ist ein Beitrag zur Q-Day Prize Challenge und wird unter der [MIT LICENSE](https://github.com/yuvadm/quantumslop/blob/HEAD/LICENSE) veröffentlicht.
| Kurvengröße | Standard-Qubits | Semiclassical-Qubits | Einsparung | Hardware-verifiziert |
|---|
| 4-bit (n=7) | 11 | 5 | 55% | Ja |
| 6-bit (n=31) | 17 | 7 | 59% | Ja |
| 7-bit (n=79) | 26 + anc | 14 | 46% | Ja |
| 8-bit (n=139) | 25 + anc | 10 + anc | 60% | Nein (QPU-Sync-Overhead) |
| 10-bit (n=547) | 31 + anc | 12 + anc | 61% | Nein (QPU-Sync-Overhead) |
| Kurvengröße | Qubits | 2Q-Gatter (transpiliert) | Hardware-verifiziert |
|---|
| 4-bit (n=7) | 17 | 1.824 | Ja (Simulation) |
| 8-bit (n=139) | 37 | 11.224 | — |
| 10-bit (n=547) | 45 | 17.204 | — |
| 12-bit (n=2143) | 53 | 24.304 | — |
| 16-bit (n=32497) | 65 | 98.049 | Ja |
| 17-bit (n=65173) | 69 | 111.816 | Ja |
| Metrik | Dichte unitäre | Effiziente Permutation | Koordinaten-Oracle | Arithmetisches Oracle | Semiclassical PE | Ripple-Carry |
|---|
| Punktkodierung | Gruppenindex | Gruppenindex | (x, y, id_flag) | (x, y, id_flag) | Gruppenindex | Gruppenindex |
| Skalierung pro Addition | O(4^n) Zerlegung | O(N * n) | O(N * f_bits) | O(n^3) asymptotisch | O(N * n) | O(m^2) |
| Qubits (4-bit) | 11 | 13 | 24 | 24 | 5 | 17 |
| Qubits (6-bit) | 17 | 21 | 36 | 36 | 9 | 25 |
| 2Q-Gatter (4-bit) | 774 | ~1.200 | 6.449 | 6.449 | ~1.200 | 1.824 |
| 2Q-Gatter (6-bit) | 23.471 | ~38.000 | 95.254 | 95.254 | ~38.000 | 4.582 |
| Praktischer Bereich | <= 6-bit | <= ~16-bit | <= 6-bit | >= 20-bit (Zukunft) | <= ~16-bit | <= ~20-bit |
| Herausforderung | p | n | Strategie | Qubits | 2Q-Gatter | Transpilierte Tiefe | Shots | Backend | Wiederhergestelltes d | Job-ID |
|---|
| 4-bit | 13 | 7 | Dichte unitäre | 11 | 774 | 2.425 | 8.192 | ibm_torino | 6 | d73u28kvllmc73anvi90 |
| 4-bit | 13 | 7 | Koordinaten-Oracle | 24 | 6.449 | 13.125 | 8.192 | ibm_kingston | 6 | d74ht798qmgc73fm32c0 |
| 4-bit | 13 | 7 | Arithmetisches Oracle | 24 | 6.477 | 13.452 | 8.192 | ibm_torino | 6 | d75648lbjrds73ec0eng |
| 4-bit | 13 | 7 | Semiclassical PE | 5 | 747 | 2.522 | 256 | ibm_kingston | 6 | d75p1ftbjrds73ecne3g |
| 6-bit | 43 | 31 | Dichte unitäre | 17 | 23.471 | 72.475 | 8.192 | ibm_torino | 18 | d73u2l5koquc73e24u8g |
| 6-bit | 43 | 31 | Koordinaten-Oracle | 36 | 95.254 | 169.766 | 8.192 | ibm_kingston | 18 | d74hu918qmgc73fm33g0 |
| 6-bit | 43 | 31 | Semiclassical PE | 7 | 23.256 | 73.183 | 256 | ibm_kingston | 18 | d75p1unq1anc738cmr6g |
| 7-bit | 67 | 79 | Semiclassical PE | 14 | 127.918 | 266.122 | 256 | ibm_kingston | 56 | d75p3sq3qcgc73fs2fpg |
| 8-bit | 163 | 139 | Effiziente Permutation | 32 | 294.628 | 599.517 | 8.192 | ibm_kingston | 103 | d73ui15koquc73e25e4g |
| 9-bit | 349 | 313 | Effiziente Permutation | 36 | 887.544 | 1.764.266 | 8.192 | ibm_torino | 135 | d73ua2h8qmgc73flei9g |
| 10-bit | 547 | 547 | Effiziente Permutation | 40 | 2.049.138 | 3.948.250 | 1.024 | ibm_torino | 165 | d752vfu8faus73evhovg |
| 16-bit | 32.803 | 32.497 | Ripple-Carry | 65 | 98.049 | 202.994 | 20.000 | ibm_fez | 20.248 | d790j2hq1efs73d2979g |
| 17-bit | 65.647 | 65.173 | Ripple-Carry | 69 | 111.816 | 231.475 | 20.000 | ibm_fez | 1.441 | d790krrc6das739idasg |
| Herausforderung | Strategie | 2Q-Gatter | Geschätzte Schaltungsfidelity | Einzigartige Ergebnisse | Gesamtshots | Signalregime |
|---|
| 4-bit | Dichte | 774 | ~2,1% | 1.869 / 2.048 | 8.192 | Schwaches Signal |
| 6-bit | Dichte | 23.471 | ~10^{-51} | 3.776 / 131.072 | 8.192 | Rauschdominiert |
| 8-bit | Permutation | 294.628 | ~10^{-644} | 8.128 / 4.3B | 8.192 | Rauschdominiert |
| 9-bit | Permutation | 887.544 | ~10^{-1.939} | 8.168 / 68.7B | 8.192 | Rauschdominiert |
| 10-bit | Permutation | 2.049.138 | ~10^{-4.477} | 1.024 / 1.1T | 1.024 | Rauschdominiert |
| 16-bit | Ripple-Carry | 98.049 | ~10^{-214} | 20.000 / 2^65 | 20.000 | Rauschdominiert |
| 17-bit | Ripple-Carry | 111.816 | ~10^{-244} | 20.000 / 2^69 | 20.000 | Rauschdominiert |
| Lauf | Job-ID | Ergebnis |
|---|
| 1 | d75qrrq3qcgc73fs4hn0 | FEHLGESCHLAGEN |
| 2 | d75qs3e8faus73f0ep6g | FEHLGESCHLAGEN |
| 3 | d75qsafq1anc738coujg | FEHLGESCHLAGEN |
| 4 | d75qsie8faus73f0eplg | d = 18 |
| 5 | d75qsq23qcgc73fs4ing | d = 18 |
| 6 | d75qt168faus73f0eq50 | FEHLGESCHLAGEN |
| 7 | d75qt7vq1anc738covf0 | d = 18 |
| 8 | d75qthu8faus73f0eqmg | FEHLGESCHLAGEN |
| 9 | d75qtodbjrds73ecpk80 | d = 18 |
| 10 | d75qtvi3qcgc73fs4jsg | FEHLGESCHLAGEN |
| Flag | Beschreibung | Standard |
|---|
--challenge N | Löse die N-Bit-Challenge-Kurve aus input_curves.json | — |
--curve NAME | Verwende eine integrierte Testkurve (curve_4) | — |
--token TOKEN | IBM Quantum API-Token (wird bei erster Nutzung lokal gespeichert) | — |
--backend NAME | IBM Quantum-Backend | ibm_marrakesh |
--instance ID | IBM Quantum-Instanz | open-instance |
--shots N | Anzahl der Messdurchgänge | 8192 |
--oracle TYPE | Oracle-Strategie: dense, permutation, coordinate, arithmetic, google oder ripple | auto |
--optimization-level N | Qiskit-Transpilations-Optimierungsstufe (0-3) | 3 |
--d N | Bekannter geheimer Schlüssel zum Testen (mit --curve) | — |
--verify-only | Kurvenparameter validieren und beenden | — |