v2-core icon indicating copy to clipboard operation
v2-core copied to clipboard

`CheckContract` for token contracts

Open abhi3700 opened this issue 2 years ago • 3 comments

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");
}

abhi3700 avatar Jun 08 '22 15:06 abhi3700

what

hacklili avatar Jun 18 '23 13:06 hacklili

this is to check whether the parsed contract address has some ERC20 code.

abhi3700 avatar Jun 18 '23 20:06 abhi3700

this is not recommended because

  1. It blocks developers creating a pair before deploying a token contract ( some may find this useful )

  2. 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.

ghost avatar Dec 31 '23 19:12 ghost