pragma solidity ^0.4.2;
contract token { function transfer(address receiver, uint amount){ } }
contract Aircoins{
struct Coin{
address addr;
}
address owner;
function Aircoins(){
owner = msg.sender;
}
modifier onlyOwner() {
if (msg.sender != owner) throw;
_;
}
function transferOwnership(address newOwner) onlyOwner {
owner = newOwner;
}
mapping (address => Coin) public coins;
mapping (address => bool) public coinsAdded;
mapping (address => bool) public userAddressAdded;
mapping (address => string) public messages;
address[] public coinsAddresses;
address[] public userAddresses;
function submitCoin(address _addr, string _msg){
if(coinsAdded[_addr]) throw;
Coin memory newCoin;
newCoin.addr = _addr;
coins[_addr] = newCoin;
messages[_addr] = _msg;
coinsAdded[_addr] = true;
coinsAddresses.push(_addr);
}
function registerUser(address _addr){
if(userAddressAdded[_addr]) return;
userAddresses.push(_addr);
userAddressAdded[_addr] = true;
}
function getAllCoins() constant returns (address[]){
return coinsAddresses;
}
function getAllUsers() constant returns (address[]){
return userAddresses;
}
function userCount() constant returns (uint){
return userAddresses.length;
}
function coinsCount () constant returns(uint) {
return coinsAddresses.length;
}
function registerUsers(address[] _users) onlyOwner {
for(uint i = 0; i < _users.length; ++i){
registerUser(_users[i]);
}
}
function withdrawCoins(address _coinAddr, uint _amount) onlyOwner {
token tokenReward = token(_coinAddr);
tokenReward.transfer(msg.sender,_amount);
}
function distributeCoins(
address _coinAddress,
uint _amountGivenToEachUser,
uint startIndex,
uint endIndex) onlyOwner {
require(endIndex > startIndex);
token tokenReward = token(_coinAddress);
for(uint i = startIndex; i < endIndex;++i){
tokenReward.transfer(userAddresses[i],_amountGivenToEachUser);
}
}
}
{
"compilationTarget": {
"Aircoins.sol": "Aircoins"
},
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 0
},
"remappings": []
}
[{"constant":true,"inputs":[],"name":"userCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"registerUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_msg","type":"string"}],"name":"submitCoin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"coinsCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"userAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"messages","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_coinAddress","type":"address"},{"name":"_amountGivenToEachUser","type":"uint256"},{"name":"startIndex","type":"uint256"},{"name":"endIndex","type":"uint256"}],"name":"distributeCoins","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"coins","outputs":[{"name":"addr","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"coinsAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAllCoins","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userAddressAdded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_coinAddr","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawCoins","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAllUsers","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_users","type":"address[]"}],"name":"registerUsers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"coinsAdded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]