以太坊中的油费
2016-07-12 08:44:51
阿土
  • 访问次数: 93
  • 注册日期: 2016-02-27
  • 最后登录: 2016-09-12
  • 当前积分: 84

油价表

操作名称

汽油费 说明
step 1 每执行一步
stop 0 免费
suicide 0 免费
sha3 20 计算SHA3 HASH
sload 20 从持久化存储中取一个值
sstore 100 向存储中保存一个值
balance 20
create 100 新建一个对象
call 20 内部只读调用
memory 1 没增加一个字节内存
txdata 5 交易数据每个字节
transaction 500 交易基本费
contract creation 53000 创建合约
在以太坊上每一步都要花钱,动不动就油费不够跑不动了。这个官方的油价表显然有问题啊,怎么没有人去投诉?

以我们的股指竞猜合约的买涨为例,这个合约入口很简单,没有参数,只有一个交易金额和函数本身的DATA

买涨0.5以太币,共执行了532步,收费161235。小贵啊


从执行堆栈上打印统计, 那个SSTORE存了12次,花费了几乎花了所有的费用,数据存储要精心设计:

操作 次数 油耗 油耗%
SSTORE 12 135000 96.5%
LOG1 1 2286 1.6%
SLOAD 12 600 0.4%
SHA3 7 270 0.2%
PUSH1 81 243 0.2%
EXP 9 180 0.1%
JUMPI 15 150 0.1%
MSTORE 27 129 0.1%
SWAP1 42 126 0.1%
ADD 31 93 0.1%
SWAP2 28 84 0.1%
DUP2 27 81 0.1%
DUP1 25 75 0.1%
DUP3 23 69 0.0%
PUSH2 22 66 0.0%
DUP4 17 51 0.0%
JUMP 6 48 0.0%
POP 17 34 0.0%
AND 11 33 0.0%
DIV 6 30 0.0%
SWAP3 9 27 0.0%
EQ 9 27 0.0%
MLOAD 9 27 0.0%
PUSH4 8 24 0.0%
ISZERO 7 21 0.0%
DUP6 7 21 0.0%
MUL 4 20 0.0%
SUB 6 18 0.0%
DUP5 6 18 0.0%
GT 5 15 0.0%
JUMPDEST 12 12 0.0%
SWAP4 4 12 0.0%
SWAP5 3 9 0.0%
OR 3 9 0.0%
NOT 3 9 0.0%
CALLER 4 8 0.0%
CODECOPY 1 6 0.0%
PUSH5 2 6 0.0%
PUSH17 1 3 0.0%
SWAP7 1 3 0.0%
SWAP6 1 3 0.0%
CALLDATALOAD 1 3 0.0%
DUP10 1 3 0.0%
DUP8 1 3 0.0%
ADDRESS 1 2 0.0%
CALLDATASIZE 1 2 0.0%
TIMESTAMP 1 2 0.0%
CALLVALUE 1 2 0.0%
STOP 1 0 0.0%
总计 532 139963 100.0%

从数据分析看,一个列表或集合中放数据结构,是按最小单元累计计算的,例如本例一次存储会收3个属性的存储费外加集合本身的存储费,下次做个专门的分析

平风 最后编辑, 2016-11-15 01:38:16
51chain是什么

51chain.net
恒生研究院旗下区块链技术社区

让区块链开发变简单

联系我们
联系人: 平风
电话: 0571-26691754
Email: niezx@hundsun.com
QQ: 251048392