मुख्य सामग्री पर जाएं

एमपीपी सेशन का उपयोग करके मल्टीचेन बैलेंस चेकर बनाएं

को अपडेट
9 जून, 2026

पढ़ने में 14 मिनट लगेंगे

अवलोकन

मशीन पेमेंट प्रोटोकॉल (एमपीपी) आपको HTTP अनुरोध के साथ ही API एक्सेस के लिए भुगतान करने की सुविधा देता है। कोई खाता या API कुंजी नहीं। बस एक वॉलेट जिसमें स्टेबलकॉइन बैलेंस हो।

सेशन इस प्रक्रिया को एक कदम आगे ले जाते हैं। आप एक बार पेमेंट चैनल खोलते हैं, फिर हर रिक्वेस्ट के लिए उसका दोबारा इस्तेमाल करते हैं। हर कॉल का भुगतान एक छोटे हस्ताक्षरित वाउचर से किया जाता है, इसलिए हर बार कोई ऑनचेन लेनदेन नहीं होता और रिक्वेस्ट तेज़ रहती हैं।

इस गाइड में, आप एक टाइपस्क्रिप्ट स्क्रिप्ट बनाएंगे जो एक सिंगल एमपीपी सेशन खोलेगी, क्विकनोड के एमपीपी एंडपॉइंट्स का उपयोग करके 15 ईवीएम चेन में नेटिव टोकन बैलेंस की क्वेरी करेगी, और लागत के विवरण के साथ एक स्वरूपित रिपोर्ट आउटपुट करेगी।

यह स्क्रिप्ट सेशन के लिए एकदम उपयुक्त है क्योंकि यह एक ही बार में कई नेटवर्क पर RPC कॉल करती है। हर कॉल के लिए अलग-अलग भुगतान करने के बजाय, सभी अनुरोध एक ही भुगतान चैनल के माध्यम से प्रोसेस होते हैं। आपको सेटअप शुल्क एक बार देना होता है, और फिर बाकी समय के लिए उसी शुल्क का उपयोग करना होता है।

Quicknode सभी समर्थित चेन पर MPP सेशन को सपोर्ट करता है। वही सेशन जो Ethereum से क्वेरी करता है, बिना किसी अतिरिक्त सेटअप के Base, Arbitrum, Polygon और अन्य सेशन से भी क्वेरी कर सकता है।

निःशुल्क स्तर

प्रत्येक वॉलेट को क्विकनोड के एजेंटिक भुगतान प्लेटफॉर्म ( एमपीपी और x402 सहित) पर प्रति माह 1,000,000 एपीआई क्रेडिट का एक साझा निःशुल्क स्तर मिलता है। मानक आरपीसी अनुरोध प्रत्येक 1 एपीआई क्रेडिट का उपयोग करते हैं, जबकि एसक्यूएल एक्सप्लोरर क्वेरी द्वारा उपयोग किए गए एपीआई क्रेडिट का उपयोग करता है।


MPP, Quicknode पर मौजूद दो एजेंटिक भुगतान प्रोटोकॉल में से एक है।

Quicknode बिना खाते वाले RPC एक्सेस के लिए दो वॉलेट-आधारित भुगतान प्रोटोकॉल का समर्थन करता है: MPP (इस गाइड में उपयोग किया गया) और x402 (Coinbase द्वारा विकसित एक ओपन स्टैंडर्ड)। दोनों ही स्क्रिप्ट और AI एजेंटों को API कॉल के लिए सीधे भुगतान करने की सुविधा देते हैं, इसके लिए किसी खाते या API कुंजी की आवश्यकता नहीं होती है, लेकिन इनमें वायर फॉर्मेट, सेशन की कार्यप्रणाली और समर्थित भुगतान विधियों में अंतर है। दोनों की तुलना के लिए Agentic Payments का अवलोकन देखें, या प्रोटोकॉल की विस्तृत जानकारी के लिए x402 और MPP दस्तावेज़ देखें।

आप क्या सीखेंगे


  • मशीन भुगतान प्रोटोकॉल कैसे काम करता है और सत्र क्यों मौजूद हैं
  • सेशन का पूरा चक्र: 402 चैलेंज, चैनल डिपॉजिट, वाउचर साइनिंग और सेटलमेंट
  • इसका उपयोग कैसे करें एमपीपीएक्स भुगतान सत्र बनाने और प्रबंधित करने के लिए SDK
  • Quicknode के MPP एंडपॉइंट्स का उपयोग करके एक ही सेशन में विभिन्न चेनों पर कई RPC कॉल कैसे करें

