// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
contract ShrimpFarmERC20 is ReentrancyGuard, Ownable {
using SafeERC20 for IERC20;
uint256 public constant EGGS_TO_HATCH_1SHRIMP = 86400;
uint256 public constant PSN = 10000;
uint256 public constant PSNH = 5000;
uint256 public constant DEV_FEE_PERCENT = 4;
uint256 public constant LOTTERY_FEE_PERCENT = 1;
uint256 public constant REFERRAL_PERCENT = 5; // 5% of eggs to referrer on hatch
uint256 public constant MARKET_EGGS_DIVISOR = 10;
/// @notice Official website — the ONLY legitimate front-end for this farm.
/// Exposed on-chain (readable via the auto-generated WEBSITE() getter on block
/// explorers) so anyone inspecting the contract can find and verify the real site.
/// Do not trust any other domain claiming to be this farm.
string public constant WEBSITE = "https://playshrimp.farm";
IERC20 public token; // set once, at initialize()
uint256 public decimalScaler; // 10^(18 - tokenDecimals); set at initialize()
bool public immutable burnDevFees; // if true, dev fees are burned instead of sent to owner
address public constant BURN_ADDRESS = 0x000000000000000000000000000000000000dEaD;
bool public initialized;
uint256 public marketEggs;
mapping(address => uint256) public hatcheryShrimp;
mapping(address => uint256) public claimedEggs;
mapping(address => uint256) public lastHatch;
mapping(address => address) public referrals;
mapping(address => uint256) public lastSell;
// Anti-whale
uint256 public maxDeposit; // in token's native decimals
uint256 public withdrawCooldown;
uint256 public constant MAX_WITHDRAW_COOLDOWN = 7 days; // ceiling so the owner can never freeze withdrawals
// Lottery — commit-reveal
uint256 public constant HATCHES_PER_LOTTERY = 50;
uint256 public constant COMMIT_WINDOW = 10 minutes;
uint256 public constant REVEAL_WINDOW = 10 minutes;
uint256 public constant MIN_REVEALS = 2;
enum LotteryPhase { IDLE, COMMIT, REVEAL }
uint256 public hatchCounter;
uint256 public lotteryRound;
uint256 public lotteryPool; // stored in NORMALIZED (18-decimal) units
uint256 public commitDeadline;
uint256 public revealDeadline;
LotteryPhase public lotteryPhase;
mapping(uint256 => mapping(address => bytes32)) public commits;
mapping(uint256 => address[]) internal _revealers;
mapping(uint256 => mapping(address => bool)) internal _hasRevealed;
bytes32 public combinedRandomness;
struct LotteryResult {
uint256 round;
address winner;
uint256 prize; // native token decimals
uint256 timestamp;
}
LotteryResult[] public lotteryHistory;
event EggsBought(address indexed buyer, uint256 tokenAmount, uint256 eggsBought);
event EggsHatched(address indexed farmer, uint256 eggsUsed, uint256 newShrimp);
event EggsSold(address indexed farmer, uint256 eggsSold, uint256 tokenReceived);
event ReferralSet(address indexed farmer, address indexed referrer);
event Initialized(address indexed token, uint8 tokenDecimals, uint256 seedAmount);
event LotteryRoundStarted(uint256 indexed round, uint256 pool, uint256 commitDeadline);
event LotteryCommit(uint256 indexed round, address indexed participant);
event LotteryReveal(uint256 indexed round, address indexed participant);
event LotteryWinner(uint256 indexed round, address indexed winner, uint256 prize);
event LotteryRollover(uint256 indexed round, uint256 pool);
event DevFeeBurned(uint256 amount);
event DevFeePaid(address indexed to, uint256 amount);
event ReferralBonusToPool(address indexed farmer, uint256 eggs);
event MaxDepositUpdated(uint256 maxDeposit);
event WithdrawCooldownUpdated(uint256 withdrawCooldown);
constructor(
uint256 initialMarketEggs,
uint256 _maxDeposit,
uint256 _withdrawCooldown,
bool _burnDevFees
) Ownable(msg.sender) {
require(initialMarketEggs > 0, "Must seed market eggs");
require(_withdrawCooldown <= MAX_WITHDRAW_COOLDOWN, "Cooldown too long");
maxDeposit = _maxDeposit;
withdrawCooldown = _withdrawCooldown;
burnDevFees = _burnDevFees;
marketEggs = initialMarketEggs;
// NOTE: the game is NOT live yet. The token is unknown at deploy time
// (it launches later on flap.sh). initialize() must be called by the
// owner to set the token, seed liquidity, and go live.
}
/// @notice One-time, owner-only setup that binds the reward token, seeds the
/// AMM with starting liquidity, and makes the game live. Can only be called
/// once — after the token exists on flap.sh.
/// @param _token The reward/deposit token (flap.sh token address).
/// @param _tokenDecimals The token's decimals (<= 18).
/// @param seedAmount Amount of `_token` (native decimals) to seed, pulled from the caller.
function initialize(IERC20 _token, uint8 _tokenDecimals, uint256 seedAmount) external onlyOwner {
require(!initialized, "Already initialized");
require(address(_token) != address(0), "Zero token");
require(_tokenDecimals <= 18, "Decimals too high");
require(seedAmount > 0, "Must seed with tokens");
// Cross-check against the token's own decimals() when it exposes one.
// decimals() is optional in ERC-20, so fall back to the supplied param if absent.
try IERC20Metadata(address(_token)).decimals() returns (uint8 onchainDecimals) {
require(onchainDecimals == _tokenDecimals, "Decimals mismatch");
} catch {
// Token does not implement decimals(); trust the provided param.
}
token = _token;
decimalScaler = 10 ** (18 - _tokenDecimals);
// Pull seed liquidity from the owner. Marked live only after a successful transfer.
_token.safeTransferFrom(msg.sender, address(this), seedAmount);
initialized = true;
emit Initialized(address(_token), _tokenDecimals, seedAmount);
}
function buyEggs(address ref, uint256 amount) external nonReentrant {
require(initialized, "Not initialized");
require(amount > 0, "Must send tokens");
require(maxDeposit == 0 || amount <= maxDeposit, "Exceeds max deposit");
// Snapshot balance before transfer for correct pricing + fee-on-transfer safety
uint256 balanceBefore = token.balanceOf(address(this));
token.safeTransferFrom(msg.sender, address(this), amount);
uint256 received = token.balanceOf(address(this)) - balanceBefore;
// Normalize to 18 decimals for AMM math
uint256 normalizedReceived = _normalize(received);
uint256 normalizedBalanceBefore = _normalize(balanceBefore) - lotteryPool;
uint256 lotteryFee = (normalizedReceived * LOTTERY_FEE_PERCENT) / 100;
uint256 depositAfterLottery = normalizedReceived - lotteryFee;
lotteryPool += lotteryFee;
uint256 eggsBought = calculateEggBuy(depositAfterLottery, normalizedBalanceBefore);
// Early reject a zero-egg dust deposit with a clear reason (before the auto-hatch,
// which would otherwise revert with the less obvious "No eggs to hatch").
require(eggsBought > 0, "Deposit too small");
uint256 devFeeTokens = _devFee(received);
_sendDevFee(devFeeTokens);
claimedEggs[msg.sender] += eggsBought;
emit EggsBought(msg.sender, received, eggsBought);
// Auto-hatch: bought eggs are immediately compounded into shrimp so a buyer
// cannot deposit, wait for the egg price to rise on others' deposits, and dump
// their eggs without ever farming.
//
// Require the deposit to produce at least one whole shrimp. A smaller deposit's
// eggs round down to zero shrimp on the forced hatch and are lost to the pool for
// nothing — revert instead (rolls back the transfer, fees, and lotteryPool bump).
uint256 shrimpBefore = hatcheryShrimp[msg.sender];
_hatchEggs(ref);
require(hatcheryShrimp[msg.sender] > shrimpBefore, "Deposit too small");
}
function hatchEggs(address ref) external nonReentrant {
_hatchEggs(ref);
}
function _hatchEggs(address ref) internal {
require(initialized, "Not initialized");
_setReferral(msg.sender, ref);
uint256 eggsUsed = getMyEggs();
require(eggsUsed > 0, "No eggs to hatch");
uint256 newShrimp = eggsUsed / EGGS_TO_HATCH_1SHRIMP;
hatcheryShrimp[msg.sender] += newShrimp;
claimedEggs[msg.sender] = 0;
lastHatch[msg.sender] = block.timestamp;
uint256 referralEggs = (eggsUsed * REFERRAL_PERCENT) / 100;
address ref_ = referrals[msg.sender];
if (ref_ == address(0)) {
// No valid referrer: fold the bonus into the pool (dilutes all holders)
// rather than paying it to the owner.
marketEggs += referralEggs;
emit ReferralBonusToPool(msg.sender, referralEggs);
} else {
claimedEggs[ref_] += referralEggs;
}
marketEggs += eggsUsed / MARKET_EGGS_DIVISOR;
hatchCounter++;
if (lotteryPhase == LotteryPhase.IDLE && hatchCounter >= HATCHES_PER_LOTTERY && lotteryPool > 0) {
_startLotteryRound();
}
emit EggsHatched(msg.sender, eggsUsed, newShrimp);
}
function sellEggs() external nonReentrant {
require(initialized, "Not initialized");
require(
withdrawCooldown == 0 || block.timestamp >= lastSell[msg.sender] + withdrawCooldown,
"Cooldown active"
);
uint256 hasEggs = getMyEggs();
require(hasEggs > 0, "No eggs to sell");
uint256 eggValue = calculateEggSell(hasEggs); // in normalized 18-decimal
uint256 fee = _devFee(eggValue);
uint256 payout = eggValue - fee;
// Convert back to native token decimals BEFORE mutating state. The normalized
// eggValue can be > 0 while the denormalized payout floors to 0 (e.g. low-decimal
// tokens) — guard against selling eggs for zero tokens.
uint256 feeNative = _denormalize(fee);
uint256 payoutNative = _denormalize(payout);
require(payoutNative > 0, "Sell value too small");
claimedEggs[msg.sender] = 0;
lastHatch[msg.sender] = block.timestamp;
lastSell[msg.sender] = block.timestamp;
marketEggs += hasEggs;
if (feeNative > 0) _sendDevFee(feeNative);
if (payoutNative > 0) token.safeTransfer(msg.sender, payoutNative);
emit EggsSold(msg.sender, hasEggs, payoutNative);
}
// --- Lottery: commit-reveal ---
function commitToLottery(bytes32 commitment) external {
require(hatcheryShrimp[msg.sender] > 0, "Not a farmer");
require(lotteryPhase == LotteryPhase.COMMIT, "Not in commit phase");
require(block.timestamp <= commitDeadline, "Commit window closed");
require(commitment != bytes32(0), "Empty commitment");
require(commits[lotteryRound][msg.sender] == bytes32(0), "Already committed");
commits[lotteryRound][msg.sender] = commitment;
emit LotteryCommit(lotteryRound, msg.sender);
}
function revealForLottery(bytes32 secret) external {
uint256 round = lotteryRound;
if (lotteryPhase == LotteryPhase.COMMIT && block.timestamp > commitDeadline) {
lotteryPhase = LotteryPhase.REVEAL;
revealDeadline = block.timestamp + REVEAL_WINDOW;
}
require(lotteryPhase == LotteryPhase.REVEAL, "Not in reveal phase");
require(block.timestamp <= revealDeadline, "Reveal window closed");
require(!_hasRevealed[round][msg.sender], "Already revealed");
bytes32 commitment = commits[round][msg.sender];
require(commitment != bytes32(0), "No commitment found");
require(
keccak256(abi.encodePacked(secret, msg.sender)) == commitment,
"Invalid reveal"
);
_hasRevealed[round][msg.sender] = true;
_revealers[round].push(msg.sender);
combinedRandomness ^= keccak256(abi.encodePacked(secret, round));
emit LotteryReveal(round, msg.sender);
}
function claimLotteryPrize() external nonReentrant {
uint256 round = lotteryRound;
if (lotteryPhase == LotteryPhase.COMMIT && block.timestamp > commitDeadline) {
lotteryPhase = LotteryPhase.REVEAL;
if (block.timestamp > commitDeadline + REVEAL_WINDOW) {
revealDeadline = commitDeadline + REVEAL_WINDOW;
} else {
revealDeadline = block.timestamp + REVEAL_WINDOW;
}
}
require(
lotteryPhase == LotteryPhase.REVEAL && block.timestamp > revealDeadline,
"Reveal window not closed"
);
address[] storage revealers = _revealers[round];
if (revealers.length < MIN_REVEALS) {
lotteryPhase = LotteryPhase.IDLE;
hatchCounter = 0;
combinedRandomness = bytes32(0);
lotteryRound++;
emit LotteryRollover(round, lotteryPool);
return;
}
uint256 winnerIndex = uint256(combinedRandomness) % revealers.length;
address winner = revealers[winnerIndex];
uint256 prizeNormalized = lotteryPool;
uint256 prizeNative = _denormalize(prizeNormalized);
lotteryPool = 0;
lotteryHistory.push(LotteryResult({
round: round,
winner: winner,
prize: prizeNative,
timestamp: block.timestamp
}));
lotteryPhase = LotteryPhase.IDLE;
hatchCounter = 0;
combinedRandomness = bytes32(0);
lotteryRound++;
if (prizeNative > 0) token.safeTransfer(winner, prizeNative);
emit LotteryWinner(round, winner, prizeNative);
}
// --- Views ---
function calculateTrade(uint256 rt, uint256 rs, uint256 bs) public pure returns (uint256) {
if (rt == 0) return 0;
return (PSN * bs) / (PSNH + ((PSN * rs + PSNH * rt) / rt));
}
function calculateEggSell(uint256 eggs) public view returns (uint256) {
if (eggs == 0) return 0;
return calculateTrade(eggs, marketEggs, getBalance());
}
function calculateEggBuy(uint256 tokenAmount, uint256 contractBalance) public view returns (uint256) {
if (tokenAmount == 0) return 0;
return calculateTrade(tokenAmount, contractBalance, marketEggs);
}
function calculateEggBuySimple(uint256 tokenAmount) external view returns (uint256) {
return calculateEggBuy(_normalize(tokenAmount), getBalance());
}
function getBalance() public view returns (uint256) {
return _normalize(token.balanceOf(address(this))) - lotteryPool;
}
function getMyShrimp() external view returns (uint256) {
return hatcheryShrimp[msg.sender];
}
function getMyEggs() public view returns (uint256) {
return claimedEggs[msg.sender] + getEggsSinceLastHatch(msg.sender);
}
function getEggsSinceLastHatch(address adr) public view returns (uint256) {
if (lastHatch[adr] == 0) return 0;
uint256 secondsPassed = _min(EGGS_TO_HATCH_1SHRIMP, block.timestamp - lastHatch[adr]);
return secondsPassed * hatcheryShrimp[adr];
}
function getLotteryInfo()
external
view
returns (
LotteryPhase phase,
uint256 pool,
uint256 round,
uint256 counter,
uint256 commitDeadline_,
uint256 revealDeadline_,
uint256 revealerCount
)
{
return (
lotteryPhase,
_denormalize(lotteryPool),
lotteryRound,
hatchCounter,
commitDeadline,
revealDeadline,
_revealers[lotteryRound].length
);
}
function getLotteryHistoryLength() external view returns (uint256) {
return lotteryHistory.length;
}
// --- Owner ---
function setMaxDeposit(uint256 _maxDeposit) external onlyOwner {
// 0 = unlimited. Otherwise floor at 1 whole token (native decimals) so the
// owner can't choke deposits down to dust. Only enforceable post-init, when
// decimalScaler is known.
if (initialized && _maxDeposit != 0) {
require(_maxDeposit >= 1e18 / decimalScaler, "Cap below 1 token");
}
maxDeposit = _maxDeposit;
emit MaxDepositUpdated(_maxDeposit);
}
function setWithdrawCooldown(uint256 _withdrawCooldown) external onlyOwner {
require(_withdrawCooldown <= MAX_WITHDRAW_COOLDOWN, "Cooldown too long");
withdrawCooldown = _withdrawCooldown;
emit WithdrawCooldownUpdated(_withdrawCooldown);
}
// --- Internal ---
function _normalize(uint256 amount) internal view returns (uint256) {
return amount * decimalScaler;
}
function _denormalize(uint256 amount) internal view returns (uint256) {
return amount / decimalScaler;
}
function _startLotteryRound() internal {
lotteryPhase = LotteryPhase.COMMIT;
commitDeadline = block.timestamp + COMMIT_WINDOW;
hatchCounter = 0;
combinedRandomness = bytes32(0);
emit LotteryRoundStarted(lotteryRound, _denormalize(lotteryPool), commitDeadline);
}
function _setReferral(address farmer, address ref) internal {
// Only bind a *valid* referrer. Farmers with no referrer keep address(0),
// so their referral bonus is routed to the pool (see _hatchEggs) instead of
// the owner, and they can still acquire a real referrer on a later hatch.
if (referrals[farmer] == address(0) && ref != address(0) && ref != farmer && hatcheryShrimp[ref] > 0) {
referrals[farmer] = ref;
emit ReferralSet(farmer, ref);
}
}
function _sendDevFee(uint256 amount) internal {
if (amount == 0) return;
if (burnDevFees) {
token.safeTransfer(BURN_ADDRESS, amount);
emit DevFeeBurned(amount);
} else {
token.safeTransfer(owner(), amount);
emit DevFeePaid(owner(), amount);
}
}
function _devFee(uint256 amount) internal pure returns (uint256) {
return (amount * DEV_FEE_PERCENT) / 100;
}
function _min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "initialMarketEggs",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_maxDeposit",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_withdrawCooldown",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_burnDevFees",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "DevFeeBurned",
"type": "event",
"inputs": [
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "DevFeePaid",
"type": "event",
"inputs": [
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "EggsBought",
"type": "event",
"inputs": [
{
"name": "buyer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "eggsBought",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "EggsHatched",
"type": "event",
"inputs": [
{
"name": "farmer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "eggsUsed",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "newShrimp",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "EggsSold",
"type": "event",
"inputs": [
{
"name": "farmer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "eggsSold",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokenReceived",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Initialized",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenDecimals",
"type": "uint8",
"indexed": false,
"internalType": "uint8"
},
{
"name": "seedAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "LotteryCommit",
"type": "event",
"inputs": [
{
"name": "round",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "participant",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "LotteryReveal",
"type": "event",
"inputs": [
{
"name": "round",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "participant",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "LotteryRollover",
"type": "event",
"inputs": [
{
"name": "round",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "pool",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "LotteryRoundStarted",
"type": "event",
"inputs": [
{
"name": "round",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "pool",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "commitDeadline",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "LotteryWinner",
"type": "event",
"inputs": [
{
"name": "round",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "winner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "prize",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "MaxDepositUpdated",
"type": "event",
"inputs": [
{
"name": "maxDeposit",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "ReferralBonusToPool",
"type": "event",
"inputs": [
{
"name": "farmer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "eggs",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ReferralSet",
"type": "event",
"inputs": [
{
"name": "farmer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "referrer",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "WithdrawCooldownUpdated",
"type": "event",
"inputs": [
{
"name": "withdrawCooldown",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "BURN_ADDRESS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "COMMIT_WINDOW",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "DEV_FEE_PERCENT",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "EGGS_TO_HATCH_1SHRIMP",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "HATCHES_PER_LOTTERY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "LOTTERY_FEE_PERCENT",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MARKET_EGGS_DIVISOR",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_WITHDRAW_COOLDOWN",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MIN_REVEALS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "PSN",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "PSNH",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "REFERRAL_PERCENT",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "REVEAL_WINDOW",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "WEBSITE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "burnDevFees",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "buyEggs",
"type": "function",
"inputs": [
{
"name": "ref",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "calculateEggBuy",
"type": "function",
"inputs": [
{
"name": "tokenAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "contractBalance",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "calculateEggBuySimple",
"type": "function",
"inputs": [
{
"name": "tokenAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "calculateEggSell",
"type": "function",
"inputs": [
{
"name": "eggs",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "calculateTrade",
"type": "function",
"inputs": [
{
"name": "rt",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "rs",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "bs",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "pure"
},
{
"name": "claimLotteryPrize",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "claimedEggs",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "combinedRandomness",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "commitDeadline",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "commitToLottery",
"type": "function",
"inputs": [
{
"name": "commitment",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "commits",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "decimalScaler",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getBalance",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getEggsSinceLastHatch",
"type": "function",
"inputs": [
{
"name": "adr",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getLotteryHistoryLength",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getLotteryInfo",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "phase",
"type": "uint8",
"internalType": "enum ShrimpFarmERC20.LotteryPhase"
},
{
"name": "pool",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "round",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "counter",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "commitDeadline_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "revealDeadline_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "revealerCount",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getMyEggs",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getMyShrimp",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "hatchCounter",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "hatchEggs",
"type": "function",
"inputs": [
{
"name": "ref",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "hatcheryShrimp",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "initialize",
"type": "function",
"inputs": [
{
"name": "_token",
"type": "address",
"internalType": "contract IERC20"
},
{
"name": "_tokenDecimals",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "seedAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "initialized",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "lastHatch",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "lastSell",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "lotteryHistory",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "round",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "winner",
"type": "address",
"internalType": "address"
},
{
"name": "prize",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "timestamp",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "lotteryPhase",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "enum ShrimpFarmERC20.LotteryPhase"
}
],
"stateMutability": "view"
},
{
"name": "lotteryPool",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "lotteryRound",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "marketEggs",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "maxDeposit",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "referrals",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "revealDeadline",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "revealForLottery",
"type": "function",
"inputs": [
{
"name": "secret",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "sellEggs",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMaxDeposit",
"type": "function",
"inputs": [
{
"name": "_maxDeposit",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setWithdrawCooldown",
"type": "function",
"inputs": [
{
"name": "_withdrawCooldown",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "token",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC20"
}
],
"stateMutability": "view"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "withdrawCooldown",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
}
]0x60a060405234801562000010575f80fd5b50604051620028e1380380620028e183398101604081905262000033916200018a565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005533806200007e57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b62000089816200013b565b505f8411620000db5760405162461bcd60e51b815260206004820152601560248201527f4d7573742073656564206d61726b657420656767730000000000000000000000604482015260640162000075565b62093a80821115620001245760405162461bcd60e51b8152602060048201526011602482015270436f6f6c646f776e20746f6f206c6f6e6760781b604482015260640162000075565b600a92909255600b551515608052600455620001ce565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f805f80608085870312156200019e575f80fd5b84519350602085015192506040850151915060608501518015158114620001c3575f80fd5b939692955090935050565b6080516126f3620001ee5f395f818161053e0152611c2601526126f35ff3fe608060405234801561000f575f80fd5b5060043610610372575f3560e01c80636d6fe230116101d4578063bb371fdd11610109578063e71180ae116100a9578063fbe264de11610079578063fbe264de1461074c578063fc0c546a1461075f578063fccc281314610772578063ff34a2541461077b575f80fd5b8063e71180ae1461071c578063e97f6a68146103cd578063f2fde38b14610726578063fa23bb0614610739575f80fd5b8063cf7eb397116100e4578063cf7eb397146106f0578063d7c8843b146106f9578063db59d3921461070c578063e236bfaf14610714575f80fd5b8063bb371fdd146106c0578063c2127e03146106d3578063c5196426146106e7575f80fd5b80637e56fde5116101745780638e3163271161014f5780638e316327146106735780639ca423b314610686578063a2ff0209146106ae578063b14b28a3146106b7575f80fd5b80637e56fde514610612578063885d68a8146106255780638da5cb5b1461064f575f80fd5b8063715018a6116101af578063715018a6146105c257806372670361146105ca578063732e77d0146105e95780637e2cb974146105f3575f80fd5b80636d6fe230146105605780636d7ff0e01461059b5780636f4ce428146105a3575f80fd5b80633c8bdb9c116102aa578063467ece791161024a57806359eec8951161022557806359eec895146105205780635e6a645e146105285780636083e59a146105305780636b2325a414610539575f80fd5b8063467ece79146104f05780634782a58c1461050f57806354f7563114610517575f80fd5b8063409d417111610285578063409d4171146104a857806343ce7422146104c257806344feed29146104ca578063450edf95146104dd575f80fd5b80633c8bdb9c146104835780633cbfe3a11461048c5780633ec862a814610495575f80fd5b806328051965116103155780632c831633116102f05780632c8316331461045f5780632e9392bb1461046857806333a8915a146104715780633955f0fe14610479575f80fd5b80632805196514610405578063283dc96f1461040e5780632c78a52514610457575f80fd5b806317e931cf1161035057806317e931cf146103cd578063229824c4146103d657806325cf55ba146103e957806326fd8422146103f2575f80fd5b8063101c5ce91461037657806312065fe01461039a578063158ef93e146103b0575b5f80fd5b61037e61078e565b60405161039197969594939291906122b9565b60405180910390f35b6103a26107df565b604051908152602001610391565b6003546103bd9060ff1681565b6040519015158152602001610391565b6103a261025881565b6103a26103e43660046122f7565b610867565b6103a260155481565b6103a2610400366004612320565b6108cf565b6103a2600c5481565b61044a6040518060400160405280601781526020017f68747470733a2f2f706c6179736872696d702e6661726d00000000000000000081525081565b6040516103919190612340565b6103a2600281565b6103a2600e5481565b6103a260045481565b6103a2600581565b6104816108f4565b005b6103a260025481565b6103a2600b5481565b6104816104a33660046123a0565b610b22565b6011546104b59060ff1681565b60405161039191906123bb565b6103a2610b4c565b6104816104d83660046123c9565b610b6f565b6104816104eb3660046123e0565b610bfa565b6103a26104fe3660046123a0565b60076020525f908152604090205481565b6103a2600181565b6103a261271081565b6103a2600a81565b6103a2600481565b6103a2600a5481565b6103bd7f000000000000000000000000000000000000000000000000000000000000000081565b61057361056e3660046123c9565b610f6a565b604080519485526001600160a01b039093166020850152918301526060820152608001610391565b6103a2603281565b6103a26105b13660046123a0565b60096020525f908152604090205481565b610481610fab565b6103a26105d83660046123a0565b60066020525f908152604090205481565b6103a26201518081565b6103a26106013660046123a0565b60056020525f908152604090205481565b6103a26106203660046123c9565b610fbc565b6103a261063336600461240a565b601260209081525f928352604080842090915290825290205481565b5f546001600160a01b03165b6040516001600160a01b039091168152602001610391565b6103a26106813660046123c9565b610fd1565b61065b6106943660046123a0565b60086020525f90815260409020546001600160a01b031681565b6103a2600f5481565b6103a260105481565b6104816106ce3660046123c9565b610fef565b335f908152600560205260409020546103a2565b6103a2600d5481565b6103a261138881565b6103a26107073660046123a0565b61109a565b610481611114565b6016546103a2565b6103a262093a8081565b6104816107343660046123a0565b61146e565b610481610747366004612446565b6114a8565b61048161075a3660046123c9565b611717565b60015461065b906001600160a01b031681565b61065b61dead81565b6104816107893660046123c9565b6119f0565b5f805f805f805f60115f9054906101000a900460ff166107af600e54611bc9565b600d54600c54600f546010545f84815260136020526040902054959d949c50929a50909850965094509092509050565b600e546001546040516370a0823160e01b81523060048201525f9291610858916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561082f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108539190612484565b611bd8565b61086291906124af565b905090565b5f835f0361087657505f6108c8565b83610883816113886124c2565b61088f856127106124c2565b61089991906124d9565b6108a39190612500565b6108af906113886124d9565b6108bb836127106124c2565b6108c59190612500565b90505b9392505050565b5f825f036108de57505f6108ee565b6108eb8383600454610867565b90505b92915050565b6108fc611be7565b60035460ff166109275760405162461bcd60e51b815260040161091e90612513565b60405180910390fd5b600b5415806109515750600b54335f9081526009602052604090205461094d91906124d9565b4210155b61098f5760405162461bcd60e51b815260206004820152600f60248201526e436f6f6c646f776e2061637469766560881b604482015260640161091e565b5f610998610b4c565b90505f81116109db5760405162461bcd60e51b815260206004820152600f60248201526e139bc81959d9dcc81d1bc81cd95b1b608a1b604482015260640161091e565b5f6109e582610fd1565b90505f6109f182611c02565b90505f6109fe82846124af565b90505f610a0a83611bc9565b90505f610a1683611bc9565b90505f8111610a5e5760405162461bcd60e51b815260206004820152601460248201527314d95b1b081d985b1d59481d1bdbc81cdb585b1b60621b604482015260640161091e565b335f908152600660209081526040808320839055600782528083204290819055600990925282205560048054889290610a989084906124d9565b90915550508115610aac57610aac82611c1a565b8015610ac957600154610ac9906001600160a01b03163383611d0a565b604080518781526020810183905233917fe8d77dd2570b097a3aacd209b65a523e8a450007057b6d41bf37669be77259e3910160405180910390a2505050505050610b2060015f8051602061269e83398151915255565b565b610b2a611be7565b610b3381611d44565b610b4960015f8051602061269e83398151915255565b50565b5f610b563361109a565b335f9081526006602052604090205461086291906124d9565b610b77611f7e565b62093a80811115610bbe5760405162461bcd60e51b8152602060048201526011602482015270436f6f6c646f776e20746f6f206c6f6e6760781b604482015260640161091e565b600b8190556040518181527f9c3b48e07bd4d24f2a19cb2a98a9fa2262c3518fcb25f02fb3c10b0052bbc55f906020015b60405180910390a150565b610c02611be7565b60035460ff16610c245760405162461bcd60e51b815260040161091e90612513565b5f8111610c665760405162461bcd60e51b815260206004820152601060248201526f4d7573742073656e6420746f6b656e7360801b604482015260640161091e565b600a541580610c775750600a548111155b610cb95760405162461bcd60e51b8152602060048201526013602482015272115e18d959591cc81b585e0819195c1bdcda5d606a1b604482015260640161091e565b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610cff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d239190612484565b600154909150610d3e906001600160a01b0316333085611faa565b6001546040516370a0823160e01b81523060048201525f9183916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610d88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dac9190612484565b610db691906124af565b90505f610dc282611bd8565b90505f600e54610dd185611bd8565b610ddb91906124af565b90505f6064610deb6001856124c2565b610df59190612500565b90505f610e0282856124af565b905081600e5f828254610e1591906124d9565b909155505f9050610e2682856108cf565b90505f8111610e6b5760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b604482015260640161091e565b5f610e7587611c02565b9050610e8081611c1a565b335f9081526006602052604081208054849290610e9e9084906124d9565b9091555050604080518881526020810184905233917f6bb1bbbe6e533a699f5bfa728c5ec7f0cb333e24a848e3d77401997a67e1df8e910160405180910390a2335f90815260056020526040902054610ef68b611d44565b335f908152600560205260409020548110610f475760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b604482015260640161091e565b505050505050505050610f6660015f8051602061269e83398151915255565b5050565b60168181548110610f79575f80fd5b5f91825260209091206004909102018054600182015460028301546003909301549193506001600160a01b0316919084565b610fb3611f7e565b610b205f611fe6565b5f6108ee610fc983611bd8565b6104006107df565b5f815f03610fe057505f919050565b6108ee826004546103e46107df565b610ff7611f7e565b60035460ff16801561100857508015155b156110655760025461102290670de0b6b3a7640000612500565b8110156110655760405162461bcd60e51b815260206004820152601160248201527021b0b8103132b637bb9018903a37b5b2b760791b604482015260640161091e565b600a8190556040518181527fafac316c9b828c7f9e4c7cec10e6bafd148adbac8c3f06f45bbaf9d79276b36290602001610bef565b6001600160a01b0381165f9081526007602052604081205481036110bf57505f919050565b6001600160a01b0382165f908152600760205260408120546110ef9062015180906110ea90426124af565b612035565b6001600160a01b0384165f908152600560205260409020549091506108c890826124c2565b61111c611be7565b600d54600160115460ff16600281111561113857611138612285565b1480156111465750600f5442115b15611197576011805460ff19166002179055600f5461116890610258906124d9565b42111561118757610258600f5461117f91906124d9565b601055611197565b611193610258426124d9565b6010555b600260115460ff1660028111156111b0576111b0612285565b1480156111be575060105442115b61120a5760405162461bcd60e51b815260206004820152601860248201527f52657665616c2077696e646f77206e6f7420636c6f7365640000000000000000604482015260640161091e565b5f81815260136020526040902080546002111561128c576011805460ff191690555f600c8190556015819055600d8054916112448361253c565b9190505550817feb11ca7ef265e298ef952a9390b121aa35a25991d992f7a26030c1d2524d48e5600e5460405161127d91815260200190565b60405180910390a25050611458565b80546015545f9161129c91612554565b90505f8282815481106112b1576112b1612567565b5f918252602082200154600e546001600160a01b039091169250906112d582611bc9565b5f600e819055604080516080810182528981526001600160a01b038781166020830190815292820185815242606084019081526016805460018101825590875293517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428960049095029485015593517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428a840180546001600160a01b0319169190931617909155517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428b82015590517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428c909101556011805460ff19169055600c8190556015819055600d8054929350906113eb8361253c565b9091555050801561140d5760015461140d906001600160a01b03168483611d0a565b826001600160a01b0316867feea65a7a0f856fda25b2fb7eee87702295b2dbc3399a0c9e1cbe2abdd1feb03e8360405161144991815260200190565b60405180910390a35050505050505b610b2060015f8051602061269e83398151915255565b611476611f7e565b6001600160a01b03811661149f57604051631e4fbdf760e01b81525f600482015260240161091e565b610b4981611fe6565b6114b0611f7e565b60035460ff16156114f95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161091e565b6001600160a01b03831661153c5760405162461bcd60e51b815260206004820152600a6024820152692d32b937903a37b5b2b760b11b604482015260640161091e565b60128260ff1611156115845760405162461bcd60e51b8152602060048201526011602482015270088cac6d2dac2d8e640e8dede40d0d2ced607b1b604482015260640161091e565b5f81116115cb5760405162461bcd60e51b81526020600482015260156024820152744d7573742073656564207769746820746f6b656e7360581b604482015260640161091e565b826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611625575060408051601f3d908101601f191682019092526116229181019061257b565b60015b15611675578260ff168160ff16146116735760405162461bcd60e51b8152602060048201526011602482015270088cac6d2dac2d8e640dad2e6dac2e8c6d607b1b604482015260640161091e565b505b600180546001600160a01b0319166001600160a01b03851617905561169b826012612596565b6116a690600a61268f565b6002556116be6001600160a01b038416333084611faa565b6003805460ff191660011790556040805160ff84168152602081018390526001600160a01b038516917f48d0d1002307733b661a59349eb3e7f3153220114138478950e9702dd55de22c910160405180910390a2505050565b600d54600160115460ff16600281111561173357611733612285565b1480156117415750600f5442115b15611763576011805460ff1916600217905561175f610258426124d9565b6010555b600260115460ff16600281111561177c5761177c612285565b146117bf5760405162461bcd60e51b81526020600482015260136024820152724e6f7420696e2072657665616c20706861736560681b604482015260640161091e565b6010544211156118085760405162461bcd60e51b815260206004820152601460248201527314995d99585b081dda5b991bddc818db1bdcd95960621b604482015260640161091e565b5f81815260146020908152604080832033845290915290205460ff16156118645760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481c995d99585b195960821b604482015260640161091e565b5f818152601260209081526040808320338452909152902054806118c05760405162461bcd60e51b8152602060048201526013602482015272139bc818dbdb5b5a5d1b595b9d08199bdd5b99606a1b604482015260640161091e565b8083336040516020016118ef92919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120146119435760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081c995d99585b60921b604482015260640161091e565b5f82815260146020908152604080832033808552908352818420805460ff19166001908117909155868552601384528285208054918201815585528385200180546001600160a01b0319168217905581518084018890528083018790528251808203840181526060909101928390528051930192909220601580549091189055909184917fa568eae5cccdfdafd5242d709221ea96bf3a6a7948a909fa8aafc9386149d65d9190a3505050565b335f90815260056020526040902054611a3a5760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030903330b936b2b960a11b604482015260640161091e565b600160115460ff166002811115611a5357611a53612285565b14611a965760405162461bcd60e51b81526020600482015260136024820152724e6f7420696e20636f6d6d697420706861736560681b604482015260640161091e565b600f54421115611adf5760405162461bcd60e51b815260206004820152601460248201527310dbdb5b5a5d081dda5b991bddc818db1bdcd95960621b604482015260640161091e565b80611b1f5760405162461bcd60e51b815260206004820152601060248201526f115b5c1d1e4818dbdb5b5a5d1b595b9d60821b604482015260640161091e565b600d545f90815260126020908152604080832033845290915290205415611b7c5760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e4818dbdb5b5a5d1d1959607a1b604482015260640161091e565b600d80545f908152601260209081526040808320338085529252808320859055925492519092917fb324496971bf25744d791f71a93223a7f9ca649f76119012ff84356960b14d3b91a350565b5f600254826108ee9190612500565b5f600254826108ee91906124c2565b611bef61204a565b60025f8051602061269e83398151915255565b5f6064611c106004846124c2565b6108ee9190612500565b805f03611c245750565b7f000000000000000000000000000000000000000000000000000000000000000015611c9357600154611c63906001600160a01b031661dead83611d0a565b6040518181527f2892360a79a8b408350a5413bc2d4e61817c32ac75ace4108f62dd2a941aa09990602001610bef565b611cba611ca75f546001600160a01b031690565b6001546001600160a01b03169083611d0a565b5f546001600160a01b03166001600160a01b03167f57f7aa0e3afd334225fad63af931d9d34a4168aa22f4a329b6e71f6bd95baf0b82604051611cff91815260200190565b60405180910390a250565b611d178383836001612079565b611d3f57604051635274afe760e01b81526001600160a01b038416600482015260240161091e565b505050565b60035460ff16611d665760405162461bcd60e51b815260040161091e90612513565b611d7033826120db565b5f611d79610b4c565b90505f8111611dbd5760405162461bcd60e51b815260206004820152601060248201526f09cde40cacecee640e8de40d0c2e8c6d60831b604482015260640161091e565b5f611dcb6201518083612500565b335f90815260056020526040812080549293508392909190611dee9084906124d9565b9091555050335f908152600660209081526040808320839055600790915281204290556064611e1e6005856124c2565b611e289190612500565b335f908152600860205260409020549091506001600160a01b031680611e98578160045f828254611e5991906124d9565b909155505060405182815233907fa35540f6a7d175124e311259e9122f25b23a73df0dfacb121232f11eab417b029060200160405180910390a2611ec5565b6001600160a01b0381165f9081526006602052604081208054849290611ebf9084906124d9565b90915550505b611ed0600a85612500565b60045f828254611ee091906124d9565b9091555050600c8054905f611ef48361253c565b909155505f905060115460ff166002811115611f1257611f12612285565b148015611f2257506032600c5410155b8015611f2f57505f600e54115b15611f3c57611f3c6121a5565b604080518581526020810185905233917fa615e1f1766904aa5473d7086613fe722bb928d0a0a59fc993135de49f4613dc910160405180910390a25050505050565b5f546001600160a01b03163314610b205760405163118cdaa760e01b815233600482015260240161091e565b611fb8848484846001612218565b611fe057604051635274afe760e01b81526001600160a01b038516600482015260240161091e565b50505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f81831061204357816108eb565b5090919050565b5f8051602061269e83398151915254600203610b2057604051633ee5aeb560e01b815260040160405180910390fd5b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f511483166120cf5783831516156120c3573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6001600160a01b038281165f908152600860205260409020541615801561210a57506001600160a01b03811615155b80156121285750816001600160a01b0316816001600160a01b031614155b801561214a57506001600160a01b0381165f9081526005602052604090205415155b15610f66576001600160a01b038281165f8181526008602052604080822080546001600160a01b0319169486169485179055517fdf63218877cb126f6c003f2b7f77327674cd6a0b53ad51deac392548ec12b0ed9190a35050565b6011805460ff191660011790556121be610258426124d9565b600f555f600c819055601555600d54600e547f5fd3a2413ad2082c51d43f6cb2e9148f316185b2d203465725c92e1c40769298906121fb90611bc9565b600f546040805192835260208301919091520160405180910390a2565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316612274578383151615612268573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b634e487b7160e01b5f52602160045260245ffd5b600381106122b557634e487b7160e01b5f52602160045260245ffd5b9052565b60e081016122c7828a612299565b8760208301528660408301528560608301528460808301528360a08301528260c083015298975050505050505050565b5f805f60608486031215612309575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215612331575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b8181101561236c57858101830151858201604001528201612350565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b49575f80fd5b5f602082840312156123b0575f80fd5b81356108c88161238c565b602081016108ee8284612299565b5f602082840312156123d9575f80fd5b5035919050565b5f80604083850312156123f1575f80fd5b82356123fc8161238c565b946020939093013593505050565b5f806040838503121561241b575f80fd5b82359150602083013561242d8161238c565b809150509250929050565b60ff81168114610b49575f80fd5b5f805f60608486031215612458575f80fd5b83356124638161238c565b9250602084013561247381612438565b929592945050506040919091013590565b5f60208284031215612494575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108ee576108ee61249b565b80820281158282048414176108ee576108ee61249b565b808201808211156108ee576108ee61249b565b634e487b7160e01b5f52601260045260245ffd5b5f8261250e5761250e6124ec565b500490565b6020808252600f908201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604082015260600190565b5f6001820161254d5761254d61249b565b5060010190565b5f82612562576125626124ec565b500690565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561258b575f80fd5b81516108c881612438565b60ff82811682821603908111156108ee576108ee61249b565b600181815b808511156125e957815f19048211156125cf576125cf61249b565b808516156125dc57918102915b93841c93908002906125b4565b509250929050565b5f826125ff575060016108ee565b8161260b57505f6108ee565b8160018114612621576002811461262b57612647565b60019150506108ee565b60ff84111561263c5761263c61249b565b50506001821b6108ee565b5060208310610133831016604e8410600b841016171561266a575081810a6108ee565b61267483836125af565b805f19048211156126875761268761249b565b029392505050565b5f6108eb60ff8416836125f156fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220d60426a1afeff55d8dbccdacb5be8919275f11852a5ef9c488e871f65fe45a0664736f6c634300081800330000000000000000000000000000000000000000000000000000001e449a9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054600000000000000000000000000000000000000000000000000000000000000001
0x608060405234801561000f575f80fd5b5060043610610372575f3560e01c80636d6fe230116101d4578063bb371fdd11610109578063e71180ae116100a9578063fbe264de11610079578063fbe264de1461074c578063fc0c546a1461075f578063fccc281314610772578063ff34a2541461077b575f80fd5b8063e71180ae1461071c578063e97f6a68146103cd578063f2fde38b14610726578063fa23bb0614610739575f80fd5b8063cf7eb397116100e4578063cf7eb397146106f0578063d7c8843b146106f9578063db59d3921461070c578063e236bfaf14610714575f80fd5b8063bb371fdd146106c0578063c2127e03146106d3578063c5196426146106e7575f80fd5b80637e56fde5116101745780638e3163271161014f5780638e316327146106735780639ca423b314610686578063a2ff0209146106ae578063b14b28a3146106b7575f80fd5b80637e56fde514610612578063885d68a8146106255780638da5cb5b1461064f575f80fd5b8063715018a6116101af578063715018a6146105c257806372670361146105ca578063732e77d0146105e95780637e2cb974146105f3575f80fd5b80636d6fe230146105605780636d7ff0e01461059b5780636f4ce428146105a3575f80fd5b80633c8bdb9c116102aa578063467ece791161024a57806359eec8951161022557806359eec895146105205780635e6a645e146105285780636083e59a146105305780636b2325a414610539575f80fd5b8063467ece79146104f05780634782a58c1461050f57806354f7563114610517575f80fd5b8063409d417111610285578063409d4171146104a857806343ce7422146104c257806344feed29146104ca578063450edf95146104dd575f80fd5b80633c8bdb9c146104835780633cbfe3a11461048c5780633ec862a814610495575f80fd5b806328051965116103155780632c831633116102f05780632c8316331461045f5780632e9392bb1461046857806333a8915a146104715780633955f0fe14610479575f80fd5b80632805196514610405578063283dc96f1461040e5780632c78a52514610457575f80fd5b806317e931cf1161035057806317e931cf146103cd578063229824c4146103d657806325cf55ba146103e957806326fd8422146103f2575f80fd5b8063101c5ce91461037657806312065fe01461039a578063158ef93e146103b0575b5f80fd5b61037e61078e565b60405161039197969594939291906122b9565b60405180910390f35b6103a26107df565b604051908152602001610391565b6003546103bd9060ff1681565b6040519015158152602001610391565b6103a261025881565b6103a26103e43660046122f7565b610867565b6103a260155481565b6103a2610400366004612320565b6108cf565b6103a2600c5481565b61044a6040518060400160405280601781526020017f68747470733a2f2f706c6179736872696d702e6661726d00000000000000000081525081565b6040516103919190612340565b6103a2600281565b6103a2600e5481565b6103a260045481565b6103a2600581565b6104816108f4565b005b6103a260025481565b6103a2600b5481565b6104816104a33660046123a0565b610b22565b6011546104b59060ff1681565b60405161039191906123bb565b6103a2610b4c565b6104816104d83660046123c9565b610b6f565b6104816104eb3660046123e0565b610bfa565b6103a26104fe3660046123a0565b60076020525f908152604090205481565b6103a2600181565b6103a261271081565b6103a2600a81565b6103a2600481565b6103a2600a5481565b6103bd7f000000000000000000000000000000000000000000000000000000000000000181565b61057361056e3660046123c9565b610f6a565b604080519485526001600160a01b039093166020850152918301526060820152608001610391565b6103a2603281565b6103a26105b13660046123a0565b60096020525f908152604090205481565b610481610fab565b6103a26105d83660046123a0565b60066020525f908152604090205481565b6103a26201518081565b6103a26106013660046123a0565b60056020525f908152604090205481565b6103a26106203660046123c9565b610fbc565b6103a261063336600461240a565b601260209081525f928352604080842090915290825290205481565b5f546001600160a01b03165b6040516001600160a01b039091168152602001610391565b6103a26106813660046123c9565b610fd1565b61065b6106943660046123a0565b60086020525f90815260409020546001600160a01b031681565b6103a2600f5481565b6103a260105481565b6104816106ce3660046123c9565b610fef565b335f908152600560205260409020546103a2565b6103a2600d5481565b6103a261138881565b6103a26107073660046123a0565b61109a565b610481611114565b6016546103a2565b6103a262093a8081565b6104816107343660046123a0565b61146e565b610481610747366004612446565b6114a8565b61048161075a3660046123c9565b611717565b60015461065b906001600160a01b031681565b61065b61dead81565b6104816107893660046123c9565b6119f0565b5f805f805f805f60115f9054906101000a900460ff166107af600e54611bc9565b600d54600c54600f546010545f84815260136020526040902054959d949c50929a50909850965094509092509050565b600e546001546040516370a0823160e01b81523060048201525f9291610858916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561082f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108539190612484565b611bd8565b61086291906124af565b905090565b5f835f0361087657505f6108c8565b83610883816113886124c2565b61088f856127106124c2565b61089991906124d9565b6108a39190612500565b6108af906113886124d9565b6108bb836127106124c2565b6108c59190612500565b90505b9392505050565b5f825f036108de57505f6108ee565b6108eb8383600454610867565b90505b92915050565b6108fc611be7565b60035460ff166109275760405162461bcd60e51b815260040161091e90612513565b60405180910390fd5b600b5415806109515750600b54335f9081526009602052604090205461094d91906124d9565b4210155b61098f5760405162461bcd60e51b815260206004820152600f60248201526e436f6f6c646f776e2061637469766560881b604482015260640161091e565b5f610998610b4c565b90505f81116109db5760405162461bcd60e51b815260206004820152600f60248201526e139bc81959d9dcc81d1bc81cd95b1b608a1b604482015260640161091e565b5f6109e582610fd1565b90505f6109f182611c02565b90505f6109fe82846124af565b90505f610a0a83611bc9565b90505f610a1683611bc9565b90505f8111610a5e5760405162461bcd60e51b815260206004820152601460248201527314d95b1b081d985b1d59481d1bdbc81cdb585b1b60621b604482015260640161091e565b335f908152600660209081526040808320839055600782528083204290819055600990925282205560048054889290610a989084906124d9565b90915550508115610aac57610aac82611c1a565b8015610ac957600154610ac9906001600160a01b03163383611d0a565b604080518781526020810183905233917fe8d77dd2570b097a3aacd209b65a523e8a450007057b6d41bf37669be77259e3910160405180910390a2505050505050610b2060015f8051602061269e83398151915255565b565b610b2a611be7565b610b3381611d44565b610b4960015f8051602061269e83398151915255565b50565b5f610b563361109a565b335f9081526006602052604090205461086291906124d9565b610b77611f7e565b62093a80811115610bbe5760405162461bcd60e51b8152602060048201526011602482015270436f6f6c646f776e20746f6f206c6f6e6760781b604482015260640161091e565b600b8190556040518181527f9c3b48e07bd4d24f2a19cb2a98a9fa2262c3518fcb25f02fb3c10b0052bbc55f906020015b60405180910390a150565b610c02611be7565b60035460ff16610c245760405162461bcd60e51b815260040161091e90612513565b5f8111610c665760405162461bcd60e51b815260206004820152601060248201526f4d7573742073656e6420746f6b656e7360801b604482015260640161091e565b600a541580610c775750600a548111155b610cb95760405162461bcd60e51b8152602060048201526013602482015272115e18d959591cc81b585e0819195c1bdcda5d606a1b604482015260640161091e565b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610cff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d239190612484565b600154909150610d3e906001600160a01b0316333085611faa565b6001546040516370a0823160e01b81523060048201525f9183916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610d88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dac9190612484565b610db691906124af565b90505f610dc282611bd8565b90505f600e54610dd185611bd8565b610ddb91906124af565b90505f6064610deb6001856124c2565b610df59190612500565b90505f610e0282856124af565b905081600e5f828254610e1591906124d9565b909155505f9050610e2682856108cf565b90505f8111610e6b5760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b604482015260640161091e565b5f610e7587611c02565b9050610e8081611c1a565b335f9081526006602052604081208054849290610e9e9084906124d9565b9091555050604080518881526020810184905233917f6bb1bbbe6e533a699f5bfa728c5ec7f0cb333e24a848e3d77401997a67e1df8e910160405180910390a2335f90815260056020526040902054610ef68b611d44565b335f908152600560205260409020548110610f475760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b604482015260640161091e565b505050505050505050610f6660015f8051602061269e83398151915255565b5050565b60168181548110610f79575f80fd5b5f91825260209091206004909102018054600182015460028301546003909301549193506001600160a01b0316919084565b610fb3611f7e565b610b205f611fe6565b5f6108ee610fc983611bd8565b6104006107df565b5f815f03610fe057505f919050565b6108ee826004546103e46107df565b610ff7611f7e565b60035460ff16801561100857508015155b156110655760025461102290670de0b6b3a7640000612500565b8110156110655760405162461bcd60e51b815260206004820152601160248201527021b0b8103132b637bb9018903a37b5b2b760791b604482015260640161091e565b600a8190556040518181527fafac316c9b828c7f9e4c7cec10e6bafd148adbac8c3f06f45bbaf9d79276b36290602001610bef565b6001600160a01b0381165f9081526007602052604081205481036110bf57505f919050565b6001600160a01b0382165f908152600760205260408120546110ef9062015180906110ea90426124af565b612035565b6001600160a01b0384165f908152600560205260409020549091506108c890826124c2565b61111c611be7565b600d54600160115460ff16600281111561113857611138612285565b1480156111465750600f5442115b15611197576011805460ff19166002179055600f5461116890610258906124d9565b42111561118757610258600f5461117f91906124d9565b601055611197565b611193610258426124d9565b6010555b600260115460ff1660028111156111b0576111b0612285565b1480156111be575060105442115b61120a5760405162461bcd60e51b815260206004820152601860248201527f52657665616c2077696e646f77206e6f7420636c6f7365640000000000000000604482015260640161091e565b5f81815260136020526040902080546002111561128c576011805460ff191690555f600c8190556015819055600d8054916112448361253c565b9190505550817feb11ca7ef265e298ef952a9390b121aa35a25991d992f7a26030c1d2524d48e5600e5460405161127d91815260200190565b60405180910390a25050611458565b80546015545f9161129c91612554565b90505f8282815481106112b1576112b1612567565b5f918252602082200154600e546001600160a01b039091169250906112d582611bc9565b5f600e819055604080516080810182528981526001600160a01b038781166020830190815292820185815242606084019081526016805460018101825590875293517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428960049095029485015593517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428a840180546001600160a01b0319169190931617909155517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428b82015590517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428c909101556011805460ff19169055600c8190556015819055600d8054929350906113eb8361253c565b9091555050801561140d5760015461140d906001600160a01b03168483611d0a565b826001600160a01b0316867feea65a7a0f856fda25b2fb7eee87702295b2dbc3399a0c9e1cbe2abdd1feb03e8360405161144991815260200190565b60405180910390a35050505050505b610b2060015f8051602061269e83398151915255565b611476611f7e565b6001600160a01b03811661149f57604051631e4fbdf760e01b81525f600482015260240161091e565b610b4981611fe6565b6114b0611f7e565b60035460ff16156114f95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161091e565b6001600160a01b03831661153c5760405162461bcd60e51b815260206004820152600a6024820152692d32b937903a37b5b2b760b11b604482015260640161091e565b60128260ff1611156115845760405162461bcd60e51b8152602060048201526011602482015270088cac6d2dac2d8e640e8dede40d0d2ced607b1b604482015260640161091e565b5f81116115cb5760405162461bcd60e51b81526020600482015260156024820152744d7573742073656564207769746820746f6b656e7360581b604482015260640161091e565b826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611625575060408051601f3d908101601f191682019092526116229181019061257b565b60015b15611675578260ff168160ff16146116735760405162461bcd60e51b8152602060048201526011602482015270088cac6d2dac2d8e640dad2e6dac2e8c6d607b1b604482015260640161091e565b505b600180546001600160a01b0319166001600160a01b03851617905561169b826012612596565b6116a690600a61268f565b6002556116be6001600160a01b038416333084611faa565b6003805460ff191660011790556040805160ff84168152602081018390526001600160a01b038516917f48d0d1002307733b661a59349eb3e7f3153220114138478950e9702dd55de22c910160405180910390a2505050565b600d54600160115460ff16600281111561173357611733612285565b1480156117415750600f5442115b15611763576011805460ff1916600217905561175f610258426124d9565b6010555b600260115460ff16600281111561177c5761177c612285565b146117bf5760405162461bcd60e51b81526020600482015260136024820152724e6f7420696e2072657665616c20706861736560681b604482015260640161091e565b6010544211156118085760405162461bcd60e51b815260206004820152601460248201527314995d99585b081dda5b991bddc818db1bdcd95960621b604482015260640161091e565b5f81815260146020908152604080832033845290915290205460ff16156118645760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481c995d99585b195960821b604482015260640161091e565b5f818152601260209081526040808320338452909152902054806118c05760405162461bcd60e51b8152602060048201526013602482015272139bc818dbdb5b5a5d1b595b9d08199bdd5b99606a1b604482015260640161091e565b8083336040516020016118ef92919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120146119435760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081c995d99585b60921b604482015260640161091e565b5f82815260146020908152604080832033808552908352818420805460ff19166001908117909155868552601384528285208054918201815585528385200180546001600160a01b0319168217905581518084018890528083018790528251808203840181526060909101928390528051930192909220601580549091189055909184917fa568eae5cccdfdafd5242d709221ea96bf3a6a7948a909fa8aafc9386149d65d9190a3505050565b335f90815260056020526040902054611a3a5760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030903330b936b2b960a11b604482015260640161091e565b600160115460ff166002811115611a5357611a53612285565b14611a965760405162461bcd60e51b81526020600482015260136024820152724e6f7420696e20636f6d6d697420706861736560681b604482015260640161091e565b600f54421115611adf5760405162461bcd60e51b815260206004820152601460248201527310dbdb5b5a5d081dda5b991bddc818db1bdcd95960621b604482015260640161091e565b80611b1f5760405162461bcd60e51b815260206004820152601060248201526f115b5c1d1e4818dbdb5b5a5d1b595b9d60821b604482015260640161091e565b600d545f90815260126020908152604080832033845290915290205415611b7c5760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e4818dbdb5b5a5d1d1959607a1b604482015260640161091e565b600d80545f908152601260209081526040808320338085529252808320859055925492519092917fb324496971bf25744d791f71a93223a7f9ca649f76119012ff84356960b14d3b91a350565b5f600254826108ee9190612500565b5f600254826108ee91906124c2565b611bef61204a565b60025f8051602061269e83398151915255565b5f6064611c106004846124c2565b6108ee9190612500565b805f03611c245750565b7f000000000000000000000000000000000000000000000000000000000000000115611c9357600154611c63906001600160a01b031661dead83611d0a565b6040518181527f2892360a79a8b408350a5413bc2d4e61817c32ac75ace4108f62dd2a941aa09990602001610bef565b611cba611ca75f546001600160a01b031690565b6001546001600160a01b03169083611d0a565b5f546001600160a01b03166001600160a01b03167f57f7aa0e3afd334225fad63af931d9d34a4168aa22f4a329b6e71f6bd95baf0b82604051611cff91815260200190565b60405180910390a250565b611d178383836001612079565b611d3f57604051635274afe760e01b81526001600160a01b038416600482015260240161091e565b505050565b60035460ff16611d665760405162461bcd60e51b815260040161091e90612513565b611d7033826120db565b5f611d79610b4c565b90505f8111611dbd5760405162461bcd60e51b815260206004820152601060248201526f09cde40cacecee640e8de40d0c2e8c6d60831b604482015260640161091e565b5f611dcb6201518083612500565b335f90815260056020526040812080549293508392909190611dee9084906124d9565b9091555050335f908152600660209081526040808320839055600790915281204290556064611e1e6005856124c2565b611e289190612500565b335f908152600860205260409020549091506001600160a01b031680611e98578160045f828254611e5991906124d9565b909155505060405182815233907fa35540f6a7d175124e311259e9122f25b23a73df0dfacb121232f11eab417b029060200160405180910390a2611ec5565b6001600160a01b0381165f9081526006602052604081208054849290611ebf9084906124d9565b90915550505b611ed0600a85612500565b60045f828254611ee091906124d9565b9091555050600c8054905f611ef48361253c565b909155505f905060115460ff166002811115611f1257611f12612285565b148015611f2257506032600c5410155b8015611f2f57505f600e54115b15611f3c57611f3c6121a5565b604080518581526020810185905233917fa615e1f1766904aa5473d7086613fe722bb928d0a0a59fc993135de49f4613dc910160405180910390a25050505050565b5f546001600160a01b03163314610b205760405163118cdaa760e01b815233600482015260240161091e565b611fb8848484846001612218565b611fe057604051635274afe760e01b81526001600160a01b038516600482015260240161091e565b50505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f81831061204357816108eb565b5090919050565b5f8051602061269e83398151915254600203610b2057604051633ee5aeb560e01b815260040160405180910390fd5b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f511483166120cf5783831516156120c3573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6001600160a01b038281165f908152600860205260409020541615801561210a57506001600160a01b03811615155b80156121285750816001600160a01b0316816001600160a01b031614155b801561214a57506001600160a01b0381165f9081526005602052604090205415155b15610f66576001600160a01b038281165f8181526008602052604080822080546001600160a01b0319169486169485179055517fdf63218877cb126f6c003f2b7f77327674cd6a0b53ad51deac392548ec12b0ed9190a35050565b6011805460ff191660011790556121be610258426124d9565b600f555f600c819055601555600d54600e547f5fd3a2413ad2082c51d43f6cb2e9148f316185b2d203465725c92e1c40769298906121fb90611bc9565b600f546040805192835260208301919091520160405180910390a2565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316612274578383151615612268573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b634e487b7160e01b5f52602160045260245ffd5b600381106122b557634e487b7160e01b5f52602160045260245ffd5b9052565b60e081016122c7828a612299565b8760208301528660408301528560608301528460808301528360a08301528260c083015298975050505050505050565b5f805f60608486031215612309575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215612331575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b8181101561236c57858101830151858201604001528201612350565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b49575f80fd5b5f602082840312156123b0575f80fd5b81356108c88161238c565b602081016108ee8284612299565b5f602082840312156123d9575f80fd5b5035919050565b5f80604083850312156123f1575f80fd5b82356123fc8161238c565b946020939093013593505050565b5f806040838503121561241b575f80fd5b82359150602083013561242d8161238c565b809150509250929050565b60ff81168114610b49575f80fd5b5f805f60608486031215612458575f80fd5b83356124638161238c565b9250602084013561247381612438565b929592945050506040919091013590565b5f60208284031215612494575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108ee576108ee61249b565b80820281158282048414176108ee576108ee61249b565b808201808211156108ee576108ee61249b565b634e487b7160e01b5f52601260045260245ffd5b5f8261250e5761250e6124ec565b500490565b6020808252600f908201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604082015260600190565b5f6001820161254d5761254d61249b565b5060010190565b5f82612562576125626124ec565b500690565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561258b575f80fd5b81516108c881612438565b60ff82811682821603908111156108ee576108ee61249b565b600181815b808511156125e957815f19048211156125cf576125cf61249b565b808516156125dc57918102915b93841c93908002906125b4565b509250929050565b5f826125ff575060016108ee565b8161260b57505f6108ee565b8160018114612621576002811461262b57612647565b60019150506108ee565b60ff84111561263c5761263c61249b565b50506001821b6108ee565b5060208310610133831016604e8410600b841016171561266a575081810a6108ee565b61267483836125af565b805f19048211156126875761268761249b565b029392505050565b5f6108eb60ff8416836125f156fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220d60426a1afeff55d8dbccdacb5be8919275f11852a5ef9c488e871f65fe45a0664736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 1 | $0.0000102 | $0 | |
| Shrimp Farm (SHRIMP) | SHRIMP | 53,770,485.892143 | — | — |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xdd8cca…a61f82 | 34 days agoTue, 14 Jul 2026 16:57:49 UTC | 0xa615e1…13dc | [0] 0x000000000000…4e71698d data: 0x000000000000000000…0000001e |
| 0xdd8cca…a61f82 | 34 days agoTue, 14 Jul 2026 16:57:49 UTC | 0xa35540…7b02 | [0] 0x000000000000…4e71698d data: 0x000000000000000000…0002077a |
| 0xb4f682…4c3d32 | 34 days agoTue, 14 Jul 2026 16:57:03 UTC | 0xa615e1…13dc | [0] 0x000000000000…4e71698d data: 0x000000000000000000…00003600 |
| 0xb4f682…4c3d32 | 34 days agoTue, 14 Jul 2026 16:57:03 UTC | 0xa35540…7b02 | [0] 0x000000000000…4e71698d data: 0x000000000000000000…038f41ea |
| 0x9fcfed…d0ca3d | 35 days agoTue, 14 Jul 2026 09:24:35 UTC | 0xa615e1…13dc | [0] 0x000000000000…4e71698d data: 0x000000000000000000…000039d5 |
| 0x9fcfed…d0ca3d | 35 days agoTue, 14 Jul 2026 09:24:35 UTC | 0xa35540…7b02 | [0] 0x000000000000…4e71698d data: 0x000000000000000000…03cff550 |
| 0x1a54b7…46c59c | 35 days agoMon, 13 Jul 2026 21:14:13 UTC | 0xa615e1…13dc | [0] 0x000000000000…4e71698d data: 0x000000000000000000…00000148 |
| 0x1a54b7…46c59c | 35 days agoMon, 13 Jul 2026 21:14:13 UTC | 0xa35540…7b02 | [0] 0x000000000000…4e71698d data: 0x000000000000000000…0015a6c5 |
| 0x1a54b7…46c59c | 35 days agoMon, 13 Jul 2026 21:14:13 UTC | 0x6bb1bb…df8e | [0] 0x000000000000…4e71698d data: 0x000000000000000000…01abbe79 |
| 0x1a54b7…46c59c | 35 days agoMon, 13 Jul 2026 21:14:13 UTC | 0x289236…a099 | data: 0x000000000000000000…9e540000 |
| 0xb78377…eed544 | 35 days agoMon, 13 Jul 2026 21:14:01 UTC | 0xa615e1…13dc | [0] 0x000000000000…4e71698d data: 0x000000000000000000…00000179 |
| 0xb78377…eed544 | 35 days agoMon, 13 Jul 2026 21:14:01 UTC | 0xa35540…7b02 | [0] 0x000000000000…4e71698d data: 0x000000000000000000…0018e267 |
| 0xd6e447…9dc737 | 35 days agoMon, 13 Jul 2026 20:54:56 UTC | 0xa615e1…13dc | [0] 0x000000000000…4e71698d data: 0x000000000000000000…0000017e |
| 0xd6e447…9dc737 | 35 days agoMon, 13 Jul 2026 20:54:56 UTC | 0xa35540…7b02 | [0] 0x000000000000…4e71698d data: 0x000000000000000000…00193ca0 |
| 0xcbac8b…90e2c0 | 35 days agoMon, 13 Jul 2026 20:35:19 UTC | 0xe8d77d…59e3 | [0] 0x000000000000…4e71698d data: 0x000000000000000000…37fcbf8c |
| 0xcbac8b…90e2c0 | 35 days agoMon, 13 Jul 2026 20:35:19 UTC | 0x289236…a099 | data: 0x000000000000000000…625532a5 |
| 0x26055e…98205b | 35 days agoMon, 13 Jul 2026 20:35:01 UTC | 0xa615e1…13dc | [0] 0x000000000000…4e71698d data: 0x000000000000000000…000003b5 |
| 0x26055e…98205b | 35 days agoMon, 13 Jul 2026 20:35:01 UTC | 0xa35540…7b02 | [0] 0x000000000000…4e71698d data: 0x000000000000000000…003e8f7c |
| 0x26055e…98205b | 35 days agoMon, 13 Jul 2026 20:35:01 UTC | 0x6bb1bb…df8e | [0] 0x000000000000…4e71698d data: 0x000000000000000000…04a50e99 |
| 0x26055e…98205b | 35 days agoMon, 13 Jul 2026 20:35:01 UTC | 0x289236…a099 | data: 0x000000000000000000…5eed0000 |
| 0x9e56ce…31216a | 35 days agoMon, 13 Jul 2026 20:32:31 UTC | 0xa615e1…13dc | [0] 0x000000000000…4e71698d data: 0x000000000000000000…00000070 |
| 0x9e56ce…31216a | 35 days agoMon, 13 Jul 2026 20:32:31 UTC | 0xa35540…7b02 | [0] 0x000000000000…4e71698d data: 0x000000000000000000…000762e5 |
| 0x56add9…9f39c7 | 35 days agoMon, 13 Jul 2026 20:26:33 UTC | 0xa615e1…13dc | [0] 0x000000000000…4e71698d data: 0x000000000000000000…000004d6 |
| 0x56add9…9f39c7 | 35 days agoMon, 13 Jul 2026 20:26:33 UTC | 0xa35540…7b02 | [0] 0x000000000000…4e71698d data: 0x000000000000000000…00519b8c |
| 0x56add9…9f39c7 | 35 days agoMon, 13 Jul 2026 20:26:33 UTC | 0x6bb1bb…df8e | [0] 0x000000000000…4e71698d data: 0x000000000000000000…0632154c |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xdd8cca…a61f82 | hatchEggs | 9,691,045 | 34 days agoTue, 14 Jul 2026 16:57:49 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000296 | |
| 0xb4f682…4c3d32 | hatchEggs | 9,690,581 | 34 days agoTue, 14 Jul 2026 16:57:03 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000293 | |
| 0x9fcfed…d0ca3d | hatchEggs | 9,419,128 | 35 days agoTue, 14 Jul 2026 09:24:35 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000267 | |
| 0x1a54b7…46c59c | buyEggs | 8,982,230 | 35 days agoMon, 13 Jul 2026 21:14:13 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000896 | |
| 0xb78377…eed544 | hatchEggs | 8,982,111 | 35 days agoMon, 13 Jul 2026 21:14:01 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000299 | |
| 0xd6e447…9dc737 | hatchEggs | 8,970,688 | 35 days agoMon, 13 Jul 2026 20:54:56 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000298 | |
| 0xcbac8b…90e2c0 | sellEggs | 8,958,950 | 35 days agoMon, 13 Jul 2026 20:35:19 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000874 | |
| 0x26055e…98205b | buyEggs | 8,958,770 | 35 days agoMon, 13 Jul 2026 20:35:01 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000918 | |
| 0x9e56ce…31216a | hatchEggs | 8,957,264 | 35 days agoMon, 13 Jul 2026 20:32:31 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000298 | |
| 0x56add9…9f39c7 | buyEggs | 8,953,706 | 35 days agoMon, 13 Jul 2026 20:26:33 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000937 | |
| 0xbd7599…aa05c2 | hatchEggs | 8,952,532 | 35 days agoMon, 13 Jul 2026 20:24:36 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000296 | |
| 0xb3c27b…708b01 | buyEggs | 8,951,695 | 35 days agoMon, 13 Jul 2026 20:23:12 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000936 | |
| 0x1a2a44…f798af | buyEggs | 8,949,624 | 35 days agoMon, 13 Jul 2026 20:19:45 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000935 | |
| 0x6f3ded…30b8ef | hatchEggs | 8,949,502 | 35 days agoMon, 13 Jul 2026 20:19:33 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000285 | |
| 0x1a4bb5…655ea7 | buyEggs | 8,944,998 | 35 days agoMon, 13 Jul 2026 20:12:01 UTC | 0x4e3b…7791 | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00001330 | |
| 0xdece5a…258e1c | hatchEggs | 8,943,997 | 35 days agoMon, 13 Jul 2026 20:10:20 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00000300 | |
| 0x05924d…7fc0f2 | buyEggs | 8,941,403 | 35 days agoMon, 13 Jul 2026 20:06:01 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00001362 | |
| 0x8e274d…9ee60c | initialize | 8,936,527 | 35 days agoMon, 13 Jul 2026 19:57:52 UTC | 0xfea8…698d | IN | ShrimpFarmERC20 | $0.000 ETH | 0.00001059 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x524604d8…e15ab7 | Transfer | 19,859,982 | 22 days agoSun, 26 Jul 2026 12:10:36 UTC | 0xcaf7…5d11 | IN | 0xdd8d…3bd9 | $0.001 DIH | ||
| 0x1a54b75b…46c59c | Transfer | 8,982,230 | 35 days agoMon, 13 Jul 2026 21:14:13 UTC | 0xdd8d…3bd9 | OUT | 0x0000…dead | 459.08 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x1a54b75b…46c59c | Transfer | 8,982,230 | 35 days agoMon, 13 Jul 2026 21:14:13 UTC | 0xfea8…698d | IN | 0xdd8d…3bd9 | 11,477.000000 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0xcbac8beb…90e2c0 | Transfer | 8,958,950 | 35 days agoMon, 13 Jul 2026 20:35:19 UTC | 0xdd8d…3bd9 | OUT | 0xfea8…698d | 196.812917 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0xcbac8beb…90e2c0 | Transfer | 8,958,950 | 35 days agoMon, 13 Jul 2026 20:35:19 UTC | 0xdd8d…3bd9 | OUT | 0x0000…dead | 8.200538 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x26055eca…98205b | Transfer | 8,958,770 | 35 days agoMon, 13 Jul 2026 20:35:01 UTC | 0xdd8d…3bd9 | OUT | 0x0000…dead | 1,276.149199 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x26055eca…98205b | Transfer | 8,958,770 | 35 days agoMon, 13 Jul 2026 20:35:01 UTC | 0xfea8…698d | IN | 0xdd8d…3bd9 | 31,903.730000 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x56add971…9f39c7 | Transfer | 8,953,706 | 35 days agoMon, 13 Jul 2026 20:26:33 UTC | 0xdd8d…3bd9 | OUT | 0x0000…dead | 1,701.532400 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x56add971…9f39c7 | Transfer | 8,953,706 | 35 days agoMon, 13 Jul 2026 20:26:33 UTC | 0xfea8…698d | IN | 0xdd8d…3bd9 | 42,538.310000 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0xb3c27be8…708b01 | Transfer | 8,951,695 | 35 days agoMon, 13 Jul 2026 20:23:12 UTC | 0xdd8d…3bd9 | OUT | 0x0000…dead | 2,268.710000 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0xb3c27be8…708b01 | Transfer | 8,951,695 | 35 days agoMon, 13 Jul 2026 20:23:12 UTC | 0xfea8…698d | IN | 0xdd8d…3bd9 | 56,717.749999 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x1a2a44b0…f798af | Transfer | 8,949,624 | 35 days agoMon, 13 Jul 2026 20:19:45 UTC | 0xdd8d…3bd9 | OUT | 0x0000…dead | 3,024.946800 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x1a2a44b0…f798af | Transfer | 8,949,624 | 35 days agoMon, 13 Jul 2026 20:19:45 UTC | 0xfea8…698d | IN | 0xdd8d…3bd9 | 75,623.670000 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x1a4bb52d…655ea7 | Transfer | 8,944,998 | 35 days agoMon, 13 Jul 2026 20:12:01 UTC | 0xdd8d…3bd9 | OUT | 0x0000…dead | 344,615.248400 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x1a4bb52d…655ea7 | Transfer | 8,944,998 | 35 days agoMon, 13 Jul 2026 20:12:01 UTC | 0x4e3b…7791 | IN | 0xdd8d…3bd9 | 8,615,381.210000 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x05924d27…7fc0f2 | Transfer | 8,941,403 | 35 days agoMon, 13 Jul 2026 20:06:01 UTC | 0xdd8d…3bd9 | OUT | 0x0000…dead | 12,099.787599 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x05924d27…7fc0f2 | Transfer | 8,941,403 | 35 days agoMon, 13 Jul 2026 20:06:01 UTC | 0xfea8…698d | IN | 0xdd8d…3bd9 | 302,494.690000 SHRIMP | Shrimp Farm (SHRIMP) | |
| 0x8e274d7c…9ee60c | Transfer | 8,936,527 | 35 days agoMon, 13 Jul 2026 19:57:52 UTC | 0xfea8…698d | IN | 0xdd8d…3bd9 | 45,000,000.000000 SHRIMP | Shrimp Farm (SHRIMP) |