Skip to main content

Identifiers

Stream IDs

Contracts

Onchain, each Lockup and Flow contract assigns a streamId to each stream, which is the same as the ERC-721 tokenId (each stream is tokenized as an ERC-721).

The streamId/ tokenId in the contract is a simple numerical value (a uint256). For example, number 42 is a valid streamId/ tokenId.

You will always need this value when interacting with Sablier via a JSON-RPC endpoint because it is required by every contract method associated with a stream, e.g. streamedAmountOf.

Indexers

Offchain, in the GraphQL schema, we need to be able to identify streams across different EVM chains and different contract versions. Additionally, it would be nice to have short, easily readable aliases. Thus, we have come up with the following identifiers:

IdentifierFormatExample
Stream ID{contractAddress}-{chainId}-{tokenId}0xe0bfe071da104e571298f8b6e0fce44c512c1ff4-137-21
Stream Alias{contractAlias}-{chainId}-{tokenId}LK-137-21

Both examples from the table above translate to: **a stream on Polygon (chain ID 137) created via the Lockup v2.0 contract at address 0xe0bfe071da104e571298f8b6e0fce44c512c1ff4, with the token ID 21.

Contract Aliases

Here's a table with the full list of contract aliases.

AliasContract NameRelease
FLSablierFlowFlow v1.0
FL2SablierFlowFlow v1.1
LDSablierV2LockupDynamicLockup v1.0
LD2SablierV2LockupDynamicLockup v1.1
LD3SablierV2LockupDynamicLockup v1.2
LKSablierLockupLockup v2.0
LLSablierV2LockupLinearLockup v1.0
LL2SablierV2LockupLinearLockup v1.1
LL3SablierV2LockupLinearLockup v1.2
LT3SablierV2LockupTranchedLockup v1.2
MSF2SablierV2MerkleStreamerFactoryAirdrops v1.1
MSF3SablierV2MerkleLockupFactoryAirdrops v1.2
MSF4SablierMerkleFactoryAirdrops v1.3

Airdrop IDs

Contracts

Airdrops do not have any onchain IDs because every airdrop is a separate contract deployed by one of the Merkle Factory contracts.

Indexers

The ID for an airdrop is the chain ID concatenated with the contract address of the airdrop contract:

IdentifierFormatExample
Airdrop ID{contractAddress}-{chainId}0xf50760d8ead9ff322631a1f3ebf26cc7891b3708-137

The example from the table above translates to: an airdrop on Polygon (chain ID 137), with the contract address 0xf50760d8ead9ff322631a1f3ebf26cc7891b3708.

info

We have decided not to generate aliases for Airdrops, but this may change in the future.