चिह्नित Merkle मूल निर्माण
अलग पत्ती और जनक टैग के साथ एक से 64 बाइट पत्तियों का SHA-256 Merkle मूल बनाएँ, प्रत्येक पत्ती अधिकतम 4096 बाइट की हो।
import hashlib
def merkle_root(leaves):
if type(leaves) is not list or not 1 <= len(leaves) <= 64 or any(type(x) is not bytes or len(x) > 4096 for x in leaves):
raise ValueError("merkle.leaves")
level = [hashlib.sha256(b"\x00"+x).digest() for x in leaves]
while len(level) > 1:
if len(level) % 2:
level.append(level[-1])
level = [hashlib.sha256(b"\x01"+level[i]+level[i+1]).digest() for i in range(0, len(level), 2)]
return level[0].hex()
| प्रोजेक्ट | विषम स्तर पर अंतिम नोड की प्रतिलिपि जाँचें और मूल को स्वामित्व प्रमाण माने बिना खाली इनपुट अस्वीकार करें। |
|---|---|
| लागू करने से पहले समीक्षा करें | वास्तविक व्यवहार की अपेक्षित परिणाम से तुलना करें। जाँच असफल हो तो अगले बदलाव से पहले कारण समझें। |
| मॉडल | बेस URL और आवश्यक होने पर API कुंजी से OpenAI-संगत या Anthropic endpoint सेट करें। कनेक्शन जाँचें। स्थानीय मॉडल सर्वर चालू होना चाहिए; दूरस्थ उपकरण अलग से डेटा भेज सकते हैं। |
import hashlib
def merkle_root(leaves):
if type(leaves) is not list or not 1 <= len(leaves) <= 64 or any(type(x) is not bytes or len(x) > 4096 for x in leaves):
raise ValueError("merkle.leaves")
level = [hashlib.sha256(b"\x00"+x).digest() for x in leaves]
while len(level) > 1:
if len(level) % 2:
level.append(level[-1])
level = [hashlib.sha256(b"\x01"+level[i]+level[i+1]).digest() for i in range(0, len(level), 2)]
return level[0].hex()
हैशिंग कोड बदलते समय बाइट परिपाटियाँ स्थिर रखें
LeafVellin जुड़े एआई मॉडल के साथ स्रोत बदलावों पर चर्चा का Windows कोडिंग कार्यक्षेत्र है। हैशिंग कोड में संसाधित बाइट का विशेष रूप से सटीक विवरण चाहिए: हानिरहित दिखता निरूपण बदलाव पूरी तरह अलग परिणाम दे सकता है। रिफ़ैक्टर माँगने से पहले अंतरसंचालनीयता की आवश्यकता और ज्ञात इनपुट-आउटपुट उदाहरण से शुरुआत करें।
टैगयुक्त Merkle वृक्ष का उदाहरण केंद्रित प्रोजेक्ट कार्य देता है। सहायक से पत्तियों का क्रम, पत्ती और आंतरिक नोड के अलग उपसर्ग तथा विषम अंतिम नोड की प्रतिलिपि जाँचने को कह सकते हैं। पत्तियाँ देने और रूट लेने वाला कोड लाएँ ताकि बदले जा रहे पूरे मार्ग में ये परिपाटियाँ सामने रहें।
एक पत्ती, सम संख्या और विषम संख्या के निश्चित उदाहरणों से प्रस्तावित बदलाव जाँचें। प्रोजेक्ट में परीक्षण चलाएँ और केवल आउटपुट आकार नहीं, सटीक रूट मान मिलाएँ। दूसरे कार्यान्वयन से मेल चाहिए तो उसकी दस्तावेज़ित परिपाटियाँ और स्वतंत्र उदाहरण लें; केवल हैश फ़ंक्शन का नाम मिलना संगत वृक्ष स्थापित नहीं करता।
अनफ़िल्टर्ड एआई मॉडल चयन समर्थित OpenAI-संगत या Anthropic एंडपॉइंट से उतना ही उपलब्ध है जितना वे सेवाएँ चुना मॉडल प्रदान करती हैं। आवश्यक क्रेडेंशियल कॉन्फ़िगर करें और टूल व संदर्भ सीमाएँ जाँचें। प्रदाता के प्रतिबंध फिर भी लागू हैं और हैशिंग बदलाव का अंतिम निर्णय आपकी समीक्षा व प्रमाण पर निर्भर है।
बाइट वृक्ष रिफ़ैक्टर से पहले प्रश्न
हैश फ़ंक्शन के अलावा दोनों कार्यान्वयन किन बातों पर सहमत हों?
पत्ती बाइट और क्रम, उपसर्ग, आंतरिक नोड संयोजन और विषम नोड संख्या का व्यवहार बताएँ। चुने निर्माण के सटीक उदाहरण दें। साझा हैश नाम से आसपास की इन परिपाटियों पर सहमति सिद्ध नहीं होती।
एक पत्ती का उदाहरण क्यों रखें?
वह पत्ती की परिपाटी को आंतरिक नोड प्रसंस्करण से अलग करता है और अनजाना अतिरिक्त हैशिंग कदम पकड़ना आसान बनाता है। उसके साथ सम और विषम बहुपत्ती उदाहरण रखें ताकि समीक्षा निर्माण के शाखा नियम भी जाँचे।
क्या पाठ पत्तियाँ सीधे हैशिंग कोड में दी जाएँ?
हैशिंग से पहले बाइट एन्कोडिंग और कोई सामान्यीकरण तय करें। पाठ शामिल हो तो अनुरोध में रूपांतरण सीमा रखें। अन्यथा रिफ़ैक्टर पठनीय पाठ सुरक्षित रखते हुए बाइट और इसलिए रूट मान बदल सकता है।
क्या मेल खाता रूट व्यापक सिस्टम की विश्वसनीयता सिद्ध करता है?
यह परखे निर्माण और इनपुट के लिए सहमति स्थापित करता है, आसपास के सिस्टम के हर गुण के लिए नहीं। अनुप्रयोग में रूट कैसे संग्रहित, तुलना और उपयोग होते हैं, यह जाँचें और व्यापक अखंडता दावे वास्तव में उपलब्ध प्रमाण तक रखें।
LeafVellin · अपडेट किया गया 2026-10-25