mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #11314 from ethereum/patch-1
[DOCS] Removed an overflow check and rely on checked arithmetic
This commit is contained in:
commit
dce3006723
@ -105,7 +105,6 @@ registering with a username and password, all you need is an Ethereum keypair.
|
|||||||
// Can only be called by the contract creator
|
// Can only be called by the contract creator
|
||||||
function mint(address receiver, uint amount) public {
|
function mint(address receiver, uint amount) public {
|
||||||
require(msg.sender == minter);
|
require(msg.sender == minter);
|
||||||
require(amount < 1e60);
|
|
||||||
balances[receiver] += amount;
|
balances[receiver] += amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,10 +204,15 @@ always the address where the current (external) function call came from.
|
|||||||
|
|
||||||
The functions that make up the contract, and that users and contracts can call are ``mint`` and ``send``.
|
The functions that make up the contract, and that users and contracts can call are ``mint`` and ``send``.
|
||||||
|
|
||||||
The ``mint`` function sends an amount of newly created coins to another address.
|
The ``mint`` function sends an amount of newly created coins to another address. The :ref:`require
|
||||||
The :ref:`require <assert-and-require>` function call defines conditions that reverts all changes if not met.
|
<assert-and-require>` function call defines conditions that reverts all changes if not met. In this
|
||||||
In this example, ``require(msg.sender == minter);`` ensures that only the creator of the contract can call ``mint``,
|
example, ``require(msg.sender == minter);`` ensures that only the creator of the contract can call
|
||||||
and ``require(amount < 1e60);`` ensures a maximum amount of tokens. This ensures that there are no overflow errors in the future.
|
``mint``. In general, the creator can mint as many tokens as they like, but at some point, this will
|
||||||
|
lead to a phenomenon called "overflow". Note that because of the default :ref:`Checked arithmetic
|
||||||
|
<unchecked>`, the transaction would revert if the expression ``balances[receiver] += amount;``
|
||||||
|
overflows, i.e., when ``balances[receiver] + amount`` in arbitrary precision arithmetic is larger
|
||||||
|
than the maximum value of ``uint`` (``2**256 - 1``). This is also true for the statement
|
||||||
|
``balances[receiver] += amount;`` in the function ``send``.
|
||||||
|
|
||||||
:ref:`Errors <errors>` allow you to provide more information to the caller about
|
:ref:`Errors <errors>` allow you to provide more information to the caller about
|
||||||
why a condition or operation failed. Errors are used together with the
|
why a condition or operation failed. Errors are used together with the
|
||||||
|
Loading…
Reference in New Issue
Block a user