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. You
will still occasionally wish to withdraw, however!
Receiving Funds
Splits may receive funds via two paths:
- Simply send funds to the Split's address via
send
,transfer
, orcall
. These funds will be flushed toSplitMain
the next timedistributeETH
is called. - 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 any third party can call this on the account's
behalf. Withdrawing for an account is necessary since Recipients can be smart
contracts which can't execute the
withdraw
function themselves (they must,
however, still be able to receive funds).
Summary
- 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
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).