आपको क्या चाहिए होगा


  • Node.js संस्करण 20 या बाद का संस्करण
  • टाइपस्क्रिप्ट और ईवीएम चेन की बुनियादी जानकारी
  • Quicknode अकाउंट या API कुंजी की आवश्यकता नहीं है (MPP एक्सेस और बिलिंग का प्रबंधन करता है)
  • उत्पादन उपयोग के लिए टेम्पो टेस्टनेट पर थोड़ी मात्रा में PathUSD (स्क्रिप्ट में फाउसेट के माध्यम से स्वतः वित्तपोषित) या टेम्पो मेननेट पर PathUSD/USDC.e उपलब्ध है।

मशीन पेमेंट प्रोटोकॉल क्या है?

मशीन पेमेंट प्रोटोकॉल एक खुला मानक है जिसे IETF को प्रस्तावित किया गया है, जो किसी भी HTTP एंडपॉइंट में इनलाइन भुगतान की सुविधा जोड़ता है। इसे एक विशिष्ट समस्या के समाधान के लिए डिज़ाइन किया गया है: प्रोग्रामेटिक क्लाइंट (एजेंट, स्क्रिप्ट, बॉट) के पास API एक्सेस के लिए भुगतान करने का कोई अच्छा तरीका नहीं है, जब तक कि कोई व्यक्ति पहले बिलिंग सेट अप न कर दे।

पारंपरिक भुगतान प्रक्रियाएं चेकआउट फॉर्म, ब्राउज़र सेशन और विज़ुअल कैप्चा पर निर्भर करती हैं। एमपीपी इन सभी को HTTP पर आधारित मशीन-पठनीय भुगतान प्रक्रिया से बदल देता है। 402 भुगतान आवश्यक है.

यह काम किस प्रकार करता है

यह प्रोटोकॉल चुनौती-प्रतिक्रिया पैटर्न का अनुसरण करता है:


  1. अनुरोध : क्लाइंट एक सशुल्क एंडपॉइंट पर एक सामान्य HTTP अनुरोध भेजता है।
  2. चुनौतीसर्वर इस प्रकार प्रतिक्रिया देता है: 402 भुगतान आवश्यक है और एक WWW-प्रमाणीकरण: भुगतान शीर्षक में कीमत, स्वीकार्य मुद्राएं और उपलब्ध भुगतान विधियों का विवरण दिया गया है।
  3. भुगतान : ग्राहक भुगतान विधि का चयन करता है और उसे पूरा करता है (स्टेबलकॉइन ट्रांसफर पर हस्ताक्षर करता है, भुगतान चैनल खोलता है, आदि)।
  4. पुन: प्रयास करेंग्राहक मूल अनुरोध को पुनः भेजता है। प्राधिकरण: भुगतान भुगतान के प्रमाण वाला हेडर।
  5. बाँटनासर्वर भुगतान की पुष्टि करता है और प्रतिक्रिया लौटाता है। भुगतान-रसीद शीर्षक।

क्लाइंट लाइब्रेरी जैसे एमपीपीएक्स चरण 2 से 4 को स्वचालित रूप से संभालें। आपके कोड के दृष्टिकोण से, अनुरोध ठीक से काम करता है।

आरोप बनाम सत्र

एमपीपी दो भुगतान इरादों को परिभाषित करता है जो बिलिंग के काम करने के तरीके को नियंत्रित करते हैं:

शुल्कसत्र
नमूनाप्रत्येक अनुरोध के लिए एक बार का भुगतानभुगतान चैनल के माध्यम से पे-एज़-यू-गो सुविधा उपलब्ध है।
समझौताअनुरोध के अनुसार ऑनचेन लेनदेनऑफ-चेन वाउचर, ऑनचेन सेटलमेंट केवल ओपन/क्लोज होने पर।
सत्यापन विलंबतासैकड़ों मिलीसेकंड (ऑनचेन)माइक्रोसेकंड (सीपीयू-बाउंड) ईक्रेकवर)
के लिए सर्वश्रेष्ठकभी-कभार पूछे जाने वाले प्रश्न, सरल एकीकरणउच्च आवृत्ति अनुरोध, बैच वर्कफ़्लो, एजेंट

मुख्य अंतर भुगतान सत्यापन के तरीके में है। चार्ज सिस्टम में, प्रत्येक अनुरोध ऑनचेन लेनदेन को ट्रिगर करता है। सेशन सिस्टम में, सर्वर एक हस्ताक्षरित वाउचर को एक ही विधि से सत्यापित करता है। ईक्रेकवर यह कॉल क्रिटिकल पाथ में बिना किसी RPC कॉल या डेटाबेस राइट के होती है। इसका मतलब है कि सर्वर सेशन के दौरान कभी भी चेन को स्पर्श नहीं करता है, इसलिए थ्रूपुट सर्वर CPU द्वारा सीमित होता है, न कि ब्लॉकचेन सहमति द्वारा।

