Custom Deployments
We are unable to deploy the Sablier Protocol on every EVM chain. However, we would be happy to consider your project if you fill out this form and meet the requirements below.
Requirements
- Blockchain explorer
- Documentation site
- Bridge, with instructions for how to obtain the native token (e.g., ETH) and ERC-20 tokens to the target chain
- GraphQL solution, e.g., a deployment of The Graph
- Functional JSON-RPC endpoint, ideally listed on ChainList
Deployment Guide
The following guidelines apply to you only if you have you been granted a BUSL license to deploy the Sablier Protocol.
Pre Requisities
- Check if the deployment is not already made on your chain
- Follow the contributing guide
- RPC endpoint, e.g., a paid Infura account
- Enough ETH in your deployer account
- Etherscan API key (for source code verification)
Steps for deploying Core contracts
Step 1: Clone the v2-core repo and checkout to the latest release tag
At the time of writing, the latest release tag is v1.2.0
:
git checkout v1.2.0
Step 2: Create an .env
file
touch .env
Add the following variables to .env
file:
EOA="DEPLOYER ADDRESS"
ETHERSCAN_API_KEY="EXPLORER API KEY"
PRIVATE_KEY="PRIVATE KEY OF DEPLOYER ADDRESS"
RPC_URL="RPC ENDPOINT URL"
VERIFIER_URL="EXPLORER VERIFICATION URL"
Load the environment variables into your shell:
source .env
Step 3: Run the following deployment command
You must set the protocol admin to the Sablier-controlled address 0xD427d37B5F6d33f7D42C4125979361E011FFbfD9. Failure to do so will result in your deployment not being acknowledged as official.
For deterministic deployment:
FOUNDRY_PROFILE=optimized \
forge script script/DeployDeterministicCore.s.sol \
--broadcast \
--etherscan-api-key $ETHERSCAN_API_KEY \
--rpc-url $RPC_URL \
--private-key $PRIVATE_KEY \
--sig "run(address)" 0xD427d37B5F6d33f7D42C4125979361E011FFbfD9 \
--verifier-url $VERIFIER_URL \
--verify \
-vvv
For non-deterministic deployment:
FOUNDRY_PROFILE=optimized \
forge script script/DeployCore.s.sol \
--broadcast \
--etherscan-api-key $ETHERSCAN_API_KEY \
--private-key $PRIVATE_KEY \
--rpc-url $RPC_URL \
--sig "run(address)" 0xD427d37B5F6d33f7D42C4125979361E011FFbfD9 \
--verifier-url $VERIFIER_URL \
--verify \
-vvv
If you are using a mnemonic or a hardware device for your deployer address, refer to forge-script
page from
foundry book for different wallet options.
Steps for deploying Periphery contracts
Step 1: Clone the v2-periphery and checkout to the latest release tag
At the time of writing, the latest release tag is v1.2.0
:
git checkout v1.2.0
Step 2: Create an .env
file
touch .env
Add the following variables to .env
file:
EOA="DEPLOYER ADDRESS"
ETHERSCAN_API_KEY="EXPLORER API KEY"
PRIVATE_KEY="PRIVATE KEY OF DEPLOYER ADDRESS"
RPC_URL="RPC ENDPOINT URL"
VERIFIER_URL="EXPLORER VERIFICATION URL"
Load the environment variables into shell:
source .env
Step 3: Run the following command to deploy all periphery contracts
For deterministic deployments, meaning that CREATE2 is used:
FOUNDRY_PROFILE=optimized \
forge script script/DeployDeterministicPeriphery.s.sol \
--broadcast \
--etherscan-api-key $ETHERSCAN_API_KEY \
--private-key $PRIVATE_KEY \
--rpc-url $RPC_URL \
--sig "run()" \
--verifier-url $VERIFIER_URL \
--verify \
-vvv
For non-deterministic deployments:
FOUNDRY_PROFILE=optimized \
forge script script/DeployPeriphery.s.sol \
--broadcast \
--etherscan-api-key $ETHERSCAN_API_KEY \
--private-key $PRIVATE_KEY \
--rpc-url $RPC_URL \
--sig "run()" \
--verifier-url $VERIFIER_URL \
--verify \
-vvv
If you are using a mnemonic or a hardware device for your deployer address, refer to forge-script
page from the
Foundry Book for different wallet options.
Steps for listing the deployments
Once the contracts are deployed, the final step is to list the deployment addresses and artifacts in the Sablier docs:
- List the deployment addresses by opening a PR in the docs repo
- List the deployment artifacts by opening a PR in the
deployments repo
- Copy the generated artifact files (ABIs) from the
artifacts
directory. - Copy the latest broadcast file from the
broadcast
directory.
- Copy the generated artifact files (ABIs) from the