Skip to main content

Governance

Comptroller and Admins

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

Current

Used in Lockup v2.0, v3.0 and v4.0, Flow v1.1, v2.0 and v3.0, and Airdrops v1.3, v2.0 and v3.0. The table below lists the deployed Comptroller and the admin that controls it on each chain.

ChainComptrollerComptroller Admin
Abstract0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Arbitrum0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990x58290bbdb51A4c6B022A81e9cDeD24BE19Ca57fd
Avalanche0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Base0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990x58290bbdb51A4c6B022A81e9cDeD24BE19Ca57fd
Berachain0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Blast0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
BNB Chain0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990x58290bbdb51A4c6B022A81e9cDeD24BE19Ca57fd
Chiliz0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Denergy0x946654AB30Dd6eD10236C89f2C8B2719df6536910xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Ethereum0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990x58290bbdb51A4c6B022A81e9cDeD24BE19Ca57fd
Gnosis0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
HyperEVM0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990x58290bbdb51A4c6B022A81e9cDeD24BE19Ca57fd
Lightlink0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Linea Mainnet0xF21b304A08993f98A79C7Eb841f812CCeab49B8b0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Mode0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Monad0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990x58290bbdb51A4c6B022A81e9cDeD24BE19Ca57fd
Morph0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
OP Mainnet0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990x58290bbdb51A4c6B022A81e9cDeD24BE19Ca57fd
Polygon0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990x58290bbdb51A4c6B022A81e9cDeD24BE19Ca57fd
Scroll0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Sonic0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Superseed0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Unichain0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
XDC0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
ZKsync Era0x0000008ABbFf7a84a2fE09f9A9b74D3BC20723990x58290bbdb51A4c6B022A81e9cDeD24BE19Ca57fd

Old

Used in all previous versions: Lockup v1.0, v1.1 and v1.2; Flow v1.0; and Airdrops v1.1 and v1.2. Each of these addresses had direct admin authority over the corresponding protocol contracts before the Comptroller was introduced.

ChainAddress
Abstract0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Arbitrum0xF34E41a6f6Ce5A45559B1D3Ee92E141a3De96376
Avalanche0x4735517616373c5137dE8bcCDc887637B8ac85Ce
Base0x83A6fA8c04420B3F9C7A4CF1c040b63Fbbc89B66
Berachain0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Blast0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
BNB Chain0x6666cA940D2f4B65883b454b7Bc7EEB039f64fa3
Chiliz0x74A234DcAdFCB395b37C8c2B3Edf7A13Be78c935
Ethereum0x79Fb3e81aAc012c08501f41296CCC145a1E15844
Gnosis0x72ACB57fa6a8fa768bE44Db453B1CDBa8B12A399
HyperEVM0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Lightlink0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Linea Mainnet0x72dCfa0483d5Ef91562817C6f20E8Ce07A81319D
Mode0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Morph0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
OP Mainnet0x43c76FE8Aec91F63EbEfb4f5d2a4ba88ef880350
Polygon0x40A518C5B9c1d3D6d62Ba789501CE4D526C9d9C6
Scroll0x0F7Ad835235Ede685180A5c611111610813457a9
Sonic0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Superseed0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Tangle0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
Unichain0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
XDC0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F
ZKsync Era0xaFeA787Ef04E280ad5Bb907363f214E4BAB9e288

Contract Permissions

Comptroller

The Comptroller itself has admin- and role-gated functions. Roles are managed by the admin via grantRole / revokeRole; the admin can also call any role-gated function directly.

Admin Only

PermissionFunction
Executeexecute
Grant RolegrantRole (inherited)
Revoke RolerevokeRole (inherited)
Set OraclesetOracle
Transfer AdmintransferAdmin (inherited)
Upgrade To And CallupgradeToAndCall (inherited)
Withdraw ERC-20withdrawERC20Token

Fee Management Role

PermissionFunction
Disable Custom Fee USD FordisableCustomFeeUSDFor
Lower Min Fee USD CampaignlowerMinFeeUSDForCampaign
Set Custom Fee USD ForsetCustomFeeUSDFor
Set Min Fee USDsetMinFeeUSD

Attestor Manager Role

PermissionFunction
Set AttestorsetAttestor
Set Attestor For CampaignsetAttestorForCampaign

Fee Collector Role

PermissionFunction
Transfer FeestransferFees

Lockup

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

PermissionFunction
Allow to HookallowToHook
Recoverrecover
Set Native TokensetNativeToken
Set NFT DescriptorsetNFTDescriptor

Merkle Factory

Comptroller has the following permission on each chain where the Merkle Factories are deployed:

PermissionFunction
Set Native TokensetNativeToken

Flow

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

PermissionFunction
Recoverrecover
Set Native TokensetNativeToken
Set NFT DescriptorsetNFTDescriptor

Bob

Comptroller has the following permissions on each chain where Bob is deployed:

PermissionFunction
Set Default AdaptersetDefaultAdapter
Set Native TokensetNativeToken

Lido Adapter

Comptroller has the following permissions on the Lido Adapter:

PermissionFunction
Request Lido WithdrawalrequestLidoWithdrawal
Set Slippage TolerancesetSlippageTolerance
Set Yield FeesetYieldFee

Trustlessness

Despite having an admin, the Sablier Protocol remains trustless. Here's why:

  1. The protocol is permissionless, i.e. it can be freely accessed by anyone with an Internet connection.
  2. The protocol is persistent, i.e. the admin cannot pause it.
  3. The streaming logic is non-upgradeable, i.e. the admin cannot tamper with the streams created by users.
  4. There are no escape hatches that allow the admin to claim user funds.

Timelocks

The parameter changes that can be effected are NOT subject to a timelock. This means that the admin can execute any of the functions listed above at any time.

Governance

As a startup, Sablier has to deal with uncertainty regarding:

  1. Protocol-market fit
  2. Smart contract security

Attaining success in these areas is no easy feat, and as such, decentralizing the protocol's governance will not be an initial priority.

Nonetheless, we believe that progressive decentralization is the most effective approach to scaling a smart contract protocol. As the protocol matures, we will decentralize its governance incrementally.