Solidity 怎样写出最节省Gas的智能合约[译]

这篇文章主要介绍了Solidity 怎样写出最节省Gas的智能合约[译] ,文中通过代码以及文档配合进行讲解,很详细,它对在座的每个人的研究和工作具有很经典的参考价值。 如果需要,让我们与区块链资料网一起学习。

https://www.interchains.cc/21924.html

Solidity 怎样写出最节省Gas的智能合约[译]是很好的区块链资料,他说明了区块链当中的经典原理,可以给我们提供资料,Solidity 怎样写出最节省Gas的智能合约[译]学习起来其实是很简单的,

不多的几个较为抽象的概念也很容易理解,之所以很多人感觉Solidity 怎样写出最节省Gas的智能合约[译]比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难

Solidity 怎样写出最节省Gas的智能合约[译]

  • Solidity
  • 最佳实践
  • gas

如何节省gas 使用,是很多智能合约开发者头大的问题,这边文章应该会对大家有帮助。

以太坊eth区块链blockchain上,Gas是用来奖励矿工为智能合约的存储与执行所提供的算力。 目前以太坊eth的利用率逐渐增长,交易手续费成本也水涨传告 —— 现在每天的gas成本已经高达数百万美元。 随着以太坊eth生态系统的扩大,Solidity智能合约开发者也需要关注gas使用的优化问题了。本文将介绍在使用Solidity开发以太坊eth智能合约时常用的一些Gas优化实践。

1、使用短路模式排序Solidity操作

短路(short-circuiting)是一种使用或/与逻辑来排序不同成本操作的solidity合约 开发模式,它将低gas成本的操作放在前面,高gas成本的操作放在后面,这样如果前面的低成本操作可行,就可以跳过(短路)后面的高成本以太坊eth虚拟机操作了。

// f(x) 是低gas成本的操作 // g(y) 是高gas成本的操作  // 按如下排序不同gas成本的操作 f(x) || g(y) f(x) && g(y)

2、删减不必要的Solidity库

在开发Solidity智能合约时,我们引入的库通常只需要用到其中的部分功能,这意味着其中可能会包含大量对于你的智能合约而言其实是冗余的solidity代码。如果可以在你自己的合约里安全有效地实现所依赖的库功能,那么就能够达到优化solidity合约的gas利用的目的。

例如,在下面的solidity代码中,我们的以太坊eth合约只是用到了SafeMath库的add方法:

import './SafeMath.sol' as SafeMath;  contract SafeAddition {  function safeAdd(uint a, uint b) public pure returns(uint) {  return SafeMath.add(a, b);  } }

通过参考SafeMath的这部分代码的实现,可以把对这个solidity库的依赖剔除掉:

contract SafeAddition {  function safeAdd(uint a, uint b) public pure returns(uint) {  uint c = a + b;  require(c >= a, "Addition overflow");  return c;  } }

3、精确声明Solidity合约函数的可见性

在Solidity合约开发中,显式声明函数的可见性不仅可以提高智能合约的安全性, 同时也有利于优化合约执行的gas成本。例如,通过显式地标记函数为外部函数(External),可以强制将函数参数的存储位置设置为calldata,这会节约每次函数执行时所需的以太坊ethgas成本。

External 可见性比 public 消耗gas 少。

4、使用适合的数据类型

在Solidity中,有些数据类型要比另外一些数据类型的gas成本高。有必要 了解可用数据类型的gas利用情况,以便根据你的需求选择效率最高的那种。 下面是关于solidity数据类型gas消耗情况的一些规则:

  • 在任何可以使用uint类型的情况下,不要使用string类型
  • 存储uint256要比存储uint8的gas成本低,为什么?点击这里查看原文
  • 当可以使用bytes类型时,不要在solidity合约种使用byte[]类型
  • 如果bytes的长度有可以预计的上限,那么尽可能改用bytes1~bytes…

Solidity 怎样写出最节省Gas的智能合约[译]

剩余50%的内容订阅专栏后可查看

  • 发表于 2020-02-08 18:03
  • 阅读 ( 1392 )
  • 学分 ( 148 )
  • 分类:Solidity
  • 专栏:全面掌握Solidity智能合约开发

部分转自网络,侵权联系删除www.interchains.cchttps://www.interchains.cc/21924.html

区块链毕设网(www.interchains.cc)全网最靠谱的原创区块链毕设代做网站 部分资料来自网络,侵权联系删除! 最全最大的区块链源码站 ! QQ3039046426
区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » Solidity 怎样写出最节省Gas的智能合约[译]

提供最优质的资源集合

立即查看 了解详情