Transaction Fees¶
Every operation that modifies the state (transfer, smart-contract creation,
smart-contract call, etc.) carries a cost. Within the EVM, this cost is
denominated in gas. For example, a simple transfer costs 21000 gas. When users
create and submit transactions, they can set the maximum amount of gas they want
to spend, and how many Attoms
(10^-18 Tenom) they are willing to pay per
unit of gas consumed. Therefore, if their transaction is applied, it will cost
them a transaction fee of gas-price * gas-consumed
, which is capped by
gas-price * gas-max
.
Transaction fees serve a dual purpose: to incentivise validators, and to prevent denial of service attacks.
Distribution Among Validators¶
Every transaction applied to the EVM is associated with a coinbase address (possibly empty), which receives the transaction fee. In monetd, we have implemented a system that fairly and securily distributes fees among validators.
Upon committing a Babble block, we fetch the corresponding validator-set from Babble. Then we use the block hash to obtain a pseudo-random number which we use to select a peer from the validator-set. This peer will receive all the transaction fees from that block. This system is fair and secure because the selection process is evenly distributed and it is impossible for malicious validators to game it by manipulating the block hash.
Minimum Gas Price¶
Validators running a monetd node can set a minimum gas price, via the
eth.min-gas-price
configuration flag, to refuse broadcasting transactions
with lower gas-prices. To send a transaction via a node, the transaction creator
must set the gas price to a value greater or equal to that node’s minimum gas
price. Note that this filtering is done at the service layer, so it will not
prevent other nodes from including cheaper transactions.
Tenom Denominations¶
Internally EVM-Lite balances, values and gas prices are denominated in
Attom
. All user interactions are denoted in Tenom. There are 10^18
attoms in one Tenom.
The Tenom symbol is: Ŧ although for user entry a capital T would usually be used.
SI Prefixes:
| Prefix | Opt 1 | Opt 2 |Quickest Symbol | Quick Symbol | Formal Symbol | Value |
|--------|--------|------------|----------------|---------------|---------------|------------------|
| | Tenom | Tenom | T | T | Ŧ | 1 |
| milli | Millom | Millitenom | m | mT | mŦ | 10^-3 |
| micro | Microm | Microtenom | u | uT | μŦ | 10^-6 |
| nano | Nanom | Nanotenom | n | nT | nŦ | 10^-9 |
| pico | Picom | Picotenom | p | pT | pŦ | 10^-12 |
| femto | Femtom | Femtotenom | f | fT | fŦ | 10^-15 |
| atto | Attom | Attotenom | a | aT | aŦ | 10^-18 |
The Tenom symbol is U+0166 in unicode. Ŧ is the HTML entity for Ŧ.
In Linux to directly enter a unicode character, hold the left control key and shift, then press u. An underscore u character will appear. Press 0166 then space and the Ŧ character will appear.
On windows, press and hold ALT and type 0166.
In GOLANG we can just include the character literal, but “u0166” will also work.
In JS we can also use u0166.