Skip to main content

Custom Deployments

Reach Out

Want to get Sablier deployed on your chain? If you meet the requirements listed below, fill out this form and our team will get back to you.

Requirements

The Sablier Interface currently supports only The Graph and Envio indexer services. If you use a different indexer, you can schedule a call here to discuss integration.

Contracts

Making a Deployment

NOTE

The rest of the guide applies ONLY IF you have been granted a BUSL license to deploy the protocol. Otherwise, this section is not relevant to you.

Prerequisites

Comptroller Deployment

Step 1: Clone the EVM Utils repo and checkout to the v1.0.0 tag

git clone -b v1.0.0 git@github.com:sablier-labs/evm-utils.git
cd evm-utils
bun install --frozen-lockfile

Step 2: Create an .env file

touch .env

Add the following variables to .env file:

ETH_FROM="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

FOUNDRY_PROFILE=optimized \
forge script scripts/solidity/DeployDeterministicComptrollerProxy.s.sol:DeployDeterministicComptrollerProxy \
--broadcast \
--rpc-url $RPC_URL \
--private-key $PRIVATE_KEY \
--sig "run()" \
--etherscan-api-key $ETHERSCAN_API_KEY \
--verifier "etherscan" \
--verify \
-vvv

The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier arguments according to forge script documentation. You should also refer to the forge script documentation for different wallet options such as mnemonic or hardware device.

Step 4: Update the EVM Utils repository

Add the chain ID of your newly deployed chain to the ChainId library in the EVM Utils repo. Then, bump the EVM Utils version in each protocol repository's package.json file (e.g., Lockup, Flow, Airdrops).

Lockup Deployment

Step 1: Clone the Lockup repo and checkout to the v3.0.1 tag

git clone -b v3.0.1 git@github.com:sablier-labs/lockup.git
cd lockup
bun install --frozen-lockfile

Step 2: Create an .env file

touch .env

Add the following variables to .env file:

ETH_FROM="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

FOUNDRY_PROFILE=optimized \
forge script scripts/solidity/DeployDeterministicProtocol.s.sol:DeployDeterministicProtocol \
--broadcast \
--rpc-url $RPC_URL \
--private-key $PRIVATE_KEY \
--sig "run()" \
--etherscan-api-key $ETHERSCAN_API_KEY \
--verifier "etherscan" \
--verify \
-vvv

The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier arguments according to forge script documentation. You should also refer to the forge script documentation for different wallet options such as mnemonic or hardware device.

Merkle Airdrops Deployment

Step 1: Clone the Merkle Airdrops repo and checkout to v2.0.1 tag

git clone -b v2.0.1 git@github.com:sablier-labs/airdrops.git
cd airdrops
bun install --frozen-lockfile

Step 2: Create an .env file

touch .env

Add the following variables to .env file:

ETH_FROM="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 merkle airdrop contracts

FOUNDRY_PROFILE=optimized \
forge script scripts/solidity/DeployDeterministicFactories.s.sol:DeployDeterministicFactories \
--broadcast \
--rpc-url $RPC_URL \
--private-key $PRIVATE_KEY \
--sig "run()" \
--etherscan-api-key $ETHERSCAN_API_KEY \
--verifier "etherscan" \
--verify \
-vvv

The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier arguments according to forge script documentation. You should also refer to the forge script documentation for different wallet options such as mnemonic or hardware device.

Flow Deployment

Step 1: Clone the Flow repo and checkout to v2.0.0 tag

git clone -b v2.0.0 git@github.com:sablier-labs/flow.git
cd flow
bun install --frozen-lockfile

Step 2: Create an .env file

touch .env

Add the following variables to .env file:

ETH_FROM="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

FOUNDRY_PROFILE=optimized \
forge script scripts/solidity/DeployDeterministicProtocol.s.sol:DeployDeterministicProtocol \
--broadcast \
--rpc-url $RPC_URL \
--private-key $PRIVATE_KEY \
--sig "run()" \
--etherscan-api-key $ETHERSCAN_API_KEY \
--verifier "etherscan" \
--verify \
-vvv

The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier arguments according to forge script documentation. You should also refer to the forge script documentation for different wallet options such as mnemonic or hardware device.

List your deployments

After the contracts are deployed, you can submit a PR in the SDK repo by including the following details: