mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Updates docs for blockhash changes.
This commit is contained in:
parent
be35a65eb3
commit
bddfa47e77
@ -314,7 +314,7 @@ The following is the order of precedence for operators, listed in order of evalu
|
|||||||
Global Variables
|
Global Variables
|
||||||
================
|
================
|
||||||
|
|
||||||
- ``block.blockhash(uint blockNumber) returns (bytes32)``: hash of the given block - only works for 256 most recent blocks
|
- ``block.blockhash(uint blockNumber) returns (bytes32)``: hash of the given block - only works for 256 most recent, excluding current, blocks - deprecated in version 0.4.22 and replaced by ``blockhash(uint blockNumber)``.
|
||||||
- ``block.coinbase`` (``address``): current block miner's address
|
- ``block.coinbase`` (``address``): current block miner's address
|
||||||
- ``block.difficulty`` (``uint``): current block difficulty
|
- ``block.difficulty`` (``uint``): current block difficulty
|
||||||
- ``block.gaslimit`` (``uint``): current block gaslimit
|
- ``block.gaslimit`` (``uint``): current block gaslimit
|
||||||
@ -331,6 +331,7 @@ Global Variables
|
|||||||
- ``assert(bool condition)``: abort execution and revert state changes if condition is ``false`` (use for internal error)
|
- ``assert(bool condition)``: abort execution and revert state changes if condition is ``false`` (use for internal error)
|
||||||
- ``require(bool condition)``: abort execution and revert state changes if condition is ``false`` (use for malformed input or error in external component)
|
- ``require(bool condition)``: abort execution and revert state changes if condition is ``false`` (use for malformed input or error in external component)
|
||||||
- ``revert()``: abort execution and revert state changes
|
- ``revert()``: abort execution and revert state changes
|
||||||
|
- ``blockhash(uint blockNumber) returns (bytes32)``: hash of the given block - only works for 256 most recent blocks
|
||||||
- ``keccak256(...) returns (bytes32)``: compute the Ethereum-SHA-3 (Keccak-256) hash of the :ref:`(tightly packed) arguments <abi_packed_mode>`
|
- ``keccak256(...) returns (bytes32)``: compute the Ethereum-SHA-3 (Keccak-256) hash of the :ref:`(tightly packed) arguments <abi_packed_mode>`
|
||||||
- ``sha3(...) returns (bytes32)``: an alias to ``keccak256``
|
- ``sha3(...) returns (bytes32)``: an alias to ``keccak256``
|
||||||
- ``sha256(...) returns (bytes32)``: compute the SHA-256 hash of the :ref:`(tightly packed) arguments <abi_packed_mode>`
|
- ``sha256(...) returns (bytes32)``: compute the SHA-256 hash of the :ref:`(tightly packed) arguments <abi_packed_mode>`
|
||||||
@ -346,6 +347,23 @@ Global Variables
|
|||||||
- ``<address>.send(uint256 amount) returns (bool)``: send given amount of Wei to :ref:`address`, returns ``false`` on failure
|
- ``<address>.send(uint256 amount) returns (bool)``: send given amount of Wei to :ref:`address`, returns ``false`` on failure
|
||||||
- ``<address>.transfer(uint256 amount)``: send given amount of Wei to :ref:`address`, throws on failure
|
- ``<address>.transfer(uint256 amount)``: send given amount of Wei to :ref:`address`, throws on failure
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Do not rely on ``block.timestamp``, ``now`` and ``blockhash`` as a source of randomness,
|
||||||
|
unless you know what you are doing.
|
||||||
|
|
||||||
|
Both the timestamp and the block hash can be influenced by miners to some degree.
|
||||||
|
Bad actors in the mining community can for example run a casino payout function on a chosen hash
|
||||||
|
and just retry a different hash if they did not receive any money.
|
||||||
|
|
||||||
|
The current block timestamp must be strictly larger than the timestamp of the last block,
|
||||||
|
but the only guarantee is that it will be somewhere between the timestamps of two
|
||||||
|
consecutive blocks in the canonical chain.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The block hashes are not available for all blocks for scalability reasons.
|
||||||
|
You can only access the hashes of the most recent 256 blocks, all other
|
||||||
|
values will be zero.
|
||||||
|
|
||||||
.. index:: visibility, public, private, external, internal
|
.. index:: visibility, public, private, external, internal
|
||||||
|
|
||||||
Function Visibility Specifiers
|
Function Visibility Specifiers
|
||||||
|
@ -52,7 +52,7 @@ namespace and are mainly used to provide information about the blockchain.
|
|||||||
Block and Transaction Properties
|
Block and Transaction Properties
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
- ``block.blockhash(uint blockNumber) returns (bytes32)``: hash of the given block - only works for 256 most recent blocks excluding current
|
- ``block.blockhash(uint blockNumber) returns (bytes32)``: hash of the given block - only works for 256 most recent, excluding current, blocks - deprecated in version 0.4.22 and replaced by ``blockhash(uint blockNumber)``.
|
||||||
- ``block.coinbase`` (``address``): current block miner's address
|
- ``block.coinbase`` (``address``): current block miner's address
|
||||||
- ``block.difficulty`` (``uint``): current block difficulty
|
- ``block.difficulty`` (``uint``): current block difficulty
|
||||||
- ``block.gaslimit`` (``uint``): current block gaslimit
|
- ``block.gaslimit`` (``uint``): current block gaslimit
|
||||||
@ -74,7 +74,7 @@ Block and Transaction Properties
|
|||||||
This includes calls to library functions.
|
This includes calls to library functions.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Do not rely on ``block.timestamp``, ``now`` and ``block.blockhash`` as a source of randomness,
|
Do not rely on ``block.timestamp``, ``now`` and ``blockhash`` as a source of randomness,
|
||||||
unless you know what you are doing.
|
unless you know what you are doing.
|
||||||
|
|
||||||
Both the timestamp and the block hash can be influenced by miners to some degree.
|
Both the timestamp and the block hash can be influenced by miners to some degree.
|
||||||
|
Loading…
Reference in New Issue
Block a user