अब तक, प्रत्येक बिटकॉइन सुधार प्रस्ताव (BIP) को क्रिप्टोग्राफिक प्राइमिटिव्स की आवश्यकता थी, को पहिया को फिर से मजबूत करना पड़ा। प्रत्येक एक SECP256K1 अण्डाकार वक्र और संबंधित एल्गोरिदम के अपने स्वयं के कस्टम पायथन कार्यान्वयन के साथ बंडल आया, प्रत्येक एक दूसरे से अलग रूप से अलग है। इन विसंगतियों ने शांत देनदारियों को पेश किया और बीआईपी को अनावश्यक रूप से जटिल किया। इस समस्या को हाल ही में उजागर किया गया था बिटकॉइन ऑप्टेक न्यूज़लेटर #348और यह कुछ कम से कम कुछ मुट्ठी भर डेवलपर्स बिटकॉइन विकास समुदाय में लंबे समय से महसूस किया है: क्रिप्टोग्राफिक बीआईपी संदर्भ SECP256K1 कोड के लिए एक एकीकृत, पुन: प्रयोज्य मानक होना चाहिए।
पिछले हफ्ते, जोनास निक और टिम रफिंग ऑफ ब्लॉकस्ट्रीम रिसर्च और सेबेस्टियन फालबेसनर ने इस दिशा में बड़ी प्रगति की। उनके मौजूदा हिस्से के रूप में Chilldkg प्रस्तावटीम ने जारी किया SECP256K1LAB। एक नया, जानबूझकर असुरक्षित प्रोटोटाइप, प्रयोग और बीआईपी विनिर्देशों के लिए पायथन लाइब्रेरी। यह उत्पादन के उपयोग के लिए नहीं है (क्योंकि यह निरंतर-समय नहीं है और इसलिए साइड-चैनल हमलों के लिए असुरक्षित है), लेकिन यह एक महत्वपूर्ण अंतर को भरता है: यह BIP-340- शैली SCHNORR हस्ताक्षर, ECDH, और निम्न-स्तरीय क्षेत्र/समूह ARMETMETIC सहित SECP256K1 कार्यक्षमता के लिए एक स्वच्छ, सुसंगत संदर्भ प्रदान करता है। लक्ष्य सरल है: निरर्थक, एक-बंद कार्यान्वयन से बचकर भविष्य के बीआईपी लिखने के लिए इसे आसान और सुरक्षित बनाएं। बीआईपी लेखकों के लिए, इसका मतलब है: कम कस्टम कोड, कम कल्पना मुद्दे, और प्रोटोटाइप से प्रस्ताव तक एक स्पष्ट पथ।
> क्यों नहीं सिर्फ असली Secp256K1 लाइब्रेरी का उपयोग करें?
बिटकॉइन कोर में पहले से ही SECP256K1 क्रिप्टोग्राफी के लिए एक तेज, निरंतर-समय सी लाइब्रेरी शामिल है। तो क्यों बीआईपी लेखक सिर्फ इसका उपयोग नहीं करते हैं?
जब एक बीआईपी लेखक एक प्रस्ताव प्रस्तुत करता है, तो उनसे यह उम्मीद करने के लिए एक संदर्भ कार्यान्वयन को शामिल करने की उम्मीद की जाती है कि विचार कैसे काम करता है। इन कार्यान्वयन को पायथन में नहीं लिखा जाना है, लेकिन सी अक्सर प्रोटोटाइप के लिए बहुत कम स्तर का होता है। पायथन को पढ़ना आसान है, संशोधित करना आसान है, और यह स्पष्ट करता है कि लेखक क्या व्यक्त करने की कोशिश कर रहा है। ये गुण विशेष रूप से विनिर्देशों को लिखने के लिए इसे अच्छी तरह से अनुकूल बनाते हैं।
एक नए क्रिप्टोग्राफिक विचार को पेश करते समय, यह कुछ स्पष्ट, संक्षिप्त और प्रयोग करने के लिए सुरक्षित करने में मदद करता है। सिद्धांत रूप में, उपकरण Hacspec औपचारिक विनिर्देशों के लिए एक अच्छा विकल्प हैं, क्योंकि HACSPEC कोड भी मान्य जंग है। लेकिन व्यवहार में, HACSPEC के साथ काम करना और पढ़ना मुश्किल हो सकता है, खासकर बीआईपी पाठकों के लिए जो जंग से परिचित नहीं हैं।
पायथन की पठनीयता इसे जारी रखती है, भाषा को कई लेखकों ने जब कुछ काम किया, यह समझाने की आवश्यकता है कि कई लेखकों को वापस लौटने की आवश्यकता है।
यह वापस शुरू हुआ बीआईपी 340 Schnorr हस्ताक्षरजब बीआईपी लेखकों ने पायथन में मूल संदर्भ कोड लिखा था, तो गणित का पालन करना आसान होगा। उन्होंने बिल्कुल परिभाषित किया कि SCHNORR-STYLE हस्ताक्षर और सत्यापन SECP256K1 के वक्र मापदंडों का उपयोग करके कैसे किया जाए। उन्हें खरोंच से सब कुछ बनाना था: फील्ड अंकगणित, समूह संचालन, नियतात्मक गैर -पीढ़ी और एन्कोडिंग नियम। पायथन कोड स्पष्ट और शैक्षिक था। लेकिन यह विशेष रूप से इस एकल बीआईपी के अनुरूप था, और भविष्य के लोगों द्वारा पुन: उपयोग करने के लिए डिज़ाइन नहीं किया गया था।
इसी तरह, बीआईपी 324 एन्क्रिप्टेड पी 2 पी परिवहनबिटकॉइन नोड्स को एक -दूसरे से बात करने के लिए एन्क्रिप्शन जोड़ा गया, और शोर नामक एक प्रोटोकॉल का उपयोग किया जो प्रमुख एक्सचेंजों, साझा रहस्यों और सममित एन्क्रिप्शन पर निर्भर करता है। हालांकि यह BIP 340 में उपयोग किए जाने वाले SECP256K1 वक्र पर बनाता है, लेकिन इसने वास्तविक कार्यान्वयन कोड में से किसी का पुन: उपयोग नहीं किया। सभी क्रिप्टोग्राफिक लॉजिक जैसे कि ईसीडीएच, सीरियलकरण और हैंडशेक पैटर्न को पायथन में खरोंच से फिर से लागू किया गया था। भले ही अंतर्निहित गणित समान है, प्रत्येक बीआईपी तर्क का अपना संस्करण लिखता है। यह डुप्लिकेट प्रयास की ओर जाता है और सूक्ष्म विसंगतियों के लिए क्षमता का परिचय देता है।
SECP256K1LAB एक उद्देश्य के लिए बनाया गया एक पायथन लाइब्रेरी है: बिटकॉइन के लिए क्रिप्टोग्राफिक चश्मा लिखना और परीक्षण करना आसान बनाता है। पायथन पहले से ही सबसे लोकप्रिय और व्यापक रूप से उपयोग की जाने वाली भाषा है जो कि संदर्भ कार्यान्वयन और बीआईपी में परीक्षण वैक्टर के लिए है, इसलिए एक साझा, पुन: प्रयोज्य पुस्तकालय होने से बस समझ में आता है। यह उत्पादन उपयोग के लिए डिज़ाइन नहीं किया गया है। यह प्रोटोटाइप के लिए बनाया गया है, प्रदर्शन नहीं। यह पठनीय कोड और न्यूनतम सेटअप के साथ कोर SECP256K1 कार्यक्षमता के लिए एक साफ, एकीकृत इंटरफ़ेस प्रदान करता है। हर बार जब आप किसी विचार का परीक्षण करना चाहते हैं या यह प्रदर्शित करना चाहते हैं कि कुछ और कैसे काम करना चाहिए, तो कोई और अधिक रोल नहीं करना चाहिए।
SECP256K1LAB पहले काम के हिस्से के रूप में विकसित किया गया था Chilldkgवितरित प्रमुख पीढ़ी के लिए एक नया बीआईपी प्रस्ताव। इस एक कल्पना के लिए SECP256K1 का एक और कस्टम पायथन कार्यान्वयन लिखने के बजाय, लेखकों ने सभी क्रिप्टोग्राफिक बिल्डिंग ब्लॉकों को इस तरह से संभालने के लिए Secp256k1lab का उपयोग किया कि इसे दूसरों द्वारा लाभ उठाया जा सकता है। एक साझा, पठनीय कोडबेस का पुन: उपयोग करके, उनकी आशा है कि भविष्य के क्रिप्टोग्राफिक बिप्स को खरोंच से शुरू नहीं करना होगा। SECP256K1LAB के साथ, अंत में एक नींव है जो नए प्रस्तावों का निर्माण कर सकते हैं और एक साथ सुधार कर सकते हैं।
अभी भी एक खुला सवाल है: क्या SECP256K1LAB BIPS रिपॉजिटरी में रहना चाहिए? यह पहले से ही क्रिप्टोग्राफिक प्रस्तावों के लिए एक साझा संदर्भ के रूप में उपयोगी साबित हो रहा है, लेकिन इस बारे में चर्चा चल रही है कि यह वास्तव में व्यापक बिटकॉइन विकास प्रक्रिया के भीतर कहां है। चाहे वह एक स्टैंडअलोन लाइब्रेरी के रूप में रहता है या बीआईपी वर्कफ़्लो के साथ अधिक कसकर एकीकृत हो जाता है, एक बात स्पष्ट है – यह एक अंतर को भरता है जो वर्षों से है। यदि आप एक BIP लेखक हैं, समीक्षक निर्दिष्ट करते हैं, या बिटकॉइन के आसपास क्रिप्टोग्राफिक टूलिंग को बेहतर बनाने के बारे में उत्सुक हैं, तो हम आपके इनपुट को पसंद करेंगे। आप बिटकॉइन-डीईवी मेलिंग सूची में चर्चा में शामिल हो सकते हैं या सीधे योगदान कर सकते हैं secp256k1lab github रेपो।
यह किआरा बिकर्स की एक अतिथि पोस्ट है। व्यक्त की गई राय पूरी तरह से अपने स्वयं के हैं और जरूरी नहीं कि बीटीसी इंक या बिटकॉइन पत्रिका को प्रतिबिंबित करें।