Quicknode के MPP एंडपॉइंट्स पर, इसका सीधा असर लागत बचत पर भी पड़ता है: चार्ज रिक्वेस्ट की लागत $0.001 प्रति रिक्वेस्ट है, जबकि सेशन रिक्वेस्ट की लागत $0.00001 प्रति रिक्वेस्ट है। एक स्क्रिप्ट के लिए जो एक ही बार में अलग-अलग नेटवर्क पर 15 से अधिक RPC कॉल करती है, सेशन सबसे उपयुक्त विकल्प हैं।

श्रृंखलाओं से पूछताछ की गईशुल्क ($0.001/अनुरोध)सत्र ($0.00001/आवश्यकता)
10$0.010$0.0001
25$0.025$0.00025
50$0.050$0.0005

सेशन लाइफसाइकिल को समझना

कोड में जाने से पहले, यह समझना महत्वपूर्ण है कि सेशन आंतरिक रूप से कैसे काम करते हैं। निम्नलिखित आरेख हमारे मल्टीचेन बैलेंस चेकर के संपूर्ण प्रवाह को दर्शाता है:

महत्वपूर्ण अवधारणाएं

भुगतान चैनल : एक ऑनचेन एस्क्रो अनुबंध जहां ग्राहक अग्रिम रूप से धनराशि जमा करता है। यह प्रक्रिया सत्र शुरू होने पर केवल एक बार होती है।

संचयी वाउचर : प्रत्येक अनुरोध में एक हस्ताक्षरित संदेश शामिल होता है जिसमें लिखा होता है, "मैंने अब तक कुल X राशि का उपभोग कर लिया है।" वाउचर संचयी होते हैं, वृद्धिशील नहीं। सर्वर को सभी बकाया राशि प्राप्त करने के लिए केवल नवीनतम वाउचर की आवश्यकता होती है। उदाहरण के लिए, $0.00001 के तीन अनुरोधों के बाद: वाउचर(1) = 10, वाउचर(2) = 20, वाउचर(3) = 30 परमाणु इकाइयाँ।

मल्टी-नेटवर्क सत्रएक ही सेशन इंस्टेंस विभिन्न स्रोतों से अनुरोधों को संभालता है। /सत्र/:नेटवर्क एंडपॉइंट्स। सेशन भुगतान चैनल को प्रबंधित करता है; नेटवर्क स्लग यह निर्धारित करता है कि अनुरोध को किस क्विकनोड आरपीसी बैकएंड पर प्रॉक्सी किया जाएगा।

निपटान : सत्र समाप्त होने पर, सर्वर अंतिम वाउचर का निपटान ऑनचेन पर करता है। ग्राहक को अप्रयुक्त जमा राशि की वापसी प्राप्त होती है।

प्रोजेक्ट सेटअप

