# Drips Docs ## Accessing Drips Drips is an open-source application and protocol built on Ethereum, a publicly-accessible, global blockchain. While we've built the Drips App for simple interaction with Drips' underlying smart contracts, there are a multitude of alternative tools that enable interaction with the Drips Protocol, some of which are listed below. * [The Drips SDK][sd] is a Javascript SDK that allows any application or user-created code to interact directly with the Drips smart contracts and utilize the full feature set of the protocol in whatever way they wish. Drips contracts can be freely integrated into any website, dapp or application at any time using the SDK. * [Etherscan](https://etherscan.io/) is a block explorer and analytics platform for Ethereum. Other networks have similar block explorers, often also operated by Etherscan. The Drips contracts can be accessed using these block explorers at the addresses specified on the [Smart Contract and Subgraph Details](the-protocol/smart-contract-details) page. Other networks have similar block explorers. * [ethBuild][eb] is an educational sandbox for web3, including drag-and-drop programming and open source building blocks. With ethBuild, you can call a function on an Ethereum contract (for example, to create a Drip or Split configuration) by sending it a transaction with the function arguments in the data. * [MyEtherWallet][me] is a free, client side interface helping you interact with the Ethereum blockchain. Their easy-to-use, open-source platform allows you to generate wallets, interact with (Drips) smart contracts, and more. * The [web3.js Library][w3] makes it easy to interact with smart contracts on the Ethereum blockchain, including the Drips smart contracts. * The [ethers.js Library][et] is another Javascript library for interacting directly with Ethereum smart contracts, including the Drips smart contracts. [sd]: https://github.com/drips-network/sdk [sc]: the-protocol/smart-contract-details [eb]: https://eth.build/ [me]: https://www.myetherwallet.com/ [w3]: https://web3js.readthedocs.io/en/v1.7.5/ [et]: https://docs.ethers.io/v5/ ## FAQ #### Are there fees for using Drips? The Drips Protocol is free to use and does not impose any fees on users. Users will still need to pay gas fees to interact with the Drips Contracts as they would with any contract on Ethereum. Third-party apps building on Drips may choose to impose fees of their own. #### Can I split or stream funds directly to exchange-managed Ethereum addresses? No. When an address receives funds on Drips, the owner of that address needs to *collect* them before they are transferred to their wallet. Exchanges typically offer non-custodial addresses specifically for receiving ERC-20 tokens on various networks, but offer no way to sign contract interactions from those addresses. As a result, funds sent on Drips to such a custodial, exchange-managed address may be unrecoverable. For this reason, only split or stream funds to self-custodial wallets, such as externally-owned wallets (EOAs) or smart contract wallets (multisigs) like Safe. #### Do I need to have ETH in my account to send or receive tokens using Drips? Users of Drips generally do need to have ETH (or the analogous gas token to ETH on networks other than Ethereum) available in their wallet to cover transaction fees, if they wish to create streams or Splits to stream or share funds with others. Users do not need to have ETH in their accounts to receive funds from other users who are streaming or Splitting to them. However, they will need to have a small amount of ETH available in their account when they are ready to collect funds sent to them (again, to cover gas costs of sending the collect transaction). In certain situations, Drips may "sponsor" the claiming of projects or collecting of funds. In this case, the transaction screen will indicate that gas is "paid for by Drips". #### What happens to funds that have been streamed to a Github repository that is never claimed by its owner? For now, nothing happens to these funds and they will remain in Drips waiting for the repository owner to claim them forever. It's possible that in the future the governance of the Drips protocol will decide to change this, so that funds given to a Github repository that go unclaimed are donated to an alternative public goods fund like Gitcoin, or to some other cause. ## Managing Drip List and project visibility import Figure from '../../components/Figure' By default, newly-claimed projects and created Drip Lists are publicly visible across the Drips App, including on their owner's profiles. However, as the owner of a project or Drip List, you may choose to *hide* them. In addition, Drip Lists transferred to another address must be explicitly un-hidden before appearing on the new owner's public profile.
### Controlling visibility of a project or Drip List In order to hide or un-hide a project or Drip List, connect your wallet, navigate to the project or Drip List in question, click "Edit" next to its name, and toggle the "Hidden" switch. Lastly, confirm the change in your wallet. #### Visibility of transferred Drip Lists Drip Lists are represented on-chain as ERC-721 tokens (NFTs), and may thus be transferred between Ethereum addresses. Due to the nature of the blockchain, anyone may send any other address any token(s) they own, even without explicit consent by the receiving party. In order to prevent unwanted Drip Lists to inadvertedly appear on users' profiles, Drip Lists are **automatically hidden** upon transfer, with the caveats listed below. Should you receive a Drip List that you wish to display on your profile, simply un-hide it as described above. #### Effects of hiding a project or Drip List When a project or Drip List is hidden, it will: * no longer appear on their owner's public Drips profile, * be hidden behind a "Show hidden" toggle on the owner's own dashboard, * be greyed out on any other projects, Drip Lists, or users that already split or donated to the now-hidden project or Drip List pre-hiding, * no longer allow creating new donations or splits to it via the official Drips App, and * be hidden from Google and other search engines. However, due to Drips being an open & transparent, blockchain-based protocol: * Hidden projects or Drip Lists are **not** hidden on the Ethereum blockchain, and may be discovered by looking at raw blockchain data itself. * Users with direct links to hidden projects or Drip Lists **can still access them**, but the app will display a banner informing them that the project or Drip List is hidden. * If other projects or Drip Lists are (still) splitting funds to a now-hidden project or Drip List, the hidden project will **still appear** on those entities' pages, but will be greyed out and marked as hidden. * While the Drips App will generally prevent new funds from being sent to hidden projects or Drip Lists, **it is still possible to send funds** by interacting directly with the underlying smart contracts, through third-party apps, or if a split to a now-hidden project was established before it was hidden. ## Usage with a Safe multisig You can use the Drips App as a Safe App for conveniently proposing transactions to your Safe. #### Launching Drips as a Safe App Within your Safe's UI, simply navigate to the *Apps* tab and launch *Drips*. This is supported on Ethereum mainnet and [https://safe.filecoin.io/](https://safe.filecoin.io/), but on other networks you may need to add the respective Drips App URL as a "Custom Safe App". For example, on Optimism, click "Add custom Safe App" and enter `https://optimism.drips.network` as the URL. #### Interacting with Drips through a Safe You can generally interact with Drips the same way as you would with an EOA wallet. There are a few things to consider, however. ##### Edits to streams or balances only apply at the time the transaction is executed When you create, pause or edit a stream, the edits will only apply at the exact moment your Safe executes the transaction, not at the timestamp of proposal. For instance, this means that an outgoing stream that you pause will continue streaming until your Safe executes the pause transaction. When scheduling a stream for the future, ensure that the transaction is executed before its scheduled start date. Scheduled streams begin streaming at the time of transaction confirmation *or* any scheduled start date, depending on which date is later. ##### Some transactions are invalidated by updates to a Drips account's state Many interactions with the Drips app rely on a specific configuration of the account's stream receivers. Such transactions may fail if the configuration is altered between the proposal of the transaction and its actual execution. Thus, configuration-altering interactions must be made with extra care, because they may invalidate other pending transactions. Such interactions include: * Adding funds (Does not invalidate other pending transactions) * Collecting funds (Does not invalidate other pending transactions) * Creating a stream (Invalidates other pending transactions) * Editing a stream (Invalidates other pending transactions) * Deleting a stream (Invalidates other pending transactions) * Pausing / un-pausing a stream (Invalidates other pending transactions) When editing streams, all interactions are *scoped per ERC-20 token*, meaning that a transaction changing streams for token A never invalidates another interacting with token B. Additionally, edits to your Splits receivers will invalidate other transactions altering Splits receivers, but are not invalidated by any edits to your account's stream receivers. Consider the following example: * You propose a transaction that creates a new stream streaming token A. * Before executing that transaction, you propose another transaction that adds funds for a token A. * You execute the 1st transaction and a new stream is created, altering your account's state of stream receivers. * The 2nd transaction would fail if executed, because it relies on the account's specific state before the new stream was created. However, the following scenario works fine, because adding funds does not alter your account's stream receiver state: * You propose a transaction that adds funds for a token A to your Drips account. * Before executing that transaction, you propose another transaction that creates a new stream streaming token A. * You execute the first transaction, and funds are added to your Drips account. * You execute the second transaction, and the new stream is created. ## Claim your open-source project import Figure from '../../components/Figure' import Video from '../../components/Video' A *Project* on Drips represents an open-source repository on GitHub, with support for other Git hosts coming soon. Every GitHub repository starts out on Drips as *unclaimed*. In this state, it can already be funded with a Drip List, or added as a dependency of another project. At any point, the project's maintainers can *claim* their project on Drips, configure a list of *maintainers* and *dependencies*, and collect any previously-received earnings. Future incoming funds are then automatically split as configured by the project maintainers, resulting in deeply-nested dependencies receiving their allocation. :::caution Want to claim your project for Drips for Privacy? Make sure you're using the [Optimism deployment of the Drips app](https://optimism.drips.network). ::: :::info If you haven't yet, learn more about the Drips Network's fundamentals in our [introduction](/). :::