V神设计理念公布 细数以太坊潜在的优缺点(9)
时间:2021-07-13 10:43来源:未知 作者:admin 点击:
次
难度更新算法 目前以太坊通过以下规则进行难度更新: 难度更新规则的设计目标如下: 快速更新:区块间的时间应该随着 hash 算力的增减而快速调整;
难度更新算法
目前以太坊通过以下规则进行难度更新:
难度更新规则的设计目标如下:
快速更新:区块间的时间应该随着 hash 算力的增减而快速调整;
低波动性:如果挖矿算力恒定,那么难度不应剧烈波动;
简单:算法的实现应相对简单;
低内存:算法不应依赖于过多的历史区块,要尽可能少的使用 “内存变量”。假设有最新的十个区块,将存储在这十个区块头部的内存变量相加,这些区块都可用于算法的计算;
不可爆破:算法不应让矿工有过多篡改时间戳或者矿池反复添加或删除算力的激励
我们当前的算法在低波动性和抗爆破性上并不理想。最近,我们计划把时间戳参数改为与父区块和祖父区块比较,所以矿工只有在连续挖 2 个区块时,才有动力去修改时间戳。另一个更强大的模拟公式:https://github.com/ethereum/economic-modeling/blob/master/diffadjust/blkdiff.py
Gas 和费用
比特币中所有交易大体相同,因此它们的网络成本用单一一种单位来模拟。以太坊中的交易要更复杂,所以交易费用需要考虑到账户的许多方面,包括网络带宽费用、存储费用和计算费用。尤其重要的是,以太坊编程语言是图灵完备的,所以交易会使用任意数量的宽带、存储和计算成本;而最终会使用多少数量是无法可靠预测的(因为所谓的 “图灵停机问题”)(校对注:即不存在一个可靠的办法,能够断言任意可在图灵机上执行的程序会不会在有限步内终止)。防止有人使用无限循环来实施拒绝服务式攻击是我们的一个关键目标。
以太坊交易费用的基本机制如下:
每笔交易必须指明自身愿意消耗的 gas 数量(即指定 startgas 的值),以及愿意为每单元 gas 支付的费用(即 gasprice ),在交易执行开始时,startgas * gasprice 价值的以太币会从发送者账户中扣除;(校对注:此处的 startgas 就是我们现在惯用的 gaslimit 。)
交易执行期间的所有操作,包括读写数据库、发送消息以及每一步的计算都会消耗一定数量的 gas;
如果交易执行完毕,消耗的 gas 值小于指定的限制值,则交易执行正常,并将剩余的 gas 值赋予变量 gas_rem ; 在交易完成后,发送者会收到返回的 gas_rem * gasprice 价值的以太币,而给矿工的奖励是(startgas - gas_rem)* gasprice 价值的以太币;
如果交易执行中,gas消耗殆尽,则所有的执行恢复原样,但交易仍然有效,只是交易的唯一结果是将 startgas * gasprice 价值的以太币支付给矿工,其他不变;
(责任编辑:admin) |
织梦二维码生成器
------分隔线----------------------------