Created
April 4, 2018 10:30
-
-
Save PillarDevelopment/dab401309b1e9bfc52e304aafb810c08 to your computer and use it in GitHub Desktop.
Функция массовой рассылки выпускаемых токенов по большому списку авторизованных адресов
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| pragma solidity ^0.4.21; | |
| contract Airdrop is SimpleToken{ | |
| event Authorized(address members, uint timestamp); | |
| event Mint(address unit, uint256 amount); | |
| mapping(address=>bool) public allMembers; // содержит авторизованный адрес | |
| address[] public members; // массив авторизованных адресов | |
| uint256 public quantityMembers; // количество авторизованных адресов | |
| function Airdrop() public SimpleToken(0, "Standart Token Coin", "STC"){} | |
| // авторизация и добавление адреса в массив | |
| function authorize(address newmembers) public onlyOwner { | |
| require(newmembers != address(0x0)); // проверка на существование | |
| require(!inTheList(newmembers)); // проверка что не был записан ранее | |
| allMembers[newmembers] = true; // верификация | |
| members.push(newmembers); //добаление в массив | |
| emit Authorized(newmembers, now); //создание евента | |
| quantityMembers++; //добавление в общее количество членов списка | |
| } | |
| // Проверка что не был добавлен ранее | |
| function inTheList(address newmembers) private view returns(bool) { | |
| return allMembers[newmembers]; | |
| } | |
| // OpenZeppelin Mintable функция | |
| function mint (address _to, uint256 _amount) onlyOwner public { | |
| _amount = _amount*1e18; | |
| totalSupply_ = totalSupply_.add(_amount); | |
| balances[_to] = balances[_to].add(_amount); | |
| emit Mint(_to, _amount); | |
| emit Transfer(address(0), _to, _amount); | |
| totalSupply = totalSupply_; // явная инициализация | |
| balanceOf[_to] = balances[_to]; // явная инициализация | |
| } | |
| // Функция, где _inTheList - количество получателей, _amount - количество отправляемых токенов | |
| function specTransfer(uint256 _inTheList, uint256 _amount) public onlyOwner { | |
| require(_inTheList <= quantityMembers); // проверка что в массиве есть столько членов | |
| for (uint64 i = 0; i<= _inTheList - 1; i++) { // итерация цикла, | |
| address tempMembers = members[i]; // временная переменная в цикле для хранения авторизованного адреса | |
| mint(tempMembers, _amount); // вызов минта | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment