API संदर्भ
इथेरियम API
Core API
गाइड
Ethereum

trace_filter

trace_filter विधि आपको विभिन्न मानदंडों जैसे from/to पतों, ब्लॉक रेंज और ट्रेस प्रकारों के आधार पर ब्लॉक्स की एक श्रेणी के भीतर विशिष्ट ट्रेस खोजने की अनुमति देती है। यह विशिष्ट कॉन्ट्रैक्ट्स या खातों के लिए ब्लॉकचेन गतिविधि का विश्लेषण करने का एक शक्तिशाली तरीका प्रदान करता है।

उपयोग के मामले

  • किसी विशिष्ट पते के लिए सभी आंतरिक लेनदेन ढूंढना
  • ऐसे टोकन ट्रांसफर को ट्रैक करना जो लेनदेन लॉग में दिखाई नहीं देते
  • कॉन्ट्रैक्ट इंटरैक्शन और कमजोरियों का फॉरेंसिक विश्लेषण
  • ब्लॉक्स की एक श्रेणी में विशिष्ट कॉन्ट्रैक्ट कॉल की निगरानी करना
  • सुरक्षा समीक्षा के लिए कॉन्ट्रैक्ट-से-कॉन्ट्रैक्ट इंटरैक्शन का ऑडिट करना
  • स्मार्ट कॉन्ट्रैक्ट निष्पादन पैटर्न का विश्लेषण करना
  • MEV और फ्रंटरनिंग गतिविधियों का पता लगाना
  • DeFi प्रोटोकॉल के माध्यम से आर्बिट्रेज पथों का पता लगाना
  • व्यापक ब्लॉक एक्सप्लोरर बनाना
  • DeFi एप्लिकेशन में जटिल वित्तीय प्रवाह की पुष्टि करना

विधि विवरण

यह विधि निर्दिष्ट फिल्टर मानदंडों के आधार पर लेनदेन ट्रेस प्राप्त करती है।

पैरामीटर:

फिल्टर पैरामीटर्स

किस ब्लॉक से (हेक्स ब्लॉक संख्या या "latest", "earliest", "pending")

किस ब्लॉक तक (हेक्स ब्लॉक संख्या या "latest", "earliest", "pending")

प्रेषक पतों द्वारा ट्रेस फ़िल्टर करें (पता स्ट्रिंग्स की सरणी)

प्राप्तकर्ता पतों द्वारा ट्रेस फ़िल्टर करें (पता स्ट्रिंग्स की सरणी)

दिए गए इंडेक्स के बाद ऑफसेट ट्रेस

वापस लौटाने के लिए ट्रेस की अधिकतम संख्या

रिटर्न:

ट्रेस ऑब्जेक्ट्स की सरणी

की गई कार्रवाई के बारे में जानकारी

कॉल का प्रकार (जैसे, "call", "delegatecall", "staticcall")

प्रेषक पता

प्राप्तकर्ता पता

निष्पादन के इस भाग के लिए प्रदान किया गया गैस

कॉल डेटा इनपुट

wei में स्थानांतरित मूल्य

कंस्ट्रक्टर इनिशियलाइजेशन कोड ("create" ट्रेस के लिए)

कॉन्ट्रैक्ट का पता ("suicide" ट्रेस के लिए)

रिफंड प्राप्त करने वाला पता ("suicide" ट्रेस के लिए)

विनाश के समय कॉन्ट्रैक्ट का बैलेंस ("suicide" ट्रेस के लिए)

इस ट्रेस वाले ब्लॉक का हैश

इस ट्रेस वाला ब्लॉक नंबर

कॉल का परिणाम

उपयोग किया गया गैस की मात्रा

कॉल से आउटपुट डेटा

बनाए गए कॉन्ट्रैक्ट का पता ("create" ट्रेस के लिए)

डिप्लॉय किया गया कॉन्ट्रैक्ट कोड ("create" ट्रेस के लिए)

सबट्रेस की संख्या

कॉल ट्री में ट्रेस स्थान का पता पथ

ट्रेस किए जा रहे लेनदेन का हैश

ब्लॉक में लेनदेन की अनुक्रमिक स्थिति

ट्रेस का प्रकार (call, create, suicide)

यदि कॉल विफल हो गया तो त्रुटि संदेश (वैकल्पिक)

फिल्टर पैरामीटर्स

पैरामीटरप्रकारविवरण
fromBlockstringशुरुआती ब्लॉक संख्या (हेक्स) या टैग ("latest", "earliest", "pending")
toBlockstringअंतिम ब्लॉक संख्या (हेक्स) या टैग ("latest", "earliest", "pending")
fromAddressarrayफ़िल्टर करने के लिए प्रेषक पतों की वैकल्पिक सरणी
toAddressarrayफ़िल्टर करने के लिए प्राप्तकर्ता पतों की वैकल्पिक सरणी
afterintegerवैकल्पिक पेजिनेशन पैरामीटर - दिए गए इंडेक्स के बाद ऑफसेट ट्रेस
countintegerवापस लौटाने के लिए ट्रेस की वैकल्पिक अधिकतम संख्या

प्रतिक्रिया उदाहरण

