eth_simulateV1 Ethereum execution APIs विनिर्देश का standard multi-block simulation मेथड है। यह एक base block के ऊपर blocks के अनुक्रम को simulate करता है, जिनमें से प्रत्येक में calls का एक batch होता है, बिना कुछ भी on chain भेजे। एक block के भीतर calls क्रमिक रूप से निष्पादित होती हैं और state साझा करती हैं, और प्रत्येक simulated block पिछले block पर आधारित होता है।
यह मेथड Node RPC और Virtual Environments पर चलता है; प्रत्येक मेथड और नेटवर्क के लिए पूर्ण JSON-RPC reference देखें। नेटवर्क का एक छोटा समूह इसे समर्थन नहीं करता; नेटवर्क उपलब्धता देखें।
जब आपको portable, spec-standard simulation की आवश्यकता हो जो block के आकार के परिणाम लौटाती है, तब eth_simulateV1 का उपयोग करें। डिकोडेड logs, call traces, और asset और balance changes के लिए, एक ही transaction के लिए tenderly_simulateTransaction या transactions के अनुक्रम के लिए tenderly_simulateBundle का उपयोग करें।
eth_simulateV1
दिए गए base block के ऊपर blocks के अनुक्रम को simulate करता है। प्रत्येक block में calls का एक batch होता है: call N को call N-1 के state changes दिखाई देते हैं, और पहले के बाद का प्रत्येक block अपने से पिछले block पर आधारित होता है।
Params
- Simulation payload
OBJECT- blockStateCalls
ARRAYof Block state callOBJECT: simulate किए जाने वाले blocks का अनुक्रम, क्रम में- blockOverrides (optional)
OBJECT: इस block में override करने के लिए header fields का सेट- number (optional)
STRING: hex, block number को override करता है - difficulty (optional)
STRING: hex, block difficulty को override करता है - time (optional)
STRING: hex, block timestamp को override करता है - gasLimit (optional)
STRING: hex, gas limit को override करता है - coinbase (optional)
STRING: hex, block miner को override करता है - random (optional)
STRING: hex, उस value को override करता है जो PREVRANDAO opcode में फ़ीड होता है - baseFee (optional)
STRING: hex, block base fee को override करता है - excessBlobGas (optional)
STRING: hex, excess blob gas को override करता है - blobGasUsed (optional)
STRING: hex, उपयोग की गई blob gas को override करता है
- number (optional)
- stateOverrides (optional)
MAP: एक अकाउंट (address) से override विनिर्देश तक मैपिंग। State overrides को पहली block entry पर सेट करें; Tenderly-विशिष्ट व्यवहार देखें- key
STRING: वह अकाउंट जिस पर यह override लागू होता है - value
OBJECT: override विनिर्देश- balance (optional)
STRING: अकाउंट के लिए hex encoded balance override wei में - nonce (optional)
STRING: अकाउंट के लिए hex encoded nonce override - code (optional)
STRING: अकाउंट के लिए code override का डेटा - stateDiff (optional)
MAP: storage key की storage value override में मैपिंग- key
STRING: storage key - value
STRING: दिए गए storage key के लिए value override
- key
- balance (optional)
- key
- calls
ARRAYof Transaction callOBJECT: क्रम में निष्पादित; प्रत्येक call को अपने से पहले की calls के state changes दिखाई देते हैं- from (optional)
STRING: hex encoded address; डिफ़ॉल्ट रूप से zero address - to (optional)
STRING: hex encoded address - gas (optional)
STRING: call के लिए hex encoded gas limit - gasPrice (optional)
STRING: hex, gas मूल्य जो प्रेषक द्वारा भुगतान किया जाना है wei में - maxFeePerGas (optional)
STRING: hex, प्रति gas अधिकतम कुल शुल्क जो प्रेषक भुगतान करने को तैयार है (नेटवर्क / base fee और miner / priority fee शामिल है) wei में - maxPriorityFeePerGas (optional)
STRING: hex, प्रति gas अधिकतम शुल्क जो प्रेषक miners को भुगतान करने को तैयार है wei में - value (optional)
STRING: hex encoded value wei में; डिफ़ॉल्ट रूप से0x0 - input (optional)
STRING: hex encoded call data;dataको deprecated alias के रूप में स्वीकार किया जाता है, और दोनों सेट होने परinputको प्राथमिकता मिलती है - nonce (optional)
STRING: hex encoded nonce - type (optional)
STRING: hex encoded transaction प्रकार - accessList (optional)
ARRAYof Access list entryOBJECT- address
STRING: hex encoded address - storageKeys
ARRAYofSTRING: representation of 32 byte hex encoded storage keys
- address
- maxFeePerBlobGas (optional)
STRING: hex, प्रति blob gas अधिकतम शुल्क wei में - blobVersionedHashes (optional)
ARRAYofSTRING: 32 byte hex encoded blob versioned hashes - authorizationList (optional)
ARRAY: EIP-7702 authorization tuples
- from (optional)
- blockOverrides (optional)
- returnFullTransactions (optional)
BOOLEAN: जबtrueहो, तो result blocks में transaction hashes के बजाय पूर्ण transaction objects होते हैं
- blockStateCalls
- Base block number (optional) वह block जिसके ऊपर simulation चलता है। डिफ़ॉल्ट रूप से
latest। या तो:STRINGBlock numberENUMof Block tagearliest|finalized|safe|latest|pending
- Request
- Shell
- JavaScript
- Response
example.json
ARRAY of Block result OBJECT, प्रत्येक blockStateCalls entry के लिए एक, क्रम में। प्रत्येक block result में eth_getBlockByNumber द्वारा लौटाए जाने वाले standard block header fields (number, hash, parentHash, timestamp, gasLimit, gasUsed, baseFeePerGas, logsBloom, miner, इत्यादि) के साथ ये भी होते हैं:
- transactions
ARRAY: simulated calls के transaction hashes, याreturnFullTransactionsकेtrueहोने पर पूर्ण transaction objects - calls
ARRAYof Call resultOBJECT, प्रत्येक call के लिए एक, क्रम में:- returnData
STRING: call का hex encoded return data - logs
ARRAYof LogOBJECT: call द्वारा उत्सर्जित events (address,topics,data,blockNumber,transactionHash,transactionIndex,blockHash,logIndex,removed); revert हुई calls के लिए खाली - gasUsed
STRING: call द्वारा उपभोग की गई gas की hex encoded मात्रा - status
STRING: सफलता के लिए0x1, विफलता के लिए0x0 - error
OBJECT: केवल तब मौजूद जब call विफल होती है- code
NUMBER: error code - message
STRING: error message, उपलब्ध होने पर revert reason सहित
- code
- returnData
Tenderly-विशिष्ट व्यवहार
Tenderly का कार्यान्वयन reference execution-apis विनिर्देश से निम्नलिखित तरीकों से भिन्न है:validationसमर्थित नहीं है।validation: trueसेट करने पर errorvalidation flag is not supportedलौटता है। Simulation हमेशा non-validating mode में चलता है: calls पर nonce, balance, और fee आवश्यकताएँ लागू नहीं की जातीं।traceTransfersसमर्थित नहीं है।traceTransfers: trueसेट करने पर errortraceTransfers flag is not supportedलौटता है। कोई synthetic ETH transfer logs उत्पन्न नहीं होते।stateoverrides समर्थित नहीं हैं। State override मेंstatefield (पूर्ण storage प्रतिस्थापन)not supportederror लौटाता है। व्यक्तिगत storage slots को override करने के लिएstateDiffका उपयोग करें।- State overrides पहले block से लागू होते हैं।
stateOverridesको पहलीblockStateCallsentry पर सेट करें; बाद की entries परstateOverridesलागू नहीं किए जाते। - प्रति-call
gasclamp किया जाता है। Block gas limit और 600,000,000 के योग से अधिकgasvalue अस्वीकार किए जाने के बजाय उस अधिकतम सीमा तक clamp कर दी जाती है। - Block या call संख्या की कोई सीमा नहीं।
blockStateCallsentries की संख्या या प्रति block calls की संख्या पर कोई लागू अधिकतम सीमा नहीं है। - Transaction hashes synthetic हैं। Result blocks में hashes simulated calls की पहचान करते हैं लेकिन signed transactions के hashes नहीं हैं।
- Block progression. पहले के बाद के प्रत्येक simulated block को
number = previous + 1और पिछले result से chainedparentHashमिलता है, और base fee तथा gas limit की पुनर्गणना होती है। Auto-generated timestamp node का wall-clock समय होता है, इसलिए जब timestamps महत्वपूर्ण हों तोblockOverrides.timeस्पष्ट रूप से सेट करें। Override किए गए block numbers और timestamps ज्यों के त्यों लागू किए जाते हैं; monotonicity validate नहीं की जाती। जब पहली block entrynumberके बिनाblockOverridesदेती है, तो block number डिफ़ॉल्ट रूप से base block plus 1 होता है।
नेटवर्क उपलब्धता
eth_simulateV1 Node RPC नेटवर्क और Virtual Environments पर उपलब्ध है, निम्नलिखित नेटवर्क को छोड़कर, जहाँ अंतर्निहित network nodes इस मेथड को समर्थन नहीं करते:
- ApeChain
- Avalanche C-Chain
- Avalanche C-Chain Fuji
- Blast
- Curtis
- Flare
- Immutable
- Immutable Testnet
- Lens
- Lens Testnet
- Metis Andromeda
- Metis Sepolia
- Monad
- Monad Testnet
- Moonbase Alpha
- Moonbeam
- Moonriver
- Scroll Mainnet
- Scroll Sepolia
- Sonic
- Sonic Testnet
- Stable
- Stable Testnet
- ZKsync
- ZKsync Sepolia