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
|
||||
function mint(address receiver, uint amount) public {
|
||||
require(msg.sender == minter);
|
||||
require(amount < 1e60);
|
||||
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 ``mint`` function sends an amount of newly created coins to another address.
|
||||
The :ref:`require <assert-and-require>` function call defines conditions that reverts all changes if not met.
|
||||
In this example, ``require(msg.sender == minter);`` ensures that only the creator of the contract can call ``mint``,
|
||||
and ``require(amount < 1e60);`` ensures a maximum amount of tokens. This ensures that there are no overflow errors in the future.
|
||||
The ``mint`` function sends an amount of newly created coins to another address. The :ref:`require
|
||||
<assert-and-require>` function call defines conditions that reverts all changes if not met. In this
|
||||
example, ``require(msg.sender == minter);`` ensures that only the creator of the contract can call
|
||||
``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
|
||||
why a condition or operation failed. Errors are used together with the
|
||||
|
Loading…
Reference in New Issue
Block a user