{
	"jsonrpc": "2.0",
	"id": 1,
	"result": [
		{
			"action": {
				"callType": "call",
				"from": "0x8bbb73bcb5d553b5a556358d27625323fd781d37",
				"to": "0x6090a6e47849629b7245dfa1ca21d94cd15878ef",
				"gas": "0x12a94",
				"input": "0x0000000000000000000000000000000000000000000000000000000000000000",
				"value": "0x0"
			},
			"blockHash": "0x7eb25504e4c202cf3d62fd585d3e238f592c780cca82dacb2ed3cb5b38883add",
			"blockNumber": 3928366,
			"result": {
				"gasUsed": "0xd979",
				"output": "0x0000000000000000000000000000000000000000000000000000000000000001"
			},
			"subtraces": 1,
			"traceAddress": [],
			"transactionHash": "0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3",
			"transactionPosition": 2,
			"type": "call"
		}
	]
}

फिल्टर रणनीतियाँ

विशिष्ट प्रश्नों का उत्तर देने के लिए विभिन्न फिल्टर संयोजनों का उपयोग किया जा सकता है:

किसी विशिष्ट कॉन्ट्रैक्ट पर सभी कॉल खोजने के लिए:

{
  "toAddress": ["0x1234567890123456789012345678901234567890"]
}

किसी कॉन्ट्रैक्ट से सभी आंतरिक लेनदेन खोजने के लिए:

{
  "fromAddress": ["0x1234567890123456789012345678901234567890"]
}

दो विशिष्ट पतों के बीच इंटरैक्शन खोजने के लिए:

{
  "fromAddress": ["0x1234567890123456789012345678901234567890"],
  "toAddress": ["0xabcdef0123456789abcdef0123456789abcdef01"]
}

एक विशिष्ट ब्लॉक रेंज के भीतर गतिविधि का विश्लेषण करने के लिए:

{
  "fromBlock": "0x429d3b",
  "toBlock": "0x429d3d"
}

पेजिनेशन

बड़े परिणाम सेट के लिए, परिणामों के माध्यम से पेजिनेट करने के लिए after और count पैरामीटर का उपयोग करें:

  1. पहला अनुरोध: { "after": 0, "count": 100, ... }
  2. अगला अनुरोध: { "after": 100, "count": 100, ... }
  3. after को count मान से बढ़ाते रहें

प्रदर्शन विचार

  • बड़े ब्लॉक रेंज में फ़िल्टरिंग संसाधन-गहन हो सकती है
  • हमेशा आवश्यक सबसे संकीर्ण ब्लॉक रेंज निर्दिष्ट करें
  • परिणाम सेट आकार को कम करने के लिए पता फ़िल्टरिंग का उपयोग करें
  • बड़ी क्वेरीज़ को छोटी ब्लॉक रेंज में विभाजित करने पर विचार करें
  • भारी उपयोग के लिए, ट्रेस इंडेक्सिंग के साथ अपना स्वयं का आर्काइव नोड चलाने पर विचार करें

ट्रेस प्रकार

विधि विभिन्न प्रकार के ट्रेस लौटाती है:

  • call: एक पते पर संदेश कॉल
  • create: एक कॉन्ट्रैक्ट निर्माण
  • suicide: एक कॉन्ट्रैक्ट सेल्फ-डिस्ट्रक्ट ऑपरेशन (SELFDESTRUCT के रूप में भी जाना जाता है)

महत्वपूर्ण नोट्स

  • इस विधि के लिए Ethereum नोड पर ट्रेस API सक्षम होने की आवश्यकता है
  • सभी Ethereum क्लाइंट ट्रेस फ़िल्टरिंग का समर्थन नहीं करते (मुख्य रूप से Geth --gcmode=archive के साथ और OpenEthereum/Nethermind)
  • सार्वजनिक RPC प्रदाता अक्सर अपनी संसाधन तीव्रता के कारण ट्रेस विधियों को सीमित या अक्षम करते हैं
  • फ़िल्टर केवल संग्रहीत ट्रेस पर लागू होते हैं, लॉग इवेंट्स पर नहीं (इवेंट लॉग के लिए eth_getLogs का उपयोग करें)
  • व्यापक ब्लॉक रेंज या लोकप्रिय पतों के लिए प्रतिक्रिया आकार बहुत बड़ा हो सकता है
  • RPC प्रदाता द्वारा ब्लॉक रेंज प्रतिबंध लगाए जा सकते हैं (अक्सर कुछ हजार ब्लॉक्स तक सीमित)
  • गैर-आर्काइव नोड पर इस विधि को कॉल करने से अपूर्ण परिणाम मिलेंगे
  • ट्रेस फ़िल्टरिंग नियमित लेनदेन क्वेरीज़ की तुलना में काफी अधिक संसाधन-गहन है
  • इवेंट्स के विपरीत, ट्रेस को टॉपिक्स द्वारा इंडेक्स नहीं किया जाता है, बल्कि केवल पतों और ब्लॉक संख्याओं द्वारा किया जाता है
  • आउट-ऑफ-गैस या रिवर्ट के कारण विफल होने वाले लेनदेन अभी भी विफलता तक ट्रेस उत्पन्न करते हैं

यह भी देखें

  • trace_transaction - एक ही लेनदेन के लिए ट्रेस प्राप्त करें
  • trace_block - एक ब्लॉक में सभी लेनदेनों के लिए ट्रेस प्राप्त करें
  • trace_call - लेनदेन बनाए बिना कॉल निष्पादित और ट्रेस करें
  • eth_getLogs - इवेंट लॉग फ़िल्टरिंग के लिए विकल्प
  • debug_traceTransaction - लेनदेनों के लिए निचले स्तर के निष्पादन विवरण प्राप्त करें
हमें बेहतर बनने में मदद करें!
इस पेज को साझा करें और हमें आपके लिए एक और भी बेहतर उत्पाद बनाने में मदद करें।
पिछला