关于我们 | 联系我们

亚博网赌安全有保障的

当前位置:主页 > 新闻资讯 > 公司新闻 >

减少智能合约代码复杂性并提高可维护性-亚博网赌安全有保障的

本文摘要:本文分享了一些关于如何避免类似情况增加代码复杂性和提高可维护性的例子。相似最大值罕见的相似情况用于0响应“无最大值”。这种情况一般容易避免。 Special Expirations请看下面的代码uint256 expiration。

亚博网赌安全有保障的

本文分享了一些关于如何避免类似情况增加代码复杂性和提高可维护性的例子。相似最大值罕见的相似情况用于0响应“无最大值”。这种情况一般容易避免。

Special Expirations请看下面的代码uint256 expiration。//us E0 to mean ' no expiration '.functionsetexpiration (uint 256 new expiration ) external { expiration=new expiration function do somethion external { require (expiration==0||now expiration,' Error: expired') .}在此代码中,0是类似的情况,回答“未过期”。

这种情况不直观,减少了require语句的复杂性。但是,确定的危险性是,团队的新开发人员无视这一复杂性,无法应对expiration==0这样的情况。

这容易引起资金损失和其他相当严重的问题。这样的代码非常简单,如//default to2 * * 256-1 instead.uint 256 expiration=2* * 256-1。//use2* * 256-1 to mean ' no expiration '.functionsetexpiration (uint 256 new expiration ) external { expiration }。function do something () external { require (now=expiration,' Error: expired ' ); }在这里,我用于uint256允许的最大值的expiration。

如果涉及超时,而不是0,则expiration实质上是无限的。类似是仅次于以太网数量的非常接近的例子,这次是以太网: uint 256 max withdrawal; //us E0 to mean ' no maximum '.functionsetmaxwithdrawal (uint 256 new max ) external { max withdrawal=new max; function withdraw (uint 256 amount ) external { require (max withdrawal==0||amount=max withdrawal, }在某种程度上,我们有非直观的特例。我们可以用在有效的无限值上来解决问题。//default to2 * * 256-1 instead.uint 256 max withdrawal=2* *。

//use2* * 256-1 to mean ' no maximum '.functionsetmaxwithdrawal (uint 256 new max ) external { maxwithdrawaw function withdraw (uint 256 AMM ) . }2256-1是最大值注意,某种程度上的技术可以总结为令牌数或任意值。由于Solidity无法响应小于2256-1的值,因此与uint256相比,成为“有效无限”的值来解决问题的gas成本问题通常必须在gas成本方面展开权衡。人们最后将默认值设为0的一个典型原因是存储非零值需要很多gas。如果存储成本对用例非常高,请使用uint256 _expiration; //0 still means ' no expiration ' .//properlyhandlethespecialcasesinoneplace.function expiration () internation _ expiration 33602*。

function do something () external { require (now expiration (),' Error: expired ' ); 在此代码中,加载存储的_expiration值配置文件时为0,与以前完全相同。但是,对将0切换为类似值2256-1的辅助函数expiration ()进行了说明。这意味着我剩下的代码需要处理这种情况。请考虑使用此技术和自定义的linter规则过滤器,以确保必须在expiration ()函数以外的位置加载_expiration。

关于类似地址地址,1 .常见两种类似情况:地址0一般不允许。2 .不允许用于特定地址(一般是特权角色)。


本文关键词:亚博网赌安全有保障的,减少,智能,合约,代码,复杂性,并,提高,本文

本文来源:亚博网赌安全有保障的-www.thepolicestory.com

Copyright © 2008-2020 www.thepolicestory.com. 亚博网赌安全有保障的科技 版权所有 备案号:ICP备37116375号-5