Merge pull request #4526 from ethereum/docs-address-truncation

Clarify truncation with addresses
This commit is contained in:
Alex Beregszaszi 2018-08-03 14:11:07 +01:00 committed by GitHub
commit 0b20e4fd22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -104,6 +104,14 @@ Operators:
* ``<=``, ``<``, ``==``, ``!=``, ``>=`` and ``>`` * ``<=``, ``<``, ``==``, ``!=``, ``>=`` and ``>``
.. warning::
If you convert a type that uses a larger byte size to an ``address``, for example ``bytes32``, then the ``address`` is truncated.
To reduce conversion ambiguity version 0.4.24 and higher of the compiler force you make the truncation explicit in the conversion.
Take for example the address ``0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCCC``.
You can use ``address(uint160(bytes20(b)))``, which results in ``0x111122223333444455556666777788889999aAaa``,
or you can use ``address(uint160(uint256(b)))``, which results in ``0x777788889999AaAAbBbbCcccddDdeeeEfFFfCcCc``.
.. note:: .. note::
Starting with version 0.5.0 contracts do not derive from the address type, but can still be explicitly converted to address. Starting with version 0.5.0 contracts do not derive from the address type, but can still be explicitly converted to address.