Core Concepts

Core Concepts

Split

A Split is a smart contract that receives and distributes ETH and ERC20 tokens. Each Split has an address to which tokens can be sent; a set of Recipients with corresponding ownership percentages; a list of balances for each token it's received; a distributor fee that incentivizes distributions; and a controlling address if it's a Mutable Split.

Recipient

A Recipient is any Ethereum account (externally owned or smart contract) that earns a portion of the Split's income. A Recipient may be any valid Ethereum address, including other Splits. Recipients do not need direct control of the account, since funds can be withdrawn for the Recipient by a third party.

Balance

Each Split has a balance that increases whenever tokens are received. This balance must be distributed before it can be withdrawn by the Recipients. Each balance is token-specific, meaning a Split may have multiple balances. For example, if a Split has received both ETH and DAI, each balance would need to be distributed separately. Balances must only be distributed once in order for all Recipients to withdraw their share.

Distributor Fee

The Distributor Fee is the portion of a Split's balance that is earned in exchange for distributing the balance. This fee incentivizes third parties to pay the gas needed to distribute a Split's balance, since it creates an arbitrage opportunity (when the cost to distribute is lower than the fee multiplied by the balance). This fee also makes the distribution cost borne by Recipients, since it's deducted from the balance.

You can think of this as a payment processing fee paid for proportionally by Recipients. A higher fee leads to more frequent distributions, but results in a smaller balance going to Recipients. This fee may be set to 0% for manual or progressive distributions. Setting the fee to 0% removes the reward entirely, meaning one of the Recipients will need to trigger this manually for all other Recipients.

Withdraw

Whenever a Split is distributed, the balance for each Recipient increases. At any time, accounts with a balance can withdraw their funds across all the Splits they receive from in a single transaction. This prevents users from needing to withdraw for each Split individually. Additionally, any account (i.e., a bot or third party) may withdraw for any other account, allowing withdrawals to smart contracts and multisigs without needing all signers to approve.

Mutable Split

A Mutable Split operates just like a normal Split, with the only difference being that it can be modified in the future. Only the Controller, which is set during Split creation, can modify the Split. The Controller can be any valid address (EOA, multisig, SC with custom logic, etc), and has the ability to modify the Recipients and Distributor Fee, transfer control of the Split to a new Controller, or make the Split immutable (removing the Controller entirely). A Mutable Split can be made immutable, but immutable Splits can never become mutable.