पूरी पटकथा इसमें मौजूद है प्रश्न-मार्गदर्शिका-उदाहरण भंडार (स्रोत फ़ाइल को सीधे देखेंइसे क्लोन करें और आवश्यक शर्तें स्थापित करें:

git clone https://github.com/quiknode-labs/qn-guide-examples.git
cd qn-guide-examples/mpp/multichain-balance-checker
NPM स्थापित करना

आप इसे कॉपी भी कर सकते हैं index.ts फ़ाइल इसे अपने प्रोजेक्ट में डालें और आवश्यक डिपेंडेंसी इंस्टॉल करें।

इस प्रोजेक्ट में दो रनटाइम डिपेंडेंसी का उपयोग किया गया है:

पैकेटउद्देश्य
एमपीपीएक्सएमपीपी प्रोटोकॉल क्लाइंट (सेशन प्रबंधन, वाउचर हस्ताक्षर)
विएमवॉलेट संचालन और बैलेंस फॉर्मेटिंग

और दो विकास संबंधी निर्भरताएँ: टीएसएक्स टाइपस्क्रिप्ट को सीधे चलाने के लिए, और टाइपप्रति टाइप चेक करने के लिए।

चेन रजिस्ट्री को परिभाषित करना

यह स्क्रिप्ट कई EVM चेन में मौजूद नेटिव बैलेंस की जानकारी प्राप्त करती है। प्रत्येक चेन को उसके MPP नेटवर्क स्लग, डिस्प्ले नाम, नेटिव टोकन सिंबल और दशमलव परिशुद्धता के साथ परिभाषित किया गया है।

const CHAINS = [
{ slug: 'ethereum-mainnet', name: 'Ethereum', symbol: 'ETH', decimals: 18 },
{ slug: 'base-mainnet', name: 'Base', symbol: 'ETH', decimals: 18 },
{ slug: 'arbitrum-mainnet', name: 'Arbitrum', symbol: 'ETH', decimals: 18 },
{ slug: 'optimism-mainnet', name: 'Optimism', symbol: 'ETH', decimals: 18 },
{ slug: 'matic-mainnet', name: 'Polygon', symbol: 'POL', decimals: 18 },
{ slug: 'worldchain-mainnet', name: 'World Chain', symbol: 'ETH', decimals: 18 },
{ slug: 'bsc-mainnet', name: 'BNB Chain', symbol: 'BNB', decimals: 18 },
{ slug: 'fantom-mainnet', name: 'Fantom', symbol: 'FTM', decimals: 18 },
{ slug: 'celo-mainnet', name: 'Celo', symbol: 'CELO', decimals: 18 },
{ slug: 'xdai-mainnet', name: 'Gnosis', symbol: 'xDAI', decimals: 18 },
{ slug: 'zksync-mainnet', name: 'zkSync Era', symbol: 'ETH', decimals: 18 },
{ slug: 'scroll-mainnet', name: 'Scroll', symbol: 'ETH', decimals: 18 },
{ slug: 'linea-mainnet', name: 'Linea', symbol: 'ETH', decimals: 18 },
{ slug: 'mantle-mainnet', name: 'Mantle', symbol: 'MNT', decimals: 18 },
{ slug: 'blast-mainnet', name: 'Blast', symbol: 'ETH', decimals: 18 },
]

यहां नेटवर्क स्लग महत्वपूर्ण है। यह एमपीपी सेशन एंडपॉइंट से मैप होता है। https://mpp.quicknode.com/session/:slug/सत्र/ यूआरएल में मौजूद उपसर्ग ही सर्वर को बताता है कि चार्ज इंटेंट के बजाय सेशन इंटेंट का उपयोग करें।

आप आवश्यकतानुसार चेन जोड़ या हटा सकते हैं। Quicknode के MPP एंडपॉइंट सभी समर्थित नेटवर्क को सपोर्ट करते हैं। आप समर्थित स्लग की पूरी सूची भी गतिशील रूप से प्राप्त कर सकते हैं:

curl https://mpp.quicknode.com/networks

ध्यान दें कि जिन चेन से आप जानकारी प्राप्त कर रहे हैं, वे भुगतान नेटवर्क से अलग हैं। आपका सत्र टेम्बो ब्लॉकचेन (टेस्टनेट या मेननेट) पर चलता है, लेकिन यह किसी भी समर्थित चेन पर RPC एंडपॉइंट तक पहुंच सकता है।

वॉलेट को सेट अप करना

भुगतान चैनल के लिए वाउचर पर हस्ताक्षर करने हेतु स्क्रिप्ट को एक वॉलेट की आवश्यकता होती है। यह या तो वातावरण से मौजूदा निजी कुंजी का उपयोग कर सकता है या स्वचालित रूप से एक नई कुंजी उत्पन्न कर सकता है:

आयात { जनरेटप्राइवेटकी , प्राइवेटकीटूअकाउंट } से 'viem/accounts'

const privateKey = ( प्रक्रिया . env . MPPX_PRIVATE_KEY जैसा ` 0x ${ स्ट्रिंग } ` ) || जनरेटप्राइवेटकी ( )
स्थिर खाता = प्राइवेटकीटूअकाउंट ( प्राइवेटकी )

जब कोई कुंजी स्वतः उत्पन्न होती है, तो स्क्रिप्ट उसे सहेज लेती है। .पर्यावरण फ़ाइल (के साथ) chmod 600 अनुमतियाँ) ताकि भविष्य के रन उसी वॉलेट का पुनः उपयोग कर सकें:

import { existsSync, writeFileSync } from 'fs'

if (isGenerated && !existsSync(envPath)) {
writeFileSync(
envPath,
[
'# Auto-generated by multichain balance checker',
'# This file is gitignored — never commit private keys.',
`MPPX_PRIVATE_KEY=${privateKey}`,
'',
].join('\n'),
{ mode: 0o600 },
)
}

टेस्टनेट फाउसेट के माध्यम से फंडिंग

टेस्टनेट उपयोग के लिए, स्क्रिप्ट स्वचालित रूप से टेम्बो टेस्टनेट फ़ॉसेट का उपयोग करके वॉलेट में धनराशि जमा करती है। इससे वॉलेट को टेम्बो मॉडरेटो (चेन आईडी 42431) पर पाथयूएसडी (एक टेस्टनेट स्टेबलकॉइन) और गैस प्राप्त होती है।

async function fundWallet(address: string): Promise<void> {
const res = await fetch('https://docs.tempo.xyz/api/faucet', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ address }),
})
if (res.ok) {
console.log('Faucet: Request accepted — waiting for onchain confirmation...')
await waitForFunding(address)
}
}

The फंडिंग की प्रतीक्षा करें यह फ़ंक्शन आगे बढ़ने से पहले यह पुष्टि करने के लिए टेम्बो मॉडरेटो पर पाथयूएसडी अनुबंध की जाँच करता है कि शेष राशि प्राप्त हो गई है:

