首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >稳健SafeMath库最佳实践用例

稳健SafeMath库最佳实践用例
EN

Ethereum用户
提问于 2018-07-24 03:55:46
回答 1查看 441关注 0票数 0

我理解为什么以及如何使用SafeMath库。然而,我想知道是否有一种最佳实践指南,如何和何时使用该库,以及在哪些情况下不必使用。

从安全的角度来看,只要在任何手术中使用它,都是不会失败的,对吧?尽管如此,仍然有许多非常高质量的智能合同,它们在某些情况下仍然只使用库,而不是全部。我想这是为了节气?

何时和何时不使用SafeMath库,是否有任何建议或最佳实践指南?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-07-24 08:28:18

您可能知道,库用于输入验证。因此,当您需要验证输入时,应该使用它。

请考虑以下示例:

代码语言:javascript
复制
pragma solidity ^0.4.24;

contract MyStuff {

    function safeFunc() public pure returns (uint256) {
        uint256 a = 5;
        uint256 b = 6;
        return a + b;
    }

    function unsafeFunc(uint256 a) public pure returns (uint256) {
        uint256 b = 6;
        return a + b;
    }
}

safeFunc不将数字作为输入参数,因此不一定需要验证它们。您始终知道这些值是有效的,因为它们不能更改。

unsafeFunc将其中一个数字作为输入参数,因此不能确定使用该参数不会造成任何问题。恶意用户可能会提供max(uint256)作为参数,并导致溢出。

即使没有使用SafeMath (即使应该使用它),也可能是因为:

1)没有人(开发人员以外)知道存在漏洞(例如,源代码未发布)。

2)以其他方式验证输入。

( 3)开发没有意义/效益。

4)没有人注意到这种剥削

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/54998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档