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.
Splits may receive funds via two paths:
- Simply send funds to the Split's address via
call. These funds will be flushed to
SplitMainthe next time
- If the Split is itself a Recipient of another Split, it will receive funds
distributeETHis called on the upstream Split.
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.
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).
- Funds flow into the Split and increase its balance.
- As the balance increases, any third party can earn the Distributor Fee by distributing the balance to the Recipients.
- Recipients may then
withdrawtheir 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).