这些血淋淋的教训充分说明了,为每一笔交易安排合适的 Gas 价格,有多么重要。因为当链上应用活跃的时候(比如前一段时间的 Yield Farming 热潮),一笔交易的成功不仅会影响这笔交易,还会影响后序交易。 但是,是什么阻碍了我们获得准确的 Gas 价格估计呢?我们能克服吗? 在最根本上来说,阻碍我们的是区块链网络的 点对点网络架构:所有节点都是分散的,当某一笔交易被发送到一个节点时,该节点做一定的校验之后会把交易数据广播给其它节点;这种网络结构决定了,没有任何一个节点能实时获得整个网络的未处理交易的全局状态,交易的传播需要时间,也需要偶然(某些节点可能会用更高的 Gas Price 作为门槛、拒收低手续费的交易来保护自己)。对于这一点,我们只能改善,不可能从根本上克服,因为我们不想要一个中心化的网络结构。 但另一方面,至关重要的是我们预估 Gas 价格的方法。目前为止,绝大部分 Gas 价格指示器所用的方法,都是根据过去一段时间里被打包到区块里的交易的 Gas 价格加以统计方法处理,得出对未来 Gas 价格的估计。仔细想想这其实很不合理,在你发交易的这一刻,决定你的交易多快能上链的是现有未处理交易中比你交易的 Gas 价格更高的交易有多少,以及在你的交易还未打包的这段时间里有多少人发出了比你的 Gas 价格更高的交易。拿已经上链的交易,也就是历史数据,去做这样的预估,貌似合理,实则荒谬。当网络活动快速增加、Gas 价格快速攀升的时候,按历史数据估计的方法大概率只能给出低估的 Gas 价格。更准确的估计应该基于现有未处理交易的 Gas 价格分布,哪怕还需要统计方法处理,也会比拿历史数据来估计要更简单。 这就是 GasNow 厉害的地方。它不再基于历史数据来预测未来,它基于星火矿池节点的交易池中交易的 Gas 价格分布。为了收益的最大化,矿池一方面要尽可能地收集交易,另一方面,要从高到低打包交易池中待打包的交易。所以,GasNow 给出的数据,是真正具有参考意义的。 如图,网页直接告诉了你矿池交易队列中由高到低排序的第 50 笔、第 200 笔、第 400 笔交易的 Gas 价格。这就有的放矢了 理论上来说,所有的 Gas 价格指示器,都应该转变成 GasNow 这样的模式,不再根据历史数据,而是根据实时数据,来帮助用户做决策。但饶是如此,GasNow 也是有竞争力的。因为矿池的交易池会比普通的、没有优化的节点的交易池更全面,更有参考意义。 Gas Station 在自述中说,「希望能提高 Gas 价格的透明度」,这当然是个很有意义的目标;而且,Gas 价格的不清晰,其实根值于网络的点对点特性(因此,我个人非常不愿意把这种不清晰当成是一种 「问题」),值得更多人作出更多的尝试,用服务本身的分散性来降低点对点网络带来的不确定性、使我们获得更全局的视野。 (责任编辑:admin) |