S

Sublimate.Finance – Streamable Tokens

Make every second count! Sublimate lets you accept continuous financial support from anyone—paid automatically over time in ERC-20 tokens per block—so you can focus on making and doing amazing things.

S

Sublimate.Finance – Streamable Tokens

Make every second count! Sublimate lets you accept continuous financial support from anyone—paid automatically over time in ERC-20 tokens per block—so you can focus on making and doing amazing things.

The problem Sublimate.Finance – Streamable Tokens solves

Sublimate is a DeFi smart contract app that lets artists, open-source developers, content creators, and charity organizations accept continuous financial support from anyone in the form of streamable tokens.

For supporters:

  • Reward your favorite artist, creator, or charity on a continual basis, at your own pace.
  • Mint streamable tokens (strETH, strDAI, etc) by depositing ETH, DAI or any ERC-20 token.
  • Start a "streamable subscription" to a recipient by choosing a token, a duration, and a rate or maximum amount. Funds will be streamed out of your balance and into the recipient's every time a block is added to the blockchain. You can cancel a subscription at any time.
  • You pay gas fees only when starting/canceling subscriptions, and converting between streamable and non-streamable tokens. There are no recurring fees during the subscription itself.

For creators:

  • Connect your wallet address to build a personalized "creator page" ready to receive streamable tokens. You'll get a custom sublimate.finance link to share to your fans and followers (optionally personalizable by connecting to ENS/Unstoppable Domains, e.g. sublimate.finance/creator/vitalik.eth or sublimate.finance/creator/brad.crypto).
  • Track your balance, number of supporters, and other analytics using our built in dashboard powered by The Graph.
  • Use our embeddable subscribe widget so anyone can support you from your newsletter, blog or website.
  • Pay it forward – showcase other creators you're supporting!

About the protocol:

  • Streamable Tokens are an extension of ERC-20 overriding the balanceOf() and transfer() methods. Subscriptions are stored within the contract and defined as a rate in tokens per block and a max amount of tokens to send.
  • The balance of streamable tokens can be dynamically computed at any time, using the following formula:

    balance = lastUpdatedBalance + (incomingRate - outgoingRate) * (block - lastUpdatedBlock)

    . Subscriptions can be canceled at any time by the sender.

Challenges we ran into

We are constantly looking for opportunities to support more use cases and make our streamable token platform more robust. Currently, we are working on:

  • streamable versions of interest bearing tokens and liquidity pool shares from Aave, Compound, and Uniswap, so creators and subscribers can earn extra interest/fees while supporting each other. We already have wrapping contracts for ETH and regular ERC-20 tokens; creating a streamable ERC-20 (e.g. strDAI) is as easy as passing the underlying token address to the StreamableWrappedERC20 constructor and deploying.
  • using Chainlink/Tellor price oracles with The Graph to accurately calculate the total fiat value of a subscription (since each bit of token streamed within a subscription can have a different price). Our subgraph calculates block-by-block analytics for users of streamable tokens, including subscriber counts, account balances and net incoming and outgoing rates across all subscriptions.
  • a Chainlink/Tellor feed tracking the average block time of the past day/month/year, so that instead of taking a rate of tokens per block, our smart contract can take a time interval as input and accurately estimate how many blocks a subscription should last.
  • unfunded and endless subscriptions (e.g. subscribe for 1 year without holding the full amount up front, or even forever). The currently deployed implementation is limited in that all subscriptions must be funded up-front and last a finite duration.
  • multiple subscriptions to the same address.
  • deploying the front-end to IPFS once our protocol goes live on mainnet. We used the Svelte/Sapper web framework to build our dapp as a dynamic single page application, ready to deploy as a progressive web app or deployed to IPFS for censorship resistance.
  • storing profiles on IPFS for scalability. Our profile editor lets creators associate a custom avatar, cover image, description and social network links with their address to display on their sublimate.finance/creator page.

Discussion