Address Contract Partially Verified
Address
0x898cae9474B6Ddd35d1C4fe95f33Dc269158FF1a
Balance
0.000941334 ETH
Nonce
1
Code Size
2574 bytes
Creator
0x48baB4A5...a3e1 at tx 0xc81579f0...7aeb4d
Indexed Transactions
0
Contract Bytecode
2574 bytes
0x6060604052600436106101275763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166312065fe0811461012c578063158ef93e14610151578063229824c41461017857806325caaa371461019457806326fd8422146101a75780632e9392bb146101c05780633955f0fe146101d35780633b653755146101e85780633bc0461a146101f35780633ec862a81461020957806343ce742214610228578063467ece791461023b578063483e51631461025a5780634f74acfe1461027957806372670361146102815780637e56fde5146102a05780638e316327146102b65780639ca423b3146102cc578063ce4e84a314610307578063d7c8843b1461031a578063e721272814610339578063e74ceb771461034c575b600080fd5b341561013757600080fd5b61013f61035f565b60405190815260200160405180910390f35b341561015c57600080fd5b61016461036d565b604051901515815260200160405180910390f35b341561018357600080fd5b61013f600435602435604435610376565b341561019f57600080fd5b61013f6103c3565b34156101b257600080fd5b61013f6004356024356103df565b34156101cb57600080fd5b61013f6103f5565b34156101de57600080fd5b6101e66103fb565b005b6101e6600435610518565b34156101fe57600080fd5b61013f600435610537565b341561021457600080fd5b6101e6600160a060020a0360043516610554565b341561023357600080fd5b61013f61070d565b341561024657600080fd5b61013f600160a060020a0360043516610746565b341561026557600080fd5b61013f600160a060020a0360043516610758565b6101e661076a565b341561028c57600080fd5b61013f600160a060020a036004351661083f565b34156102ab57600080fd5b61013f600435610851565b34156102c157600080fd5b61013f600435610867565b34156102d757600080fd5b6102eb600160a060020a0360043516610880565b604051600160a060020a03909116815260200160405180910390f35b341561031257600080fd5b61013f61089b565b341561032557600080fd5b61013f600160a060020a03600435166108a1565b341561034457600080fd5b6101e66108f8565b341561035757600080fd5b61013f610958565b600160a060020a0330163190565b60045460ff1681565b60006103bb6103876002548461095e565b6103b66003546103ab6103b061039f6002548a61095e565b6103ab6003548c61095e565b610994565b896109a3565b6109a3565b949350505050565b600160a060020a03331660009081526006602052604090205490565b60006103ee8383600a54610376565b9392505050565b600a5481565b6004546000908190819060ff16151561041357600080fd5b61041b61070d565b925061042683610867565b915061043182610537565b600160a060020a033316600090815260076020908152604080832083905560089091529020429055600a549091506104699084610994565b600a556004546101009004600160a060020a03166108fc82150282604051600060405180830381858888f1935050505015156104a457600080fd5b600554600160a060020a031681156108fc0282604051600060405180830381858888f1935050505015156104d757600080fd5b33600160a060020a03166108fc6104ee84846109ba565b9081150290604051600060405180830381858888f19350505050151561051357600080fd5b505050565b600a541561052557600080fd5b6004805460ff19166001179055600a55565b600061054e61054783600261095e565b60646109a3565b92915050565b600454600090819060ff16151561056a57600080fd5b600160a060020a03338116600090815260096020526040902054161580156105ad5750600160a060020a0333811660008181526009602052604090205490911614155b156105ef5733600160a060020a039081166000908152600960205260409020805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b6105f761070d565b915061060660005460026109a3565b600160a060020a03331660009081526008602052604090205461062a9042906109ba565b10156106415761063e61054783607861095e565b91505b61064d826000546109a3565b600160a060020a0333166000908152600660205260409020549091506106739082610994565b600160a060020a03338116600090815260066020908152604080832094909455600780825284832083905560088252848320429055600982528483205490931682529190915220546106ca906103ab8460146109a3565b600160a060020a033381166000908152600960209081526040808320549093168252600790522055600a8054610705916103ab9085906109a3565b600a55505050565b60006107416007600033600160a060020a0316600160a060020a03168152602001908152602001600020546103ab336108a1565b905090565b60086020526000908152604090205481565b60066020526000908152604090205481565b600454600090819060ff16151561078057600080fd5b61079d3461079830600160a060020a031631346109ba565b6103df565b91506107ab826000546109a3565b600160a060020a03331660009081526006602052604090205490915015156107e957600160a060020a03331660009081526008602052604090204290555b600160a060020a03331660009081526006602052604090205461080c9082610994565b600160a060020a033316600090815260066020526040902055600a8054610838916103ab9085906109a3565b600a555050565b60076020526000908152604090205481565b600061054e8230600160a060020a0316316103df565b600061054e82600a5430600160a060020a031631610376565b600960205260009081526040902054600160a060020a031681565b60015481565b60008054600160a060020a03831682526008602052604082205482916108d1916108cc9042906109ba565b6109cc565b600160a060020a0384166000908152600660205260409020549091506103ee90829061095e565b60045460ff16151561090957600080fd5b600160a060020a0333166000908152600660205260409020541561092c57600080fd5b600160a060020a0333166000908152600860209081526040808320429055600154600690925290912055565b60005481565b600080831515610971576000915061098d565b5082820282848281151561098157fe5b041461098957fe5b8091505b5092915050565b60008282018381101561098957fe5b60008082848115156109b157fe5b04949350505050565b6000828211156109c657fe5b50900390565b60008183106109db57816103ee565b50909190505600a165627a7a7230582038489d1811c5c452df65754774fa10e7ecf0091daf91b2512de322571f402bac0029
Verified Source Code Partial Match
Compiler: v0.4.18+commit.9cf6e910
Optimization: Yes (200 runs)
ChickenFarmer.sol 162 lines
pragma solidity ^0.4.18; // solhint-disable-line
contract ChickenFarmer{
//uint256 EGGS_PER_CHICKEN_PER_SECOND=1;
uint256 public EGGS_TO_HATCH_1CHICKEN=86400;//for final version should be seconds in a day
uint256 public STARTING_CHICKEN=2;
uint256 PSN=10000;
uint256 PSNH=5000;
bool public initialized=false;
address private ceoAddress1=0x48baB4A535d4CF9aEd72c5Db74fB392ee38ea3e1;
address private ceoAddress2=0x00d9391e4E09066C3D42D672AB453Fe70c203976;
mapping (address => uint256) public hatcheryChicken;
mapping (address => uint256) public claimedEggs;
mapping (address => uint256) public lastHatch;
mapping (address => address) public referrals;
uint256 public marketEggs;
function hatchEggs(address ref) public{
require(initialized);
if(referrals[msg.sender]==0 && referrals[msg.sender]!=msg.sender){
referrals[msg.sender]=ref;
}
uint256 eggsUsed=getMyEggs();
//20% early hatch bonus
if (SafeMath.sub(now,lastHatch[msg.sender]) < SafeMath.div(EGGS_TO_HATCH_1CHICKEN,2))
{
eggsUsed = SafeMath.div(SafeMath.mul(eggsUsed,120),100); }
uint256 newChicken=SafeMath.div(eggsUsed,EGGS_TO_HATCH_1CHICKEN);
hatcheryChicken[msg.sender]=SafeMath.add(hatcheryChicken[msg.sender],newChicken);
claimedEggs[msg.sender]=0;
lastHatch[msg.sender]=now;
//send referral eggs
claimedEggs[referrals[msg.sender]]=SafeMath.add(claimedEggs[referrals[msg.sender]],SafeMath.div(eggsUsed,20));
//boost market to nerf Chicken hoarding
marketEggs=SafeMath.add(marketEggs,SafeMath.div(eggsUsed,10));
}
function sellEggs() public{
require(initialized);
uint256 hasEggs=getMyEggs();
uint256 eggValue=calculateEggSell(hasEggs);
uint256 fee=devFee(eggValue);
claimedEggs[msg.sender]=0;
lastHatch[msg.sender]=now;
marketEggs=SafeMath.add(marketEggs,hasEggs);
ceoAddress1.transfer(fee);
ceoAddress2.transfer(fee);
msg.sender.transfer(SafeMath.sub(eggValue,fee));
}
function buyEggs() public payable{
require(initialized);
uint256 eggsBought=calculateEggBuy(msg.value,SafeMath.sub(this.balance,msg.value));
// claimedEggs[msg.sender]=SafeMath.add(claimedEggs[msg.sender],eggsBought);
uint256 newChicken=SafeMath.div(eggsBought,EGGS_TO_HATCH_1CHICKEN);
if (hatcheryChicken[msg.sender]==0){
lastHatch[msg.sender]=now;
}
hatcheryChicken[msg.sender]=SafeMath.add(hatcheryChicken[msg.sender],newChicken);
//boost market to nerf Chicken hoarding
marketEggs=SafeMath.add(marketEggs,SafeMath.div(eggsBought,10));
}
//magic trade balancing algorithm
function calculateTrade(uint256 rt,uint256 rs, uint256 bs) public view returns(uint256){
//(PSN*bs)/(PSNH+((PSN*rs+PSNH*rt)/rt));
return SafeMath.div(SafeMath.mul(PSN,bs),SafeMath.add(PSNH,SafeMath.div(SafeMath.add(SafeMath.mul(PSN,rs),SafeMath.mul(PSNH,rt)),rt)));
}
function calculateEggSell(uint256 eggs) public view returns(uint256){
return calculateTrade(eggs,marketEggs,this.balance);
}
function calculateEggBuy(uint256 eth,uint256 contractBalance) public view returns(uint256){
return calculateTrade(eth,contractBalance,marketEggs);
}
function calculateEggBuySimple(uint256 eth) public view returns(uint256){
return calculateEggBuy(eth,this.balance);
}
function devFee(uint256 amount) public view returns(uint256){
return SafeMath.div(SafeMath.mul(amount,2),100);
}
function seedMarket(uint256 eggs) public payable{
require(marketEggs==0);
initialized=true;
marketEggs=eggs;
}
function getFreeChicken() public{
require(initialized);
require(hatcheryChicken[msg.sender]==0);
lastHatch[msg.sender]=now;
hatcheryChicken[msg.sender]=STARTING_CHICKEN;
}
function getBalance() public view returns(uint256){
return this.balance;
}
function getMyChicken() public view returns(uint256){
return hatcheryChicken[msg.sender];
}
function getMyEggs() public view returns(uint256){
return SafeMath.add(claimedEggs[msg.sender],getEggsSinceLastHatch(msg.sender));
}
function getEggsSinceLastHatch(address adr) public view returns(uint256){
uint256 secondsPassed=min(EGGS_TO_HATCH_1CHICKEN,SafeMath.sub(now,lastHatch[adr]));
return SafeMath.mul(secondsPassed,hatcheryChicken[adr]);
}
function min(uint256 a, uint256 b) private pure returns (uint256) {
return a < b ? a : b;
}
}
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
Read Contract
EGGS_TO_HATCH_1CHICKEN 0xe74ceb77 → uint256
STARTING_CHICKEN 0xce4e84a3 → uint256
calculateEggBuy 0x26fd8422 → uint256
calculateEggBuySimple 0x7e56fde5 → uint256
calculateEggSell 0x8e316327 → uint256
calculateTrade 0x229824c4 → uint256
claimedEggs 0x72670361 → uint256
devFee 0x3bc0461a → uint256
getBalance 0x12065fe0 → uint256
getEggsSinceLastHatch 0xd7c8843b → uint256
getMyChicken 0x25caaa37 → uint256
getMyEggs 0x43ce7422 → uint256
hatcheryChicken 0x483e5163 → uint256
initialized 0x158ef93e → bool
lastHatch 0x467ece79 → uint256
marketEggs 0x2e9392bb → uint256
referrals 0x9ca423b3 → address
Write Contract 5 functions
These functions modify contract state and require a wallet transaction to execute.
buyEggs 0x4f74acfe
No parameters
getFreeChicken 0xe7212728
No parameters
hatchEggs 0x3ec862a8
address ref
seedMarket 0x3b653755
uint256 eggs
sellEggs 0x3955f0fe
No parameters
Recent Transactions
No transactions found for this address