अपरिवर्तनीय लेजर (Immutable Ledger) क्या है? ऑडिट ट्रेल और प्रविष्टियों को हटाना एक बग क्यों है
पोस्ट की गई अकाउंटिंग प्रविष्टियों को कभी भी संपादित या हटाया क्यों नहीं जाना चाहिए, केवल-जोड़ (append-only) लेजर में सुधार कैसे काम करते हैं, और पीरियड लॉक तथा ऑडिट लॉग वास्तव में क्या गारंटी देते हैं।
अपरिवर्तनीय लेजर (immutable ledger) वह होता है जिसमें पोस्ट की गई प्रविष्टियों को कभी बदला या हटाया नहीं जाता है। सुधार नई प्रविष्टियाँ जोड़कर किए जाते हैं जो पुरानी प्रविष्टियों को उलट देती हैं या उनमें समायोजन करती हैं, ताकि बहीखातों का इतिहास खुद बहीखातों का एक हिस्सा बना रहे।
यह कोई तकनीकी प्राथमिकता नहीं है। यही वह विशेषता है जो अकाउंटिंग रिकॉर्ड्स को अतीत के बारे में वर्तमान राय के बजाय साक्ष्य (evidence) बनाती है - और यही कारण है कि "जर्नल एंट्री के लिए डिलीट बटन जोड़ें" एक ऐसा अनुरोध है जिसे अस्वीकार कर दिया जाना चाहिए।
संपादन और विलोपन (edit and delete) सब कुछ क्यों बिगाड़ देते हैं
ऑडिट ट्रेल ही उत्पाद है। डबल-एंट्री बहीखाता पद्धति का उद्देश्य यह है कि प्रत्येक बैलेंस उन प्रविष्टियों में विघटित (decompose) हो जाए जिन्होंने उसे उत्पन्न किया है। यदि प्रविष्टियों को चुपचाप बदला जा सकता है, तो विघटन कुछ भी साबित नहीं करता: ट्रेल (trail) यह दिखाता है कि किसी ने हाल ही में इसे क्या दिखाने का निर्णय लिया है।
दाखिल किए गए आंकड़े बहीखातों से मेल खाना बंद कर देते हैं। मार्च में दाखिल वैट रिटर्न (VAT return) में मार्च के आंकड़े होते हैं। जून में मार्च के किसी इनवॉइस को संपादित (edit) करें और आपका लेजर अब कर प्राधिकरण (tax authority) को पहले ही सौंपे गए दस्तावेज़ से मेल नहीं खाता है। किसी को तब तक पता नहीं चलता जब तक कि मिलान (reconciliation) न किया जाए, और तब तक इसका कारण महीनों पुराने लेनदेन बन चुके होते हैं।
धोखाधड़ी अदृश्य हो जाती है। हेरफेर का पता लगाना इस बात पर निर्भर करता है कि यह देखा जा सके कि कुछ बदला है। जहाँ प्रविष्टियों को उनकी जगह पर ही संपादित किया जा सकता है, वहाँ देखने के लिए कुछ नहीं बचता - और यही कारण है कि पूरे ईयू (EU) में कर प्रशासन (tax administrations) यह अपेक्षा करते हैं कि अकाउंटिंग रिकॉर्ड छेड़छाड़-रोधी (tamper-evident) होने चाहिए, और कई देश विशेष रूप से इसी विशेषता के आधार पर बिलिंग सॉफ्टवेयर को प्रमाणित करते हैं।
वितरित स्थिति (distributed state) अलग हो जाती है। यदि कोई इनवॉइस किसी ग्राहक को भेजा गया था, बैंक फ़ाइल में निर्यात किया गया था, ई-इनवॉइसिंग प्लेटफॉर्म पर प्रेषित किया गया था, और किसी पार्टनर एपीआई द्वारा पढ़ा गया था, तो अपनी कॉपी को संपादित करने से उनके सिस्टम पर कोई फर्क नहीं पड़ेगा। आपने किसी त्रुटि को सुधारा नहीं है; आपने एक विसंगति (discrepancy) पैदा कर दी है।
सुधार वास्तव में कैसे काम करते हैं
प्रत्येक वैध सुधार एक जोड़ (addition) होता है:
| स्थिति | सही तंत्र |
|---|---|
| गलत जर्नल एंट्री | इसका विलोपन (reversal) पोस्ट करें, फिर सही एंट्री पोस्ट करें |
| इनवॉइस में गलत राशि | क्रेडिट नोट जारी करें, फिर आवश्यकतानुसार नया इनवॉइस जारी करें |
| गलत अवधि (period) | वर्तमान खुली अवधि में पोस्ट करें, जिस तारीख को सुधार हुआ उसकी तिथि के साथ |
| अनुमान का पुराना पड़ जाना | उपार्जन (accrual) को उलट दें, वास्तविक राशि बुक करें - उपार्जित राजस्व देखें |
परिणाम एक कहानी की तरह पढ़ा जाता है: यहाँ बताया गया है कि हम क्या सोचते थे, यहाँ बताया गया है कि हमें इसके विपरीत कब पता चला, और यहाँ सुधार है। कोई ऑडिटर जो पूछता है कि "इनवॉइस S-1041 का क्या हुआ?", उसे एक ऐसी संख्या के बजाय पूरा जवाब मिलता है जो जाहिर है हमेशा से वैसी ही रही हो।
इसकी कीमत यह है कि लेजर में हमेशा के लिए गलतियाँ बनी रहती हैं। यही इसका मुख्य बिंदु है - एक ऐसी कंपनी जिसके बहीखातों में कोई सुधार नहीं दिखाई देता, वह या तो असाधारण रूप से भाग्यशाली है या उनमें संपादन कर रही है।
अपरिवर्तनीयता (immutability) क्या नहीं है
- यह "कुछ भी ठीक नहीं किया जा सकता" ऐसा नहीं है। किसी भी चीज़ को सुधारा जा सकता है; इसे ओवरराइट करके नहीं, बल्कि जोड़कर सुधारा जाता है।
- यह ब्लॉकचेन नहीं है। क्रिप्टोग्राफिक चेनिंग छेड़छाड़-रोधी (tamper-evidence) का एक कार्यान्वयन है; लागू बाधाओं (enforced constraints) और ऑडिट लॉग वाला केवल-जोड़ (append-only) रिलेशनल लेजर आपको वितरित-सहमति (distributed-consensus) के झंझट के बिना अकाउंटिंग गुण प्रदान करता है।
- यह ऑडिट लॉग के समान नहीं है। ऑडिट लॉग यह रिकॉर्ड करता है कि किसने क्या किया। अपरिवर्तनीयता का अर्थ है कि अकाउंटिंग डेटा स्वयं नहीं बदलता है। आप दोनों चाहते हैं, और वे अलग-अलग सवालों के जवाब देते हैं।
- यह ड्राफ्ट पर लागू नहीं होता है। ड्राफ्ट इनवॉइस एक कार्यशील दस्तावेज़ (working document) है और इसे स्वतंत्र रूप से संपादित किया जा सकता है। अपरिवर्तनीयता जारी करने (issue) के समय से शुरू होती है - वह क्षण जब दस्तावेज़ किसी अन्य व्यक्ति के लिए वास्तविक हो जाता है।
Nordlet इसे कैसे लागू करता है
तीन तंत्र, जो सभी पारंपरिक के बजाय संरचनात्मक हैं:
पोस्ट की गई प्रविष्टियाँ केवल-जोड़ (append-only) वाली होती हैं। जर्नल एंट्री एक बार लिखी जाती हैं। ऐसा कोई एंडपॉइंट नहीं है जो पोस्ट किए गए लेनदेन को संपादित या हटा सके, और POST /v1/ledger/journal/transactions/create लिखने से पहले सत्यापन करता है - डेबिट क्रेडिट के बराबर होना चाहिए, खाते मौजूद होने चाहिए और पोस्ट करने योग्य होने चाहिए, अवधि खुली होनी चाहिए। असंतुलित लेजर ऐसी स्थिति नहीं है जिसे डेटाबेस प्रदर्शित कर सके।
अवधियाँ लॉक हो जाती हैं। POST /v1/ledger/periods/lock एक महीने को बंद कर देता है, और लॉक की गई अवधि की तिथि वाले किसी भी लेनदेन को अस्वीकार कर दिया जाता है - चाहे वह मैनुअल एंट्री से आया हो, इनवॉइस से, बैंक आयात से या स्वचालित पहचान रन (automated recognition run) से। लॉक करना ही वह प्रक्रिया है जो दाखिल किए गए रिटर्न को बहीखातों से स्थायी रूप से मेल खाती है, और अनलॉक करना स्वयं एक ऑडिट की गई कार्रवाई है। अकाउंटिंग पीरियड लेख इस वर्कफ़्लो को कवर करता है।
हर चीज़ का ऑडिट किया जाता है। स्थिति बदलने वाले ऑपरेशन (state-changing operations) अभिनेता (actor), कार्रवाई, इकाई और एक अंतर (diff) के साथ ऑडिट लॉग में लिखे जाते हैं - जिसमें स्वचालित ऑपरेशन भी शामिल हैं, जो यह नाटक करने के बजाय कि किसी इंसान ने ऐसा किया है, एक सिस्टम अभिनेता को रिकॉर्ड करते हैं। जब इंटरकंपनी मिररिंग (intercompany mirroring) एक इनवॉइस बनाती है, तो दोनों कंपनियों के लॉग इसे दिखाते हैं।
दस्तावेज़ इसी नियम का पालन करते हैं: सेल्स इनवॉइस जारी करने पर गैपलेस सीरीज़ (gapless series) से एक नंबर आवंटित होता है और वह पोस्ट हो जाता है; इसके बाद इसे सुधारने का मतलब क्रेडिट नोट है, न कि संपादन। मूल इनवॉइस, क्रेडिट नोट और परिणामी बैलेंस सभी ग्राहक के इतिहास पर दिखाई देते रहते हैं।
ड्राफ्ट दस्तावेज़ पूरी तरह से संपादन योग्य रहते हैं, और हटाना एक सॉफ्ट डिलीट (soft delete) है - एक deletedAt टाइमस्टैम्प जो सक्रिय क्वेरी से रिकॉर्ड को छुपाता है लेकिन उसे सुरक्षित रखता है।
FAQ
अपरिवर्तनीय लेजर (Immutable Ledger) क्या है?
एक ऐसा अकाउंटिंग लेजर जिसमें पोस्ट की गई प्रविष्टियों को कभी भी संशोधित या हटाया नहीं जाता है। सुधार विपरीत या समायोजन प्रविष्टियों को जोड़कर किए जाते हैं, ताकि गलतियों और उनके सुधारों सहित पूरा इतिहास - रिकॉर्ड का हिस्सा बना रहे।
मैं किसी गलत जर्नल एंट्री को सीधे हटा क्यों नहीं सकता?
क्योंकि वह एंट्री पहले से ही दाखिल किए गए टैक्स रिटर्न, किसी ग्राहक को भेजे गए दस्तावेज़, या किसी अन्य सिस्टम के रिकॉर्ड में प्रतिबिंबित हो सकती है। इसे हटाने से आपके बहीखाते उन सभी से चुपचाप असहमत हो जाते हैं। इसे उलटने (reverse) से क्या हुआ था इसका साक्ष्य छोड़ते हुए आंकड़े सुधर जाते हैं।
क्या अपरिवर्तनीय लेजर के लिए ब्लॉकचेन की आवश्यकता होती है?
नहीं। रिकॉर्ड को छेड़छाड़-रोधी बनाने का ब्लॉकचेन एक तरीका है। संतुलित बाधाओं, पीरियड लॉक और ऑडिट लॉग के साथ केवल-जोड़ (append-only) डेटाबेस डिज़ाइन, वितरित सहमति (distributed-consensus) के बिना आवश्यक अकाउंटिंग गुण प्रदान करता है।
क्या मैं ड्राफ्ट इनवॉइस को संपादित कर सकता हूँ?
हाँ। अपरिवर्तनीयता उस क्षण से लागू होती है जब कोई दस्तावेज़ जारी किया जाता है और किसी अन्य व्यक्ति के लिए वास्तविक हो जाता है। ड्राफ्ट कार्यशील दस्तावेज़ होते हैं और इन्हें स्वतंत्र रूप से बदला या हटाया जा सकता है।
बंद अवधि (closed period) में किसी प्रविष्टि को कैसे सुधारें?
सुधार को वर्तमान खुली अवधि में पोस्ट करें, उस तारीख के साथ जब सुधार हुआ था। यदि बंद अवधि के रिपोर्ट किए गए आंकड़े काफी गलत थे, तो इसका विकल्प जानबूझकर इसे दोबारा खोलना, सुधारना, फिर से रिपोर्ट करना और फिर से लॉक करना है - जो कि एक ऑडिट की गई कार्रवाई है, और रेस्टेट (restate) करने का ईमानदार तरीका है।