Math - OpenZeppelin 文档

本文档介绍了OpenZeppelin Contracts库中的Math模块,该模块提供了一系列与数学相关的实用工具,包括SafeMath、SignedSafeMath和Math库,用于执行安全算术运算,避免溢出和除零等错误。SafeMath库实现了无溢出的加减乘除模运算,SignedSafeMath库实现了有符号整数的安全算术运算,Math库则提供了一些标准数学实用函数,如最大值、最小值和平均值。

你当前阅读的不是此文档的最新版本。5.x 是当前版本。

Math

https://docs.openzeppelin.com/contracts/api/math查看此文档效果更佳

这些是与数学相关的实用程序。

SafeMath

带有溢出检查的 Solidity 算术运算的包装器。

Solidity 中的算术运算在溢出时会回绕。这很容易导致错误,因为程序员通常假设溢出会引发错误,这是高级编程语言中的标准行为。SafeMath 通过在操作溢出时恢复事务来恢复这种直觉。

使用此库而不是未检查的操作消除了整整一类的错误,因此建议始终使用它。

函数

tryAdd(uint256 a, uint256 b) → bool, uint256 internal

返回两个无符号整数的加法,带有一个溢出标志。

自 v3.4 起可用。

trySub(uint256 a, uint256 b) → bool, uint256 internal

返回两个无符号整数的减法,带有一个溢出标志。

自 v3.4 起可用。

tryMul(uint256 a, uint256 b) → bool, uint256 internal

返回两个无符号整数的乘法,带有一个溢出标志。

自 v3.4 起可用。

tryDiv(uint256 a, uint256 b) → bool, uint256 internal

返回两个无符号整数的除法,带有一个除零标志。

自 v3.4 起可用。

tryMod(uint256 a, uint256 b) → bool, uint256 internal

返回两个无符号整数相除的余数,带有一个除零标志。

自 v3.4 起可用。

add(uint256 a, uint256 b) → uint256 internal

返回两个无符号整数的加法,溢出时恢复。

对应于 Solidity 的 + 运算符。

要求:

  • 加法不能溢出。
sub(uint256 a, uint256 b) → uint256 internal

返回两个无符号整数的减法,溢出时恢复(当结果为负数时)。

对应于 Solidity 的 - 运算符。

要求:

  • 减法不能溢出。
mul(uint256 a, uint256 b) → uint256 internal

返回两个无符号整数的乘法,溢出时恢复。

对应于 Solidity 的 * 运算符。

要求:

  • 乘法不能溢出。
div(uint256 a, uint256 b) → uint256 internal

返回两个无符号整数的整数除法,除以零时恢复。结果向零舍入。

对应于 Solidity 的 / 运算符。注意:此函数使用 revert 操作码(保留剩余 gas 不变),而 Solidity 使用无效操作码来恢复(消耗所有剩余 gas)。

要求:

  • 除数不能为零。
mod(uint256 a, uint256 b) → uint256 internal

返回两个无符号整数相除的余数。(无符号整数模数),除以零时恢复。

对应于 Solidity 的 % 运算符。此函数使用 revert 操作码(保留剩余 gas 不变),而 Solidity 使用无效操作码来恢复(消耗所有剩余 gas)。

要求:

  • 除数不能为零。
sub(uint256 a, uint256 b, string errorMessage) → uint256 internal

返回两个无符号整数的减法,溢出时使用自定义消息恢复(当结果为负数时)。

此函数已弃用,因为它需要为错误消息不必要地分配内存。对于自定义恢复原因,请使用 trySub

对应于 Solidity 的 - 运算符。

要求:

  • 减法不能溢出。
div(uint256 a, uint256 b, string errorMessage) → uint256 internal

返回两个无符号整数的整数除法,除以零时使用自定义消息恢复。结果向零舍入。

此函数已弃用,因为它需要为错误消息不必要地分配内存。对于自定义恢复原因,请使用 tryDiv

对应于 Solidity 的 / 运算符。注意:此函数使用 revert 操作码(保留剩余 gas 不变),而 Solidity 使用无效操作码来恢复(消耗所有剩余 gas)。

要求:

  • 除数不能为零。
mod(uint256 a, uint256 b, string errorMessage) → uint256 internal

返回两个无符号整数相除的余数。(无符号整数模数),除以零时使用自定义消息恢复。

此函数已弃用,因为它需要为错误消息不必要地分配内存。对于自定义恢复原因,请使用 tryMod

对应于 Solidity 的 % 运算符。此函数使用 revert 操作码(保留剩余 gas 不变),而 Solidity 使用无效操作码来恢复(消耗所有剩余 gas)。

要求:

  • 除数不能为零。

SignedSafeMath

带符号的数学运算,带有安全检查,可在出错时恢复。

函数

mul(int256 a, int256 b) → int256 internal

返回两个带符号整数的乘法,溢出时恢复。

对应于 Solidity 的 * 运算符。

要求:

  • 乘法不能溢出。
div(int256 a, int256 b) → int256 internal

返回两个带符号整数的整数除法。除以零时恢复。结果向零舍入。

对应于 Solidity 的 / 运算符。注意:此函数使用 revert 操作码(保留剩余 gas 不变),而 Solidity 使用无效操作码来恢复(消耗所有剩余 gas)。

要求:

  • 除数不能为零。
sub(int256 a, int256 b) → int256 internal

返回两个带符号整数的减法,溢出时恢复。

对应于 Solidity 的 - 运算符。

要求:

  • 减法不能溢出。
add(int256 a, int256 b) → int256 internal

返回两个带符号整数的加法,溢出时恢复。

对应于 Solidity 的 + 运算符。

要求:

  • 加法不能溢出。

Math

Solidity 语言中缺少的标准数学实用程序。

函数

max(uint256 a, uint256 b) → uint256 internal

返回两个数字中最大的一个。

min(uint256 a, uint256 b) → uint256 internal

返回两个数字中最小的一个。

average(uint256 a, uint256 b) → uint256 internal

返回两个数字的平均值。结果向零舍入。

← 自省

支付 →

  • 原文链接: docs.openzeppelin.com/co...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
OpenZeppelin
OpenZeppelin
江湖只有他的大名,没有他的介绍。