以太坊历次分叉升级中有多次涉及到预防DDos攻击的升级,例如Spurious Dragon
升级的EIP150、Istanbul
升级的EIP1884和EIP1108、Berlin
升级的EIP2929。由这些升级的技术细节可以看出,几乎所有可以改进的提案都涉及到对gas的调整。
PlatON & Alaya Gas消耗的机制
- 扣费机制
当前PlatON和Alaya的基本上沿用了以太坊EVM的gas机制,按照合约中使用的指令(编译后对应底层的一个操作或funciton)进行计费,不同的指令对应不同的gas,执行交易时,按照gas
x gasPrice
的积来对交易发起人扣费,WASM合约为PlatON和Alaya新增的虚拟机,但扣费机制基本上是同样的机制。
- 估价机制
同样,对于预估交易Gas,PlatON和Alaya沿用了以太坊的GPO(Gas Price Oracle)机制,方法为:
- 取当前节点最高区块之前的20个区块
- 对每个区块中的交易,按
gasPrice
由高到低排序 - 收集每个块中价格最低的交易(sender为coinbase的交易会被过滤掉)
- 对所有最低价格进行由高到低排序,取列表下标为0.6(默认值,可以在自己的节点设置)位置做为gasPrice的建议价格
- 治理提案交易价格机制
有一个特例, PlatON和Alaya中的‘提案’交易的价格不是通过GPO获取的,也不能由用户自定义,而是由系统固定限制的,这样做的目的是为了避免提案被恶意占位(因为有效提案都有生命周期)
存在的问题
- GPO功能失效
由于以太坊的平均出块间隔约为13.4秒,而PlatON/Alaya的出块间隔仅为1.1秒左右, 按目前GPO计算机制,估价时只计算20个区块交易的最低价进行估算,则以太坊取的是4.5分钟内交易最低价,而PlatON和Alaya只取到22秒内的交易最低价,在时间范围上不能反应当前的网络繁忙情况。
除此之外,由于提案的固定价格较高,一旦网络中出现提案,则极有可能对客户端估算gas产生影响。
- 可能的DDos攻击
由于gasPrice默认值PlatON和Alaya一样都是1e9,以最普通的转账交易计算,单位Token可以发送的转账交易为1e18/21000 x 1e9,约为47619个交易,按单个交易280个字节(包含回执)计算,则总计消耗存储约12.7Mb,即:
1lat/atp = 47619txs = 12.7Mb
提到DDos攻击,就不得不计算攻击成本,按今天(2021-4-27)ETH和Alaya价格来计算
1ETH = 16000CNY -> 存储被攻击成本为 1259CNY/M
1ATP = 35CNY -> 存储被攻击成本为 2.75CNY/M
Alaya的攻击成本是以太坊的0.002倍,这里还不包含其他资源的消耗,这给系统带来很大的安全隐患。
- 提案价格固定不合理
由于提案的价格是固定不变的,但Token的价格是浮动的,这就意味着Token价格高的时候大家不愿意主动发起提案,价格低的时候提案又不足够安全(容易被霸占)
建议
-
修改默认的gasPrice
按总量来算,PlatON的默认gasPrice应该是Alaya的100倍,还需要考虑币价和以太坊的差距以评估DDos攻击成本
-
修改GPO算法
将计算20个区块的交易修改为计算250个区块的交易
同时需要过率掉治理提案的gasPrice -
考虑增加一种提案白名单机制来替换当前任意节点可发起提案的机制
附
- Vbuterin观点:发送者一次性缴交按gas用量来计量的手续费,但会给整个网络造成永久的持续性成本