OpenChrono
  • OpenChrono Docs
  • About OpenChrono.io
    • What is OpenChrono?
    • Digital Twins & TimePiece Passports™
    • OpenChrono Architecture
    • Authentication Standards
    • Authentication Process
    • Our Team
    • Our Partners
  • Product Tour
    • Marketplace
    • Platform Navigation
      • Search For A Watch
      • Buy A Watch
      • Sell A Watch
      • Redeem A Watch
      • Account Wallets
      • Lending
    • Platform Fees
    • Payment Methods
    • Vault Your Watch
    • Buyer Protection
    • Seller Protection
  • Platform Technical Info
    • Smart Contracts
    • TimePiece Passport™ Tech
    • Royalties
    • Escrow Lifecycle
    • Contract Addresses
    • Minting
    • Creating A Digital Twin
    • Document Updates
    • Metadata Format
    • Deploying & Upgrading
    • Fee Structure
  • Logistics & Legal
    • Secure Vaults & Insurance
    • KYC / AML Checks
    • Last Mile Delivery
  • User Agreement
    • Users Terms of Service
    • Website Terms of Service
    • Privacy & Cookie Notice
  • Resources
    • WhitePaper
      • Untitled
      • Page 1
    • Useful Links
    • Careers
    • Investments & Funding
    • About OpenChrono
Powered by GitBook
On this page
  • High-Level Overview
  • Fee Structure
  • Seller Fee
  • Contract Fee
  • Storage Fee
  • Authenticator Fee
  • Calculating the ERC-2981 Fee Percentage
  • Default and Token-Specific Fees
  • Applying the Fees
  • Fee Splitting

Was this helpful?

  1. Platform Technical Info

Royalties

Last updated 1 year ago

Was this helpful?

High-Level Overview

There are several fees/royalties associated with a transaction on the OpenChrono platform. These are in place to incentivise quality of work and compensate the authenticator, storage, and maintenance costs.

The seller also pays a marketplace 'listing fee'.

On every sale via the OpenChrono marketplace this fee structure will be applied.

There are two points of view with regard to the royalties. The first is royalties for secondary marketplaces. At the time of writing, the most well-known royalty standard for smart contracts is ERC-2981. This ERC ensures that a base fee, a token-specific fee, and a fee-receiver can be set. It does not enforce the payment of it. It only enforces that the contract gives royalty information. Secondary marketplaces such as OpenSea only partly support this as a voluntary fee.

It is important to know that ERC-2981 calculates the royalty amount over the given price. Meaning that the given price already includes the fees.

Another point of view is for sales via the OpenChrono website. Here ERC-2981 is not used. Instead, the fee structure is applied directly. This is to avoid unwanted rounding errors and to keep the calculations clean.

The TimePieceNFT contract supports ERC-2981. The fee percentage is calculated and set by the TimePiecePayments contracts based on the given fee structure. More on this later.

As shown in the picture above, the fee structure of OpenChrono consists of multiple parts to cover different costs.

Fee Structure

As shown in the image above. It is important to note that the seller sets a desired asking price. This price is used to calculate the fee amounts. The buyer will thus pay more than this set price and the seller will receive less than this set price.

Seller Fee

The seller fee is ‘paid’ by the seller as a fee for making use of the OpenChrono platform.

Contract Fee

The contract fee is to compensate for the costs of operating the smart contracts.

Storage Fee

The storage fee of to compensate for the costs of storing the watch in a vault.

Authenticator Fee

The authentication fee is to compensate for the costs of the authentication process.

Calculating the ERC-2981 Fee Percentage

All percentages set in the contract are based on the seller-set price. As stated before, ERC-2981 takes the fee over the provided (total) price (so including fees). Assuming that the total seller fee percentage is fsellerf_{seller}fseller​ and the total buyer fee percentage is fbuyerf_{buyer}fbuyer​ then the single fee percentage over the total amount for ERC-2981 is fseller+fbuyer1+fbuyer\frac{f_{seller}+ f_{buyer}}{1+f_{buyer}}1+fbuyer​fseller​+fbuyer​​ (see the derivation below).

totalFeeAmountOverListing=pricesellerset⋅fseller+fbuyerpricetotal=pricesellerset⋅(1+fbuyer)ftotal=feeAmountOverListingpricetotal=pricesellerset⋅fseller+fbuyerpricesellerset⋅(1+fbuyer)=fseller+fbuyer1+fbuyer\begin{align*} &totalFeeAmountOverListing = price_{seller set} \cdot f_{seller} + f_{buyer} \\ &price_{total} = price_{seller set} \cdot \left( 1 + f_{buyer} \right) \\ &\begin{align*} f_{total} &&= \frac{feeAmountOverListing}{price_{total}} \\ &&= \frac{price_{seller set} \cdot f_{seller} + f_{buyer}}{price_{seller set} \cdot \left( 1 + f_{buyer} \right)} \\ &&= \frac{f_{seller} + f_{buyer}}{1 + f_{buyer}} \end{align*} \end{align*}​totalFeeAmountOverListing=pricesellerset​⋅fseller​+fbuyer​pricetotal​=pricesellerset​⋅(1+fbuyer​)ftotal​​​=pricetotal​feeAmountOverListing​=pricesellerset​⋅(1+fbuyer​)pricesellerset​⋅fseller​+fbuyer​​=1+fbuyer​fseller​+fbuyer​​​​

This total fee percentage is only used on secondary marketplaces that make use of ERC-2981.

Default and Token-Specific Fees

ERC-2981 supports default and token-specific fees. Therefore the TimePiecePayment also supports this.

The fee structure consists of an array of receivers and the corresponding fee percentage. The default fee must always be completely filled with valid data.

If an authenticator requests a higher or lower fee, or the storage fee is to change due to asset value, then this is possible by setting the new value in the token fee structure in the same place as it is in the default fee, and keeping all not-updated fields zero. After setting this token fee structure, the contract can combine the default and token structure by overwriting the default fee structure with the non-zero values in the token structure. This will result in a single fee structure to use for a specific token. See the image below for a visual flow.

Applying the Fees

When a watch is bought via the OpenChrono website the fees apply over the seller-set price as stated before.

First, the buyer fees are calculated and added together to the seller-set price. This is the amount that the buyer needs to pay. All the buyer fees are transferred to the appropriate account.

Next, the seller fee is calculated and subtracted from the seller-set price. This is the amount that the seller receives. The seller fee amount is transferred to the appropriate account.

Fee Splitting

After a payment has been made and the fees are in the TimePiecePayment contract, OpenChrono can distribute the fees.

Fees can come both from the OpenChrono marketplace and from secondary marketplaces. From secondary markets there is no indication on which tokens it was from (without spitting through blockchain transactions).

OpenChrono can automatically split fees in the contract by giving a listing price and token ID. Any additional/unknown fees can be manually withdrawn and distributed as seen fit.

Diagram displaying the OpenChrono fee structure
Token structure visual flow