gas
在OKExChain上,无论是对数据进行存储还是对智能合约进行执行,都需要消耗区块链节点的计算资源,如果用户没有节制地向区块链发送交易或者进行恶意攻击,就会造成区块链的拥堵甚至瘫痪。为了避免出现这种情况,OKExChain要求用户为自己发送的能够改变区块链状态的交易支付费用,这个费用的单位就是gas。区块链每执行一种操作,都会消耗相应数量的gas。
gasLimit
有时候用户在调用智能合约的时候,可能并不知道智能合约中会执行什么操作,因此无法准确预估这笔交易会消耗多少gas, 为了防止交易消耗的gas超过用户的可接受范围,用户可以为每笔交易设置一个gas消耗的上限,这个上限就是gasLimit。如果一笔交易在执行的过程中,消耗的gas超过了gasLimit,那么交易就会停止执行。如果交易执行结束时,实际消耗的小于gasLimit,那么剩余的gas将会退还给用户。(在OKExChain上,只有发送EVM类型的交易可以退还剩余的gas, 发送cosmos类型的交易不会退还。)
gasUsed:
一笔交易执行完之后,实际消耗的gas数量就是gasUsed。
gasPrice
上面说到OKExChain要求用户为自己发送的能够改变区块链状态的交易支付费用,这个费用的单位是gas,但是只有单位还不行,还需要有价格才能构成费用。在OKExChain上,gas需要使用OKT进行支付,用户可以为自己发送的交易自定义gas的价格,每个gas的OKT价格就是gasPrice。
在以太坊上,矿工会优先打包gasPrice较高的交易,当交易数量过多,区块拥堵的时候,用户可以提高gasPrice让自己的交易尽快被打包到区块上。在OKExChain上,目前并没有按照gasPrice高低的顺序来打包交易,而是按照交易进入内存池的顺序进行打包的,因此用户不需要故意提高gasPrice。但是每个超级节点都会设置一个最小的gasPrice, 用户必须保证gasPrice大于等于超级节点的gasPrice,交易才能够进入内存池。
fees
在OKExChain上,fees就是指用户发送一笔交易所消耗OKT数量。用户在发送交易的的时候,需要指定gasLimit和gasPrice, gasLimit乘以gasPrice就是用户发送交易时需要预付的费用,gasUsed乘以gasPrice就是交易结束时用户实际支付的费用,如果用户发送的是EVM类型的交易,并且gasUsed小于gasLimit, 那么交易执行完成后会收到退款。(在OKExChain上,只有发送EVM类型的交易可以获得退款, 发送Cosmos类型的交易不会。)
gas adjustment
https://forum.okt.club/d/96-exchaincligas-auto
gas refund
https://forum.okt.club/d/24-gas-refund