Fee processing
Concept
Traditional Layer 1 blockchain networks like Ethereum use a complex, dynamic fee market determined by opcode prices and the computational "gas" consumed during transaction execution. In such a system, calculating the exact transaction cost can be cumbersome and time-consuming. Additionally, these opcode prices are deeply embedded within the protocol, typically requiring a network upgrade or hard fork for changes.
KIRA's approach replaces the conventional "gas" system with a governance-driven structure. Here, transaction fees are predefined for each type of transaction and uniformly denominated in ukex
, simplifying and stabilizing the fee calculation. Additionally, the governance is tasked with setting failure fees for each transaction type and determining a specific timeout period for transactions. Complementing this streamlined fee structure, KIRA's Token Rates Registrar allows fees to be paid in other whitelisted tokens at a fee_rate
defined by the governance. This mechanism ensures a clear and efficient conversion between ukex
and other tokens, enhancing the network's flexibility and user accessibility.
Bounded Fee Range
While KIRA does have a fee market, it operates within a bounded range set by the min_tx_fee
and max_tx_fee
parameters. This approach serves two purposes:
- Spam Prevention: The
min_tx_fee
sets a lower boundary, acting as a deterrent against spam transactions, thus maintaining the network's integrity by preventing it from being overloaded with low-value or malicious transactions. - User Protection: The
max_tx_fee
acts as an upper limit, safeguarding users from inadvertently incurring excessive fees. This is particularly important in preventing significant fund losses that might occur due to mistakenly high fee inputs during transaction submission.
Parameters
NAME | TYPE | EXAMPLE | DESCRIPTION |
---|---|---|---|
transaction_type | string | submit-proposal | The specific transaction type the following parameters apply to. All existing types can be found here. |
execution_fee | uint64 | 100 | The required fee for users to successfully execute this particular transaction type. |
failure_fee | uint64 | 50 | The fee users must pay in case the transaction execution is unsuccessful. |
timeout | uint64 | 300 | The time duration (in seconds) after which the transaction execution will be considered as failed if not completed. |
default_parameters | uint64 | 42 | The default input values that the corresponding transaction function will utilize before execution. |
Cli Syntax & Examples
Each CLI command and proposal process in KIRA requires specific permissions. These permissions must be added to the account's whitelist or obtained as sudo permissions for direct changes. Refer to the Roles & Permissions documentation for more details. $SIGNER
represents the transaction signer's account name or address. For instructions on setting common flags as environment variables, such as $FLAGS_TX
and $FLAGS_QR
__, see the section
- Transactions
- Queries
- Governance
Transactions
set-execution-fee | Update execution fee parameters for different transaction types. |
---|
Updating Execution Fees With Sudo Permission
The set-execution-fee
CLI command allows accounts with sudo permission 7 to modify execution fee parameters for different transaction types.
Flags
$TX_TYPE
: The type of transaction for which the fees are being updated.$
EXECUTION_FEE
: The fee for successful execution of the transaction.$FAILURE_FEE
: The fee for failed execution of the transaction.$TX_TIMEOUT
: The timeout duration for the transaction.
sekaid tx customgov set-execution-fee \
--from=$SIGNER $FLAGS_TX \
--transaction_type=$TX_TYPE \
--execution_fee=$EXECUTION_FEE \
--failure_fee=$FAILURE_FEE \
--timeout=$TX_TIMEOUT
Queries
execution-fee | Retrieve execution fee parameters for a specified transaction type. |
---|
Query Execution Fees
The execution-fee
CLI command is used to retrieve the execution fee parameters for a specified transaction type.
Args
$TRANSACTION_TYPE
: The type of transaction for which to query the execution fees.
sekaid query customgov execution-fee $TRANSACTION_TYPE $FLAGS_QR | jq