State Sync paid plan पर उपलब्ध है। इसे अपने account पर सक्षम करने के लिए, हमारी sales team से संपर्क करें।
network sync mode निर्माण पर तय होता है और पूरे Virtual Environment के जीवन के लिए वही रहता है। इसे बाद में चालू, बंद, या स्विच नहीं किया जा सकता, चाहे dashboard से हो या API से। एक अलग mode के साथ चलाने के लिए, एक नया Virtual Environment बनाएं।
State Sync को कब सक्रिय करें
यह विकल्प कई परिदृश्यों में उपयोगी है:- Virtual Environment contracts और transactions मूल chain पर मौजूद वर्तमान Oracle values तक पहुँच सकते हैं।
- contracts का परीक्षण और proof-of-concept transactions का निर्माण करते समय Virtual Environments से Uniswap pools तक पहुँच सकते हैं।
- बासी data के बिना एक subgraph बनाएं।
- real network conditions के साथ one-to-one correspondence में अपने dapps और protocols के व्यवहार और performance का परीक्षण करें
State Sync write collisions को कैसे resolve करता है
State sync आपको mainnet पर storage slots और account balances के latest मानों तक पहुँचने में सक्षम बनाता है क्योंकि वे update होते हैं। Virtual Environment पर एक विशेष storage slot पर लिखने पर, उस slot के लिए synchronization रुक जाता है, लेकिन सभी unmodified के लिए सक्रिय रहता है। यहाँ state sync विस्तार से है:- Initial block number निर्माण के समय मूल chain के latest block से match करता है।
- हर बार जब आप
eth_sendRawTransactionऔरeth_sendRawTransactionके माध्यम से Virtual Environment को एक transaction भेजते हैं, तो एक block minded होता है और block number 1 से बढ़ जाता है, मूल network से स्वतंत्र। - Virtual Environment पर एक variable पर लिखने तक, Virtual Environment मूल network से वर्तमान मान को track करता है।
- Virtual Environment पर एक contract के एक variable पर लिखने के बाद (उदाहरण,
C.X=100), कोई भी बाद का read उस मान (100) को yield करेगा। - एक contract के सभी unmodified state variables (
C.Y) मूल network से मान को प्रतिबिंबित करेंगे। - Virtual Environment पर एक नया block mined होने से पहले, latest virtual block को parent chain पर latest block के साथ synchronize किया जाता है।
- Virtual Environment हर state modification के बाद एक block mine करता है (
sendTransaction,setBalance, आदि)। - Virtual Environment और मूल network पर Block numbers अलग-अलग दरों से बदलेंगे।

उदाहरण
उदाहरण निम्नलिखित प्रदर्शित करता है:- Virtual Environment (Virtual Sepolia) मूल network (Sepolia) से latest state तक पहुँचता है।
- Virtual Environment
writeके बाद, संशोधित variable अपने Sepolia counterpart से detach हो जाता है।
State Sync Example
0xd01dF6d2354c5A869265dC9a9561E3544ac53262 पर deployed है। test script Sepolia और Sepolia पर आधारित एक Virtual Environment - Virtual Sepolia दोनों के साथ इंटरैक्ट करेगा।
script counter map में एक random entry लेती है, और फिर:
- Sepolia पर मान सेट करती है, फिर Sepolia और Virtual Sepolia दोनों पर मान पढ़ती है, यह दिखाते हुए कि वही मान वापस पढ़ा जाता है।
- Virtual Sepolia पर मान सेट करती है, फिर Sepolia और Virtual Sepolia दोनों पर मान पढ़ती है, यह दिखाते हुए कि अलग-अलग मान पढ़े जाते हैं।
- फिर से Sepolia पर मान सेट करती है, फिर Sepolia और Virtual Sepolia दोनों पर मान पढ़ती है, यह दिखाते हुए कि Sepolia पर संशोधन इसके virtual counterpart पर invisible है।
Sepolia के आधार पर एक नया Virtual Environment बनाएं, custom Chain ID के रूप में
735711155111 का उपयोग करें।TENDERLY_VIRTUAL_TESTNET_CHAIN_ID Virtual Environment का chain ID। 735711155111 का उपयोग करेंTENDERLY_VIRTUAL_TESTNET_RPC_URL_SEPOLIA Virtual Environment का RPC URLPRIVATE_KEY1) पर लिखने के बाद, sepolia और virtualSepolia दोनों मान 1 पढ़ते हैं - मूल network का latest state।10) पर लिखने के बाद, Sepolia से पढ़ने पर पहले से सेट किया गया मान (1) मिलता है, और virtualSepolia से पढ़ने पर हाल ही में सेट किया गया मान (10) मिलता है।100), Sepolia से पढ़ने पर latest सेट मान (100) मिलता है, और virtualSepolia से पढ़ने पर पहले से सेट किया गया मान (10) मिलता है।Playing with Counter(0xd01dF6d2354c5A869265dC9a9561E3544ac53262).numbers[3788720642447205]
State:
sepolia: 0
virtualSepolia: 0
================================================================================================
Write: Counter(0xd01dF6d2354c5A869265dC9a9561E3544ac53262)@Sepolia.numbers[3788720642447205] = 1
Tx hash: 0xe57c5da70c68d55f86957f7a2fc2644670b032fe5f972b9e9ccc2774cd2ba352
State:
sepolia: 1
virtualSepolia: 1
================================================================================================
Write: Counter(0xd01dF6d2354c5A869265dC9a9561E3544ac53262)@Virtual Sepolia.numbers[3788720642447205] = 10
Tx hash: 0x56099d89c1d6fd001a1e9a0cecca13e13c04013b473acb6a48cd61a4b988696c
State:
sepolia: 1
virtualSepolia: 10
================================================================================================
Write: Counter(0xd01dF6d2354c5A869265dC9a9561E3544ac53262)@Sepolia.numbers[3788720642447205] = 100
Tx hash: 0xc3c37e912bfa4fca9b980339fa2c95dbef75d6c605f0df831ca985b0ef3b61ec
State:
sepolia: 100
virtualSepolia: 10