Могу ли я использовать свой собственный ERC-20 со своим умным контрактом?

Итак, у меня есть контракт, который позволяет вам обменять ETH на мой собственный токен ERC20. Я хочу использовать этот собственный токен ERC20 сейчас с другими умными контрактами. Есть ли определенный способ, которым я должен указать свой токен против ETH?

пример:

Прагма солидность ^0,4.24;

/ * * --- Как использовать: * 1. Отправьте токены HYPER на адрес смарт-контракта в любой сумме. * 2. Получите прибыль, отправив 0 транзакцию HYPER (1 раз в час) * 3. Если вы не снимаете деньги и зарабатываете более 200%, вы можете снять только один раз сверх 200% надбавки */ контракт HyperLENDtest {

using SafeMath for uint;
mapping(address => uint) public balance;
mapping(address => uint) public time;
mapping(address => uint) public percentWithdraw;
mapping(address => uint) public allPercentWithdraw;

function процента Rate() открытое представлениебене (uint) { uint contractBalance = адрес (это).balance;

    if (contractBalance < 100 ether) {
        return (20);
    }
    if (contractBalance >= 500 ether && contractBalance < 1000 ether) {
        return (40);
    }
    if (contractBalance >= 1000 ether && contractBalance < 2000 ether) {
        return (60);
    }
    if (contractBalance >= 2000 ether) {
        return (80);
    }

Вместо того, чтобы возвращать ETH, я хочу использовать мой собственный токен ERC20 для пользователей, чтобы отправить в контракт и получить взамен% от токена ERC20 обратно.

2 ответа

Ваш контракт - это просто другой адрес, так что да, вы можете отправлять токены в свой контракт. Но вы не можете отправлять их так же, как отправляете эфир, то есть с помощью платной функции. Вы должны перевести токены на адрес контракта, используя метод передачи вашего токена ERC-20. И чтобы отправить токены из контракта кому-то другому, вам нужно позвонить по переводу изнутри вашего контракта, если вы не сделаете что-то вроде предоставления большого количества скидок для своего аккаунта, но я бы не советовал. Как именно вы можете вызывать методы из вашего ERC-20 из другого контракта, объясняется в этом посте.

Возьмем, к примеру, электронную коммерцию. Я сделал это следующим образом:

  1. Пользователь будет покупать токены, отправляя эфир на ваш контракт ERC-20. Скорость между эфиром и вашим токеном полностью зависит от вас, поскольку она зависит от бизнеса, а не от самого эфира.
    В этом бизнес-примере, допустим, мы даем 100 токенов за каждый эфир. Пользователь передает 2 эфира в контракт, и 200 ваших бизнес-токенов затем помещаются в ваш контракт.
    mapping(address => uint) accounts.
    Учитывая это, следующий код даст вам 200:
    accounts[customer_address] //(returns 200)

  2. Тогда у вас будет еще один контракт, скажем, на покупку данного предмета. Вам просто нужно вызвать эту функцию покупки смарт-контракта с этого адреса. Затем эта функция отвечает за вызов вашего контракта ERC-20, чтобы проверить, достаточно ли у пользователя средств с учетом его / ее адреса. Если это так, то ваш контракт будет передавать заданное количество токенов в ваш контракт ERC-20 в доступные токены или другой кошелек, который вам нужен, в основном переводя токены пользователя (адреса) на другой адрес, который вы решите.

Таким образом, ваш пользователь использует ваши ранее купленные токены и даже не думает об эфире. Пожалуйста, помните, что сбор за ГАЗ должен быть оплачен. Так что либо вы платите за это, либо ваши клиенты (включат это в цену товара или около того).

Надеюсь, это поможет кому-то с тем же вопросом :)

Другие вопросы по тегам