const TEMPO_RPC = 'https://rpc.moderato.tempo.xyz'
const PATHUSD_ADDRESS = '0x20c0000000000000000000000000000000000000'

async function getPathUSDBalance(walletAddress: string): Promise<bigint> {
const data = '0x70a08231' + walletAddress.slice(2).padStart(64, '0')
const res = await fetch(TEMPO_RPC, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0', id: 1,
method: 'eth_call',
params: [{ to: PATHUSD_ADDRESS, data }, 'latest'],
}),
})
const json = (await res.json()) as { result?: string }
return BigInt(json.result ?? '0x0')
}

इस सरल सेटअप का मतलब है कि कोई भी व्यक्ति बिना किसी चीज के लिए साइन अप किए या मैन्युअल रूप से वॉलेट में पैसे डाले बिना रिपॉजिटरी को क्लोन कर सकता है और स्क्रिप्ट चला सकता है।

जानकारी

Quicknode का MPP सेशन फ्लो x402 के समान ही फ्री-टियर बकेट का उपयोग करता है: प्रति वॉलेट 1,000,000 API क्रेडिट प्रति माह। RPC अनुरोध प्रत्येक 1 API क्रेडिट का उपयोग करते हैं, जबकि SQL एक्सप्लोरर क्वेरी द्वारा उपयोग किए गए API क्रेडिट का उपयोग करता है। फ्री टियर समाप्त होने के बाद, मेननेट-फंडेड वॉलेट पर स्विच करें। प्रोडक्शन में जाने के बारे में अधिक जानकारी के लिए देखें।

सेशन बनाना और बैलेंस की क्वेरी करना

यहीं पर सत्र का मुख्य तर्क मौजूद है। स्क्रिप्ट एक एमपीपी सत्र बनाती है। टेम्पो.सेशन()फिर प्रत्येक श्रृंखला के माध्यम से पुनरावृति करता है, भेजता है eth_getBalance सेशन के माध्यम से अनुरोध:

import { tempo } from 'mppx/client'

const session = tempo.session({
account,
maxDeposit: '1', // 1 PathUSD — covers 100,000 requests at $0.00001/each
})

The अधिकतम जमा यह पैरामीटर भुगतान चैनल के लिए कुल बजट निर्धारित करता है। सेशन समाप्त होने पर आप जो भी राशि खर्च नहीं करते हैं, वह आपको वापस मिल जाती है।

जानकारी

यदि सत्र के बीच में चैनल डिपॉजिट समाप्त हो जाता है, तो एमपीपीएक्स क्लाइंट सेशन को बंद किए बिना और दोबारा खोले बिना ऑनचेन डिपॉजिट के साथ चैनल को टॉप अप कर सकता है। हमारे 15-चेन स्क्रिप्ट के लिए, एक छोटा सा डिपॉजिट भी काफी है, लेकिन यह तब उपयोगी होता है जब आप ऐसे लंबे समय तक चलने वाले एप्लिकेशन बना रहे हों जो हजारों रिक्वेस्ट करते हैं।

सेशन के दौरान आरपीसी कॉल करना

प्रत्येक श्रृंखला के लिए, स्क्रिप्ट कॉल करती है सत्र.फ़ेच() मानक JSON-RPC के साथ eth_getBalance पेलोड। यह सत्र सभी एमपीपी प्रक्रियाओं को स्वचालित रूप से संभालता है:

const MPP_BASE_URL = 'https://mpp.quicknode.com/session'

for (const chain of CHAINS) {
const response = await session.fetch(`${MPP_BASE_URL}/${chain.slug}`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'eth_getBalance',
params: [WALLET_ADDRESS, 'latest'],
}),
})

const data = (await response.json()) as { result?: string; error?: { message: string } }
// Parse hex balance to human-readable format
const balance = formatBalance(data.result!, chain.decimals)
}

पर पहला अनुरोध, सत्र.फ़ेच() यह 402 चैलेंज-रिस्पॉन्स की पूरी प्रक्रिया को संभालता है: यह चैलेंज प्राप्त करता है, PathUSD को ऑनचेन एस्क्रो कॉन्ट्रैक्ट में जमा करता है, और हस्ताक्षरित वाउचर के साथ पुनः प्रयास करता है। इसमें लगभग 500 मिलीसेकंड का समय लगता है।

पर प्रत्येक अनुवर्ती अनुरोधसत्र केवल संचयी वाउचर को बढ़ाता है और उसे इसमें शामिल करता है। प्राधिकार हेडर। सर्वर एक ही बार में वाउचर को सत्यापित करता है। ईक्रेकवर ऑपरेशन (किसी ऑनचेन लेनदेन की आवश्यकता नहीं है), इसलिए प्रतिक्रियाएं लगभग शून्य भुगतान ओवरहेड के साथ वापस आती हैं।

