参考文档:
https://github.com/compound-finance/compound-protocol/tree/master/contracts
本文说明:所有合约保留原合约内容,解释均使用中文;
1.CarefulMath.sol
pragma solidity ^0.5.16;
/**
* @title Careful Math
* @author Compound
* @notice Derived from OpenZeppelin's SafeMath library
* https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/math/SafeMath.sol
*/
contract CarefulMath {
/**
* @dev Possible error codes that we can return
*/
enum MathError { // 枚举类型
NO_ERROR, // 无错误
DIVISION_BY_ZERO, // 被 0 除
INTEGER_OVERFLOW, // 溢出(上溢)
INTEGER_UNDERFLOW // 溢出(下溢)
}
/**
* @dev Multiplies t