凤凰体育-凤凰体育手机版

0300-95794689

在线客服| 微信关注
当前位置: 首页 > 企业新闻

凤凰体育手机版-如何编写智能合约,优化以太坊gas的消耗


本文摘要:在区块链的以太博物馆,天然气是对持续执行的奖励,用于补偿矿工获得智能合同计算能力所需的计算资源。

在区块链的以太博物馆,天然气是对持续执行的奖励,用于补偿矿工获得智能合同计算能力所需的计算资源。网络的使用在逐渐减少,目前的燃气费用每天在几百万美元左右。随着生态系统的大发展,气体优化的价值将迅速增加。

以下将解释一些稀有气体优化模式。燃气节能模式您可以在代码中使用以下模式来增加燃气消耗。短循环当运算符用于| |或时,短循环是一种策略。

凤凰体育

该模型的工作原理是先对低成本算子进行排序,当第一个算子计算为真时,将低成本算子短路。//f (x)是低成本//g (y)是意料之外//排序应该是这样的f (x) | | g (y) f (x) g (y)不必要的库一般只是为了几个目的才引入的,也就是说它们可能包括如果你能安全有效地构建智能契约中从库中引入的函数,那么最糟糕的做法就是这么做。

凤凰体育

“进口”。/SafeMath . sol ' as SafeMath;contract safe addition { function safe ADd(uint a,uint b)public pure returns(uint){ return safemath . ADd(a,b);} } contract safe addition { function safe ADd(uint a,uint b)public pure returns(uint){ uint c=a b;要求(c=a,“加法溢出”);返回c;显式功能可见性显式功能可见性通常可以在智能合同安全和天然气优化方面获得优势。例如,显式标记一个外部函数并不会强制函数参数的存储方向为calldata,这样可以在每次函数继续执行时节省气体。

在Solidity中精确的数据类型,有些数据类型比其他的便宜。最重要的是要知道可以使用的最有效的类型。下面是一些关于数据类型的规则。

请尝试用uint类型替换字符串类型。uint256型比uint8型储存的气体少。字节[]上方应使用类型字节。如果字节长度可以接受,请为字节1到字节32请求一个更大的数字。

用于字节32的类型比用于字符串的类型便宜。气体消耗模式以下模式不会降低气体成本,并且不应被阻止在中使用。

凤凰体育

死代码违宪代码是有一天会运行的代码,因为它的计算是基于一个总是返回false的条件。函数DeadCode(uint x)public pure { if(x1){ if(x2){ return x;}}}不完全谓词某些条件的结果需要继续才能被告知,所以不必计算。opaquepredice(uint x)public pure { if(x1){ if(x0){ return x;由于SLOAD和SSTORE操作码便宜,循环中昂贵的操作管理存储中的变量比管理内存中的变量便宜得多。

因此,它不应用于在循环中存储变量。uint num=0;函数ExpensiveLoop(uint x)public { for(uint I=0;ix .I){ num=1;}}问题的解决方法是创建一个表示全局变量的临时变量,在循环完成后将临时变量的值重新分配给全局变量。

uint num=0;函数LesExpresseLoop(ui nt x)public { ui nt temp=num;for(uint I=0;ix .I){ temp=1;} num=temp}循环的常量结果如果循环的结果是一个可以在编译器中推断出的常量,就不应该用于它。函数constantOutcome()返回public pure(uint){ uint num=0;for(uint I=0;i100I){ num=1;}返回num}回路融合有时在智能合同中,您可能会发现两个参数相同的回路。当循环参数完全相同时,没有理由将它们用于单独的循环。

凤凰体育手机版

loopFusion函数(uint x,uint y)public pure returns(uint){ for(uint I=0;i100I){ x=1;} for(uint I=0;i100I){ y=1;}返回x y;}循环重复计算。如果循环中的表达式在每次递归中产生完全相同的结果,则可以将其移入循环中。

当表达式中使用的变量存储在内存中时,这一点尤其重要。uint a=4;uint b=5;function repeatedcalculations(uint x)public returns(uint){ uint sum=0;for(uint I=0;I=x;I){ sum=sum a * b;}}与单侧循环结果的比较。如果在循环的每个递归中继续进行比较,但每次结果都完全相同,则不应将其从循环中移除。


本文关键词:凤凰体育,凤凰体育手机版

本文来源:凤凰体育-www.indoralmag.com

客户案例Customer case
  • 凤凰体育手机版:宋开强《八骏图》伦敦佳士得拍出42、8万英镑
  • 浙江美术馆‘不忘初心、牢记使命’主题教育美术作品巡回展开幕|凤凰体育手机版
  • 凤凰体育手机版_猎鹰解期:原油期货1月31日交易建议
  • 【凤凰体育手机版】市场解读:美伊冲突后甲醇价格如何?
  • 宫颈炎当心不孕症来袭 药物可治中度宫颈炎-凤凰体育
  • 全屋定制一定要选大品牌吗?
  • 广东省广州市高分考生弃高中投中职读职校更早接触社会-凤凰体育手机版
  • 凤凰体育手机版:中共甘肃省委书记林铎到麦德龙调研市场保供工作
  • 【凤凰体育】在拍场不讨喜的鲁迅
  • 
	<h1>徐勇:应将传统文化纳入基础教育必修课