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-monorepo and checkout to the utils@v2.0 tag

git clone -b utils@v2.0 git@github.com:sablier-labs/evm-monorepo.git
cd evm-monorepo/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-monorepo. Then, bump the EVM Utils version in each protocol's package.json file within the monorepo.

Lockup Deployment

Step 1: Clone the evm-monorepo and checkout to the lockup@v4.0 tag

git clone -b lockup@v4.0 git@github.com:sablier-labs/evm-monorepo.git
cd evm-monorepo/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 evm-monorepo and checkout to the airdrops@v3.0 tag

git clone -b airdrops@v3.0 git@github.com:sablier-labs/evm-monorepo.git
cd evm-monorepo/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 evm-monorepo and checkout to the flow@v3.0 tag

git clone -b flow@v3.0 git@github.com:sablier-labs/evm-monorepo.git
cd evm-monorepo/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: