2

请问智能合约如何调用库这个代码为什么编译错误呢,麻烦老师给看下 | 登链社区 | 技术...

 2 years ago
source link: https://learnblockchain.cn/question/2225
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
请问智能合约如何调用库这个代码为什么编译错误呢,麻烦老师给看下 | 登链社区 | 技术问答

20 请问智能合约如何调用库这个代码为什么编译错误呢,麻烦老师给看下

回答问题即可获得 5 经验值,回答被采纳后即可获得 30 学分。

/**
*Submitted for verification at BscScan.com on 2021-02-25
*/

// File: contracts/lib/SafeMath.sol

Copyright 2020 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/

pragma solidity 0.6.9;

  • @title SafeMath

  • @author DODO Breeder

  • @notice Math operations with safety checks that revert on error
    */
    library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
    return 0;
    }

    uint256 c = a * b;
    require(c / a == b, "MUL_ERROR");

    return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0, "DIVIDING_ERROR");
    return a / b;
    }

    function divCeil(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 quotient = div(a, b);
    uint256 remainder = a - quotient * b;
    if (remainder > 0) {
    return quotient + 1;
    } else {
    return quotient;
    }
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a, "SUB_ERROR");
    return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, "ADD_ERROR");
    return c;
    }

    function sqrt(uint256 x) internal pure returns (uint256 y) {
    uint256 z = x / 2 + 1;
    y = x;
    while (z < y) {
    y = z;
    z = (x / z + z) / 2;
    }
    }
    }
    // File: contracts/external/ERC20/InitializableERC20.sol

contract InitializableERC20 {
using SafeMath for uint256;

string public name;
uint256 public decimals;
string public symbol;
uint256 public totalSupply;

bool public initialized;

mapping(address => uint256) balances;
mapping(address => mapping(address => uint256)) internal allowed;

event Transfer(address indexed from, address indexed to, uint256 amount);
event Approval(address indexed owner, address indexed spender, uint256 amount);

function init(
address _creator,
uint256 _totalSupply,
string memory _name,
string memory _symbol,
uint256 _decimals
) public {
require(!initialized, "TOKEN_INITIALIZED");
initialized = true;
totalSupply = _totalSupply;
balances[_creator] = _totalSupply;
name = _name;
symbol = _symbol;
decimals = _decimals;
emit Transfer(address(0), _creator, _totalSupply);
}

function transfer(address to, uint256 amount) public returns (bool) {
require(to != address(0), "TO_ADDRESS_IS_EMPTY");
require(amount <= balances[msg.sender], "BALANCE_NOT_ENOUGH");

balances[msg.sender] = balances[msg.sender].sub(amount);
balances[to] = balances[to].add(amount);
emit Transfer(msg.sender, to, amount);
return true;

function balanceOf(address owner) public view returns (uint256 balance) {
return balances[owner];
}

function transferFrom(
address from,
address to,
uint256 amount
) public returns (bool) {
require(to != address(0), "TO_ADDRESS_IS_EMPTY");
require(amount <= balances[from], "BALANCE_NOT_ENOUGH");
require(amount <= allowed[from][msg.sender], "ALLOWANCE_NOT_ENOUGH");

balances[from] = balances[from].sub(amount);
balances[to] = balances[to].add(amount);
allowed[from][msg.sender] = allowed[from][msg.sender].sub(amount);
emit Transfer(from, to, amount);
return true;

function approve(address spender, uint256 amount) public returns (bool) {
allowed[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}

function allowance(address owner, address spender) public view returns (uint256) {
return allowed[owner][spender];
}
}


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK