Clear up meaning of `ZERO_ADDRESS`, delete `CREATE_CONTRACT_ADDRESS`

There is no valid `CREATE_CONTRACT_ADDRESS`.  Some places on the internet say
account zero means contract creation, but that's not correct.

Transactions to `ZERO_ADDRESS` are legitimate transfers to that account, not
contract creations.  They are used to "burn" Eth.  People also send Eth to
address zero by accident, unrecoverably, due to poor user interface issues.

Signed-off-by: Jamie Lokier <jamie@shareable.org>
This commit is contained in:
Jamie Lokier 2021-05-14 15:20:36 +01:00
parent 745129c4ac
commit 90a961243e
No known key found for this signature in database
GPG Key ID: CBC25C68435C30A2
1 changed files with 6 additions and 4 deletions

View File

@ -10,11 +10,13 @@ const
UINT_256_MAX*: UInt256 = high(UInt256) UINT_256_MAX*: UInt256 = high(UInt256)
INT_256_MAX_AS_UINT256* = high(Uint256) shr 1 INT_256_MAX_AS_UINT256* = high(Uint256) shr 1
UINT160CEILING*: UInt256 = 2.u256.pow(160) UINT160CEILING*: UInt256 = 2.u256.pow(160)
# Transactions to ZERO_ADDRESS are legitimate transfers to that account, not
# contract creations. They are used to "burn" Eth. People also send Eth to
# address zero by accident, unrecoverably, due to poor user interface issues.
ZERO_ADDRESS* = default(EthAddress) ZERO_ADDRESS* = default(EthAddress)
# TODO: use Option[EthAddress]?
# create contract address cannot be ZERO_ADDRESS # ZERO_HASH32 is the parent hash of genesis blocks.
# because actual zero address exists
CREATE_CONTRACT_ADDRESS* = ZERO_ADDRESS
ZERO_HASH32* = Hash256() ZERO_HASH32* = Hash256()
GAS_LIMIT_EMA_DENOMINATOR* = 1_024 GAS_LIMIT_EMA_DENOMINATOR* = 1_024