Skip to content

sablier-labs/evm-utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

67 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Sablier EVM Utils Github Actions Coverage Foundry Discord

This repository contains the following two sets of contracts:

Sablier comptroller

Its a standalone contract with the following responsibilities:

  • Handles state variables, setters and getters, and calculations using external oracles to manage fees across all the Sablier protocols.
  • Authority over admin functions across Sablier protocols.

Utility contracts

Its a collection of smart contracts used across various Sablier Solidity projects. The motivation behind this is to reduce code duplication. The following projects imports these contracts:

In-depth documentation is available at docs.sablier.com.

Repository Structure

This repo contains the following subdirectories:

  • src/interfaces: Interfaces to be used by external projects.
  • src/mocks: Mock contracts used by external projects in tests.
  • src/tests: Helper contracts used by external projects in tests and deployment scripts.

Install

Node.js

This is the recommended approach.

Install using your favorite package manager, e.g., with Bun:

bun add @sablier/evm-utils

Git Submodules

This installation method is not recommended, but it is available for those who prefer it.

First, install the submodule using Forge:

forge install --no-commit sablier-labs/evm-utils

Usage

import { Adminable } from "@sablier/evm-utils/src/Adminable.sol";
import { Batch } from "@sablier/evm-utils/src/Batch.sol";
import { NoDelegateCall } from "@sablier/evm-utils/src/NoDelegateCall.sol";

contract MyContract is Adminable, Batch, NoDelegateCall {
    constructor(address initialAdmin) Adminable(initialAdmin) { }

    // Use the `noDelegateCall` modifier to prevent delegate calls.
    function foo() public noDelegateCall { }

    // Use the `onlyAdmin` modifier to restrict access to the admin.
    function editFee(uint256 newFee) public onlyAdmin { }
}

License

This repo is licensed under the GNU General Public License with the below exceptions:

About

๐Ÿ”— Shared Solidity utilities

Topics

Resources

License

Unknown, GPL-3.0 licenses found

Licenses found

Unknown
LICENSE.md
GPL-3.0
LICENSE-GPL.md

Stars

Watchers

Forks

Releases

No releases published

Contributors 3

  •  
  •  
  •  

Languages