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
  • Seller Fee
  • Contract Fee
  • Storage Fee
  • Authenticator Fee
  • Applying the Fees
  • Calculating the ERC-2981 Fee Percentage
  • Fee Splitting
  • Default and Token-Specific Fees

Was this helpful?

  1. Platform Technical Info

Fee Structure

Last updated 1 year ago

Was this helpful?

As shown in the picture below, OpenChrono's fee structure consists of multiple parts to cover different costs tied to the platform operation, development, and maintenance.

As shown in the image above. It is important to note that the seller sets a desired sale price. This price is used to calculate the fees over that amount. The buyer will thus pay more than this set price and the seller will receive the asking price minus marketplace fees.

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 paid by the buyer, to compensate for the costs of operating the smart contracts and software platform.

Storage Fee

The storage fee is paid by the buyer, to compensate for the costs of storing the watch in a vault and operating the OpenChrono logistics network.

Authenticator Fee

The authentication fee is paid by the buyer, to compensate for the costs of the authentication process and the liability associated with offering warranty contracts.

Applying the Fees

When a watch is purchased via the OpenChrono platform the fees are applied over the seller's 'asking price' as described above.

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

Now the seller fee (marketplace fee) is calculated and subtracted from the seller's set price. This is the amount that the seller receives. The seller fee amount is transferred to the appropriate account.

Calculating the ERC-2981 Fee Percentage

All percentages set in the contract are based on the seller's 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=priceseller set⋅(fseller+fbuyer)totalFeeAmountOverListing=price_{seller \text{ } set} \cdot \left( f_{seller} + f_{buyer} \right)totalFeeAmountOverListing=priceseller set​⋅(fseller​+fbuyer​)

pricetotal=priceseller set⋅(1+fbuyer)price_{total} = price_{seller \text{ } set} \cdot \left( 1 + f_{buyer} \right)pricetotal​=priceseller set​⋅(1+fbuyer​)

ftotal=feeAmountOverListingpricetotal=priceseller set⋅(fseller+fbuyer)priceseller set⋅(1+fbuyer)=fseller+fbuyer1+fbuyerf_{total} = \frac{feeAmountOverListing}{price_{total}} = \frac{price_{seller \text{ } set} \cdot \left( f_{seller} + f_{buyer} \right)}{price_{seller \text{ } set} \cdot \left( 1 + f_{buyer} \right) } = \frac{f_{seller}+ f_{buyer}}{1 + f_{buyer}}ftotal​=pricetotal​feeAmountOverListing​=priceseller set​⋅(1+fbuyer​)priceseller set​⋅(fseller​+fbuyer​)​=1+fbuyer​fseller​+fbuyer​​

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

Fee Splitting

After a crypto payment has been made, the fees are automatically split among the receivers of those fees. For FIAT payments this is done completely outside of the smart contracts.

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

Any additional/unknown fees can be manually withdrawn and distributed as seen fit from the TimePiecePayment contract by OpenChrono.

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 for some token the authenticator would be different, or if the storage fee would be different, 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.