Docs
खोज⌘ K
  • Home
  • The Graph के बारे में
  • समर्थित नेटवर्क
  • Protocol Contracts
  • सबग्राफ
    • सबस्ट्रीम
      • टोकन API
        • AI Suite
          • Overview
          • Indexer टूलिंग
            • GraphTally Guide
            • Supported Network Requirements
            • Chain Integration Process Overview
            • नई श्रृंखला एकीकरण
            • संसाधन
              सबग्राफ > How-to Guides

              8 मिनट

              आरवीव पर सब-ग्राफ्र्स बनाना

              Arweave समर्थन Graph Node और सबग्राफ Studio में बीटा में है: कृपया हमसे Discord⁠ पर संपर्क करें यदि आपके पास Arweave सबग्राफ बनाने के बारे में कोई प्रश्न हैं!

              इस गाइड में आप आरवीव ब्लॉकचेन पर सब ग्राफ्स बनाना और डेप्लॉय करना सीखेंगे!

              आरवीव क्या है?

              आरवीव प्रोटोकॉल डेवेलपर्स को स्थायी तौर पर डाटा स्टोर करने की क्षमता देता है जो कि IPFS और आरवीव के बीच का मुख्या अंतर भी है, जहाँ IPFS में इस क्षमता की कमी है, वहीँ आरवीवे पर फाइल्स डिलीट या बदली नहीं जा सकती |

              अरवीव द्वारा पहले से ही कई लाइब्रेरी विभिन्न प्रोग्रामिंग भाषाओं में विकशित की गई हैं| अधिक जानकारी के लिए आप इनका रुख कर सकते हैं:

              • Arwiki⁠
              • Arweave Resources⁠

              आरवीवे सब ग्राफ्स क्या हैं?

              The Graph आपको कस्टम ओपन API बनाने की सुविधा देता है, जिन्हें “Subgraphs” कहा जाता है। Subgraphs का उपयोग Indexers (सर्वर ऑपरेटर्स) को यह बताने के लिए किया जाता है कि ब्लॉकचेन पर कौन सा डेटा Indexing करना है और इसे उनके सर्वर पर सहेजना है, ताकि आप इसे किसी भी समय GraphQL⁠ का उपयोग करके क्वेरी कर सकें।

              [Graph Node(https://github.com/graphprotocol/graph-node⁠) अब Arweave protocol पर डेटा को इंडेक्स करने में सक्षम है। वर्तमान इंटीग्रेशन केवल Arweave को एक ब्लॉकचेन के रूप में indexing कर रहा है (blocks and transactions), यह अभी संग्रहीत फ़ाइलों को indexing नहीं कर रहा है।

              एक आरवीव सब ग्राफ बनाना

              आरवीवे पर सब ग्राफ बनाने के लिए हमे दो पैकेजेस की जरूरत है:

              1. @graphprotocol/graph-cli संस्करण 0.30.2 से ऊपर - यह एक कमांड-लाइन टूल है जो सबग्राफ बनाने और डिप्लॉय करने के लिए उपयोग किया जाता है। यहाँ क्लिक करें⁠ npm का उपयोग करके डाउनलोड करने के लिए।
              2. @graphprotocol/graph-ts संस्करण 0.27.0 से ऊपर - यह Subgraph-specific types की एक लाइब्रेरी है। यहाँ क्लिक करें⁠ इसे npm का उपयोग करके डाउनलोड करने के लिए।

              सब ग्राफ के कॉम्पोनेन्ट

              तीन घटक एक Subgraph के होते हैं: -

              1. मैनिफेस्ट- subgraph.yaml

              डाटा का स्रोत्र और उनको प्रोसेस करने के बारे में बताता है| आरवीव एक नए प्रकार का डाटा सोर्स है|

              2. स्कीमा- schema.graphql

              यहाँ आप बताते हैं की आप कौन सा डाटा इंडेक्सिंग के बाद क्वेरी करना चाहते हैं| दरसअल यह एक API के मॉडल जैसा है, जहाँ मॉडल द्वारा रिक्वेस्ट बॉडी का स्ट्रक्चर परिभाषित किया जाता है|

              आर्वीव सबग्राफ के लिए आवश्यकताओं को मौजूदा दस्तावेज़ीकरण द्वारा कवर किया गया है।

              3. AssemblyScript मैपिंग्स- mapping.ts

              यह किसी के द्वारा इस्तेमाल किये जा रहे डाटा सोर्स से डाटा को पुनः प्राप्त करने और स्टोर करने के लॉजिक को बताता है| डाटा अनुवादित होकर आपके द्वारा सूचीबद्ध स्कीमा के अनुसार स्टोर हो जाता है|

              Subgraph को बनाते वक़्त दो मुख्य कमांड हैं:

              1$ graph codegen # generates types from the schema file identified in the manifest2$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the subgraph files in a /build folder

              सब ग्राफ मैनिफेस्ट की परिभाषा

              सबग्राफ manifest subgraph.yaml उन डेटा स्रोतों की पहचान करता है जिनका उपयोग सबग्राफ के लिए किया जाता है, वे ट्रिगर जो रुचि के हैं, और वे फ़ंक्शन जो उन ट्रिगर्स के जवाब में चलाए जाने चाहिए। नीचे Arweave सबग्राफ के लिए एक उदाहरण सबग्राफ manifest दिया गया है:

              1specVersion: 1.3.02description: Arweave Blocks Indexing3schema:4  file: ./schema.graphql # link to the schema file5dataSources:6  - kind: arweave7    name: arweave-blocks8    network: arweave-mainnet # The Graph only supports Arweave Mainnet9    source:10      owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet11      startBlock: 0 # set this to 0 to start indexing from chain genesis12    mapping:13      apiVersion: 0.0.914      language: wasm/assemblyscript15      file: ./src/blocks.ts # link to the file with the Assemblyscript mappings16      entities:17        - Block18        - Transaction19      blockHandlers:20        - handler: handleBlock # the function name in the mapping file21      transactionHandlers:22        - handler: handleTx # the function name in the mapping file
              • Arweave सबग्राफ एक नए प्रकार के डेटा स्रोत (arweave) को प्रस्तुत करते हैं
              • नेटवर्क को होस्टिंग Graph Node पर मौजूद नेटवर्क से मेल खाना चाहिए। सबग्राफ Studio में, Arweave का मुख्य नेटवर्क arweave-mainnet है।
              • अरवीव डाटा सोर्स द्वारा एक वैकल्पिक source.owner फील्ड लाया गया, जो की एक आरवीव वॉलेट का मपब्लिक key है|

              आरवीव डाटा सोर्स द्वारा दो प्रकार के हैंडलर्स उपयोग किये जा सकते हैं:

              • blockHandlers - हर नए Arweave ब्लॉक पर चलाया जाता है। कोई source.owner आवश्यक नहीं है।
              • transactionHandlers - प्रत्येक लेन-देन(transaction) पर चलाया जाता है जहाँ डेटा स्रोत का source.owner मालिक होता है। वर्तमान में, transactionHandlers के लिए एक मालिक आवश्यक है, यदि उपयोगकर्ता सभी लेन-देन(transaction) को प्रोसेस करना चाहते हैं, तो उन्हें source.owner के रूप में "" प्रदान करना चाहिए।

              यहां source.owner ओनर का एड्रेस या उनका पब्लिक की हो सकता है|

              ट्रांसक्शन आरवीव परमावेब के लिए निर्माण खंड (बिल्डिंग ब्लॉक्स) की तरह होते हैं और एन्ड-यूजर के द्वारा बनाये गए ऑब्जेक्ट होते हैं|

              Note: Irys (पहले Bundlr)⁠ लेन-देन(transaction) अभी समर्थित नहीं हैं।

              स्कीमा की परिभाषा

              Schema definition परिणामी सबग्राफ डेटाबेस की संरचना और entities के बीच संबंधों का वर्णन करता है। यह मूल डेटा स्रोत से स्वतंत्र होता है। सबग्राफ schema definition के बारे में अधिक विवरण यहाँ उपलब्ध है।

              असेंबली स्क्रिप्ट मैप्पिंग्स

              आयोजन को प्रोसेस करने के लिए handlerAssemblyScript⁠ में लिखे गए हैं।

              Arweave indexing AssemblyScript API में Arweave-विशिष्ट डेटा प्रकार प्रस्तुत करता है।

              1class Block {2  timestamp: u643  lastRetarget: u644  height: u645  indepHash: Bytes6  nonce: Bytes7  previousBlock: Bytes8  diff: Bytes9  hash: Bytes10  txRoot: Bytes11  txs: Bytes[]12  walletList: Bytes13  rewardAddr: Bytes14  tags: Tag[]15  rewardPool: Bytes16  weaveSize: Bytes17  blockSize: Bytes18  cumulativeDiff: Bytes19  hashListMerkle: Bytes20  poa: ProofOfAccess21}2223class Transaction {24  format: u3225  id: Bytes26  lastTx: Bytes27  owner: Bytes28  tags: Tag[]29  target: Bytes30  quantity: Bytes31  data: Bytes32  dataSize: Bytes33  dataRoot: Bytes34  signature: Bytes35  reward: Bytes36}

              ब्लॉक हैंडलर एक Block प्राप्त करते हैं, जबकि लेनदेन एक लेन-देन(transaction) प्राप्त करते हैं।

              Arweave सबग्राफ का मैपिंग लिखना Ethereum सबग्राफ के मैपिंग लिखने के बहुत समान है। अधिक जानकारी के लिए, यहाँ क्लिक करें।

              Deploying an Arweave Subgraph in Subgraph Studio

              एक बार जब आपका सबग्राफ आपके सबग्राफ Studio डैशबोर्ड पर बना लिया जाता है, तो आप graph deploy CLI कमांड का उपयोग करके इसे डिप्लॉय कर सकते हैं।

              1graph deploy --access-token <your-access-token>

              आरवीव सब-ग्राफ क्वेरी करना

              The GraphQL endpoint Arweave सबग्राफ के लिए schema परिभाषा द्वारा निर्धारित किया जाता है, जिसमें मौजूदा API इंटरफ़ेस होता है। अधिक जानकारी के लिए कृपया GraphQL API documentation देखें।

              सब-ग्राफ के उदाहरण

              यहाँ संदर्भ के लिए एक उदाहरण सबग्राफ दिया गया है: -

              • उदाहरण सबग्राफ for Arweave⁠

              FAQ

              क्या सबग्राफ Arweave और अन्य चेन को इंडेक्स कर सकता है?

              नहीं, एक सब-ग्राफ केवल एक चेन/नेटवर्क से डाटा सोर्स को सपोर्ट कर सकता है

              क्या मैं आरवीव पर स्टोर की फाइल्स को इंडेक्स कर सकता हूँ?

              वर्तमान में द ग्राफ आरवीव को केवल एक ब्लॉकचेन की तरह इंडेक्स करता है (उसके ब्लॉक्स और ट्रांसक्शन्स)|

              क्या मैं अपने Subgraph में Bundlr bundles की पहचान कर सकता हूँ?

              यह वर्तमान में सपोर्टेड नहीं है|

              क्या मैं किसी विशिष्ट अकाउंट से ट्रांसक्शन्स छाँट सकता हूँ?

              एक यूजर का पब्लिक की या अकाउंट एड्रेस source.owner हो सकता है

              वर्तमान एन्क्रिप्शन फॉर्मेट क्या है?

              डेटा आमतौर पर Bytes के रूप में मैपिंग्स में पास किया जाता है, जिसे यदि सीधे संग्रहीत किया जाए, तो यह सबग्राफ में hex प्रारूप में लौटाया जाता है (उदाहरण: ब्लॉक और लेन-देन हैश)। आप अपने मैपिंग्स में इसे base64 या base64 URL-सुरक्षित प्रारूप में परिवर्तित करना चाह सकते हैं, ताकि यह उन ब्लॉक एक्सप्लोरर्स में प्रदर्शित होने वाले प्रारूप से मेल खाए, जैसे कि Arweave Explorer।

              यह bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string हेल्पर फंक्शन का उपयोग किया जा सकता है, और इसे graph-ts में जोड़ा जाएगा:

              1const base64Alphabet = [2	"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",3	"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",4	"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",5	"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",6	"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/"7];89const base64UrlAlphabet = [10	"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",11	"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",12	"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",13	"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",14	"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"15];1617function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string {18	let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet;1920	let result = '', i: i32, l = bytes.length;21	for (i = 2; i < l; i += 3) {22		result += alphabet[bytes[i - 2] >> 2];23		result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];24		result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)];25		result += alphabet[bytes[i] & 0x3F];26	}27	if (i === l + 1) { // 1 octet yet to write28		result += alphabet[bytes[i - 2] >> 2];29		result += alphabet[(bytes[i - 2] & 0x03) << 4];30		if (!urlSafe) {31			result += "==";32		}33	}34	if (!urlSafe && i === l) { // 2 octets yet to write35		result += alphabet[bytes[i - 2] >> 2];36		result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];37		result += alphabet[(bytes[i - 1] & 0x0F) << 2];38		if (!urlSafe) {39			result += "=";40		}41	}42	return result;43}
              ⁠GitHub पर संपादित करें⁠

              NEAR पर सबग्राफ बनानाएक कॉन्ट्रैक्ट बदलें और उसका इतिहास ग्राफ्टिंग के साथ रखें
              इस पृष्ठ पर
              • आरवीव क्या है?
              • आरवीवे सब ग्राफ्स क्या हैं?
              • एक आरवीव सब ग्राफ बनाना
              • सब ग्राफ के कॉम्पोनेन्ट
              • 1. मैनिफेस्ट- subgraph.yaml
              • 2. स्कीमा- schema.graphql
              • 3. AssemblyScript मैपिंग्स- mapping.ts
              • सब ग्राफ मैनिफेस्ट की परिभाषा
              • स्कीमा की परिभाषा
              • असेंबली स्क्रिप्ट मैप्पिंग्स
              • Deploying an Arweave Subgraph in Subgraph Studio
              • आरवीव सब-ग्राफ क्वेरी करना
              • सब-ग्राफ के उदाहरण
              • FAQ
              • क्या सबग्राफ Arweave और अन्य चेन को इंडेक्स कर सकता है?
              • क्या मैं आरवीव पर स्टोर की फाइल्स को इंडेक्स कर सकता हूँ?
              • क्या मैं अपने Subgraph में Bundlr bundles की पहचान कर सकता हूँ?
              • क्या मैं किसी विशिष्ट अकाउंट से ट्रांसक्शन्स छाँट सकता हूँ?
              • वर्तमान एन्क्रिप्शन फॉर्मेट क्या है?
              The GraphStatusTestnetBrand AssetsForumSecurityPrivacy PolicyTerms of Service