Understanding Safex Transaction Priorities

Note: The current Safex TWM Wallet doesn’t yet have Transaction Priority options integrated into the GUI display, so users wishing to send transactions with non-default transaction priority will need to use the cli wallet.

When users send coins to another wallet address, the wallet forms the transaction and includes the necessary transaction fee, which gets paid to the miner who processes the transaction when a new block is found. (In the case of Safex blockchain, this also includes any of the advanced transactions of the Safex Marketplace.) A detailed explanation of Fees can be found here.

There are times when the volume of transactions being sent to the blockchain for processing exceeds the amount of transactions that can be processed in a single block. If this high transaction volume persists for a lengthy period, the number of unprocessed transactions sitting in the mempool can cause significant delays in some transactions being processed. In such instances, users have the option of increasing the priority of the transaction they’re sending, to get it processed faster.

On the Ethereum blockchain, this has resulted in Gas Wars, where users keep increasing their gas fees in order to get their transactions processed faster, and on busy blockchains without dynamic block sizing, this becomes an ongoing issue, where transaction fees become ridiculously high. For Safex blockchain, an ongoing increase in transaction volume would mean the block size adjusts to better accommodate the amount of transactions being sent. More information on Safex dynamic block sizing can be found here.

For Safex Blockchain, there are four priorities (technically five, if you include default):

  • unimportant
  • normal
  • elevated
  • priority

Each level of priority equates to a fee multiplier (1-4). So unimportant has no multiplier (1x), normal is 2x, elevated 3x and priority 4x. So, at times when the transaction volume increases dramatically, setting a higher transaction fee using the priority command should expedite the processing of that transaction, as miners will prioritize the transactions in mempool that have higher transaction fees.

The basic command structure for a simple SFX send is:

transfer_cash [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> <amount> [<payment_id>]

Users simply enter the appropriate priority word at the correct position in the command being formed. A full list of cli wallet transaction formats can be found by typing help within an open cli wallet.

Setting a higher priority when the transaction pool isn’t backlogged is just wasting Safex Cash (SFX), as the transaction would get processed promptly at even the lowest fee amount.

Any transaction sent without a priority being specified will use the default priority for that wallet. Out of the box, every wallet created has its default transaction priority value set to unimportant. Users can manually adjust their default priority setting with the cli wallet, using the appropriate wallet command.

At some point, a future iteration of the Safex TWM Wallet will have the Priority option added. But for now it isn’t seen as necessary, due to the relatively low of transactions being sent to the blockchain for processing.