> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sablier (sablier)

> Token streaming protocol for continuous payments. Supports linear, cliff, and dynamic vesting schedules with NFT-based stream ownership.

Token streaming protocol for continuous payments. Supports linear, cliff, and dynamic vesting schedules with NFT-based stream ownership.

| Fact | Value |
| - | - |
| Category | Payments and streaming |
| Family | none |
| Namespace | `Sablier` on ethereum |
| Chains | ethereum |

## What it offers

* **withdrawFromStream**: Withdraw accrued tokens from an active stream
* **cancelStream**: Cancel a stream and return remaining tokens to sender
* **createWithDurations**: Create a new linear stream with cliff and total duration

## Notes

* Streams are ERC-721 NFTs - the stream recipient is the NFT owner
* cliff: no tokens vest until cliff duration passes, then cliff amount vests immediately
* Tokens accrue linearly between cliff and total duration
* Only cancelable streams can be cancelled; non-cancelable streams run to completion
* Approve the streaming asset to lockupLinear before createWithDurations
* amount in withdraw is uint128, not uint256

## Its names in a program

On Ethereum, `Sablier` is a namespace: its contracts need no import.

```ts theme={null}
function main() {
  // Ethereum's lockupLinear, `0xAFb979d9afAd1aD27C5eFf4E27226E3AB9e5dCC9`.
  require(Sablier.LockupLinear != 0);
}
```

## Deployments

| Chain | Contract | Address | In a program |
| - | - | - | - |
| [Ethereum](https://docs.eco.com/sauce-sdk/reference/chains/ethereum.md) | lockupLinear | `0xAFb979d9afAd1aD27C5eFf4E27226E3AB9e5dCC9` | `Sablier.LockupLinear` |

## ABI

### `LockupLinearABI`

`import LockupLinearABI from "./protocols/sablier/LockupLinearABI.json";` Speaks for: lockupLinear.

* `createWithDurations((address sender, address recipient, uint128 totalAmount, address asset, bool cancelable, bool transferable, (uint40 cliff, uint40 total) durations, (address account, uint256 fee) broker) params) returns (uint256 streamId)`
* `withdraw(uint256 streamId, address to, uint128 amount)`
* `cancel(uint256 streamId)`

## Next steps

* [Protocols](https://docs.eco.com/sauce-sdk/reference/protocols.md): the other protocols, by what they do.
* [Protocols and tokens](https://docs.eco.com/sauce/names.md): calling a contract by its namespace, or through its ABI.
* [Glossary](https://docs.eco.com/sauce/glossary.md): the words these pages use, in plain terms.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.