
यह रिपॉजिटरी https://www.projecteleven.com/ द्वारा QDay पुरस्कार चुनौती के लिए कोड और सबमिशन विवरण शामिल करती है।
क्वांटम सॉल्वर एलिप्टिक कर्व डिस्क्रीट लॉगरिदम समस्या (ECDLP) के लिए, जो Q-Day Prize Challenge के लिए Project Eleven द्वारा निर्मित है। लक्ष्य: Shor के एल्गोरिथम का उपयोग करके वास्तविक क्वांटम हार्डवेयर पर ECC निजी कुंजियाँ पुनर्प्राप्त करना।
सभी चुनौती वक्र y^2 = x^3 + 7 का उपयोग करते हैं F_p पर (a = 0, b = 7), secp256k1 परिवार से मेल खाते हुए। सॉल्वर ECDLP के लिए Shor के एल्गोरिथम के दो-रजिस्टर वेरिएंट को लागू करता है:
निजी कुंजी d को समूह क्रम n मॉड्यूलो समान रैखिक संबंध को संतुष्ट करने वाले कई (j, k) नमूने एकत्र करके पुनर्प्राप्त किया जाता है। सॉल्वर नियंत्रित बिंदु जोड़ के लिए छह ऑरेकल रणनीतियों का समर्थन करता है, जो वक्र आकार के आधार पर स्वचालित रूप से चुना जाता है या --oracle के माध्यम से मैन्युअल रूप से चुना जाता है।
~6 बिट तक के समूह क्रम वाले वक्रों के लिए उपयोग किया जाता है। projecteleven.py में कार्यान्वित।
प्रत्येक नियंत्रित बिंदु जोड़ "add S" को 2^(n+1) x 2^(n+1) क्रमचय मैट्रिक्स के रूप में प्रस्तुत किया जाता है, जिसे qc.unitary() के माध्यम से लागू किया जाता है। मैट्रिक्स पूर्ण समूह क्रिया को एन्कोड करता है: ऊपरी-बाएँ ब्लॉक पहचान है (नियंत्रण=0), निचला-दाएँ ब्लॉक मानचित्र P -> P+S (नियंत्रण=1) के अनुसार आधार अवस्थाओं को क्रमचयित करता है।
बड़े वक्रों के लिए उपयोग किया जाता है। quantum_arithmetic.py में कार्यान्वित।
घने मैट्रिक्स बनाने के बजाय, प्रत्येक "add S" क्रमचय को ट्रांसपोज़िशन में चक्र-विघटित किया जाता है। प्रत्येक ट्रांसपोज़िशन (दो आधार अवस्थाओं |a> <-> |b> की अदला-बदली) को लागू किया जाता है:
MCX समर्पित एंसिला क्वबिट्स के साथ V-चेन अपघटन का उपयोग करता है, जो एंसिला के बिना O(n^2) की तुलना में प्रति MCX O(n) Toffoli गेट देता है। प्रत्येक नियंत्रित जोड़ को एक पृथक उप-सर्किट के रूप में बनाया गया है और एक एकल अपारदर्शी गेट के रूप में जोड़ा गया है, Qiskit में द्विघात DAG वृद्धि से बचा।
--oracle coordinate)~6-बिट तक के वक्रों के लिए उपलब्ध। quantum_oracle.py में कार्यान्वित।
समूह सूचकांक के रूप में बिंदुओं को एन्कोड करने के बजाय, क्वांटम रजिस्टर बाइनरी में वास्तविक (x, y) फ़ील्ड-तत्व निर्देशांक और एक पहचान फ़्लैग रखता है। बिंदु रजिस्टर लेआउट है:
x_reg: f_bits क्वबिट्स (f_bits = ceil(log2(p)))y_reg: f_bits क्वबिट्सid_flag: 1 क्वबिट (1 = अनंत पर बिंदु)प्रत्येक नियंत्रित "add S" की गणना सभी मान्य निर्देशांक एन्कोडिंग पर EC जोड़ सूत्र से की जाती है, जो निर्देशांक रजिस्टर पर एक क्रमचय उत्पन्न करता है। इस क्रमचय को रणनीति 2 के समान CNOT-कमी + MCX बुनियादी ढाँचे का उपयोग करके ट्रांसपोज़िशन में चक्र-विघटित किया जाता है।
--oracle arithmetic)बहुपद-स्केलिंग बिंदु जोड़ के लिए ढाँचा। quantum_oracle.py और quantum_arithmetic.py में कार्यान्वित।
पूर्ण अंकगणितीय बिंदु जोड़ की ओर निर्माण खंड के रूप में QFT-आधारित मॉड्यूलर अंकगणितीय प्रिमिटिव के साथ निर्देशांक एन्कोडिंग (रणनीति 3 के समान) का उपयोग करता है। कोडबेस में कार्यान्वित और परीक्षित शामिल हैं:
अंकगणितीय प्रिमिटिव प्रति बिंदु जोड़ O(n^3) स्केलिंग प्राप्त करते हैं जबकि क्रमचय दृष्टिकोण O(N*n) होता है। हालाँकि, QFT-आधारित संचालन ~150x बड़ा स्थिरांक कारक रखते हैं, जिससे अंकगणितीय दृष्टिकोण केवल ~20-बिट समूह क्रम से ऊपर के वक्रों के लिए अधिक कुशल होता है। वर्तमान चुनौती आकारों (12-बिट तक) के लिए, क्रमचय-आधारित एडर तेज़ रहता है और डिफ़ॉल्ट रूप से उपयोग किया जाता है।
--oracle google)google_semiclassical.py में कार्यान्वित। Griffiths & Niu (1996) से क्विट-रीसाइकल फेज़ एस्टीमेशन तकनीक से प्रेरित, Babbush et al. (2026) में secp256k1 ECDLP संसाधन अनुमानों के लिए स्केल पर लागू। Babbush et al. पेपर 30 मार्च, 2026 को प्रकाशित हुआ था।
दो मल्टी-क्विट गणना रजिस्टर (j, k) और बल्क व्युत्क्रम QFT को दो एकल रीसाइकल क्वबिट्स और शास्त्रीय रूप से वातानुकूलित चरण सुधारों से बदलता है। प्रत्येक गणना रजिस्टर बिट को क्रमिक रूप से संसाधित किया जाता है: |+> में तैयार करें, नियंत्रित बिंदु जोड़ लागू करें, पहले मापे गए सभी बिट्स के आधार पर चरण सुधारें, फिर मापें। Qiskit में reset और if_test डायनामिक सर्किट प्रिमिटिव IBM क्वांटम हार्डवेयर पर इसे सक्षम करते हैं।
नियंत्रित बिंदु जोड़ के लिए ऑरेकल मौजूदा बुनियादी ढाँचे (<= 6-बिट के लिए डेंस यूनिटरी, > 6-बिट के लिए कुशल क्रमचय) को सौंपा गया है, इसलिए क्विट बचत पूरी तरह से गणना रजिस्टरों को समाप्त करने से आती है।
| Curve size | Standard qubits | Semiclassical qubits | Savings | Hardware verified |
|---|---|---|---|---|
| 4-bit (n=7) | 11 | 5 | 55% | Yes |
| 6-bit (n=31) | 17 | 7 | 59% | Yes |
| 7-bit (n=79) | 26 + anc | 14 | 46% | Yes |
| 8-bit (n=139) | 25 + anc | 10 + anc | 60% | No (QPU sync overhead) |
| 10-bit (n=547) | 31 + anc | 12 + anc | 61% | No (QPU sync overhead) |
--oracle ripple)ripple_carry_shor.py में कार्यान्वित। नियंत्रित बिंदु जोड़ के लिए CDKM रिपल-कैरी एडर्स (Cuccaro et al. 2004) का उपयोग करता है, जो डेंस यूनिटरी मैट्रिसेस और चक्र-विघटित ट्रांसपोज़िशन सर्किट दोनों को प्रतिस्थापित करता है।
समूह-सूचकांक एन्कोडिंग में, बिंदु P = kG को चक्रीय समूह में इसके सूचकांक k द्वारा दर्शाया जाता है। S = sG जोड़ना शास्त्रीय स्थिरांक s का मॉड्यूलर जोड़ (mod n) बन जाता है। मुख्य अंतर्दृष्टि: प्रत्येक नियंत्रित बिंदु जोड़ ज्ञात स्थिरांक के एक नियंत्रित मॉड्यूलर जोड़ में कम हो जाता है, जो Qiskit के CDKMRippleCarryAdder और IntegerComparator के माध्यम से कार्यान्वित होता है।