# Distributions

The introduction of Distributions marks a significant advancement in DeFi applications, offering a scalable method for one-to-many fund transfers. Distributions allow for the transfer of value to multiple recipients with minimal on-chain data modification, making them infinitely scalable, highly efficient and gas-friendly.

note

There are other on-chain solutions that may seem to solve this problem without using a new token implementation (e.g [Disperse App](https://disperse.app/)). While these solutions can be great for a low amount of recipients, they are not infinitely scalable and can become very expensive as the number of recipients increases. Furthermore, they do not allow for distributing money streaming

<figure><img src="https://3425745615-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoQ11KBdeNwXTcfgvNHzv%2Fuploads%2FUFmcpJQNrpEdh9b2Klbh%2Fimage.png?alt=media&#x26;token=7aed65e3-2712-49ae-9ace-7b53787f8b84" alt=""><figcaption></figcaption></figure>

### Overview[​](https://docs.superfluid.finance/docs/concepts/overview/distributions#overview) <a href="#overview" id="overview"></a>

Distributions function by allowing for the creation of **pools** with a designated **pool admin** who manages **units** for **pool members**. Members of these pools can receive funds either instantly or through continuous streaming, making this method highly efficient and scalable. There are two types of Distributions:

* **Instant Distributions**: They allow one transaction distribution to any number of receivers with a fixed gas cost.
* **Streaming Distributions**: They allow for continuous distribution of funds to receivers through Money Streaming to a Pool.

***

* Instant Distribution
* Streaming Distribution

**Instant Distributions** allow one transaction to distribute to any number of receivers with a fixed gas cost.

*Click on the Blue Circle to initiate an Instant Distribution*

\
Distribution PoolClick to distribute a tokenMember AMember BMember CMember DMember E

*By creating a Distribution Pool, you can distribute any token instantly*

***

#### Definitions[​](https://docs.superfluid.finance/docs/concepts/overview/distributions#definitions) <a href="#definitions" id="definitions"></a>

* **Pool**: A channel for proportional token distribution.
* **Distribution**: The action of allocating specified token amounts to receivers.
* **Units**: Represent the proportion of the distribution each subscriber receives.
* **Pool Admin**: The administrator of the distribution process.
* **Subscribers/Pool Member**: Receivers allocated units and eligible to receive tokens through the Index.

#### Key Features[​](https://docs.superfluid.finance/docs/concepts/overview/distributions#key-features) <a href="#key-features" id="key-features"></a>

* **Pools as Contracts**: Unlike previous approaches, pools in streaming distributions are contracts and can be ERC20 tokens. This allows pool members to transfer units among themselves, which wasn't possible earlier.
* **Roles and Permissions**: A pool admin can grant and revoke units, while any account can act as a **distributor** to execute fund distributions.
* **Distribution Methods**: There are two primary ways to distribute funds:
  * **Instant Distribution**: Calculated as `distributionAmount * (poolMemberUnits / poolTotalUnits)`.
  * **Streaming Distribution**: Determined by `poolFlowRate * (poolMemberUnits / poolTotalUnits)`.
* **Gas Efficiency**: The cost of executing distributions remains constant, regardless of the number of pool members.

#### High-Level Workflow[​](https://docs.superfluid.finance/docs/concepts/overview/distributions#high-level-workflow) <a href="#high-level-workflow" id="high-level-workflow"></a>

1. **Pool Creation**: Any account can create a pool and appoint a pool admin. This pool acts as a channel for distributing funds.
2. **Unit Management**: The pool admin assigns units to members, representing their share in future distributions.
3. **Member Connection**: Pool members can connect to or disconnect from the pool, affecting how they access distributed funds.
4. **Distribution Execution**: Distributors can initiate either instant or streaming distributions, which are then divided among pool members based on their unit share.

### Distribution Examples[​](https://docs.superfluid.finance/docs/concepts/overview/distributions#distribution-examples) <a href="#distribution-examples" id="distribution-examples"></a>

#### Streaming Distribution Illustration[​](https://docs.superfluid.finance/docs/concepts/overview/distributions#streaming-distribution-illustration) <a href="#streaming-distribution-illustration" id="streaming-distribution-illustration"></a>

This diagram shows a distributor streaming funds to various pool members, each holding different unit amounts. Note: A single transaction can cater to multiple members.

![Streaming Distribution](https://docs.superfluid.finance/assets/images/streaming-distribution-light-af24535497444e427670323232058ddb.png)

#### Adjusting Unit Counts[​](https://docs.superfluid.finance/docs/concepts/overview/distributions#adjusting-unit-counts) <a href="#adjusting-unit-counts" id="adjusting-unit-counts"></a>

Here, a distributor modifies unit counts for members. This change instantly alters the distribution rate for all members in one transaction. Batch updates can be done using Tagomi's batch call.

![Unit Count Adjustment](https://docs.superfluid.finance/assets/images/unit-count-adjustment-fe4b2c740b5e835f2a2ef88523a1aca0.png)

#### Modifying the Flow Rate[​](https://docs.superfluid.finance/docs/concepts/overview/distributions#modifying-the-flow-rate) <a href="#modifying-the-flow-rate" id="modifying-the-flow-rate"></a>

This example demonstrates how a change in the distributor's streaming rate affects the total flow rate of the pool, thus instantly impacting each member's rate.

![Flow Rate Change](https://docs.superfluid.finance/assets/images/modify-flow-rate-0ff53d0ff001b147a8b4bcdd58844d21.png)

### Advanced Pool Features[​](https://docs.superfluid.finance/docs/concepts/overview/distributions#advanced-pool-features) <a href="#advanced-pool-features" id="advanced-pool-features"></a>

As pools are also ERC20 tokens, they enable:

* **Transfer of Units**: Pool members can freely transfer their units.
* **Delegated Transfers**: Using the `approve` and `transferFrom` functions, units can be transferred on behalf of a member.

These features add composability and flexibility, expanding the potential use cases for pools in web3.
