Bitcoin Forum
June 18, 2024, 01:46:22 AM *
News: Voting for pizza day contest
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Кто может объяснить код смарт контракта (scam l  (Read 69 times)
borkamore (OP)
Newbie
*
Offline Offline

Activity: 1
Merit: 0


View Profile
August 23, 2022, 10:00:40 AM
 #1

Всем привет! Есть такой смарт контракт, в отзывах пишут скам, хочу понять по коду реально ли будет вывести эти монеты?

Меня хватило только увидеть функцию 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;
    }
}
witcher_sense
Legendary
*
Offline Offline

Activity: 2380
Merit: 4372


🔐BitcoinMessage.Tools🔑


View Profile WWW
August 24, 2022, 04:34:24 AM
Merited by klarki (3)
 #2

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

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

Тут вроде бы все просто: адрес добавляется и удаляется из вайтлиста, но непонятно где эти функции используются.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!