区块链研究实验室-探讨一下以太坊智能合约安全的漏洞(下)( 三 )
阅读代码:它非常简单 , 看起来是正确的 。 但是 , 它基于平台限制隐藏了3个潜在问题 。
第一个问题是i的类型将是uint8 , 因为这是保持值0所需的最小类型 。 如果数组具有超过255个元素 , 则循环将不会终止 , 从而导致gas耗尽 。 更好地使用显式类型uint没有意外和更高的限制 。 如果可能 , 避免使用var声明变量 。 我们来解决这个问题:
你应该考虑的第二件事是gas限制 。 Gas是以太坊为网络资源收费的机制 。 每个修改状态的函数调用都有一个gas成本 。 想象一下calculateBonus根据一些复杂的计算计算每个员工的奖金 , 比如计算许多项目的利润 。 这将消耗大量gas , 这很容易达到交易或区块的gas限制 。 如果交易达到gas限制 , 所有更改将被还原 , 但仍然支付费用 。 使用循环时要注意可变gas成本 。 让我们通过将奖金计算与for循环分开来优化合同 。 请注意 , 这仍然存在随着员工阵列的增长 , gas成本增加的问题 。
推荐阅读
- gta三部曲|梦幻西游:129级五开分析师,研究抓鬼任务最优化投入,不浪费一分钱
- 电子竞技|S12或迎来双败制?Riot全球电竞负责人发话:会去仔细研究!
- 世界弹射物语|皇室战争:职业选手研究的英雄卡组,要论机动性,黄金圣骑YYDS
- 新世界|游戏推出一个多月就在研究合服,《新世界》如今情况如何?
- fly|Fly让AG得重新研究对策,终结ES八连胜!留在S组只差AG这一步
- 弈星|职业赛场八连跪,弈星已经被研究透了?这英雄的强度到底如何?
- 原神|原神成为中国文化敲门砖,这群老外甚至因北斗研究起了国产导航
- 鲁班|王者荣耀:将王研究出鲁班发育秘诀,网友看后纷纷点赞!
- 青钢影|《地下城与勇士》:玩这个游戏,要花时间研究一下活动和成长路线
- 手机游戏|哈利波特手游:虎牙四个四深入研究,配置斯内普卡组,只为榜一