Polymesh requires fees in POLYX for every on-chain transaction, and certain native functions have additional fees called protocol fees. Fees are split between node operators and the Network Treasury.
One of the primary uses for POLYX on Polymesh is for paying fees.
Fees are charged in POLYX for all chain uses. Fees on Polymesh help to incentivize the growth and adoption of the ecosystem while also operating to protect the chain from denial-of-service or spam attacks.
This blog post takes a look at the types of fees on Polymesh, how they are determined, and who receives the funds.
All fees on Polymesh are paid in the networks’ native token, POLYX. There are two types of network fees:
Every on-chain transaction on Polymesh must be paid for using POLYX.
Transaction fees on Polymesh are charged for the transaction involved in any on-chain action, from sending POLYX to another user to renaming a portfolio to creating a security token.
Here are a few sample fees for common transaction types:
For more sample fees, visit https://developers.polymesh.network/polymesh-docs/network/fees.
Transaction fees are split between the block-producing node operator and the Network Treasury using a 20 / 80 ratio. Splitting fees this way provides a two-fold path to accelerating Polymesh adoption:
The cost of the operation is proportional to the computational and storage complexity of the action being performed and is set directly by the network.
More specifically, the magnitude of transaction fees on Polymesh is determined by the compute/memory cost of executing the transaction, as well as the size (in bytes) of the transaction input.
In order to execute an on-chain transaction, a user must have sufficient POLYX associated with the key which is signing and submitting the transaction. If there isn’t a sufficient balance to pay the transaction fee, the transaction will not be submitted to the chain (if that happens, the user will not be charged).
If a user has sufficient funds for the transaction fee, the transaction will be submitted to the transaction pool and picked up by a node operator to be actioned on chain. As the node operator is performing an on-chain action, the transaction fee will be charged, regardless of whether or not the transaction is successful.
For example, let’s say you have exactly 100 POLYX and try to transfer 100 POLYX. The transaction would fail as the transaction fee will be paid first, leaving you with only ~99.9 POLYX, which isn’t enough for the desired transaction. However, you’ll still be charged the transaction fee, as the failure would be recorded on-chain.
Certain on-train transactions carry additional fixed fees, called protocol fees.
Currently, only two types of transactions carry additional fees:
Protocol fees are only paid for successful transactions. For example, if a user tries to register a ticker that’s already been registered, the 500 POLYX protocol fee won’t be charged.
As with transaction fees, protocol fees are split between the block-producing node operator and the Network Treasury using a 20 / 80 ratio. The node operator portion of both transaction fees and protocol fees are paid to the node operator that produces the block that includes the relevant transactions.
Transactions that carry protocol fees are configurable and can be updated by the Polymesh Governance, modifying both the transactions that carry these fees, as well as the fee amounts in POLYX for each transaction.
Any user can submit a Polymesh Improvement Proposal to modify protocol fees. Upon vote by the Polymesh Community (or if the PIP is submitted by a Committee of up to 20 users), the PIP will be voted on for enactment by the Polymesh Governing Council, the main decision-making body of Polymesh.
For more information about POLYX and what it’s used for on Polymesh, visit polymesh.network/polyx.