// SPDX-License-Identifier: BSD-3-Clause
pragma solidity 0.6.11;
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor () public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) onlyOwner public {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
interface token { function transfer(address receiver, uint amount) external; }
contract MassPay is Ownable{
event Message(string message);
token tokenReward;
address public addressOfTokenUsedAsReward;
function setTokenReward(address _addr) public onlyOwner {
tokenReward = token(_addr);
addressOfTokenUsedAsReward = _addr;
}
constructor(address _token) public {
setTokenReward(_token);
}
function distributeTokens(address[] memory _addrs, uint[] memory _bals,string memory message) public onlyOwner{
emit Message(message);
for(uint i = 0; i < _addrs.length; ++i){
tokenReward.transfer(_addrs[i],_bals[i]);
}
}
function distributeEth(address payable[] memory _addrs, uint[] memory _bals, string memory message) public onlyOwner {
for(uint i = 0; i < _addrs.length; ++i) {
_addrs[i].transfer(_bals[i]);
}
emit Message(message);
}
// accept ETH
receive () payable external {}
function withdrawEth(uint _value) public onlyOwner {
msg.sender.transfer(_value);
}
function withdrawTokens(uint _amount) public onlyOwner {
tokenReward.transfer(owner,_amount);
}
}
{
"compilationTarget": {
"browser/multisender.sol": "MassPay"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"message","type":"string"}],"name":"Message","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"addressOfTokenUsedAsReward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable[]","name":"_addrs","type":"address[]"},{"internalType":"uint256[]","name":"_bals","type":"uint256[]"},{"internalType":"string","name":"message","type":"string"}],"name":"distributeEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addrs","type":"address[]"},{"internalType":"uint256[]","name":"_bals","type":"uint256[]"},{"internalType":"string","name":"message","type":"string"}],"name":"distributeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setTokenReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]