Fee Structure
Last updated
Last updated
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.
The seller fee is paid by the seller as a fee for making use of the OpenChrono platform.
The contract fee is paid by the buyer, to compensate for the costs of operating the smart contracts and software platform.
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.
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.
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.
This total fee percentage is only used on secondary marketplaces that make use of ERC-2981.
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.
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.
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 and the total buyer fee percentage is , then the single fee percentage over the total amount for ERC-2981 is (see the derivation below).