V2 was deployed on the network on April 11th 2021. In V2 we set our goal to permanently prevent any liquidity outside the presale. Ensuring a true 0$ stable peg.

We did this by using the isContract() function. It gets called in the transfer function to check if the recipient is a contract before triggering the transfer.

Because the tokens have to be sent to the Bounce presale contract before presale, we had to allow sending to a contract at least once in the tokens lifetime. Thats why we chose to add the blockSendingToContracts() function. After sending the tokens to the presale contract this function gets called by the dev and switches the sendingToContractsBlocked boolean to true. From now on no one will ever send $SAFERUG to any liquidity pool contract or other kind of contract again.

isContract() function:

function isContract(address account) internal view returns (bool) {
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);

blockSendingToContracts() function:

function blockSendingToContracts() external onlyOwner() {
sendingToContractsBlocked = true;

transfer() function:

function _transfer(address from,address to,uint256 amount) private
if(isContract(to) == true)
require(sendingToContractsBlocked == false, "Address: sending to contracts blocked");
Crypto bag had seen it all