Contract Source Code
/*
Author: psdev
[email protected]
0x13370CA2e8426a82BcfcCE21C97817A243c521Cf
*/
contract TokenInterface {
function balanceOf(address _owner) constant returns (uint256 balance);
function transfer(address _to, uint256 _amount) returns (bool success);
function receiveEther() returns(bool);
}
contract SellTokens {
address constant THE_DAO_ADDRESS = 0xbb9bc244d798123fde783fcc1c72d3bb8c189413;
TokenInterface public theDao;
mapping (address => uint) public allowedFreeExchanges;
event TransferEvent(address _from, address _to, uint256 _value);
event ReturnEvent(uint256 _value);
event NotEnoughEthErrorEvent(uint trySend, uint available);
event NotEnoughDaoErrorEvent(uint trySend, uint available);
function SellTokens(){
theDao = TokenInterface(THE_DAO_ADDRESS);
populateAllowedFreeExchanges();
}
function requestTokensBack() {
if (msg.value != 0 || allowedFreeExchanges[msg.sender] == 0) throw;
if (!theDao.transfer(msg.sender, allowedFreeExchanges[msg.sender])) throw;
allowedFreeExchanges[msg.sender] = 0;
}
function buy100DaoFor1Eth(){
var tokens_to_send = msg.value;
uint daoBalance = theDao.balanceOf(this);
if (tokens_to_send > daoBalance) {
NotEnoughDaoErrorEvent(tokens_to_send, daoBalance);
throw;
}
if (msg.value > this.balance) {
NotEnoughEthErrorEvent(msg.value, this.balance);
throw;
}
// send tokens back to buyer
if (!theDao.transfer(msg.sender, tokens_to_send)) throw;
TransferEvent(this, msg.sender, tokens_to_send);
// send eth from buyer to dao
if (!theDao.receiveEther.value(msg.value)()) throw;
ReturnEvent(msg.value);
}
// accounts and amounts sent to dao, rounded down & only txn > 100 tokens
function populateAllowedFreeExchanges() internal {
// from etherscan
allowedFreeExchanges[address(0x900b1d91f8931e3e1de3076341accb2f6011214f)] = 4000000000000000000;
allowedFreeExchanges[address(0x8b3b3b624c3c0397d3da8fd861512393d51dcbac)] = 31560000000000000000;
allowedFreeExchanges[address(0x0a869d79a7052c7f1b55a8ebabbea3420f0d1e13)] = 9900000000000000000;
allowedFreeExchanges[address(0x8b3b3b624c3c0397d3da8fd861512393d51dcbac)] = 1040000000000000000;
allowedFreeExchanges[address(0x8b3b3b624c3c0397d3da8fd861512393d51dcbac)] = 90000000000000000000;
allowedFreeExchanges[address(0xdf21fa922215b1a56f5a6d6294e6e36c85a0acfb)] = 49990000000000000000;
allowedFreeExchanges[address(0x0a9de66f5fda96a5b40d1ca9cd18bfb298c67d1c)] = 16440000000000000000;
allowedFreeExchanges[address(0x946c555081313c5e0986c6cd5f6978257a406237)] = 1000000000000000000;
allowedFreeExchanges[address(0x0a869d79a7052c7f1b55a8ebabbea3420f0d1e13)] = 295510000000000000000;
}
} Contract ABI
[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"allowedFreeExchanges","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"buy100DaoFor1Eth","outputs":[],"type":"function"},{"constant":false,"inputs":[],"name":"requestTokensBack","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"theDao","outputs":[{"name":"","type":"address"}],"type":"function"},{"inputs":[],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_from","type":"address"},{"indexed":false,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"TransferEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_value","type":"uint256"}],"name":"ReturnEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"trySend","type":"uint256"},{"indexed":false,"name":"available","type":"uint256"}],"name":"NotEnoughEthErrorEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"trySend","type":"uint256"},{"indexed":false,"name":"available","type":"uint256"}],"name":"NotEnoughDaoErrorEvent","type":"event"}] Contract Creation ByteCode
60606040525b73bb9bc244d798123fde783fcc1c72d3bb8c189413600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555061004c61005b565b5b61060c806103326000396000f35b673782dace9d9000006001600050600073900b1d91f8931e3e1de3076341accb2f6011214f73ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055506801b5fba4c9b754000060016000506000738b3b3b624c3c0397d3da8fd861512393d51dcbac73ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005081905550678963dd8c2c5e000060016000506000730a869d79a7052c7f1b55a8ebabbea3420f0d1e1373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005081905550670e6ed27d6668000060016000506000738b3b3b624c3c0397d3da8fd861512393d51dcbac73ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055506804e1003b28d928000060016000506000738b3b3b624c3c0397d3da8fd861512393d51dcbac73ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055506802b5c0282441c700006001600050600073df21fa922215b1a56f5a6d6294e6e36c85a0acfb73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000508190555067e4269ce5ab6c000060016000506000730a9de66f5fda96a5b40d1ca9cd18bfb298c67d1c73ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005081905550670de0b6b3a76400006001600050600073946c555081313c5e0986c6cd5f6978257a40623773ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005081905550681005066b5227af000060016000506000730a869d79a7052c7f1b55a8ebabbea3420f0d1e1373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b5660606040526000357c01000000000000000000000000000000000000000000000000000000009004806320d30e271461005a5780633824d8ee146100865780634c9ed76314610095578063626d666c146100a457610058565b005b61007060048080359060200190919050506100dd565b6040518082815260200191505060405180910390f35b61009360048050506100f8565b005b6100a26004805050610478565b005b6100b160048050506105e6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60016000506020528060005260406000206000915090505481565b60006000349150600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823130604051827c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506020604051808303816000876161da5a03f11561000257505050604051805190602001509050808211156101f8577f4a92ae4f5135c969efeaba2f6405d5919d3ca1f3de25ff3838224f11ca9f2fc08282604051808381526020018281526020019250505060405180910390a1610002565b3073ffffffffffffffffffffffffffffffffffffffff1631341115610272577fa9e70f51c8ab98deaa52066ef21dacd55316ab823cd785009fb9a2bed0159ff6343073ffffffffffffffffffffffffffffffffffffffff1631604051808381526020018281526020019250505060405180910390a1610002565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3384604051837c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506020604051808303816000876161da5a03f1156100025750505060405180519060200150151561033057610002565b7feaf1c4b3ce0f4f62a2bae7eb3e68225c75f7e6ff4422073b7437b9a78d25f170303384604051808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3912ec834604051827c010000000000000000000000000000000000000000000000000000000002815260040180905060206040518083038185886185025a03f115610002575050505060405180519060200150151561043c57610002565b7f6c29ed792f8b613fbba10b9e105a1dcebd92b4dd7938e36de410329ef452a285346040518082815260200191505060405180910390a15b5050565b6000341415806104b757506000600160005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054145b156104c157610002565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600160005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054604051837c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506020604051808303816000876161da5a03f115610002575050506040518051906020015015156105ae57610002565b6000600160005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156