Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
130 changes: 65 additions & 65 deletions bun.lock

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions docs/concepts/07-chains.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@ title: Supported Chains
sidebar_position: 7
---

import Chains from "@site/src/components/organisms/Chains";
import Chains, { getChainCount } from "@site/src/components/organisms/Chains";
import { Links } from "@site/src/constants";
import { keys } from "lodash";
import { sablier } from "sablier";

<>

The Sablier Protocol is deployed on {sablier.chains.getMainnets().length} mainnets and {sablier.chains.getTestnets().length} testnet EVM chains, although not all of these are supported by the
The Sablier Protocol is deployed on {getChainCount("mainnets")} mainnets and {getChainCount("testnets")} testnet EVM chains, although not all of these are supported by the
[Sablier Interface](https://app.sablier.com/).

</>
Expand Down
64 changes: 40 additions & 24 deletions docs/concepts/11-governance.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,45 +5,61 @@ title: "Governance"
---

import AdminsTable from "@site/src/components/organisms/AdminsTable";
import ComptrollersTable from "@site/src/components/organisms/ComptrollersTable";

The Protocol Admin is an account with exclusive access to specific functions. More concretely, the Admin is a collection
of multisig wallets and EOAs currently in control of Sablier Labs.
## Comptroller

## Admins
The Sablier Comptroller is a smart contract that acts as an intermediary between the protocols and the admin. It has
exclusive access to specific protocol functions. This design provides a more flexible approach to access control across
all protocols while maintaining security.

Here's a table with the admins of the Sablier Protocol. Most of them are Safe multi-signature wallets.
Admin addresses that control the Comptroller are listed in the [Admin Addresses](#admin-addresses) section.

<AdminsTable />
<ComptrollersTable />

## Lockup

Admin has the following permissions on each chain where `Lockup` is deployed:
Comptroller has the following permissions on each chain where `Lockup` is deployed:

| Permission | Function |
| ------------------ | ------------------ |
| Allow to Hook | `allowToHook` |
| Recover | `recover` |
| Set Native Token | `setNativeToken` |
| Set NFT Descriptor | `setNFTDescriptor` |

| Permission | Function |
| ------------------ | ------------------------------------------------------------------------------------------------------- |
| Allow to Hook | [allowToHook](../reference/lockup/contracts/abstracts/abstract.SablierLockupBase#allowtohook) |
| Set NFT Descriptor | [setNFTDescriptor](../reference/lockup/contracts/abstracts/abstract.SablierLockupBase#setnftdescriptor) |
TODO: Add links when reference pages are created

## MerkleFactory
## Merkle Factory

Admin has the following permissions on each chain where `MerkleFactory` is deployed:
Comptroller has the following permission on each chain where the Merkle Factories are deployed:

| Permission | Function |
| ---------------- | ---------------------------------------------------------------------------------------------- |
| Reset Custom Fee | [resetCustomFee](../reference/airdrops/contracts/contract.SablierMerkleFactory#resetcustomfee) |
| Set Custom Fee | [setCustomFee](../reference/airdrops/contracts/contract.SablierMerkleFactory#setcustomfee) |
| Set Default Fee | [setDefaultFee](../reference/airdrops/contracts/contract.SablierMerkleFactory#setdefaultfee) |
| Permission | Function |
| ---------------- | ---------------- |
| Set Native Token | `setNativeToken` |

TODO: Add links when reference pages are created

## Flow

Admin has the following permissions on each chain where `Flow` is deployed:
Comptroller has the following permissions on each chain where `Flow` is deployed:

| Permission | Function |
| ------------------ | ------------------ |
| Recover | `recover` |
| Set Native Token | `setNativeToken` |
| Set NFT Descriptor | `setNFTDescriptor` |

| Permission | Function |
| ------------------------ | --------------------------------------------------------------------------------------------------------------- |
| Collect Protocol Revenue | [collectProtocolRevenue](../reference/flow/contracts/abstracts/abstract.SablierFlowBase#collectprotocolrevenue) |
| Recover ERC20 token | [recover](../reference/flow/contracts/abstracts/abstract.SablierFlowBase#recover) |
| Set NFT Descriptor | [setNFTDescriptor](../reference/flow/contracts/abstracts/abstract.SablierFlowBase#setnftdescriptor) |
| Set Protocol Fee | [setProtocolFee](../reference/flow/contracts/abstracts/abstract.SablierFlowBase#setprotocolfee) |
TODO: Add links when reference pages are created

## Admin Addresses

The Comptroller is introduced in Lockup v3.0, Airdrops v2.0 and Flow v2.0. For earlier versions, we use a direct "Admin"
role for governance. These admin accounts have the same authority as the current Comptroller contract, with direct
access to specific protocol functions. More concretely, the Admin is a collection of multisig wallets and EOAs currently
in control of Sablier Labs.

<AdminsTable />

## Trustlessness

Expand Down
48 changes: 29 additions & 19 deletions docs/guides/04-custom-deployments.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ can schedule a call <Link href={Links.Forms.CALL}>here</Link> to discuss integra
- [x] Blockchain explorer with instructions for verifying contracts, e.g., [Etherscan](https://etherscan.io)
- [x] Functional JSON-RPC endpoint, ideally listed on [ChainList](https://chainlist.org)
- [x] Bridge, and instructions for how to obtain gas tokens (e.g., ETH) and ERC-20 tokens to the target chain
- [x] Support for [Shanghai](https://docs.soliditylang.org/en/latest/using-the-compiler.html#target-options) EVM version or later
- [x] Support for [Shanghai](https://docs.soliditylang.org/en/latest/using-the-compiler.html#target-options) EVM version
or later
- [x] Support for Solidity v0.8.22 or later

### Contracts
Expand All @@ -45,8 +46,11 @@ section is not relevant to you.

### Prerequisites

- Check if the deployments are not already made: [Airdrops](/guides/airdrops/deployments), [Flow](/guides/flow/deployments), [Lockup](/guides/lockup/deployments)
- Follow the contributing guides for <Link href={`${Links.GitHub.AIRDROPS}/blob/main/CONTRIBUTING.md`}>Airdrops</Link>, <Link href={`${Links.GitHub.FLOW}/blob/main/CONTRIBUTING.md`}>Flow</Link> and <Link href={`${Links.GitHub.LOCKUP}/blob/main/CONTRIBUTING.md`}>Lockup</Link>.
- Check if the deployments are not already made: [Airdrops](/guides/airdrops/deployments),
[Flow](/guides/flow/deployments), [Lockup](/guides/lockup/deployments)
- Follow the contributing guides for <Link href={`${Links.GitHub.AIRDROPS}/blob/main/CONTRIBUTING.md`}>Airdrops</Link>,
<Link href={`${Links.GitHub.FLOW}/blob/main/CONTRIBUTING.md`}>Flow</Link> and <Link
href={`${Links.GitHub.LOCKUP}/blob/main/CONTRIBUTING.md`}>Lockup</Link>.
- RPC endpoint, e.g., a paid [Infura](https://www.infura.io/) or [Alchemy](https://www.alchemy.com/) account
- Have enough gas tokens (e.g., ETH) in your deployer account
- Have an Etherscan API key (for source code verification)
Expand Down Expand Up @@ -98,13 +102,18 @@ forge script scripts/solidity/DeployDeterministicComptrollerProxy.s.sol:DeployDe
-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](https://getfoundry.sh/forge/reference/script/#forge-script). You should
also refer to the forge script documentation for different wallet options such as mnemonic or hardware device.
The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier
arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). 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](https://github.com/sablier-labs/evm-utils/blob/d7d6c051a39cbacadef672e92ed9d57628c80dc4/src/tests/ChainId.sol). Then, bump the EVM Utils version in each protocol repository's `package.json` file (e.g., [Lockup](https://github.com/sablier-labs/lockup/blob/58eaac45c20c57a93b73d887c714e68f061ec3e6/package.json#L16), [Flow](https://github.com/sablier-labs/flow/blob/a4143de45478f508bca8305fec2bd81b7ad25fe9/package.json#L16), [Airdrops](https://github.com/sablier-labs/airdrops/blob/077c6b9766ef7693ba9e82a9e001dc0097709c01/package.json#L16)).
Add the chain ID of your newly deployed chain to the `ChainId` library in the
[EVM Utils repo](https://github.com/sablier-labs/evm-utils/blob/d7d6c051a39cbacadef672e92ed9d57628c80dc4/src/tests/ChainId.sol).
Then, bump the EVM Utils version in each protocol repository's `package.json` file (e.g.,
[Lockup](https://github.com/sablier-labs/lockup/blob/58eaac45c20c57a93b73d887c714e68f061ec3e6/package.json#L16),
[Flow](https://github.com/sablier-labs/flow/blob/a4143de45478f508bca8305fec2bd81b7ad25fe9/package.json#L16),
[Airdrops](https://github.com/sablier-labs/airdrops/blob/077c6b9766ef7693ba9e82a9e001dc0097709c01/package.json#L16)).

### Lockup Deployment

Expand Down Expand Up @@ -153,9 +162,9 @@ forge script scripts/solidity/DeployDeterministicProtocol.s.sol:DeployDeterminis
-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](https://getfoundry.sh/forge/reference/script/#forge-script). You should
also refer to the forge script documentation for different wallet options such as mnemonic or hardware device.
The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier
arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). You
should also refer to the forge script documentation for different wallet options such as mnemonic or hardware device.

### Merkle Airdrops Deployment

Expand Down Expand Up @@ -204,9 +213,9 @@ forge script scripts/solidity/DeployDeterministicFactories.s.sol:DeployDetermini
-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](https://getfoundry.sh/forge/reference/script/#forge-script). You should
also refer to the forge script documentation for different wallet options such as mnemonic or hardware device.
The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier
arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). You
should also refer to the forge script documentation for different wallet options such as mnemonic or hardware device.

### Flow Deployment

Expand Down Expand Up @@ -255,16 +264,17 @@ forge script scripts/solidity/DeployDeterministicProtocol.s.sol:DeployDeterminis
-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](https://getfoundry.sh/forge/reference/script/#forge-script). You should
also refer to the forge script documentation for different wallet options such as mnemonic or hardware device.
The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier
arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). 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 <Link href={Links.GitHub.SDK}>SDK
repo</Link> by including the following details:
After the contracts are deployed, you can submit a PR in the <Link href={Links.GitHub.SDK}>SDK repo</Link> by including
the following details:

- Add the broadcast files (JSON) to <Link href={`${Links.GitHub.SDK}/tree/main/deployments`}>deployments</Link> directory.
- Add the broadcast files (JSON) to <Link href={`${Links.GitHub.SDK}/tree/main/deployments`}>deployments</Link>
directory.
- Add the deployment addresses to the following files:
- <Link href={`${Links.GitHub.SDK}/blob/main/src/comptroller.ts`}>Comptroller Deployments</Link>
- <Link href={`${Links.GitHub.SDK}/blob/main/src/releases/airdrops/v2.0/deployments.ts`}>Airdrops Deployments</Link>
Expand Down
30 changes: 19 additions & 11 deletions docs/guides/airdrops/02-deployments.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,31 @@ sidebar_position: 2
title: "Deployment Addresses"
---

import DeploymentsV1_3 from "../../../src/autogen/airdrops/_table-deployments-v1.3.mdx";
import DeploymentsV2_0 from "../../../src/autogen/airdrops/_table-deployments-v2.0.mdx";
import ReleaseHistoryAirdrops from "../../../src/snippets/_release-history-airdrops.mdx";
import DeploymentNote from "../../../src/snippets/_deployment-note.mdx";

# Merkle Airdrops Deployments

This section contains the deployment addresses for the v1.3 release of
[@sablier/airdrops](https://npmjs.com/package/@sablier/airdrops).
[latest]: https://npmjs.com/package/@sablier/airdrops

A few noteworthy details about the deployments:
This section contains the deployment addresses for the v2.0 release of [@sablier/airdrops][latest].

- The addresses are final
- All contracts are non-upgradeable
- The source code is verified on Etherscan across all chains
<DeploymentNote />

## Versions

This repository is the successor of [Lockup Periphery](https://github.com/sablier-labs/v2-periphery), which has been
discontinued. For previous deployments, please refer to the
[Lockup deployments](/guides/lockup/previous-deployments/v1.2) page.
Any updates or additional features will require a new deployment of the protocol, due to its immutable nature.

<DeploymentsV1_3 />
Came here looking for the previous deployments? Click below to see other versions.

<ReleaseHistoryAirdrops />

:::info

Stay up to date with any new releases by [subscribing](https://x.com/Sablier/status/1821220784661995627) to the official
Sablier repositories on Github.

:::

<DeploymentsV2_0 />
5 changes: 5 additions & 0 deletions docs/guides/airdrops/previous-deployments/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"collapsed": true,
"label": "Previous Deployments",
"position": 3
}
29 changes: 29 additions & 0 deletions docs/guides/airdrops/previous-deployments/v1.3.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
id: "v1.3"
sidebar_position: 1
title: "v1.3"
---

import DeploymentsV1_3 from "../../../../src/autogen/airdrops/_table-deployments-v1.3.mdx";
import DeploymentNote from "../../../../src/snippets/_deployment-note.mdx";

# Merkle Airdrops v1.3

[v1.3.0]: https://npmjs.com/package/@sablier/airdrops/v/1.3.0

This section contains the deployment addresses for the v1.3 release of [@sablier/airdrops@1.3.0][v1.3.0].

<DeploymentNote />

:::info

This is an outdated version of the Merkle Airdrops protocol. See the latest version
[here](/guides/airdrops/deployments).

:::

This repository is the successor of [Lockup Periphery](https://github.com/sablier-labs/v2-periphery), which has been
discontinued. For previous deployments, please refer to the
[Lockup v1.2 deployments](/guides/lockup/previous-deployments/v1.2) page.

<DeploymentsV1_3 />
14 changes: 6 additions & 8 deletions docs/guides/flow/02-deployments.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,17 @@ sidebar_position: 2
title: "Deployment Addresses"
---

import DeploymentsV1_1 from "../../../src/autogen/flow/_table-deployments-v1.1.mdx";
import DeploymentsV2_0 from "../../../src/autogen/flow/_table-deployments-v2.0.mdx";
import ReleaseHistoryFlow from "../../../src/snippets/_release-history-flow.mdx";
import DeploymentNote from "../../../src/snippets/_deployment-note.mdx";

# Flow Deployments

This section contains the deployment addresses for the v1.1 release of
[@sablier/flow](https://npmjs.com/package/@sablier/flow).
[latest]: https://npmjs.com/package/@sablier/flow

A few noteworthy details about the deployments:
This section contains the deployment addresses for the v2.0 release of [@sablier/flow][latest].

- The addresses are final
- All contracts are non-upgradeable
- The source code is verified on Etherscan across all chains
<DeploymentNote />

## Versions

Expand All @@ -33,4 +31,4 @@ Sablier repositories on Github.

:::

<DeploymentsV1_1 />
<DeploymentsV2_0 />
10 changes: 4 additions & 6 deletions docs/guides/flow/previous-deployments/v1.0.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,15 @@ title: "v1.0"
---

import DeploymentsV1_0 from "../../../../src/autogen/flow/_table-deployments-v1.0.mdx";
import DeploymentNote from "../../../../src/snippets/_deployment-note.mdx";

# Flow v1.0

This section contains the deployment addresses for the v1.0 release of
[@sablier/flow@1.0.0](https://npmjs.com/package/@sablier/flow/v/1.0.0).
[v1.0.0]: https://npmjs.com/package/@sablier/flow/v/1.0.0

A few noteworthy details about the deployments:
This section contains the deployment addresses for the v1.0 release of [@sablier/flow@1.0.0][v1.0.0].

- The addresses are final
- All contracts are non-upgradeable
- The source code is verified on Etherscan across all chains
<DeploymentNote />

:::info

Expand Down
24 changes: 24 additions & 0 deletions docs/guides/flow/previous-deployments/v1.1.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
id: "v1.1"
sidebar_position: 2
title: "v1.1"
---

import DeploymentsV1_1 from "../../../../src/autogen/flow/_table-deployments-v1.1.mdx";
import DeploymentNote from "../../../../src/snippets/_deployment-note.mdx";

# Flow v1.1

[v1.1.1]: https://npmjs.com/package/@sablier/flow/v/1.1.1

This section contains the deployment addresses for the v1.1 release of [@sablier/flow@1.1.1][v1.1.1].

<DeploymentNote />

:::info

This is an outdated version of the Flow protocol. See the latest version [here](/guides/flow/deployments).

:::

<DeploymentsV1_1 />
14 changes: 6 additions & 8 deletions docs/guides/lockup/02-deployments.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,17 @@ sidebar_position: 2
title: "Deployment Addresses"
---

import DeploymentsV2_0 from "../../../src/autogen/lockup/_table-deployments-v2.0.mdx";
import DeploymentsV3_0 from "../../../src/autogen/lockup/_table-deployments-v3.0.mdx";
import ReleaseHistoryLockup from "../../../src/snippets/_release-history-lockup.mdx";
import DeploymentNote from "../../../src/snippets/_deployment-note.mdx";

# Lockup Deployments

This section contains the deployment addresses for the v2.0 release of
[@sablier/lockup](https://npmjs.com/package/@sablier/lockup).
[latest]: https://npmjs.com/package/@sablier/lockup

A few noteworthy details about the deployments:
This section contains the deployment addresses for the v3.0 release of [@sablier/lockup][latest].

- The addresses are final
- All contracts are non-upgradeable
- The source code is verified on Etherscan across all chains
<DeploymentNote />

:::info[important]

Expand All @@ -41,4 +39,4 @@ Sablier repositories on Github.

:::

<DeploymentsV2_0 />
<DeploymentsV3_0 />
Loading