Transaction Fees

The Meey protocol includes transaction fees that need to be paid according to the configuration of the network.

Gas is a numerical representation of execution and storage costs in the transaction and contract. But gas is not a fee. To calculate the fee, we need the gas price.

Gas Price

Gas price is the GAS value corresponding to 1 gas. All transactions in a block have the same gas price. Gas price is determined by a DAO vote.

Gas Limit

The gas limit allows the user to specify the maximum amount of gas used for transactions and contracts.

Gas Table

Transaction

Transactions other than governance transactions consume 100,000 gas by default. If you have a payload, additional gas will be used depending on the size.

Payload gas: (Bytes of a payload - 200) * 5

Instructions

The table below shows gas usage for Lua bytecode.

Name

GAS

ISLT, ISGE, ISLE, ISGT, ISEQV, ISNEV, ISEQS, ISNES, ISEQN, ISNEN, ISEQP, ISNEP

2

ISTC, ISFC, IST, ISF, ISTYPE, ISNUM

1

MOV

2

NOT, UNM

1

LEN

3

ADDVN, SUBVN

2

MULVN, DIVVN, MODVN

3

ADDNV, SUBVN

2

MULNV, DIVNV, MODNV

3

ADDVV, SUBVV

2

MULVV, DIVVV, MODVV

3

POW

3

CAT

3

KSTR, KCDATGA, KSHORT, KNUM, KPRI, KNIL

1

UGET, USETV, USETS, USETN, USETP, UCLO, FNEW

2

TNEW

2

TDUP

5

GGET, GSET

3

TGETV, TGETS, TGETB, TGETR, TSETV, TSETS, TSETB, TSETM, TSETR

2

CALLM, CALL, CALLMT, CALLT, ITERC, ITERN

10

VARG

5

ISNEXT

2

RETM

5

RET, RET0, RET1

3

FORI, FORL, ITERL, LOOP, JMP

2

Built-in Functions

Gas usage for built-in functions provided by the Lua VM

Name

GAS

assert

3

error

5

getfenv

5

getmetable

3

ipairs

3

next

3

pairs

3

pcall

10

rawequal

5

rawget

3

rawset

5

select

3 (length), 5 (get an element)

setfenv

5

setmetatable

3

tonumber

5

tostring

5

type

2

unpack

5 + (2 * number of arguments)

xpcall

10

string.byte, string.char

3 + (1 * number of string units (arguments))

string.dump

10

string.find, string.gmatch, string.gsub, string.match

3 + (5 * number of matching strings)

string.format

3 + (2 * number of format modifiers)

string.lower

3 + (1 * number of string units (argument))

string.rep

3 + (2 * number of concatenation)

string.reverse

3 + (1 * number of string units (argument))

string.sub

3 + (1 * number of string units (argument))

string.upper

3 + (1 * number of string units (argument))

table.concat

3 + (3 * number of arguments)

table.insert

3 + (3 * number of cells to move)

table.maxn, table.minn

3 + (3 * comparison count)

table.sort

3 + (5 * comparison count)

math.abs, math.ceil, math.floor, math.pow

3

math.max, math.min

3 + (1 * number of arguments)

bit.tobit

3

bit.tohex

5

bit.bnot

2

bit.bor, bit.band, bit.xor

3 + (2 * number of arguments)

bit.lshift, bit.rshift, bit.ashift, bit.rol, bit.ror

3

bit.bswap

2

Last updated