Skip to content

Latest commit

 

History

History
54 lines (37 loc) · 1.56 KB

库.md

File metadata and controls

54 lines (37 loc) · 1.56 KB

代码

// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }
}

contract TestSafeMath {
    using SafeMath for uint256;

    uint256 public MAX_UINT256 = 2**256 - 1;

    function testAdd(uint256 a, uint256 b) public pure returns (uint256) {
        return a.add(b);
    }

    function testSub(uint256 a, uint256 b) public pure returns (uint256) {
        return a.sub(b);
    }

    function testMaxUint256() public pure returns (uint256) {
        return MAX_UINT256;
    }
}

描述

在Solidity中,库是可重用代码块的集合。库可以被认为是一种特殊的合约,只能定义函数和状态变量,而不能有函数调用或接收以太币。

在此示例中,我们定义了一个名为SafeMath的库,其中包含基本算术函数(加法和减法)来处理整数溢出问题。然后,在另一个合约TestSafeMath中,我们使用using关键字将库引入到合约中,并调用库中的函数。

值得注意的是,在使用库时,需要在合约中包含using语句。这使得库中的函数可以更轻松地调用,并大大提高了代码的重用性。

作者

Solidity By Example