Author

Topic: Кто может объяснить код смарт контракта (scam &#108 (Read 69 times)

legendary
Activity: 2310
Merit: 4313
🔐BitcoinMessage.Tools🔑
Сразу оговорюсь, что я не разбираюсь не в программировпеии, ни в смарт-контрактах тем более, но то что вы запостили вряд ли можно назвать полноценным смарт-контрактом. В частности этот код состоит только из заданных функций, которые даже не используются сами по себе. Они просто заданы и все. Разберем поподробнее:

Code:
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override
    {
        super._beforeTokenTransfer(from, to, amount);

        if (!whiteList[from]) {
            require(timeLimit(from) >= 172800, "Hodl period is not reached, wait pls.");
        }
        lastIncomes[to] = block.timestamp;
    }

Как вы сказали если адрес в вайтлисте, то проверяется как давно были получены токены. С момента получения токенов (lastIncomes[to]) должно пройти 48 часов. Это кстати странно, потому что в комментарии выше пишут про 24 часа:

Code:
Coin Hodl can be sold 24 hours after purchase

Code:
function timeLimit(address _address) public view returns(uint) {
        uint difference = block.timestamp - lastIncomes[_address];
        return difference;
    }

Эта функция вызывается в предыдущей функции и здесь подсчитывается разница между временем текущего блока и значением lastIncomes, которое было объяснено выше как время получения токенов.

Честно говоря, я не понимаю почему в функции _beforeTokenTransfer используется эта строчка:

Code:
lastIncomes[to] = block.timestamp;

Это присвоение значения текущего блока времени получения токена, но по такой логике нужный timeLimit никогда не будет достигнут и эта функция никогда не вернет нужное значение для вывода токенов.

Далее:

Code:
function addToWhiteList(address _address) onlyOwner public {
        whiteList[_address] = true;
    }

  function removeFromWhiteList(address _address) onlyOwner public {
        whiteList[_address] = false;
    }

Тут вроде бы все просто: адрес добавляется и удаляется из вайтлиста, но непонятно где эти функции используются.
newbie
Activity: 1
Merit: 0
Всем привет! Есть такой смарт контракт, в отзывах пишут скам, хочу понять по коду реально ли будет вывести эти монеты?

Меня хватило только увидеть функцию beforeTokenTransfer с проверкой есть ли кошелек отправителя в whiteList, если нет будет проверка на 172800 секунд. А от какого она времени и как формируется whiteList не доходит. Кто может разжевать простыми словами?

Code:
//"SPDX-License-Identifier: MIT"
pragma solidity 0.8.4;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

/**
* BEP20 Token.
* Name: Issa Coin
* Symbol: ISC
* Total supply: 10 000 000 ISC
* Decimals: 18
*
* Coin Hodl can be sold 24 hours after purchase
* https://eips.ethereum.org/EIPS/eip-20
*/
contract CoinHodlCoin is ERC20, Ownable {

    mapping (address => uint) public lastIncomes;
    mapping (address => bool) public whiteList;

    /**
    * @notice Mint 10 000 000 tokens and send to owner
    */
    constructor() ERC20("Issa Coin", "ISC") {
        _mint(msg.sender, 100000000 * 10 ** decimals());
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override
    {
        super._beforeTokenTransfer(from, to, amount);

        if (!whiteList[from]) {
            require(timeLimit(from) >= 172800, "Hodl period is not reached, wait pls.");
        }
        lastIncomes[to] = block.timestamp;
    }

    /**
   * @notice Checking the time limit
   *
   * @param _address Address of token holder
   */
    function timeLimit(address _address) public view returns(uint) {
        uint difference = block.timestamp - lastIncomes[_address];
        return difference;
    }

    /**
   * @notice Add to white list
   *
   * @param _address Member address of white list
   */
    function addToWhiteList(address _address) onlyOwner public {
        whiteList[_address] = true;
    }

    /**
   * @notice Remove from white list
   *
   * @param _address Member address of white list
   */
    function removeFromWhiteList(address _address) onlyOwner public {
        whiteList[_address] = false;
    }
}
Jump to: