Creating A Split
Go to split.new and add each Recipient's address (ENS or hex) and their correspdong share. A Recipient can be any payable Ethereum address – user wallets, smart contracts, and other Splits are all valid Recipients. Make sure ownership adds to 100%, approve the transaction, and you're done.
You can also create a Split by pasting or uploading a CSV. Lines should be separated by a comma, with each line containing a single Recipient and their corresponding share (also comma-separated). Hit "Validate list" to make sure there are no errors before submitting your transaction.
There are two optional parameters when creating a Split: setting a distributor fee, and making the Split mutable.
Distributor Fee
This is the percentage of the balance rewarded to whoever distributes the balance. This fee creates an arbitrage opportunity—when the cost to distribute is less than the fee multiplied by the balance—thereby incentivizing third parties to distribute balances on behalf of Recipients. 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. Setting the fee to 0% removes the reward entirely. Learn more
Mutable
A Mutable Split is one that can be modified in the future by a single controlling address. As the creator of a Mutable Split, you must specify the controlling address at the time of creation. The controlling address can be any valid account (EOA or SC), but make sure it's able to approve transactions so it can interact with the Split directly. While Mutable Splits add more flexiblity, they inherently require more trust. Mutable Splits can be made immutable, but never the other way around. Learn more
Calling the Contracts
Creating a Split from another product/app is easy. All you have to do is call
createSplit
on SplitMain
. A
high-level overview of the contracts & functions can be found
here. For implementation details, you can check out
the Natspec Comments for SplitMain
and
SplitWallet
, or view the contracts directly on
GitHub.