स्क्रिप्ट में अस्थायी एमपीपी रूटिंग समस्याओं से निपटने के लिए 404 प्रतिक्रियाओं पर पुनः प्रयास करने का विकल्प भी शामिल है:

if (response.status === 404) {
response = await session.fetch(`${MPP_BASE_URL}/${chain.slug}`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: rpcBody,
})
}

बैलेंस को फॉर्मेट करना

The eth_getBalance प्रतिक्रिया में एक हेक्साडेसिमल स्ट्रिंग प्राप्त होती है जो भार (या श्रृंखला की समतुल्य सबसे छोटी इकाई) में शेष राशि को दर्शाती है। स्क्रिप्ट इसे मानव-पठनीय दशमलव में परिवर्तित करती है:

import { formatUnits } from 'viem'

function formatBalance(hexBalance: string, decimals: number): string {
const value = BigInt(hexBalance)
return parseFloat(formatUnits(value, decimals)).toFixed(4)
}

सत्र का समापन

सभी क्वेरी पूरी होने के बाद, स्क्रिप्ट ऑनचेन सेटलमेंट को ट्रिगर करने के लिए सेशन बंद कर देती है। सर्वर अंतिम संचयी वाउचर का निपटान करता है और अप्रयुक्त जमा राशि को वॉलेट में वापस कर देता है।

// बंद करने से पहले सत्र डेटा कैप्चर करें
const channelId = session.channelId
const cumulativeSpend = session.cumulative

console.log ( 'सत्र बंद किया जा रहा है और ऑनचेन पर सेट किया जा रहा है ... ' )
स्थिर रसीद = await session.close ( )

इसके बाद स्क्रिप्ट कुल लागत, वापसी राशि और निपटान विवरण दर्शाने वाला सारांश प्रिंट करती है:

प्रिंट सारांश (
परिणाम ,
कुल अनुरोध ,
चैनल आईडी ,
संचयी व्यय
रसीद ?. txHash ,
) ;

स्क्रिप्ट संपूर्ण क्वेरी लूप को ट्राई/कैच में लपेटती है और त्रुटियों की स्थिति में भी सत्र को बंद करने का प्रयास करती है, ताकि भुगतान चैनल अनिश्चित काल तक खुला न रहे:

try {
// ... query loop ...
await session.close()
} catch (err) {
console.error('Fatal error:', err instanceof Error ? err.message : err)
try {
await session.close()
console.log('Session closed after error.')
} catch {
console.log('Could not close session.')
}
process.exit(1)
}

स्क्रिप्ट चलाना

सब कुछ तैयार हो जाने के बाद, स्क्रिप्ट चलाएँ:

# स्वचालित रूप से उत्पन्न टेस्टनेट वॉलेट के साथ चलाएँ (बिना किसी सेटअप की आवश्यकता के)
npx tsx index.ts

# या फिर .env फ़ाइल के माध्यम से अपनी निजी कुंजी प्रदान करें
गूंज "MPPX_PRIVATE_KEY=0x..." > .env
npx tsx --env-फ़ाइल = .env Index.ts

आपको इस तरह का आउटपुट दिखाई देगा:

मल्टीचेन बैलेंस चेकर (एमपीपी सेशन के माध्यम से)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

वॉलेट: 0x1234...abcd (स्वचालित रूप से उत्पन्न)
लक्ष्य: 0xd8dA...6045

श्रृंखला | संतुलन | स्थिति
──────────────────┼──────────────────────┼──────────
एथेरियम | 1.2345 ETH | ठीक है
आधार | 0.5000 ETH | ठीक है
आर्बिट्रम | 0.0000 ETH | ठीक है
आशावाद | 2.1000 ETH | ठीक है
बहुभुज | 150.0000 POL | ठीक है
बीएनबी चेन | 0.0312 बीएनबी | ठीक है
... | ... | ...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
सत्र का सारांश
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
जाँची गई श्रृंखलाएँ: 15 (15 सही, 0 त्रुटियाँ)
कुल आरपीसी कॉल: 15
सत्र की लागत: 0.000150 पाथयूएसडी ($0.00015)
चैनल डिपॉजिट: 1.000000 PathUSD
वापसी राशि: 0.999850 पाथयूएसडी
चैनल आईडी: 0xdef456...abc123
समझौता लेनदेन: 0xabc123...def456

सेशन समाप्त होने के बाद, आप ब्लॉक एक्सप्लोरर पर सेटलमेंट की पुष्टि कर सकते हैं। समझौता लेनदेन आउटपुट में मौजूद हैश अंतिम ऑनचेन लेनदेन से लिंक करता है। इसका उपयोग करें टेस्टनेट एक्सप्लोरर टेम्पो मॉडरेटो या के लिए मेननेट एक्सप्लोरर उत्पादन के लिए।

नीचे दिए गए स्क्रीनशॉट में दिखाया गया है कि निपटान लेनदेन कैसा दिखता है:

