Ocean Protocol aims to be a community-driven project. Through OceanDAO, the project aims at achieving decentralized governance and sustainability loop. For the project to grow and improve, the participants are rewarded for their contributions. The Ocean Protocol's smart contracts include a fee mechanism to maintain the sustainability loop.
Swap fees are collected whenever someone swaps a datatoken for basetoken (e.g., OCEAN) or basetoken for datatoken. The swap could be inside a pool (using an automated market maker) or in a fixed-rate exchange.
These are the fees that are applied whenever a user swaps basetoken or datatoken:
- Publisher Marketplace swap fee
- Consumer Marketplace swap fee
- Provider Consumption Fees
- [Ocean Community Fee](#ocean-community-fee)
### Publish fee
Publish fees will be charged to a publisher when they publish an asset.
Currently, no fees are applicable in Ocean's default marketplace. However, it is possible to charge a publishing fee in the custom marketplace by adding an extra transaction in the publish flow.
Ocean's smart contract collects the **Ocean Community fee** during a swap operation. These fees are reinvested in community projects via Ocean DAO and other initiatives. Currently, this fee is set to 0 (as long as either Ocean or H20 are used as the base token in the market) in the smart contract but can be updated by the Ocean Protocol foundation.
Provider is a component of Ocean Protocol's ecosystem which facilitates data consumption, starts compute jobs, encrypts DDOs, and decrypts DDOs. Provider also validates if the user can access a particular data asset or service. To know more about Provider, click [here](https://github.com/oceanprotocol/provider).
Provider fees are paid to the individual or organization running their Provider instance whenever a user consumes a data asset or swaps a datatoken for a basetoken. These fees can be set to an absolute amount, and the receiver can also decide which token to receive the fees in - they don't have to be in the same currency used in the consuming market.
Provider fee can also be used to charge for computing resources. Based on the compute resources needed to run an algorithm in the Compute-to-Data environment, a consumer can choose the amount to pay according to their needs.
| publishMarket: Pools | Set in market config, by OPF Value = 0 | Set in the market config, by the publishing market |
| publishMarket: FixedRate | Set in market config, by OPF Value = 0 | Set in the market config, by the publishing market |
| consumeMarket: Pools | Set in market config, by OPF Value = 0 | Set in market config, by consumeMarket |
| consumeMarket: FixedRate: ERC20Template | Hardcoded to 0 in contract | |
| consumeMarket: FixedRate: EnterpriseTemplate | Set in market config, by OPF Value = 0 | Set in market config, by consumeMarket |
| Ocean Community: Pools & FixedRate: basetoken is OCEAN, H2O, .. (“approved token”) | OPF gov can update in smart contract Value = 0.1% | |
| Ocean Community: Pools & FixedRate: other basetoken | OPF gov can update in smart contract Value = 0.2% | |
| Pool Liquidity Provider (LP): Pools only | Default 1%; Set by pool creator on contract deployment Min allowed (in contract) = 0.001% Min allowed (in Ocean Market) = 0.1% Max allowed (in contract) = 10% Min allowed (in Ocean Market) = 10% | |
| <b>Publish Fees</b> | | |
| (no publish fees) | - | - |
| <b>Order Fees (taken on order/consume) The consumer has 1.0 datatokens, they use it to get access to the dataset.</b> | | |
| publishMarket - Fee is an absolute value, in any token. E.g. 5 USDT | Set in market config, by OPF Value = 0 | Set in market config, by PublishMarket |
| consumeMarket - Fee is an absolute value, in any token. E.g. 2 DAI | Set in market config, by OPF Value = 0 | Set in market config, by ConsumeMarket |
| Ocean Community - Fee = fixed price in DT | Goal: to avoid wash consume in DF, assuming APY <125%)OPFgovcanupdateValue =0.03DTforallinitialtemplates||
| Token in which fee is charged: `PROVIDER_FEE_TOKEN` | OCEAN | E.g. USDC |
| Download: COST_PER_MB | Set in Provider envvars, by OPF Value = 0 | Set in Provider envvars, by 3rd party running Provider |
| Compute: `COST_PER_MIN` | Set in OperatorEngine envvars, by OPF OPF Provider hardware setup: 1 cpu, 60 secs max Value = 0 | Set in OperatorEngine envvars, by 3rd party running Provider |
| Compute: `COST_PER_MIN` | Set in OperatorEngine envvars, by OPF OPF Provider hardware setup: 1 cpu, 1 h max Value = 1.0 OCEAN / min (high cost incentivizes serious people to run their own provider) <won’tbeintimeforv4launch> | Set in OperatorEngine envvars, by 3rd party running Provider |
| Ocean Community (percent from above) | OPF gov can update in smart contract 0% of Provider fee | |