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)
- 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
- 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
receive(), allowing for Splits to accept hard gas-capped
SplitWallet(opens in a new tab) is the implementation logic for
SplitProxydelegates all calls to
SplitWalletother than handling
receive()itself to avoid the gas cost with
DELEGATECALL. All funds pile up in
SplitMain(opens in a new tab) until
withdrawis called for a recipient.
- We recommend reviewing the contracts flow of funds.
Ethereum – 1
Optimism – 10
BSC – 56
Gnosis – 100
Polygon – 137
Fantom – 250
Arbitrum – 42161
Avalanche – 43114
Aurora – 1313161554