Твердость | Правильное использование оператора a for b в производных контрактах

У меня есть контракт с использованием Open-Zeppelin SafeMath, но это объявление не распознается производными контрактами.

Base.sol

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

import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol";

contract Base  {
    using SafeMath for uint256;
}

Test.sol

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

import "Base.sol";

contract Test is Base {
    function getnum(uint256 _number) external view returns (uint256) {
        return _number.add(_number);
    }
}

Но я продолжаю получать эту ошибку:

Member "add" not found or not visible after argument-dependent lookup in uint256.

person abullock    schedule 12.11.2020    source источник


Ответы (1)


using A for B statemen изменился в solidity 0.7, теперь мы должны повторить утверждение во всех производных контрактах:

using A for B влияет только на контракт, в котором он упоминается. Ранее эффект был унаследован. Теперь вам нужно повторить оператор using во всех производных контрактах, которые используют эту функцию.

https://solidity.readthedocs.io/en/v0.7.4/070-breaking-changes.html#functions-and-events.

person abullock    schedule 12.11.2020