Кошелек токенов ERC-20, добавляющий адрес контракта, является принципом реализации airdrop.

блокчейн Эфириум Solidity
Кошелек токенов ERC-20, добавляющий адрес контракта, является принципом реализации airdrop.

В последнее время было много аирдропов токенов для разных проектов.Некоторые рукотворные, а некоторые аирдропы путем перевода 0eth в контракт токена.Однако в последнее время были такие, которые не требуют передачи.Просто добавьте адрес токена контракт на imtoken.Airdrops можно реализовать.Многие друзья не понимают принципа и считают,что ничего не было сделано.Как они могут быть airdrop на мой адрес в фиксированной точке? Далее я подробно объясню, как добавить imtoken, то есть метод аирдропа токенов.

Токены ERC-20

Токены ERC-20, созданные с помощью Ethereum, относятся к токенам, которые соответствуют стандарту ERC-20, в котором говорится, что в контракте токена должны быть реализованы следующие методы:

balances

Переменная баланса, которая хранит баланс всех адресов, которые владеют токенами

mapping(address => uint) balances;скопировать код
balanceOf()

Возвращает баланс счета указанного адреса

// balanceOf方法原型function balanceOf(address _owner) constant returns (uint256 balance)скопировать код
transfer()

перечислить_valueКоличество токенов для адреса_to

// transfer方法原型function transfer(address _to, uint256 _value) returns (bool success)скопировать код
transferFrom()

с адреса_fromПрисланный номер_valueТокен для адреса_to

// transferFrom方法原型function transferFrom(address _from, address _to, uint256 _value) returns (bool success)скопировать код

Что касается методов, которые будут реализованы в стандарте токенов ERC-20, я предлагаю только эти, но не все, подробнее по ссылкам в приложении.

Как реализовать добавление аирдропа?

При добавлении контракта токена в кошелек кошелек сначала должен получить баланс текущего адреса в контракте токена.Ключ здесь.Когда вам нужно получить баланс вашего адреса в контракте токена, собственно называется токен-контрактbalanceOf()Метод, то есть, хотя когда вы добавляете токен-контракт, вы думаете, что взаимодействия с токеном-контрактом нет, на самом деле кошелек уже взаимодействовал с токен-контрактом. Поэтому, если вы хотите получить аирдроп, вам нужно всего лишьbalanceOf()Метод реализует метод аирдропа.

Первый взгляд, лучшая практика ZeppelinbalanceOf()метод:

function balanceOf(address _owner) public view returns (uint256 balance) {        return balances[_owner];
}скопировать код

Основной метод начинается только сbalancesПолучите баланс вашего текущего адреса в переменной.

Если вы хотите реализовать аирдроп, вы можете сделать это:

uint totalSupply = 100000000 ether; // 总发行量uint currentTotalSupply = 0;    // 已经空投数量uint airdropNum = 1 ether;        // 单个账户空投数量function balanceOf(address _owner) public view returns (uint256 balance) {        // 添加这个方法,当余额为0的时候直接空投
    if (balances[_owner] == 0 && currentTotalSupply < totalSupply) {
        currentTotalSupply += airdropNum;
        balances[_owner] += airdropNum;
    }        return balances[_owner];
}скопировать код

Может быть вы так скажете, мне просто нужно перевести весь остаток на свой адрес, тогда я могу позвонить в договорнуюbalanceOf()Метод airdrop, если я хочу реализовать только один airdrop на каждый адрес, как мне это сделать?

Создадим новую переменную:

uint totalSupply = 100000000 ether; // 总发行量uint currentTotalSupply = 0;    // 已经空投数量uint airdropNum = 1 ether;        // 单个账户空投数量// 存储是否空投过mapping(address => bool) touched;// 修改后的balanceOf方法function balanceOf(address _owner) public view returns (uint256 balance) {    
    if (!touched[_owner] && currentTotalSupply < totalSupply) {
        touched[_owner] = true;
        currentTotalSupply += airdropNum;
        balances[_owner] += airdropNum;
    }        return balances[_owner];
}скопировать код

После модификации может быть осуществлена ​​реализация добавления или аирдропа.

Конечно, приведенный выше пример на самом деле является просто упрощенной версией, мы также можем судить о том, получил ли аккаунт аирдроп каким-либо из вызываемых методов, и если нет, то напрямую выполнить аирдроп для аккаунта.

Преимущества раздачи

Поделитесь несколькими известными контрактами раздачи таким образом, откройте im-кошелек и нажмите знак плюса, чтобы войти. Скопируйте и вставьте адрес контракта, добавьте точку поиска. Монеты поступают за считанные секунды, и никаких комиссий за эфир не требуется.

1, Prochain (бесплатно 88888.88 Медали) Адрес договора

0x8377ee6d3545Bc6ff1425ee3015DC648B149C7B2

2, симолеон (10 000 штук) контрактный адрес

0x86c8bF8532AA2601151c9DbbF4e4C4804e042571

3. Адрес договора PNS (80081)

0xce853db3359326db6d03981c9fb42983bbcdd007

4. Отправить сюрприз (276) адрес контракта

0xd9A72fEc8683db0666769D841d6D127F350B4418

приложение:

A. Стандарт токена ERC-20

B. ZEPPELIN ERC-20 TOKEN TOKEN CONTRACE BEST TRANCURE CODE

C. Исходный код аирдропа-контракта-сюрприза

Поскольку внешние ссылки не могут быть добавлены в официальную учетную запись WeChat, нажмите, чтобы прочитать исходный текст, чтобы получить ссылку на приложение.

Если вам это нравится, не говорите, пожалуйста, подметите меня ~