टेम्पो ब्लॉक एक्सप्लोरर पर एमपीपी सत्र निपटान लेनदेन

लाल बॉक्स भुगतान चैनल से जुड़े दो बैलेंस ट्रांसफर दिखाता है: सत्र शुरू होने पर एस्क्रो अनुबंध में भेजा गया 1 PathUSD, और निपटान होने पर धनवापसी के रूप में लौटाया गया 0.99985 PathUSD। नारंगी बॉक्स निपटान लेनदेन के हिस्से के रूप में सर्वर को भुगतान की गई वास्तविक सत्र लागत (0.00015 PathUSD) दिखाता है।

आप वॉलेट एड्रेस को एडिट करके चेक किए जा रहे वॉलेट एड्रेस को बदल सकते हैं। वॉलेट_पता शीर्ष पर स्थिर index.ts:

कॉन्स्ट वॉलेट_पता = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' // कोई भी पता

उत्पादन शुरू होने वाला है

स्क्रिप्ट में सहज ऑनबोर्डिंग के लिए डिफ़ॉल्ट रूप से टेस्टनेट का उपयोग किया गया है। प्रोडक्शन उपयोग के लिए निम्नलिखित परिवर्तन होते हैं:

टेस्टनेट (डिफ़ॉल्ट)मेननेट
भुगतान नेटवर्कटेंपो मॉडरेटो (चेन आईडी 42431)टेम्पो मेननेट (चेन आईडी 4217)
मुद्रापथयूएसडीPathUSD या USDC.e
निःशुल्क स्तरMPP और x402 के माध्यम से प्रति वॉलेट प्रति माह 1,000,000 API क्रेडिट साझा किए गए।असीमित
वॉलेट फंडिंगनल के माध्यम से स्वतः वित्तपोषितमैन्युअल फंडिंग आवश्यक है

मेननेट पर स्विच करने के लिए, टेम्पो मेननेट पर PathUSD या USDC.e वाला वॉलेट कुंजी प्रदान करें। एमपीपीएक्स क्लाइंट स्वचालित रूप से उपलब्ध शेष राशि का पता लगाता है और 402 चैलेंज से सही भुगतान विधि का चयन करता है।

स्क्रिप्ट का विस्तार करना

बैलेंस चेकर को जानबूझकर सरल बनाया गया है ताकि सेशन की कार्यप्रणाली पर ध्यान केंद्रित रहे। महत्वपूर्ण बात यह है कि इसका पैटर्न इस प्रकार है: एक सेशन खोलें, विभिन्न चेन पर कई RPC कॉल करें, बंद करें और बैलेंस सेटल करें। चूंकि एक ही MPP सेशन सभी नेटवर्क स्लग पर अनुरोधों को संभालता है, इसलिए आप सेशन सेटअप को बदले बिना किसी भी समर्थित चेन पर किसी भी RPC विधि को कॉल करने के लिए स्क्रिप्ट का विस्तार कर सकते हैं। उदाहरण के लिए, आप स्वैप करके ERC-20 टोकन बैलेंस चेक जोड़ सकते हैं। eth_getBalance एक के लिए eth_call टोकन अनुबंध के लिए संतुलन समारोह।

निष्कर्ष

आपने एक मल्टीचेन बैलेंस चेकर बनाया जो एक ही एमपीपी सेशन के माध्यम से 15 ईवीएम चेन से डेटा प्राप्त करता है। मुख्य पैटर्न यह है: एक पेमेंट चैनल खोलें, ऑफ-चेन वाउचर का उपयोग करके समर्थित चेन के किसी भी संयोजन में आवश्यकतानुसार आरपीसी कॉल करें, फिर सेशन को बंद करें और सेटलमेंट करें। सेशन ने पेमेंट की सभी प्रक्रियाओं को स्वचालित रूप से संभाला, जिसमें शुरुआती 402 चैलेंज से लेकर वाउचर साइनिंग, अंतिम सेटलमेंट और रिफंड तक सब कुछ शामिल था।

यह पैटर्न उन सभी वर्कफ़्लो पर लागू होता है जो कई RPC कॉल करते हैं: पोर्टफोलियो ट्रैकर, मॉनिटरिंग स्क्रिप्ट, डेटा पाइपलाइन, या AI एजेंट जिन्हें नेटवर्क पर ऑनचेन स्थिति पढ़ने की आवश्यकता होती है। सेशन इन टूल्स को बिना अकाउंट या API कुंजी के, प्रोग्रामेटिक रूप से एक्सेस के लिए भुगतान करने की सुविधा देते हैं, साथ ही भुगतान संबंधी अतिरिक्त लागत को भी कम रखते हैं।

अगले कदम

एमपीपी, टेम्पो और क्विकनोड के एमपीपी इंटीग्रेशन के बारे में अधिक जानने के लिए, निम्नलिखित संसाधनों को देखें:

