Skip to main content

Custom Deployments

Reach Out

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

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

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

Important

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:

  1. List the deployment addresses by opening a PR in the docs repo
  2. 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.