Skip to main content
Draft link Tenderly Simulator को prefilled form के साथ खोलता है: एक single call या multi-call bundle, जिसमें state overrides, funded balances और edited contract source शामिल हैं। जब तक प्राप्तकर्ता Simulate पर क्लिक नहीं करता, कुछ भी नहीं चलता, इसलिए link को test reports, pull requests, governance proposals या alerts में साझा करना सुरक्षित है। Draft server-side स्टोर होता है और id से referenced होता है। Link में स्वयं कोई payload या project नहीं होता: https://dashboard.tenderly.co/simulator/new?draftId=<id>

Dashboard से draft साझा करें

  1. Simulator में simulation बनाएँ: network चुनें, एक या अधिक calls जोड़ें, overrides सेट करें, source edits लागू करें।
  2. पेज header में Share draft पर क्लिक करें। Draft सेव हो जाता है और link आपके clipboard में कॉपी हो जाता है।
Link bundles और edited sources के लिए काम करता है, और इसकी कोई length limit नहीं है। Dashboard से साझा किया गया draft उस project के members द्वारा पढ़ा जा सकता है जिसमें यह सेव हुआ था, और यह स्वतः expire हो जाता है।
Simulator header जिसमें Simulate के बगल में Share draft बटन है, और tooltip बताता है कि link bundles और edited sources के लिए काम करता है

Simulator header में Share draft वर्तमान setup को सेव करता है और उसे फिर से खोलने वाला link कॉपी करता है।

Dashboard draft के लिए एक request करता है, और फिर response के अनुसार:
  • Draft के project का member। Dashboard उस project के Simulator में redirect करता है, form prefilled होता है और कोई prompt नहीं आता।
  • Shared draft (API से shared: true के साथ बनाया गया)। पहले Select Project dialog खुलता है; draft उस project में खुलता है जिसे प्राप्तकर्ता चुनता है।
  • Invalid id, expired draft, या access नहीं। तीनों cases एक ही response देते हैं, ताकि draft ids को probe न किया जा सके। प्राप्तकर्ता को “This draft link is invalid, has expired, or you don’t have access to it.” दिखता है और वह dashboard home पर पहुँचता है।
  • Logged out। प्राप्तकर्ता पहले sign in करता है, फिर flow उसी link के साथ जारी रहता है।
  • Simulator में unsaved edits। Draft खोलने से वर्तमान form बदल जाता है, इसलिए dashboard edits हटाने से पहले confirmation माँगता है।
Shared draft link खोलने पर दिखने वाला Select Project dialog, जिसमें project dropdown है

Shared draft किसी project से बंधा नहीं होता, इसलिए प्राप्तकर्ता चुनता है कि इसे कहाँ खोलना है।

आंशिक पुनर्स्थापना

Draft की हर call स्वतंत्र रूप से restore होती है, इसलिए एक समस्याग्रस्त call पूरे draft को reject नहीं करती। एक dismissible banner हर call के लिए बताता है कि क्या restore नहीं हो सका: Banner न होने का मतलब है कि सब कुछ restore हो गया। Malformed payload, या project में enabled न होने वाला network, draft को पूरी तरह reject करता है: प्राप्तकर्ता को error और खाली form दिखता है।
Simulator जिसमें 3-call bundle prefilled है और एक warning banner उन calls को सूचीबद्ध करता है जिनका contract या function restore नहीं हो सका

Restore banner उन calls का नाम देता है जिन पर draft खुलने के बाद ध्यान देना है।

Drafts API से draft बनाएँ, फिर लौटाई गई id को link में डालें। Requests access key से authenticate होती हैं; caller को URL में दिए गए project का member होना चाहिए। POST https://api.tenderly.co/api/v2/account/{account}/project/{project}/simulation-drafts (API reference) Response है { "resource_id": "<uuid>" }।

Draft को वापस पढ़ें

GET https://api.tenderly.co/api/v2/account/{account}/project/{project}/simulation-drafts/{id} (API reference) URL में project caller का अपना project है (कोई भी project जिसे वह देख सकता है)। Access draft की visibility से तय होता है:
  • Project-scoped draft { "payload": {…}, "account_id": "…", "project_id": "…" } लौटाता है जब caller draft के origin project को देख सकता है।
  • Shared draft बिना origin जानकारी के { "payload": {…} } लौटाता है।
  • बाकी सब (unknown id, expired draft, origin project का access नहीं) 404 लौटाता है, "slug": "resource_not_found" के साथ।
किसी advanced setup के लिए सही payload पाने का सबसे तेज़ तरीका: इसे Simulator में बनाएँ, Share draft पर क्लिक करें, और कॉपी किए गए link की id से draft को GET करें। Response वह payload है जिसे dashboard स्वीकार करता है, जिसमें stateOverrides, customSource और fundAddress की shapes शामिल हैं।

Draft payload

Row फ़ील्ड

केवल contractAddress आवश्यक है। जो न चाहिए उसे छोड़ दें। छोड़े गए fields form के defaults रखते हैं, और अज्ञात अतिरिक्त fields ignore किए जाते हैं।

Contract और function

Transaction parameters

Block चयन

UI में block selection और transaction index कैसे व्यवहार करते हैं, इसके लिए Simulation Parameters देखें।

L2 parameters

ये fields केवल OP-stack और Boba networks पर लागू होते हैं।

Overrides

Funded balances और edited source

Validation और errors

Draft बनाना: Draft खोलना payload स्तर पर all-or-nothing है: गलत v, rows entry की कमी, non-string contractAddress, या किसी भी गलत-typed row field से पूरा draft “This draft link is invalid or corrupted” के साथ reject होता है। Live data पर निर्भर प्रति-call समस्याएँ (contract fetch, function match, source compile, token slot) आंशिक पुनर्स्थापना में बताए अनुसार अलग-अलग degrade होती हैं।

सीमाएँ

  • Payloads प्रति draft 256 KB पर capped हैं, API द्वारा enforced।
  • Drafts स्वतः expire होते हैं। Expired draft API से 404 और dashboard में “invalid, has expired, or you don’t have access” message देता है।
  • Draft link खोलने के लिए Tenderly account चाहिए। Shared drafts (shared: true) किसी भी signed-in user द्वारा पढ़े जा सकते हैं; project-scoped drafts केवल origin project के members द्वारा।
  • Contract ABI link खुलने पर fetch होता है। यदि यह resolve न हो सके (unverified contract), तो decoded-mode calls address भरे हुए लेकिन बिना function चुने खुलती हैं। Raw mode इससे अप्रभावित है।
Server-side drafts से पहले, dashboard एक single call को सीधे URL में encode करता था: https://dashboard.tenderly.co/<org>/<project>/simulator/new?draft=<value> <value> एक version-1 payload है ({ "v": 1, "network": {…}, "row": {…} }, rows के बजाय एक row), UTF-8 JSON के रूप में, फिर base64url (+ को -, / को _, = padding हटाई गई)। मौजूदा links खुलते रहते हैं। row object ऊपर दिए गए row फ़ील्ड स्वीकार करता है, सिवाय fundAddress, customSource और contractSourceEdited के, और पूरा URL लगभग 2000 characters से कम रहना चाहिए। Dashboard अब यह format नहीं बनाता; नए integrations के लिए drafts API उपयोग करें। Draft जिन form fields को populate करता है, उनके लिए Simulation Parameters देखें। संशोधित state को one-shot simulation के बजाय persistent environment के रूप में रखने के लिए Virtual Environments उपयोग करें।