https://dashboard.tenderly.co/simulator/new?draftId=<id>
从 dashboard 分享 draft
- 在 Simulator 中构建模拟:选择网络,添加一个或多个调用,设置覆盖,应用源码编辑。
- 点击页面标题中的 Share draft。Draft 被保存,链接复制到剪贴板。

Simulator 标题中的 Share draft 保存当前设置并复制一个可重新打开它的链接。
打开 draft 链接时会发生什么
Dashboard 发出一次请求获取 draft,然后根据响应:- Draft 所属项目的成员。 Dashboard 重定向到该项目的 Simulator,表单已预填,没有任何提示。
- 共享 draft(通过 API 以
shared: true创建)。首先打开 Select Project 对话框;draft 在接收者选择的项目中打开。 - 无效的 id、过期的 draft 或没有访问权限。 这三种情况返回相同的响应,因此无法探测 draft id。接收者会看到 “This draft link is invalid, has expired, or you don’t have access to it.” 并回到 dashboard 首页。
- 未登录。 接收者先登录,然后流程用同一链接继续。
- Simulator 中有未保存的编辑。 打开 draft 会替换当前表单,因此 dashboard 会在丢弃编辑之前请求确认。

共享 draft 不绑定项目,因此由接收者选择在哪里打开。
部分恢复
Draft 中的每个调用独立恢复,因此一个有问题的调用不会导致整个 draft 被拒绝。一个可关闭的横幅会按调用列出未能恢复的内容:
没有横幅表示一切都已恢复。格式错误的负载,或项目中未启用的网络,会整体拒绝 draft:接收者会看到错误和空表单。

恢复横幅列出 draft 打开后需要处理的调用。
从 CI 或工具创建 draft 链接
使用 drafts API 创建 draft,然后把返回的 id 放入链接。请求使用 access key 进行身份验证;调用者必须是 URL 中项目的成员。POST https://api.tenderly.co/api/v2/account/{account}/project/{project}/simulation-drafts (API reference)
响应为
{ "resource_id": "<uuid>" }。
读取已保存的 draft
GET https://api.tenderly.co/api/v2/account/{account}/project/{project}/simulation-drafts/{id} (API reference)
URL 中的项目是调用者自己的项目(任何其可查看的项目)。访问权限由 draft 的可见性决定:
- 项目范围的 draft 在调用者可查看 draft 来源项目时返回
{ "payload": {…}, "account_id": "…", "project_id": "…" }。 - 共享 draft 返回
{ "payload": {…} },不含来源信息。 - 其他任何情况(未知 id、过期的 draft、无来源项目的访问权限)返回
404,"slug": "resource_not_found"。
GET 该 draft。响应是 dashboard 能接受的负载,包括 stateOverrides、customSource 和 fundAddress 的结构。
Draft 负载
Row 字段
只有contractAddress 是必填的。不需要的字段可以省略。省略的字段保持表单默认值,未知的额外字段会被忽略。
合约与函数
交易参数
区块选择
关于区块选择和交易索引在 UI 中的行为,参见模拟参数。
L2 参数
这些字段仅适用于 OP-stack 和 Boba 网络。覆盖
资金注入与编辑后的源码
验证与错误
创建 draft:
打开 draft 在负载层面是全有或全无:错误的
v、缺少 rows 条目、非字符串的 contractAddress,或任何类型错误的 row 字段都会以 “This draft link is invalid or corrupted” 拒绝整个 draft。依赖实时数据的单个调用问题(合约获取、函数匹配、源码编译、代币槽位)按部分恢复中的描述单独降级。
限制
- 每个 draft 的负载上限为 256 KB,由 API 强制执行。
- Draft 会自动过期。过期的 draft 从 API 返回
404,在 dashboard 中显示 “invalid, has expired, or you don’t have access” 消息。 - 打开 draft 链接需要 Tenderly 账户。共享 draft(
shared: true)可由任何已登录用户读取;项目范围的 draft 仅限来源项目的成员。 - 合约 ABI 在打开链接时获取。若无法解析(未验证的合约),decoded 模式的调用会打开并填入地址,但不选择函数。Raw 模式不受影响。
旧版 ?draft= 链接
在服务端 draft 出现之前,dashboard 将单个调用直接编码进 URL:
https://dashboard.tenderly.co/<org>/<project>/simulator/new?draft=<value>
<value> 是版本 1 的负载({ "v": 1, "network": {…}, "row": {…} },单个 row 而非 rows),先为 UTF-8 JSON,再进行 base64url 编码(+ 换为 -,/ 换为 _,去掉 = 填充)。现有链接仍可打开。row 对象接受上述 row 字段,但不包括 fundAddress、customSource 和 contractSourceEdited,且整个 URL 必须保持在约 2000 个字符以内。Dashboard 不再生成这种格式;新集成请使用 drafts API。
关于 draft 填充的表单字段,参见模拟参数。若要将修改后的状态保留为持久环境而不是一次性模拟,请使用 Virtual Environments。