मुख्य सामग्री पर जाएं
State को revert करना contracts और protocols की testing करते समय सहायक हो सकता है जब आप snapshot स्थिति तक के सभी state changes को छोड़ना चाहते हैं।
State को revert करने के बजाय, इसके बजाय मौजूदा Virtual Environment को fork करने पर विचार करें, और अपनी testing एक disposable working copy पर करें।

एक snapshot पर revert करना

1
Snapshot बनाएं
2
वर्तमान block पर एक snapshot बनाने के लिए evm_snapshot का उपयोग करें। मेथड snapshot ID लौटाता है जिसका उपयोग आप revert करने के लिए कर सकते हैं।
3
TENDERLY_VIRTUAL_TESTNET_RPC= #...

SNAPSHOT_ID=$(curl $TENDERLY_VIRTUAL_TESTNET_RPC \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{
      "jsonrpc": "2.0",
      "method": "evm_snapshot",
      "id": "1234"
    }' \
    | jq -r  '.result')
4
Revert
5
पहले बनाए गए snapshot (SNAPSHOT_ID) पर वापस revert करने के लिए evm_revert का उपयोग करें। इस बिंदु से आगे, snapshot तक के सभी पूर्व बदलाव त्याग दिए जाएंगे।
6
read -r -d '' REVERT_REQUEST <<EOF
{
  "jsonrpc": "2.0",
  "method": "evm_revert",
  "params": ["$SNAPSHOT_ID"],
  "id": "1234"
}
EOF

curl $TENDERLY_VIRTUAL_TESTNET_RPC \
    -H "Content-Type: application/json" \
    -d $REVERT_REQUEST

Revert distance सीमा

एकल evm_revert अधिकतम 2000 blocks तक रोल बैक कर सकता है। यदि snapshot वर्तमान block से 2000 से अधिक blocks पीछे है, तो call इसके साथ विफल हो जाती है:
revert operation is limited to maximum 2000 blocks
यह उन Virtual Environments को प्रभावित करता है जो continuously blocks उत्पादित करते हैं (उदाहरण के लिए, blocks minting करने वाला एक scheduled job), जहां target snapshot जल्दी से 2000-block window के बाहर गिर सकता है। और पीछे के बिंदु पर वापस जाने के लिए, revert करने के बजाय target ऐतिहासिक block पर Virtual Environment को clone करें।

एक ऐतिहासिक block पर clone करें

एक Virtual Environment प्राप्त करने के लिए जिसका state किसी विशिष्ट पिछले block से match करता है, उसे उस block पर clone करें। Clone एक नया, स्वतंत्र Virtual Environment है जो चुने गए बिंदु पर fork किया गया है, जबकि source अछूता छोड़ दिया जाता है। कोई distance सीमा नहीं है, इसलिए 2000 blocks से अधिक पीछे के block तक पहुंचने का यह तरीका है। Dashboard में, Activity tab खोलें और उस transaction पर clone action का उपयोग करें जिस block पर आप वापस जाना चाहते हैं। नया Virtual Environment उस transaction के block के state के साथ बनाया जाता है।
Screenshot placeholder: Activity tab पर per-transaction clone action।
एक ऐतिहासिक block पर cloning सही दृष्टिकोण भी है जब आप “किसी विशिष्ट block number पर fork” करना चाहते हैं। एक fork हमेशा latest block से शुरू होता है, जबकि clone किसी भी ऐतिहासिक block को लक्षित कर सकता है।