Simulation RPC Mainnet, Boba और Polygon के साथ संगत है, जबकि अन्य नेटवर्क को धीरे-धीरे
एकीकृत किया जाएगा।\ Simulation API सभी Tenderly-समर्थित
नेटवर्क के साथ संगत है।
Simulation API को एकीकृत करने के लाभ
Simulation API/Simulation RPC को एकीकृत करके- उपयोगकर्ता के हस्ताक्षर करने और on-chain सबमिट करने से पहले उनके transactions का dry-run करें।
- संभावित rollbacks में बेहतर दृश्यता प्रदान करें और gas शुल्क पर पैसे खोने से बचें।
- सफल apps के परिणामों में बेहतर दृश्यता प्रदान करें, जिसमें असेट्स की गति और उपयोगकर्ता के लिए प्रासंगिक state परिवर्तन शामिल हैं।
- उपयोगकर्ताओं को यह दिखाने के लिए simulation परिणामों के आसपास logic बनाएँ कि क्या उनके transactions इष्टतम मूल्य लाते हैं और सुधार सुझाएँ।
- यदि आप एक wallet-जैसा app बना रहे हैं, तो आप दिखा सकते हैं कि transaction ERC-20 tokens को कैसे स्थानांतरित करता है और उपयोगकर्ताओं को अपने funds के बदलाव देखने में सक्षम बना सकते हैं।
- यदि आप एक DeFi उत्पाद बना रहे हैं, तो आप events का उपयोग यह विश्लेषण करने के लिए कर सकते हैं कि क्या कोई transaction UI में उपयोगकर्ता द्वारा सेट की गई इष्टतम शर्तों को पूरा करता है।
- यदि आप कई transactions से युक्त एक governance proposal तैयार कर रहे हैं, तो आप यह देखने के लिए एक simulation bundle कर सकते हैं कि proposal कैसे लागू होता है।
- आप अपने proposal transactions को कई परीक्षण transactions के साथ भी bundle कर सकते हैं ताकि यह सत्यापित हो सके कि आपका proposal इच्छित रूप से निष्पादित होता है और संभावित अंधे धब्बों की पहचान की जा सके।
उदाहरण: Uniswap UI में Simulations जोड़ना
इस उदाहरण में, हम दिखाएँगे कि Simulation RPC को Uniswap UI में कैसे एकीकृत करें और exchange पथ के साथ सटीक token hops कैसे दिखाएँ। इस तरह, हम उपयोगकर्ता को transaction के प्रभावों में उच्च दृश्यता देंगे और उन्हें यह तय करने के लिए एक अच्छी तरह से सूचित निर्णय लेने की अनुमति देंगे कि आगे बढ़ना है या नहीं।Simulation component आवश्यकताएँ
यहाँ simulation component के लिए आवश्यकताएँ हैं:
- component को transaction पर हस्ताक्षर करने और भेजने से पहले और बाद में उपयोगकर्ता के पास मौजूद tokens की संख्या प्रदर्शित करनी चाहिए।
- Simulation हर बार trade डेटा बदलने पर किया जाना चाहिए, इसलिए इसे
tradeऔरallowedSlippageपैरामीटर्स प्राप्त करने की आवश्यकता है। - Component को निम्नलिखित का ट्रैक रखना चाहिए:
- वर्तमान balances (swap से पहले)।
Swapevent जिसका उपयोग हम नए balances की गणना के लिए करेंगे।Transferevents की एक array जिसका उपयोग हम नए balances की गणना के लिए करेंगे।
Simulation को ConfirmSwapModal में Render करें
उपयोगकर्ता को transaction के परिणामों के बारे में सूचित करने का सबसे अच्छा स्थान ConfirmSwapModal है, ठीक इससे पहले कि वे transaction पर हस्ताक्षर कर सकें और भेज सकें।
Code को संक्षिप्तता के लिए संपादित किया गया है:
example
Simulation component implementation
Component का logic simulate function में निहित है:
- यह
tradeयाproviderarguments बदलने की स्थिति में चलता है, इसलिए जब भी swap संभावित रूप से बदलता है, यह अपडेट और re-simulate होता है। - यह
setOldBalancesको कॉल करता है, जो In और Out ERC-20 tokens के balances प्राप्त करता है और उन्हेंoldBalancesstate variable में संग्रहीत करता है। - यह
simulateRPCको कॉल करता है, जोtenderly_simulateTranscationको Simulation RPC कॉल करता है और फिर:- यह
Transferevents खोजने के लिए decoded logs के माध्यम से parse करता है और उन्हें component केtransfersstate variable में संग्रहीत करता है। - यह
Swapevent खोजने के लिए decoded logs के माध्यम से parse करता है और उसे component केswapstate variable में संग्रहीत करता है।
- यह
SimulationDetails component प्रदर्शित करते हैं, जो एक शुद्ध functional component है। यह पुराने और नए states की गणना करता है और trade, swap, transfers, और oldBalances के आधार पर डेटा render करता है।
example.tsx