Onchain revenue management with Splits

Splits

Splits βeta

About
Splits is a set of composable smart contracts that make it easy to manage onchain revenue.
Token name
N/A
Protocol

Splits is a set of composable smart contracts that simplify revenue management on the blockchain. The protocol takes the form of a hyperstructure that will run for free, forever, without any maintenance or trusted third parties.

How works revenue management

Flow of funds

There are three stages in the flow of funds through the system to the final recipients.

  • Receiving. ETH and ERC20 tokens can be sent directly to any of the contracts by simply using the contract address. This address can be inserted into any third-party platform or contract, including exchanges. The funds received by the contract will be held as a balance until distribution occurs.
  • Distributing. When distribution occurs, the funds held as a contract balance will be distributed to each recipient's account in the protocol according to the contract rules.
  • Withdrawing. Once the contract balance is distributed, funds can be withdrawn to any of the recipients' wallets. Since funds are accumulated in one place, when funds are withdrawn, they are all transferred to all contracts for that recipient. This saves people from having to initiate a separate withdrawal for each contract they earn from.

Warehouse

All payments in the Splits ecosystem accumulate in the Warehouse. It is built on the ERC6909 standard, so all funds stored here on behalf of users will show up in compatible wallets. Any user earning in the Splits ecosystem can access their assets directly from the warehouse.

ERC6909 is a multi-token contract as a simplified alternative to the ERC-1155 Multi-Token Standard. In contrast to ERC-1155, callbacks and batching have been removed from the interface and the permission system is a hybrid operator-approval scheme for granular and scalable permissions. Functionally, the interface has been reduced to the bare minimum required to manage multiple tokens under the same contract.

Warehouse has a unique identifier for each token. 
Deposits to the warehouse are made for a specific token and user and are held on their behalf until claimed.
Users can transfer their rights to these underlying tokens in the same way they can transfer their rights to ERC20 tokens.
Users who want to automate withdrawals can do so by setting a withdrawal incentive. This will incentivize bots to withdraw funds for the user directly to their account.
Users who wish to prohibit third parties from withdrawing funds on their behalf can do so by suspending external withdrawals to the warehouse.
Warehouse is an immutable, non-renewable contract that is not owned or managed by a team.

Split distribution

Separating the splitter from where the distributed funds are stored allows for different types of splitters with different tradeoffs for different use cases.

Each split can now act as a wallet for smart contracts, with the owner having full execution access from the split address. This allows the owner to suspend mailings.

Each split gets its own address and proxy to maximize compatibility with other contracts on the chain. 

Recipients, owners and storage fees are stored on the chain.

The contracts don't set a maximum limit on the number of recipients for Split. Therefore, the practical limit depends on the gas limit in the network blocks.

Waterfall payments

Waterfall acts as a debt instrument, allowing you to specify the order in which payments occur. This is useful when you want to pay one payee a certain amount before paying another recipient. Like a split, a waterfall is a payable smart contract that can be written for either inflows or outflows.

Pass-Through Wallet

Pass-Through Wallet is a wallet for smart contracts with the ability to pay and send paused tokens.

Funds are stored on the contract balance until a payment is called. At any time, the owner can pause the payment or update the address.

Vesting

Vesting allows multiple isolated token streams to vest in an address for a specified period of time. All streams within a contract share a common vesting period, but each stream can start vesting or issuing tokens independently of each other.

Once a vesting stream is started, tokens in that stream will vest linearly, and by the end of the vesting period, all tokens will be 100% vested. At any time, anyone can transfer some of the vested rights to the recipient.

Because Vesting is immutable, it's designed to be used in conjunction with mutable Split or any contract that can be modified. Investing in an immutable contract is equivalent to sending all tokens at once, as there is no way to revoke the flow or remove funds within the investment before the flow begins.

There's no need to duplicate existing vesting, so each vesting must have a unique combination of vesting period and recipient.

Swapper

Swapper is a payable smart contract that converts all incoming tokens into a single output token. When the swapper receives ETH and ERC20, they are automatically exchanged for the output token according to the oracle's clearing price and the swapper's discount. If the oracle can't determine the clearing price (i.e., it doesn't support the received tokens), the swapper owner must process these tokens manually.

Each Swapper can be owned, which means the owner has full control over the deployment. The owner can change the beneficiary or oracle, suspend the contract, and perform arbitrary transactions at will. It is recommended to remove the owner or make it a multisig.

Swap oracle

The oracle is modular, so be careful to use a secure oracle with reasonable settings for the desired behavior. You can use any oracle contract you like. Splits currently offers two oracles, Uniswap v3 TWAP and Chainlink.

Liquid Splits

Unlike standard splits where ownership is controlled manually, Liquid Splits use NFT to transfer ownership. This allows each recipient to control their own share of the split. The Liquid Splits template uses the ERC-1155 NFT contract and a mutable split.

The ERC-1155 standard was used because it allows for batch transfers. This means that someone can transfer 1% of a split (10 NFTs) in a single transaction, rather than 10 separate ones (which would be required when using the ERC-721 standard).

When the Liquid Split is created, the ERC-1155 contract is deployed and 1,000 NFTs are minted for the initial recipients, each receiving their share of the NFTs. The ERC-1155 contract is then set up as the controller for the variable split. Funds are accumulated 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 the current NFT holders and immediately distributes the balance.  

NFTs should only be treated as funds that have not yet been received by Liquid Split. Because Liquid Split recipients are updated at the time of distribution, it's not safe to assume that an NFT Liquid Split purchase will entitle anyone to any portion of the current balance. The seller could easily distribute the balance just prior to transferring the shares to you, which would result in the seller receiving that portion of the balance.
 

Do you want to join the Envelop NFT 2.0 aggregator?

  • ENVELOP telegram group
  • ENVELOP. NFTs YouTube Channel
  • NIFTSY is token
  • ENVELOP telegram group (Russia)
  • Github of our NFT project
  • ENVELOP TikTok Channel
  • Instagram envelop.project
  • ENVELOP Discord group
  • Blog about Web 3.0
  • Our twitter
  • ENVELOP Facebook
  • NFT 2.0 News