Flow of Funds

Flow of Funds

The below diagram illustrates the key components of the protocol and highlights the different methods for moving funds between the components. As a Recipient, you don't actually have to worry about any of this, since the Distributor Fee incentivizes third parties to call functions (e.g. distributeETH) on your behalf. However, you will still occasionally wish to withdraw.

Flow of Funds Diagram

Receiving Funds

Splits may receive funds via two paths:

  1. Simply send funds to the Split's address via send, transfer, or call. These funds will be flushed to SplitMain the next time distributeETH is called.
  2. If the Split is itself a Recipient of another Split, it will receive funds when distributeETH is called on the upstream Split.

Distributing Funds

Once funds have arrived at SplitMain, funds may be distributed by any third party willing to pay the gas to call distributeETH. This function only needs to be called once in order for all Recipients to withdraw their share of the balance. The party who calls this function will receive the Distributor Fee as compensation for paying the gas needed to execute the function.

Withdrawing Funds

Once funds have been distributed, they can now be withdrawn by calling withdraw. A person can call this function via the web app (or smart contract directly), or any third party can call this on the account's behalf. Withdrawing for an account is necessary when Recipients are smart contracts that can't execute the withdraw function themselves (they must, however, still be able to receive funds).

Summary

  1. Funds flow into the Split and increase its balance.
  2. As the balance increases, any third party can earn the Distributor Fee by distributing the balance to the Recipients.
  3. Recipients may then withdraw their balance, thus collecting from all of their Splits in a single transaction (steps 1 & 2 may happen dozens or hundreds of times per Recipient withdrawal).