Jimmy Song डेवलपर, शिक्षक और Programming Bitcoin के लेखक हैं। वे Python के उदाहरणों से Bitcoin लेन-देन, कुंजियों और डिजिटल हस्ताक्षरों का काम समझाते हैं। उनका तरीका व्यावहारिक है: तैयार ऐप पर निर्भर रहने के बजाय पाठक धीरे-धीरे छोटे औज़ार बनाता है और उनके परिणाम देखता है। तकनीकी पुस्तकों के अलावा वे पैसे और समाज पर विचार भी लिखते हैं; उनके लिए प्रोग्रामिंग अभ्यासों से अलग तरह के तर्क और प्रमाण चाहिए।
Song की जीवनी में विकास कार्य और Programming Blockchain कक्षाओं का वर्णन है। O’Reilly उन्हें Programming Bitcoin के लेखक के रूप में दर्ज करता है। इन कामों में खुद करके सीखने पर ज़ोर है: किसी सिद्धांत का नाम पढ़ लेने से वह समझ में नहीं आ जाता। उसे प्रोग्राम में उतारते समय जानना पड़ता है कि उसे कौन-सा डेटा मिलेगा और क्या परिणाम लौटाना चाहिए। हालांकि डेवलपर कहलाने का अर्थ अपने-आप Bitcoin Core का रखरखाव करने वाला होना या दूसरों की ओर से नेटवर्क के नियम तय करना नहीं है। [1] [2]
O’Reilly ने Programming Bitcoin को 2019 में प्रकाशित किया। शुरुआत finite fields से होती है, यानी तत्वों के एक सीमित समूह में निश्चित नियमों से गणना, और elliptic curves से, जो किताब में समझाए गए हस्ताक्षरों का गणितीय आधार हैं। फिर कुंजियाँ, हस्ताक्षर, लेन-देन और कंप्यूटरों के बीच संदेश आते हैं। पाठक Python की एक लाइब्रेरी बनाता है, अर्थात दूसरे प्रोग्रामों में इस्तेमाल होने वाले फ़ंक्शनों का संग्रह। उसे सिर्फ यह मानना नहीं पड़ता कि हस्ताक्षर काम करता है; वह गणनाओं को देख सकता है। इससे वॉलेट के बटन चलाने के साथ उसका अंदरूनी काम भी समझ आता है। [2]
मान लें कि किसी प्रोग्राम को लेन-देन मिलता है। पहले उसे उसके हिस्से पहचानने हैं; डेटा को इस तरह समझने की प्रक्रिया parsing कहलाती है। सामान्य इनपुट पिछले लेन-देन के आउटपुट का संदर्भ देता है, यानी खर्च की शर्तों वाली एक निश्चित राशि का। फिर उन शर्तों की जाँच होती है, जैसे हस्ताक्षर सही है या नहीं। लेकिन सही हस्ताक्षर से ही पता नहीं चलता कि वह आउटपुट अब तक खर्च नहीं हुआ है। इसके लिए चेन की स्थिति से जाँच करनी होगी। Song के अभ्यास डेटा पढ़ने, खर्च की अनुमति और पूरे लेन-देन की वैधता के बीच अंतर समझाते हैं। [3]
गणितीय रूप से सही परिणाम महत्वपूर्ण है, लेकिन सुरक्षित हस्ताक्षर प्रोग्राम के लिए और भी बातें ज़रूरी हैं। libsecp256k1 गोपनीय कुंजी के साथ काम करते समय constant-time संचालन और मेमोरी तक पहुँच के तरीके पर भी ध्यान देता है। उद्देश्य है कि गणना के व्यवहार को देखकर कोई गोपनीय जानकारी न निकाल सके। यह अभ्यास का सही उत्तर पाने से अलग समस्या है। इसलिए सिद्धांत समझने के लिए लिखा गया कोड असली पैसे के लिए जाँची गई क्रिप्टोग्राफ़िक लाइब्रेरी की जगह अपने-आप नहीं ले सकता, भले दोनों एक ही परीक्षण हस्ताक्षर को सही सत्यापित करें। [4]
programmingbitcoin रिपॉज़िटरी में अध्यायों की सामग्री और Jupyter Notebook के निर्देश हैं। इस वातावरण में पाठ, चलाया जा सकने वाला कोड और उसके नतीजे साथ रहते हैं। अभ्यास दोहराते समय कोड का संस्करण और dependencies भी मायने रखते हैं, यानी प्रोग्राम में इस्तेमाल होने वाले दूसरे पैकेज। पुरानी स्थापना विधि अपने-आप आज के अनुशंसित संस्करण नहीं बताती। काम करने का वातावरण दर्ज करने से अलग नतीजों का कारण समझने में मदद मिलती है। किसी और के कंप्यूटर पर सफलता अपने कंप्यूटर पर जाँच का विकल्प नहीं है। [5]
2019 की किताब आगे के दस्तावेज़ समझने का आधार देती है। लेकिन यह नहीं मानना चाहिए कि उसमें बाद के सभी विस्तार शामिल हैं। उदाहरण के लिए, आज libsecp256k1 में BIP340 के अनुसार Schnorr signatures भी उपलब्ध हैं; यह Bitcoin में इस्तेमाल होने वाली एक दूसरी हस्ताक्षर प्रणाली का विनिर्देश है। किसी विशेष संस्करण की किताब का विषय और मौजूदा लाइब्रेरी के फ़ंक्शन अलग बातें हैं। उसके इंटरफ़ेस, यानी फ़ंक्शन बुलाने के तरीके का उपयोग करते समय संबंधित संस्करण के दस्तावेज़ देखना चाहिए। [2] [4]
2023 की Fiat Ruins Everything में Song तर्क देते हैं कि fiat money, यानी सामान्य सरकारी मुद्राएँ, संस्थाओं पर गहरा प्रभाव डालती हैं और Bitcoin सुधार का रास्ता देता है। यहाँ हम समाज की लेखक द्वारा की गई व्याख्या पढ़ रहे हैं, हस्ताक्षर सत्यापित करने की प्रक्रिया नहीं। इस दावे को अपने तर्क और प्रमाण चाहिए। क्रिप्टोग्राफ़ी का अभ्यास सही हल होना सामाजिक विचार को सिद्ध नहीं करता; आर्थिक राय से असहमति भी अपने-आप तकनीकी व्याख्या को गलत नहीं ठहराती। उनके काम के हर हिस्से को उसके उपयुक्त प्रमाणों से परखा जा सकता है। [6]
Song की वेबसाइट किसी ऑटोग्राफ़ वाली वस्तु की तस्वीर को PGP, डिजिटल हस्ताक्षर के औज़ार, और SHA-256, फ़ाइल की पहचान के लिए छाप बनाने वाले फ़ंक्शन, से सत्यापित करना समझाती है। छाप मिलना यह जाँचने में मदद करता है कि फ़ाइल वही है; वैध हस्ताक्षर हस्ताक्षरित डेटा को एक कुंजी से जोड़ता है। कुंजी किसकी है, यह अलग से साबित करना बाकी रहता है। इस समीक्षा के समय पृष्ठ पर पुरानी और नई कुंजियों के नामांकन में असंगति है, इसलिए हम उसके छोटे पहचान-संकेत को सत्यापित पहचान के रूप में नहीं दोहराते। डेटा की जाँच और उसके स्रोत पर भरोसा अलग चरण हैं। [7]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Alex Gladstein, Bitcoin Script, Private Key. इस प्रविष्टि का उल्लेख यहाँ भी है Hackers Congress Paralelní Polis, Cathie Wood.