evm-deployment

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Overview

概述

End-to-end deployment workflow for Sablier EVM contracts. Supports Comptroller, Flow, Lockup, and Airdrops with protocol-specific adaptations.
Sablier EVM合约的端到端部署工作流。支持Comptroller、Flow、Lockup和Airdrops,并针对各协议进行了适配。

Prerequisites

前提条件

Version Check

版本检查

Before proceeding, verify Foundry version:
bash
forge -V
Stop if version is below 1.3.6.
开始之前,请验证Foundry版本:
bash
forge -V
如果版本低于1.3.6,请停止操作。

Protocol Detection

协议检测

Detect the current EVM protocol from
package.json
:
Package NameProtocolSDK Path
@sablier/evm-utils
Comptroller
../sdk/deployments/comptroller
@sablier/flow
Flow
../sdk/deployments/flow
@sablier/lockup
Lockup
../sdk/deployments/lockup
@sablier/airdrops
Airdrops
../sdk/deployments/airdrops
Extract version from
package.json
"version": "x.y.z"
→ SDK version is
v<x.y>
package.json
中检测当前的EVM协议:
包名称协议名称SDK路径
@sablier/evm-utils
Comptroller
../sdk/deployments/comptroller
@sablier/flow
Flow
../sdk/deployments/flow
@sablier/lockup
Lockup
../sdk/deployments/lockup
@sablier/airdrops
Airdrops
../sdk/deployments/airdrops
package.json
中提取版本 →
"version": "x.y.z"
→ SDK版本为
v<x.y>

Workflow

工作流

Execute steps in order, tracking state between each:
按顺序执行以下步骤,并在各步骤之间跟踪状态:

Step 1: Deploy Contracts

步骤1:部署合约

Reference:
./references/deploy.md
| Examples:
./references/examples.md
Deploy protocol contracts using Foundry. Handles:
  • RPC configuration
  • Deterministic (CREATE2) vs non-deterministic (CREATE) deployment
  • Contract verification on block explorer
参考文档:
./references/deploy.md
| 示例:
./references/examples.md
使用Foundry部署协议合约。可处理以下内容:
  • RPC配置
  • 确定性(CREATE2)与非确定性(CREATE)部署
  • 在区块链浏览器上验证合约

Step 2: Update SDK (optional)

步骤2:更新SDK(可选)

Reference:
./references/copy-to-sdk.md
Copy broadcast artifacts to SDK repository:
  • Broadcast JSON file
  • Update README.md with deployment info
  • Update deployments.ts with contract addresses
参考文档:
./references/copy-to-sdk.md
将广播工件复制到SDK仓库:
  • 广播JSON文件
  • 更新README.md中的部署信息
  • 更新deployments.ts中的合约地址

Step 3: Create Test Data (optional)

步骤3:创建测试数据(可选)

Reference:
./references/deploy-streams.md
For Flow and Lockup protocols only. Creates sample streams for testing:
  • Mint or verify ERC20 token balance
  • Run Init.s.sol script to create test streams
参考文档:
./references/deploy-streams.md
仅适用于Flow和Lockup协议。创建用于测试的样本流:
  • 铸造或验证ERC20代币余额
  • 运行Init.s.sol脚本以创建测试流

State Tracking

状态跟踪

Track and carry forward between steps:
StateSource
Protocol nameDetected from
package.json
Chain IDFrom deployment or user input
Chain nameLowercase (e.g.,
ethereum
,
arbitrum
)
Deployment type
deterministic
or
non-deterministic
Contract addressesFrom broadcast JSON
returns
field
Block numberFrom deployment receipt (hex → decimal)
SDK versionFrom
package.json
version
在各步骤之间跟踪并传递以下状态:
状态项来源
协议名称
package.json
中检测得出
链ID来自部署或用户输入
链名称小写格式(例如:
ethereum
arbitrum
部署类型
deterministic
non-deterministic
合约地址来自广播JSON的
returns
字段
区块编号来自部署收据(十六进制转十进制)
SDK版本来自
package.json
中的版本信息

Protocol-Specific Scripts

协议专属脚本

ProtocolDeterministic ScriptNon-deterministic Script
Comptroller
DeployDeterministicComptrollerProxy.s.sol
DeployComptrollerProxy.s.sol
Flow
DeployDeterministicProtocol.s.sol
DeployProtocol.s.sol
Lockup
DeployDeterministicProtocol.s.sol
DeployProtocol.s.sol
Airdrops
DeployDeterministicFactories.s.sol
DeployFactories.s.sol
协议名称确定性部署脚本非确定性部署脚本
Comptroller
DeployDeterministicComptrollerProxy.s.sol
DeployComptrollerProxy.s.sol
Flow
DeployDeterministicProtocol.s.sol
DeployProtocol.s.sol
Lockup
DeployDeterministicProtocol.s.sol
DeployProtocol.s.sol
Airdrops
DeployDeterministicFactories.s.sol
DeployFactories.s.sol

Output Summary

输出摘要

After completion, provide:
  • Protocol deployed
  • Chain and deployment type
  • Contract addresses (factories + campaigns if applicable)
  • Verification status
  • SDK files updated (if applicable)
  • Test data created (if applicable)
完成后,提供以下内容:
  • 已部署的协议
  • 链名称与部署类型
  • 合约地址(工厂及适用的活动合约)
  • 验证状态
  • 已更新的SDK文件(如适用)
  • 已创建的测试数据(如适用)

Airdrops Campaign Contracts

Airdrops活动合约

When deploying Airdrops test data, campaigns are created via factory:
FactoryCampaign Contract
SablierFactoryMerkleInstant
SablierMerkleInstant
SablierFactoryMerkleLL
SablierMerkleLL
SablierFactoryMerkleLT
SablierMerkleLT
SablierFactoryMerkleVCA
SablierMerkleVCA
Campaign addresses are returned in broadcast
returns
field, not
contractAddress
.
部署Airdrops测试数据时,将通过工厂创建活动合约:
工厂合约活动合约名称
SablierFactoryMerkleInstant
SablierMerkleInstant
SablierFactoryMerkleLL
SablierMerkleLL
SablierFactoryMerkleLT
SablierMerkleLT
SablierFactoryMerkleVCA
SablierMerkleVCA
活动合约地址将在广播的
returns
字段中返回,而非
contractAddress
字段。