美文网首页
solidity智能合约开发九:智能合约优化

solidity智能合约开发九:智能合约优化

作者: 雪飘千里 | 来源:发表于2019-02-21 02:44 被阅读0次

    1、节约燃料

    • 1、uint压缩字节来减少gas,但是在struct 结构体中才有意义
      如果直接在合约中定义,反而会消耗更多的gas,因为以太坊cpu每次读取是以32个字节(256位)为最小单位;
      在结构体中之所以会节约gas,是因为结构体会压缩结构体中的数据到storage 的 slot中。
    
    
    • 2、结构体字节对齐
      结构体中uint类型定义的时候,同种类型的要挨在一起,并且是按照大小顺序排列;
      原因还是上面的,结构体会压缩结构体中的数据到storage 的 slot中,压缩的时候,同种类型的会紧密的压缩放在一起

    • 3、哈希表替换动态长度数组
      solidity中mapping,其实并不存储keys,只存储value,value是通过key hash 索引来找到的,所以 mapping并没有直接的获取keys 或者values方法(java 中Map 就有),但是以太坊基金会为我们提供了以uint为例子的遍历mapping的库https://github.com/ethereum/dapp-bin/blob/master/library/iterable_mapping.sol

    image.png

    可以看出,从mapping中获取value数据时,效率要比从数组中获取更加快速(数组需要遍历),从而节约gas

    • 4、view pure
      特别是在通过for循环获取需要的数据的操作,可以节省大量的gas

    相关文章

      网友评论

          本文标题:solidity智能合约开发九:智能合约优化

          本文链接:https://www.haomeiwen.com/subject/gkvtyqtx.html