Split
Split acts as an equity instrument by letting you define the percent of future value each recipient will earn. It's a payable smart contract that distributes all ETH & ERC20 tokens it receives among recipients according to pre-set ownership percentages.
- Create at split.new (opens in a new tab)
- Github (opens in a new tab)
- Contracts & Natspec (opens in a new tab)
- SDK
- Example (opens in a new tab)
- Audit (opens in a new tab)
How it works
- Each Split is a payable smart contract with two more more recipients. Each
recipient has an address and an ownership percent. ETH and ERC20s sent
directly to the Split are held in the Split's balance until
distributeETH
ordistributeERC20
are called. - Recipients, ownerships, and keeper fees are stored onchain as calldata and re-passed as args and validated via hashing when needed.
- Each Split gets its own address and proxy for maximum composability with other
contracts onchain. For these proxies, we extended
EIP-1167 Minimal Proxy Contract (opens in a new tab) to
avoid
DELEGATECALL
insidereceive()
, allowing for Splits to accept hard gas-cappedsends
&transfers
. SplitWallet
(opens in a new tab) is the implementation logic forSplitProxy
.SplitProxy
delegates all calls toSplitWallet
other than handlingreceive()
itself to avoid the gas cost withDELEGATECALL
. All funds pile up inSplitMain
(opens in a new tab) untilwithdraw
is called for a recipient.- We recommend reviewing the contracts flow of funds.
Addresses
Ethereum – 1
Optimism – 10
BSC – 56
Gnosis – 100
Polygon – 137
Fantom – 250
Base – 8453
Arbitrum – 42161
Avalanche – 43114
Zora – 7777777
Aurora – 1313161554