Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- KyberAirDrop
- Optimization enabled
- true
- Compiler version
- v0.4.15+commit.bbb8e64f
- Optimization runs
- 200
- Verified at
- 2026-04-20T11:04:39.488844Z
Constructor Arguments
000000000000000000000000cbac9e86e0b7160f1a8e4835ad01dd51c514afce
Arg [0] (address) : 0xcbac9e86e0b7160f1a8e4835ad01dd51c514afce
KyberAirDrop.sol
pragma solidity ^0.4.13;
contract Ownable {
address public owner;
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
function Ownable() {
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 {
if (newOwner != address(0)) {
owner = newOwner;
}
}
}
contract KyberAirDrop is Ownable {
uint public numDrops;
uint public dropAmount;
function KyberAirDrop( address dropper ) {
transferOwnership(dropper);
}
event TokenDrop( address receiver, uint amount );
function airDrop( ERC20Interface token,
address tokenRepo,
address[] recipients,
uint amount,
bool kgt,
KyberGenesisToken kgtToken ) onlyOwner {
require( amount == 0 || amount == (2*(10**18)) || amount == (5*(10**18)) );
if( amount > 0 ) {
for( uint i = 0 ; i < recipients.length ; i++ ) {
assert( token.transferFrom( tokenRepo, recipients[i], amount ) );
TokenDrop( recipients[i], amount );
}
}
if( kgt ) {
kgtToken.mint(recipients);
}
numDrops += recipients.length;
dropAmount += recipients.length * amount;
}
function tranferMinterOwnership( KyberGenesisToken kgtToken, address newOwner ) onlyOwner {
kgtToken.transferOwnership(newOwner);
}
function emergencyERC20Drain( ERC20Interface token, uint amount ) {
// callable by anyone
address kyberMultisig = 0x3EB01B3391EA15CE752d01Cf3D3F09deC596F650;
token.transfer( kyberMultisig, amount );
}
}
contract KyberGenesisToken is Ownable {
string public constant name = "Kyber Genesis Token";
string public constant symbol = "KGT";
uint public constant decimals = 0;
uint public totalSupply = 0;
mapping(address=>uint) public balanceOf;
function KyberGenesisToken( address minter ) {
transferOwnership(minter);
}
event Transfer(address indexed _from, address indexed _to, uint _value);
event EndMinting( uint timestamp );
function mint( address[] recipients ) onlyOwner {
uint newRecipients = 0;
for( uint i = 0 ; i < recipients.length ; i++ ){
address recipient = recipients[i];
if( balanceOf[recipient] == 0 ){
Transfer( address(0x0), recipient, 1 );
balanceOf[recipient] = 1;
newRecipients++;
}
}
totalSupply += newRecipients;
}
function endMinting() onlyOwner {
transferOwnership(address(0xdead));
EndMinting(block.timestamp);
}
function burn() {
require(balanceOf[msg.sender] == 1 );
Transfer( msg.sender, address(0x0), 1 );
balanceOf[msg.sender] = 0;
totalSupply--;
}
function emergencyERC20Drain( ERC20Interface token, uint amount ){
// callable by anyone
address kyberMultisig = 0x3EB01B3391EA15CE752d01Cf3D3F09deC596F650;
token.transfer( kyberMultisig, amount );
}
// ERC20 stubs
function transfer(address _to, uint _value) returns (bool){ revert(); }
function transferFrom(address _from, address _to, uint _value) returns (bool){ revert(); }
function approve(address _spender, uint _value) returns (bool){ revert(); }
function allowance(address _owner, address _spender) constant returns (uint){ return 0; }
event Approval(address indexed _owner, address indexed _spender, uint _value);
}
contract ERC20Interface {
function transferFrom(address _from, address _to, uint _value) returns (bool){}
function transfer(address _to, uint _value) returns (bool){}
function ERC20Interface(){}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":true},"libraries":{},"compilationTarget":{"KyberAirDrop.sol":"KyberAirDrop"}}
Contract ABI
[{"type":"function","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"dropAmount","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[],"name":"airDrop","inputs":[{"type":"address","name":"token"},{"type":"address","name":"tokenRepo"},{"type":"address[]","name":"recipients"},{"type":"uint256","name":"amount"},{"type":"bool","name":"kgt"},{"type":"address","name":"kgtToken"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"numDrops","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"address","name":""}],"name":"owner","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[],"name":"tranferMinterOwnership","inputs":[{"type":"address","name":"kgtToken"},{"type":"address","name":"newOwner"}],"constant":false},{"type":"function","payable":false,"outputs":[],"name":"emergencyERC20Drain","inputs":[{"type":"address","name":"token"},{"type":"uint256","name":"amount"}],"constant":false},{"type":"function","payable":false,"outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner"}],"constant":false},{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"dropper"}]},{"type":"event","name":"TokenDrop","inputs":[{"type":"address","name":"receiver","indexed":false},{"type":"uint256","name":"amount","indexed":false}],"anonymous":false}]
Contract Creation Code
0x6060604052341561000f57600080fd5b60405160208061066f833981016040528080519150505b5b60008054600160a060020a03191633600160a060020a03161790555b6100598164010000000061053161006082021704565b5b506100ab565b60005433600160a060020a0390811691161461007b57600080fd5b600160a060020a038116156100a65760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b6105b5806100ba6000396000f300606060405236156100675763ffffffff60e060020a60003504166305748be2811461006c578063608bc08c146100915780638bc30096146101125780638da5cb5b146101375780638e744f5414610166578063db0e16f11461018d578063f2fde38b146101b1575b600080fd5b341561007757600080fd5b61007f6101d2565b60405190815260200160405180910390f35b341561009c57600080fd5b610110600160a060020a036004803582169160248035909116919060649060443590810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505084359460208101351515945060400135600160a060020a031692506101d8915050565b005b341561011d57600080fd5b61007f610406565b60405190815260200160405180910390f35b341561014257600080fd5b61014a61040c565b604051600160a060020a03909116815260200160405180910390f35b341561017157600080fd5b610110600160a060020a036004358116906024351661041b565b005b341561019857600080fd5b610110600160a060020a036004351660243561049e565b005b34156101bc57600080fd5b610110600160a060020a0360043516610531565b005b60025481565b6000805433600160a060020a039081169116146101f457600080fd5b831580610208575083671bc16d674ec80000145b8061021a575083674563918244f40000145b151561022557600080fd5b600084111561033f575060005b845181101561033f5786600160a060020a03166323b872dd8787848151811061025757fe5b906020019060200201518760006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156102ba57600080fd5b6102c65a03f115156102cb57600080fd5b5050506040518051905015156102dd57fe5b7fb88903f74059b09b78248a0df6ba49200ca616f185ca84aca28d3e74e754ab8685828151811061030a57fe5b9060200190602002015185604051600160a060020a03909216825260208201526040908101905180910390a15b600101610232565b5b82156103e25781600160a060020a031663bd075b84866040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019060200280838360005b838110156103a95780820151818401525b602001610390565b5050505090500192505050600060405180830381600087803b15156103cd57600080fd5b6102c65a03f115156103de57600080fd5b5050505b845160018054909101905583855160028054919092020190555b5b50505050505050565b60015481565b600054600160a060020a031681565b60005433600160a060020a0390811691161461043657600080fd5b81600160a060020a031663f2fde38b8260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561048457600080fd5b6102c65a03f1151561049557600080fd5b5050505b5b5050565b733eb01b3391ea15ce752d01cf3d3f09dec596f650600160a060020a03831663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561051057600080fd5b6102c65a03f1151561052157600080fd5b505050604051805150505b505050565b60005433600160a060020a0390811691161461054c57600080fd5b600160a060020a03811615610584576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b505600a165627a7a723058204aea17b09940a7e1bffd623333825ec4196fa8cf05c50e945fffe7b404e882130029000000000000000000000000cbac9e86e0b7160f1a8e4835ad01dd51c514afce
Deployed ByteCode
0x606060405236156100675763ffffffff60e060020a60003504166305748be2811461006c578063608bc08c146100915780638bc30096146101125780638da5cb5b146101375780638e744f5414610166578063db0e16f11461018d578063f2fde38b146101b1575b600080fd5b341561007757600080fd5b61007f6101d2565b60405190815260200160405180910390f35b341561009c57600080fd5b610110600160a060020a036004803582169160248035909116919060649060443590810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505084359460208101351515945060400135600160a060020a031692506101d8915050565b005b341561011d57600080fd5b61007f610406565b60405190815260200160405180910390f35b341561014257600080fd5b61014a61040c565b604051600160a060020a03909116815260200160405180910390f35b341561017157600080fd5b610110600160a060020a036004358116906024351661041b565b005b341561019857600080fd5b610110600160a060020a036004351660243561049e565b005b34156101bc57600080fd5b610110600160a060020a0360043516610531565b005b60025481565b6000805433600160a060020a039081169116146101f457600080fd5b831580610208575083671bc16d674ec80000145b8061021a575083674563918244f40000145b151561022557600080fd5b600084111561033f575060005b845181101561033f5786600160a060020a03166323b872dd8787848151811061025757fe5b906020019060200201518760006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156102ba57600080fd5b6102c65a03f115156102cb57600080fd5b5050506040518051905015156102dd57fe5b7fb88903f74059b09b78248a0df6ba49200ca616f185ca84aca28d3e74e754ab8685828151811061030a57fe5b9060200190602002015185604051600160a060020a03909216825260208201526040908101905180910390a15b600101610232565b5b82156103e25781600160a060020a031663bd075b84866040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019060200280838360005b838110156103a95780820151818401525b602001610390565b5050505090500192505050600060405180830381600087803b15156103cd57600080fd5b6102c65a03f115156103de57600080fd5b5050505b845160018054909101905583855160028054919092020190555b5b50505050505050565b60015481565b600054600160a060020a031681565b60005433600160a060020a0390811691161461043657600080fd5b81600160a060020a031663f2fde38b8260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561048457600080fd5b6102c65a03f1151561049557600080fd5b5050505b5b5050565b733eb01b3391ea15ce752d01cf3d3f09dec596f650600160a060020a03831663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561051057600080fd5b6102c65a03f1151561052157600080fd5b505050604051805150505b505050565b60005433600160a060020a0390811691161461054c57600080fd5b600160a060020a03811615610584576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b505600a165627a7a723058204aea17b09940a7e1bffd623333825ec4196fa8cf05c50e945fffe7b404e882130029