अक्सर पूछे जाने वाले प्रश्नों

एमपीपी क्या है और यह पारंपरिक एपीआई कुंजी प्रमाणीकरण से कैसे भिन्न है?

मशीन पेमेंट प्रोटोकॉल (एमपीपी) एक ओपन स्टैंडर्ड है जो 402 पेमेंट रिक्वायर्ड स्टेटस कोड का उपयोग करके HTTP एंडपॉइंट्स में इनलाइन पेमेंट की सुविधा जोड़ता है। अकाउंट बनाने और एपीआई कुंजी प्रबंधित करने के बजाय, आप वॉलेट से स्टेबलकॉइन का उपयोग करके प्रति अनुरोध भुगतान करते हैं। इससे स्क्रिप्ट, एजेंट और बॉट बिना किसी मानवीय हस्तक्षेप के बिलिंग सेटअप किए बिना तुरंत एपीआई का उपयोग शुरू कर सकते हैं।

मुझे प्रति अनुरोध शुल्क भुगतान के बजाय एमपीपी सत्र का उपयोग कब करना चाहिए?

जब आपका स्क्रिप्ट या एप्लिकेशन एक ही बार में कई RPC कॉल करता है, तो सेशन का उपयोग करें। सेशन ऑनचेन पर एक पेमेंट चैनल खोलता है और बाद के अनुरोधों के लिए ऑफचेन वाउचर का उपयोग करता है। वाउचर सत्यापन एक CPU-आधारित हस्ताक्षर जांच है जो कुछ माइक्रोसेकंड का अतिरिक्त समय लेती है, जबकि ऑनचेन चार्ज भुगतान में सैकड़ों मिलीसेकंड का समय लगता है। Quicknode के MPP एंडपॉइंट्स पर, प्रति अनुरोध सेशन काफी सस्ते भी होते हैं। यदि आप 10 से कम अनुरोध कर रहे हैं, तो चार्ज भुगतान अधिक सरल है।

क्या एमपीपी एंडपॉइंट्स का उपयोग करने के लिए मुझे क्विकनोड खाते की आवश्यकता है?

नहीं। एमपीपी एंडपॉइंट्स के लिए किसी खाते, एपीआई कुंजी या साइन अप की आवश्यकता नहीं होती है। आपको केवल स्टेबलकॉइन (या टेस्टनेट टोकन) वाला वॉलेट चाहिए। भुगतान प्रत्येक HTTP अनुरोध के साथ ही होता है।

क्या मैं एमपीपी सेशन के माध्यम से सोलाना जैसी गैर-ईवीएम श्रृंखलाओं से क्वेरी कर सकता हूं?

Quicknode के MPP एंडपॉइंट Solana और अन्य गैर-EVM चेन को सपोर्ट करते हैं। आप URL में नेटवर्क स्लग बदलकर एक ही सेशन इंस्टेंस का उपयोग करके किसी भी समर्थित चेन से क्वेरी कर सकते हैं। उदाहरण के लिए, एक ही पेमेंट चैनल के माध्यम से Solana RPC एंडपॉइंट से क्वेरी करने के लिए /session/solana-mainnet का उपयोग करें।

यदि सेशन बंद होने से पहले मेरी स्क्रिप्ट क्रैश हो जाती है तो क्या होगा?

यदि सेशन को स्पष्ट रूप से बंद नहीं किया जाता है, तो भुगतान चैनल टाइमआउट होने तक खुला रहता है। सर्वर अभी भी प्राप्त अंतिम वाउचर का निपटान कर सकता है। इससे बचने के लिए, स्क्रिप्ट क्वेरी लूप को ट्राई/कैच में लपेटती है और त्रुटियों की स्थिति में भी सेशन को बंद करने का प्रयास करती है।

फ्री टियर कैसे काम करता है और मैं मेननेट पर कैसे जा सकता हूँ?

Quicknode के MPP एंडपॉइंट्स x402 के साथ साझा किए गए प्रति वॉलेट 1,000,000 API क्रेडिट/माह के फ्री-टियर बकेट का उपयोग करते हैं। RPC अनुरोध प्रत्येक 1 API क्रेडिट का उपभोग करते हैं, जबकि SQL एक्सप्लोरर क्वेरी द्वारा उपयोग किए गए API क्रेडिट का उपभोग करता है। असीमित उपयोग के लिए, Tempo मेननेट (चेन ID 4217) पर PathUSD या USDC.e से फंडेड वॉलेट प्रदान करें।

हमें आपकी प्रतिक्रिया बहुत पसंद है!

अगर आपके पास कोई सुझाव या नए विषयों के लिए कोई अनुरोध हो तो हमें जरूर बताएं । हमें आपसे सुनना अच्छा लगेगा।

इस गाइड को साझा करें