इंस्क्रीप्शंस
इंस्क्रिप्शंस बिटकॉइन-मूल डिजिटल अभिलेखों को निर्मित करने के लिए सैट्स पर स्वेच्छित विषय-वस्तु अंकित करते हैं, आमतौर पर यह एनएफटी के रूप में जाने जाते हैं। इंस्क्रिप्शंस के लिए साइडचेन या अलग टोकन की आवश्यकता नहीं होती।
इन अंकित सैट्स को बिटकॉइन लेनदेन का उपयोग करके हस्तांतरित किया जा सकता है, बिटकॉइन पतों पर प्रेषित किया जा सकता है, और बिटकॉइन यूटीएक्सओ में सहेज कर रखा जा सकता है। ये लेनदेन, पते और यूटीएक्सओ सर्वथा सभी मामलों में सामान्य बिटकॉइन लेनदेन, पते और यूटीएक्सओएस हैं, बशर्ते कि व्यक्तिगत सैट्स प्रेषित करने के लिए, लेनदेन आर्डिनल थ्यौरी के अनुरूप इनपुट और आउटपुट के क्रम और मूल्य को नियंत्रित करते हों।
इंस्क्रिप्शंस विषय-वस्तु का मॉडल वेब सदृश है। इंस्क्रिप्शंस में विषय-वस्तु के प्रकार सम्मिलित होते हैं, जिन्हें माइम प्रकार के रूप में भी जाना जाता है, और विषय-वस्तु अपने आप में एक बाइट स्ट्रिंग होती है। यह इंस्क्रिप्शंस विषय-वस्तु को वेब सर्वर से वापस लौटने में सक्षम करते हैं, और HTML इंस्क्रिप्शंस स़ृजन करने में सक्षम करती है जो अन्य इंस्क्रिप्शंस की विषय-वस्तु का उपयोग और रीमिक्स करती हैं।
इंस्क्रिप्शंस विषय-वस्तु पूरी तरह ऑन-चेन (सभी के लिए दृश्यमान) होते हैं, जिन्हें टैपरूट स्क्रिप्ट-पथ खर्च स्क्रिप्ट में संग्रहीत किया जाता है। टैपरूट स्क्रिप्ट के संदेशों पर बहुत कम प्रतिबंध लगाए जाते हैं, इसके अतिरिक्त, साक्ष्य छूट (प्रोत्साहन छूट) भी प्राप्त होती है, जिससे इंस्क्रिप्शंस संदेशों का भंडारण अपेक्षाकृत किफायती हो जाता है।
चूँकि टैपरूट स्क्रिप्ट खर्च केवल मौजूदा टैपरूट आउटपुट से ही किये जा सकते हैं, इसलिए इंस्क्रिप्शंस दो-चरण की प्रतिबद्धता/प्रकटीकरण प्रक्रिया का उपयोग करके बनाए जाते हैं। सबसे पहले, प्रतिबद्ध लेनदेन में, इंस्क्रिप्शंस संदेशों का सृजन किया जाता है, स्क्रिप्ट के लिए प्रतिबद्ध एक टैपरूट आउटपुट निर्मित किया जाता है। दूसरा, प्रकट लेन-देन में, प्रतिबद्ध लेन-देन द्वारा निर्मित आउटपुट का खर्च कर दिया जाता है, जो ऑन-चेन पर इंस्क्रिप्शंस विषय-वस्तु को प्रकट करता है।
"लिफाफे" से संबोधित, इंस्क्रिप्शंस विषय-वस्तु को अनियोजित नियमबद्धताओं के भीतर आंकड़ों को प्रेरित कर क्रमबद्ध किया जाता है। लिफ़ाफ़ों में OP_FALSE OP_IF … OP_ENDIF सम्मिलित होते हैं, जो किसी भी संख्या में आंकड़ों को प्रेरित कर समेटता है। चूँकि लिफ़ाफ़े प्रभावी रूप से स्वचालित (नो-ऑप्स) होते हैं, वे उस स्क्रिप्ट के शब्दार्थ को नहीं बदलते हैं जिसमें वे शामिल हैं, और उन्हें किसी अन्य लॉकिंग स्क्रिप्ट (आउटपुट में स्थापित खर्च की शर्तें) के साथ जोड़ा जा सकता है।
एक टेक्स्ट (मूल शब्द) इंस्क्रिप्शंस जिसमें स्ट्रिंग "हैलो, वर्ल्ड!" सम्मिलित है, उसे निम्नानुसार क्रमबद्ध किया जाता है:
OP_FALSE
OP_IF
OP_PUSH "ord"
OP_PUSH 1
OP_PUSH "text/plain;charset=utf-8"
OP_PUSH 0
OP_PUSH "Hello, world!"
OP_ENDIF
सबसे पहले स्ट्रिंग ऑर्डर
को लिफाफों के अन्य उपयोगों से इंस्क्रिप्शंस को स्पष्ट करने के लिए प्रेरित किया जाता है।
OP_PUSH 1
इंगित करता है कि अगले पुश में विषय-वस्तु के प्रकार शामिल हैं, और OP_PUSH 0
इंगित करता है कि आगामी डेटा पुश में स्वयं विषय-वस्तु ही शामिल हैं। "बड़े इंस्क्रिप्शंस के लिए बहुल डेटा पुश का उपयोग किया जाना चाहिए, क्योंकि टैपरूट के कुछ प्रतिबंधों में से एक यह है कि व्यक्तिगत डेटा पुश 520 बाइट्स से बड़ा नहीं हो सकता है।
The inscription content is contained within the input of a reveal transaction, and the inscription is made on the first sat of its input if it has no pointer field. This sat can then be tracked using the familiar rules of ordinal theory, allowing it to be transferred, bought, sold, lost to fees, and recovered.
विषय-वस्तु
इंस्क्रिप्शंस का डेटा मॉडल एक HTTP प्रतिक्रिया है, जो इंस्क्रिप्शंस विषय-वस्तु को वेब सर्वर द्वारा प्रस्तुत करने और एक वेब ब्राउज़र में देखने की अनुमति देता है।
फील्ड्स
वैकल्पिक निकाय से पहले इंस्क्रिप्शंस में फ़ील्ड शामिल हो सकते हैं। प्रत्येक फ़ील्ड में दो डेटा पुश, एक टैग और एक मूल्य सम्मिलित होता है।
Currently, there are six defined fields:
content_type
, with a tag of1
, whose value is the MIME type of the body.pointer
, with a tag of2
, see pointer docs.parent
, with a tag of3
, see provenance.metadata
, with a tag of5
, see metadata.metaprotocol
, with a tag of7
, whose value is the metaprotocol identifier.content_encoding
, with a tag of9
, whose value is the encoding of the body.delegate
, with a tag of11
, see delegate.
बॉडी का प्रारम्भ और फील्ड के अंत को रिक्त डेटा पुश के साथ दर्शाया गया है।
लाइटनिंग नेटवर्क द्वारा उपयोग किए जाने वाले "विषम होना ठीक है" नियम का अनुसरण करके सम और विषम पर निर्भर करते हुए अज्ञात टैग्स की व्याख्या अलग-अलग प्रकार से की जा सकती है।
यहां तक कि टैग का उपयोग उन फ़ील्ड के लिए भी किया जाता है जो किसी इंस्क्रिप्शंस के निर्माण, प्रारंभिक नियत कार्य या स्थानांतरण को प्रभावित कर सकते हैं। इस प्रकार, अज्ञात सम फ़ील्ड वाले इंस्क्रिप्शंस को "अनबाउंड" यानि अबाध के रूप में प्रदर्शित किया जाना चाहिए, अर्थात, बिना किसी स्थान के।
पुराने टैग का उपयोग उन फ़ील्ड के लिए किया जाता है जो निर्माण, प्रारंभिक नियत कार्य या स्थानांतरण को प्रभावित नहीं करते हैं, जैसे अतिरिक्त मेटाडेटा, और इस प्रकार इन्हें अनदेखा करना सुरक्षित और श्रेयस्कर है।
इंस्क्रिप्शंस आईडी
इंस्क्रिप्शंस प्रकट लेन-देन के इनपुट में समाहित होते हैं। विशिष्ट रूप से इनकी पहचानके लिए उन्हें फॉर्म की एक आईडी दी गई है:
521f8eccffa4c41a3a7728dd012ea5a4a02feed81f41159231251ecf1e5c79dai0
वर्ण i
के सामने वाला भाग प्रकट लेन-देन की आईडी (txid) अर्थात पहचान है। वर्ण i
के बाद की संख्या प्रकट लेनदेन में अंकित किए जा रहे नई इंस्क्रिप्शंस के सूचकांक (0 से शुरू) "को परिभाषित करती है।
इंस्क्रिप्शंस या तो अलग-अलग इनपुट में, या किसी एक इनपुट में या दोनों के संयोजन में स्थित हो सकती हैं। किसी भी मामले में आर्डरिंग यानि क्रम स्थापन स्पष्ट होता है, क्योंकि पार्सर (कोड को कार्यात्मक घटकों में विभाजित करने वाला कंप्यूटर प्रोग्राम) क्रमानुसार इनपुट के माध्यम से जांच-परख या प्रयोग और सभी इंस्क्रिप्शंस लिफाफों
की खोज करता है।
इनपुट | इंस्क्रिप्शंस गणना | सूचियां |
---|---|---|
0 | 2 | i0, i1 |
1 | 1 | i2 |
2 | 3 | i3, i4, i5 |
3 | 0 | |
4 | 1 | i6 |
Inscription Numbers
Inscriptions are assigned inscription numbers starting at zero, first by the order reveal transactions appear in blocks, and the order that reveal envelopes appear in those transactions.
Due to a historical bug in ord
which cannot be fixed without changing a great many inscription numbers, inscriptions which are revealed and then immediately spent to fees are numbered as if they appear last in the block in which they are revealed.
Inscriptions which are cursed are numbered starting at negative one, counting down. Cursed inscriptions on and after the jubilee at block 824544 are vindicated, and are assigned positive inscription numbers.
सैंडबॉक्सिंग
ऑफ-चेन संदेशों के संदर्भ निर्देशों को रोकने के लिए HTML और SVG इंस्क्रिप्शंस को सैंडबॉक्स कर देता है, इस प्रकार इंस्क्रिप्शंस को स्थिर और पृथक रखा जाता है।
इसे सैंडबॉक्स
गुणों के साथ आईफ्रेम
के भीतर HTML और SVG इंस्क्रिप्शंस लोड करने के साथ-साथ इंस्क्रिप्शंस विषय-वस्तु को Content-Security-Policy
है की सेवा प्रदान करके पूरा किया जाता है।
Self-Reference
The content of the inscription with ID INSCRIPTION_ID
must served from the URL path /content/<INSCRIPTION_ID>
.
This allows inscriptions to retrieve their own inscription ID with:
let inscription_id = window.location.pathname.split("/").pop();
If an inscription with ID X delegates to an inscription with ID Y, that is to say, if inscription X contains a delegate field with value Y, the content of inscription X must be served from the URL path /content/X
, not /content/Y
.
This allows delegating inscriptions to use their own inscription ID as a seed for generative delegate content.
Reinscriptions
Previously inscribed sats can be reinscribed with the --reinscribe
command if the inscription is present in the wallet. This will only append an inscription to a sat, not change the initial inscription.
Reinscribe with satpoint: ord wallet inscribe --fee-rate <FEE_RATE> --reinscribe --file <FILE> --satpoint <SATPOINT>
Reinscribe on a sat (requires sat index): ord --index-sats wallet inscribe --fee-rate <FEE_RATE> --reinscribe --file <FILE> --sat <SAT>