Unlike standard Splits where ownership is manually controlled, Liquid Splits use NFTs to make ownership transferable. This allows each recipient to control their share of the Split themselves. This template uses an ERC-1155 NFT contract and a mutable Split. You can integrate Liquid Splits into your own NFT project (including adding your own artwork etc) by forking this repo (opens in a new tab).
- Creation form (opens in a new tab)
- Contracts & NatSpec (opens in a new tab)
- Github (opens in a new tab)
- Example (opens in a new tab)
- Related: Split, ERC-1155 (opens in a new tab)
When adding this functionality to your contracts, if
sum(percentAllocations) != 1e6 the Split will fail to update and funds will be stuck! Be careful when
managing supply (including burns, rounding on odd numbers, etc). For this
reason there is no burn function exposed in our implementation.
- When a Liquid Split is created, an ERC-1155 contract is deployed and 1,000
NFTs are minted to the initial recipients with each recipient receiving their
share of the NFTs. The ERC-1155 contract is then set as the controller for a
mutable Split. Funds pile up in the Liquid Split contract (which is the
ERC-1155 contract) and whenever a balance is distributed the NFT contract
updates the Split to match current NFT holders and immediately distributes the
balance. This is done by calling
updateAndDistribute(opens in a new tab).
- NFTs should only be considered to represent funds that have not yet been received by the Liquid Split. Because recipients of a Liquid Split are updated at the time of a distribution, it is unsafe to assume that acquiring Liquid Split NFTs will entitle someone to any portion of the current balance. A seller could easily distribute the balance right before transferring you the shares, causing them to receive that portion of the balance.
- We recommend setting the distribution incentive on Liquid Splits to be slightly higher (i.e., ~2-3% instead of ~1%). This is because distributions require more gas given the need to both update and distribute the Split.
- The ERC-1155 standard was used since it allows batch transfers. This means that someone can transfer 1% of the Split (10 NFTs) in a single transaction instead of 10 separate ones (which would be required if using the ERC-721 standard).