Timechain, यानी Bitcoin Blockchain, Genesis Block से नेटवर्क के मौजूदा सिरे तक जुड़े वैध ब्लॉकों की शृंखला है। हर अगला ब्लॉक पिछले ब्लॉक के हैश, यानी उसकी डिजिटल छाप की ओर संकेत करता है और अपना Proof of Work जोड़ता है, जो ब्लॉक बनाने के लिए जरूरी कंप्यूटिंग काम का प्रमाण है। इसलिए नोड स्वतंत्र रूप से जाँच सकते हैं कि कौन सा इतिहास नियमों का पालन करता है और उसमें सबसे अधिक संचित कार्य है। यहाँ ‘समय’ का अर्थ हर लेनदेन के लिए सटीक घड़ी नहीं, बल्कि मुख्य रूप से घटनाओं का प्रमाणित किया जा सकने वाला क्रम है।
एक ऐसे सार्वजनिक लेखा इतिहास की कल्पना करें जिसमें हजारों कंप्यूटर हर नए पन्ने की स्वतंत्र जाँच कर सकते हैं। एक पन्ना एक ब्लॉक है। उसमें लेनदेन का समूह और पिछले ब्लॉक का संदर्भ होता है, इसलिए पन्नों का क्रम निश्चित रहता है और उन्हें मनमाने ढंग से बदला नहीं जा सकता। Timechain पहले ब्लॉक से आज के सिरे तक का यही पूरा जुड़ा क्रम है। यह नाम लेकर नहीं बताती कि किस व्यक्ति के पास कितना bitcoin है; यह लेनदेन इतिहास रखती है, जिससे नोड पता लगाते हैं कि कौन से आउटपुट अभी खर्च नहीं हुए। यह किसी एक कंपनी का सर्वर भी नहीं है। कोई भी Full Node (लेनदेन और नेटवर्क नियम स्वयं जाँचने वाला नोड) इसकी प्रति डाउनलोड करके सत्यापित कर सकता है। [1] [3]
Bitcoin के संदर्भ में दोनों नाम उसी ब्लॉक इतिहास को कहते हैं। नवंबर 2008 के सुरक्षित बचे पूर्व-रिलीज़ कोड में टिप्पणियों और वेरिएबल या फ़ंक्शन के नामों में timechain लिखा गया था। Whitepaper इसके बजाय timestamping, ब्लॉकों की शृंखला और Proof of Work शृंखला की बात करता है; उसमें timechain शब्द ठीक इसी रूप में नहीं आता। बाद में Blockchain दुनिया भर में सामान्य शब्द बन गया। आज यह दूसरे नेटवर्क और डेटाबेस के लिए भी व्यापक नाम है, जबकि Bitcoin Timechain Bitcoin की विशिष्ट शृंखला है। इसलिए शीर्षक के दोनों शब्द दो प्रोटोकॉल नहीं बताते। वे ऐतिहासिक नाम को आज के सामान्य शब्द के साथ सुरक्षित रखते हैं। [2] [1] [8]
डिजिटल हस्ताक्षर यह प्रमाणित कर सकता है कि आवश्यक कुंजी के धारक ने लेनदेन अधिकृत किया। लेकिन अकेला हस्ताक्षर किसी को पिछले लेनदेन के उसी अभी तक खर्च न हुए आउटपुट, यानी UTXO को खर्च करने वाली दो परस्पर विरोधी ट्रांजैक्शन पर हस्ताक्षर करने से नहीं रोकता। एक नोड को पहले व्यापारी का भुगतान मिल सकता है, जबकि दूसरे नोड को पहले वही मूल्य प्रेषक के पास लौटाने वाला लेनदेन मिलता है। इसलिए नेटवर्क को एक साझा इतिहास चाहिए जो तय करे कि कौन सा खर्च पुष्ट हुआ और कौन अब वैध नहीं हो सकता। ब्लॉक लेनदेन को उस क्रम में सत्यापन योग्य स्थान देते हैं। वे यह प्रमाणित नहीं करते कि मानव या नेटवर्क समय के अनुसार कौन सा संदेश पहले बना था; नोडों ने अपुष्ट लेनदेन अलग क्रम में देखे हो सकते हैं। [1]
Block Header ब्लॉक की बुनियादी जानकारी वाला हेडर है। इसमें पिछले हेडर का हैश और Merkle Root होता है, जो ब्लॉक के लेनदेन पहचानकर्ताओं को एक हैश में जोड़ता है। Hash डिजिटल उँगली के निशान जैसा है: इनपुट में छोटा बदलाव भी अलग परिणाम देता है। किसी पुराने लेनदेन को बदलने से Merkle Root, उस ब्लॉक का hash और अगले ब्लॉक में रखा संदर्भ बदल जाएगा। बदलाव इतिहास की एक पंक्ति तक सीमित नहीं रहेगा; वह आगे का पूरा क्रम तोड़ देगा। अकेला हैश यह सिद्ध नहीं करता कि लेनदेन नियमों का पालन करते हैं। नोडों को लेनदेन भी सत्यापित करने होते हैं और हर ब्लॉक को आवश्यक Proof of Work पूरा करना होता है। [3] [1]
नोड किसी शाखा को केवल इसलिए स्वीकार नहीं करता कि वह लंबी है या कोई बड़ा माइनर उसका समर्थन करता है। वह पहले नियम जाँचता है: Proof of Work, पिछले ब्लॉकों से जुड़ाव, अनुमत इनाम, लेनदेन, खर्च की शर्तें और क्या इनपुट में बताए गए पैसे पहले ही खर्च हो चुके हैं। लेखक की गणना शक्ति कितनी भी हो, अमान्य शाखा अमान्य रहती है। केवल वैध उम्मीदवारों के बीच नोड सबसे अधिक संचित कार्य वाली शृंखला चुनता है। इसलिए केवल ‘सबसे लंबी शृंखला’ कहने के बजाय ‘सबसे अधिक कार्य वाली वैध शाखा’ कहना अधिक सही है। chainwork फ़ील्ड हर ब्लॉक की कठिनाई पर शृंखला बनाने के लिए अपेक्षित हैश गणनाओं की संख्या का अनुमान लगाता है; यह माइनरों की वास्तविक कोशिशों का हिसाब नहीं है। [4] [5] [6]
Proof of Work में समय, बिजली और गणना शक्ति लगती है, जबकि उसके परिणाम की जाँच जल्दी हो जाती है। पुराने ब्लॉक को बदलने वाले को उसके लिए नया वैध Proof of Work बनाना होगा, बाद के सभी ब्लॉक दोबारा जोड़ने होंगे और ईमानदार शाखा के लगातार बढ़ते कार्य को पकड़ते रहना होगा। ब्लॉक सिरे से जितना गहरा होता है, सामान्य इतिहास की बढ़त उतनी बड़ी होती है। यह गणितीय वादा नहीं कि अतीत कभी बदल ही नहीं सकता। यह आर्थिक और संभाव्यता आधारित रक्षा है: अतिरिक्त ब्लॉक सफल पुनर्लेखन को आम तौर पर बहुत तेजी से महँगा बनाते हैं। हमलावर वैकल्पिक शाखा में मनमाना अमान्य भुगतान या अतिरिक्त bitcoin भी नहीं डाल सकता, क्योंकि दूसरे नोड वह ब्लॉक अस्वीकार कर देंगे। [1] [4]
माइनर Block Header में टाइमस्टैम्प रखता है। सहमति नियम कुछ छूट देते हैं, इसलिए time का मान ब्लॉक या किसी खास लेनदेन के बनने का सटीक समय प्रमाणित नहीं करता। किसी ब्लॉक का टाइमस्टैम्प उसके सीधे पिछले ब्लॉक से ऊँचा होना भी आवश्यक नहीं। इसलिए Bitcoin कुछ नियमों में Median Time Past, यानी पिछले 11 ब्लॉकों के टाइमस्टैम्प की माध्यिका, इस्तेमाल करता है। इन समयचिह्नों को क्रम में रखकर बीच का मान चुनने पर माध्यिका मिलती है। यह अलग-अलग टाइमस्टैम्प की तुलना में अधिक स्थिरता से आगे बढ़ती है। औसत दस मिनट का ब्लॉक अंतराल भी समय-सारिणी नहीं है। दो ब्लॉक लगभग साथ आ सकते हैं और अगली प्रतीक्षा बहुत लंबी हो सकती है। ब्लॉक की ऊँचाई शृंखला में सटीक स्थान बताती है, कैलेंडर का सटीक समय नहीं। [4] [7]
दो माइनर लगभग एक ही समय और एक ही ऊँचाई पर अलग-अलग वैध ब्लॉक पा सकते हैं। कुछ नोड पहले एक शाखा देखते हैं और दूसरे नोड दूसरी। बाद का Proof of Work जब वैध शाखाओं के बीच अंतर पैदा करता है, तो नोड अधिक संचित कार्य वाली शाखा पर चले जाते हैं। इस बदलाव को Reorg कहते हैं। अलग हुए ब्लॉक के लेनदेन नई शाखा में पुष्ट हो सकते हैं, Mempool में लौट सकते हैं या नए इतिहास में विरोधी खर्च पुष्ट होने पर अमान्य हो सकते हैं। ब्लॉक में शामिल होना पहली पुष्टि है; उसके ऊपर हर अगला ब्लॉक एक और पुष्टि जोड़ता है। हर भुगतान के लिए एक ही जादुई संख्या नहीं है। उचित भरोसा मूल्य, जोखिम और प्रतीक्षा की क्षमता पर निर्भर करता है। [1] [3]
Bitcoin ऐसा लेनदेन बना सकता है जिसे ब्लॉक की किसी निश्चित ऊँचाई से या बताए गए समय के बाद ही पुष्ट किया जा सके। Timelock उस मिनट लेनदेन को अपने-आप चलाने का आदेश नहीं है। वह केवल वह सबसे शुरुआती बिंदु तय करता है जहाँ से कोई वैध ब्लॉक उसे शामिल कर सकता है। समय आधारित nLockTime के लिए BIP 113 बन रहे ब्लॉक के आसानी से बदले जा सकने वाले टाइमस्टैम्प के बजाय पिछले ब्लॉक का Median Time Past इस्तेमाल करता है। इस तरह शर्त कई ब्लॉकों के इतिहास पर टिकी होती है। शर्त पूरी होने के बाद भी लेनदेन को प्रसारित होना, नोडों द्वारा स्वीकार होना और माइनर द्वारा चुना जाना आवश्यक है; किसी खास ब्लॉक में शामिल होने की गारंटी नहीं। [7] [4]
RPC वह इंटरफ़ेस है जिससे नोड को आदेश देकर उसके जवाब पढ़े जा सकते हैं। Full Node को किसी सार्वजनिक ब्लॉक एक्सप्लोरर के इस दावे पर भरोसा करने की जरूरत नहीं कि कोई ब्लॉक या लेनदेन मौजूदा इतिहास का हिस्सा है। किसी निश्चित hash के लिए getblock RPC height, पुष्टियों की संख्या, Merkle Root, time, mediantime, पिछला hash, कठिनाई और chainwork दिखा सकता है। हर फ़ील्ड अलग प्रश्न का उत्तर देता है: height स्थान बताता है; previousblockhash पूर्वज संबंध; confirmations मौजूदा सिरे से गहराई; time हेडर का मान; mediantime माध्यिका; और chainwork संचित अपेक्षित कार्य दर्शाता है। कोई एक संख्या पर्याप्त नहीं। Timechain का उद्देश्य यह है कि नोड उनके संबंध और सभी सहमति नियमों को एक साथ जाँचता है। [6] [4]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Genesis Block, Proof of Work, लेनदेन, Full Node, Difficulty Adjustment. इस प्रविष्टि का उल्लेख यहाँ भी है Bitcoin Whitepaper, Genesis Block, Proof of Work, Full Node.