v2-core
v2-core copied to clipboard
`CheckContract` for token contracts
Instead of this line, the check contract logic can be written by introducing a function like this:
/**
* Check that the account is an already deployed non-destroyed contract.
* See: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol#L12
*/
function _checkContract(address _account) private view {
require(_account != address(0), "Account cannot be zero address");
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly {
size := extcodesize(_account)
}
require(size != 0, "Account code size cannot be zero");
}
what
this is to check whether the parsed contract address has some ERC20 code.
this is not recommended because
-
It blocks developers creating a pair before deploying a token contract ( some may find this useful )
-
Every pair liquidity is dedicated so if the pair token isn't deployed or doesn't fulfill ERC20 standard core functionality wouldn't work including providing liquidity, etc. so it doesn't matter.