transfer(address,uint256) पर एक call handler, और अपनी mapping में एक balanceOf call वाले subgraph ने हाल के एक block से indexing की और chain head से एक block के भीतर बना रहा। इसके बजाय किसी network की forked copy को index करने के लिए, देखें The Graph से Virtual Environment को index करें।
शुरू करने से पहले
- आपके network के लिए एक Node RPC URL, जो Tenderly Dashboard में Node RPC के Integrate view में मिलता है
- एक subgraph और वह
docker-compose.ymlजोgraph initउसके लिए generate करता है (देखें Graph Node और subgraph सेट करें; public network के लिए scaffolding steps वही हैं)
Ethereum provider configure करें
Generateddocker-compose.yml में, graph-node service में ethereum को <network>:archive,traces:<Node RPC URL> पर सेट करें। पहले colon से पहले का network नाम subgraph.yaml में network से match होना चाहिए।
docker-compose.yml (graph-node environment)
${TENDERLY_NODE_ACCESS_KEY} को आपके shell से substitute करता है, इसलिए access key file से बाहर रहती है:
capabilities: archive, traces और Provider supports block receipts log करता है, जिसका अर्थ है कि वह किसी block की सभी receipts एक eth_getBlockReceipts request से fetch करता है।
जब
ethereum मान में कोई capability नहीं होती (mainnet:<url>), तब Graph Node दोनों capabilities मान लेता है। उन्हें स्पष्ट रूप से declare करें ताकि configuration में दिखे कि subgraph किन पर निर्भर है।
Public networks पर ETHEREUM_REORG_THRESHOLD को उसके डिफ़ॉल्ट 250 पर रखें। Network के reorganize होने पर Graph Node blocks को roll back करने के लिए इसका उपयोग करता है, इसलिए Virtual Environment setup से 1 का मान copy न करें।
जाँचें कि आपका network trace_filter serve करता है
Call handlers कोtrace_filter की आवश्यकता होती है, जिसे Node RPC पर हर network serve नहीं करता। एक हाल का block request करें:
result में array का अर्थ है कि उस network पर call handlers काम करते हैं। the method trace_filter does not exist/is not available या Method not found जैसी error का अर्थ है कि वे काम नहीं करते; ऐसे में contract के events को eventHandlers के साथ index करें। Block numbers को hex में pass करें, क्योंकि trace_filter latest tag को Invalid params के साथ अस्वीकार करता है।
Graph Node द्वारा भेजे जाने वाले requests
Graph Node लगातार Node RPC को poll करता है, इसलिए हर indexed network requests का उपयोग करता है, तब भी जब किसी subgraph में नए events न हों। हर request category की लागत के लिए Node RPC pricing देखें।
Node RPC पर एक सामान्य subgraph का सबसे महंगा हिस्सा call handlers होते हैं, क्योंकि एक trace request की लागत एक read या contract call से अधिक होती है। जब contract उसी action के लिए एक event emit करता है, तो उसके बजाय event को index करें। जब indexing में कुछ सेकंड की देरी स्वीकार्य हो, तो कम बार poll करने के लिए
ETHEREUM_POLLING_INTERVAL बढ़ाएँ।
समस्या निवारण
यह भी देखें
- Node RPC overview
- Node RPC pricing
trace_filterके लिए RPC reference- किसी forked network को index करने के लिए The Graph से Virtual Environment को index करें