Polymesh requires fees in POLYX for every on-chain transaction, and certain native functions have additional fees called protocol fees. Fees go 100% towards node operators.
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 go 100% towards the block-producing node operator. This incentives node operators to help increase adoption of the network, as they’ll receive a commission of transaction fees from on-chain activity.
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 go 100% towards the block-producing node operator.
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.