* Bump required compiler version to 0.5.2. * Fix shadowed variable warning in ERC20Migrator. * Rename Counter to Counters. * Add dummy state variable to SafeERC20Helper. * Update changelog entry. * Fix CountersImpl name. * Improve changelog entry.
27 lines
1.1 KiB
Solidity
27 lines
1.1 KiB
Solidity
pragma solidity ^0.5.2;
|
|
|
|
/**
|
|
* Utility library of inline functions on addresses
|
|
*/
|
|
library Address {
|
|
/**
|
|
* Returns whether the target address is a contract
|
|
* @dev This function will return false if invoked during the constructor of a contract,
|
|
* as the code is not actually created until after the constructor finishes.
|
|
* @param account address of the account to check
|
|
* @return whether the target address is a contract
|
|
*/
|
|
function isContract(address account) internal view returns (bool) {
|
|
uint256 size;
|
|
// XXX Currently there is no better way to check if there is a contract in an address
|
|
// than to check the size of the code at that address.
|
|
// See https://ethereum.stackexchange.com/a/14016/36603
|
|
// for more details about how this works.
|
|
// TODO Check this again before the Serenity release, because all addresses will be
|
|
// contracts then.
|
|
// solhint-disable-next-line no-inline-assembly
|
|
assembly { size := extcodesize(account) }
|
|
return size > 0;
|
|
}
|
|
}
|