Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 8 from a total of 8 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Rand Modulus | 11100987 | 1966 days ago | IN | 0.015 ETH | 0.00181836 | ||||
| Rand Modulus | 11100986 | 1966 days ago | IN | 0.03 ETH | 0.00939274 | ||||
| Rand Modulus | 11100970 | 1966 days ago | IN | 0.015 ETH | 0.00184081 | ||||
| Rand Modulus | 11100965 | 1966 days ago | IN | 0.015 ETH | 0.01739658 | ||||
| Rand Modulus | 11096307 | 1966 days ago | IN | 0.015 ETH | 0.00478915 | ||||
| Rand Modulus | 11095949 | 1967 days ago | IN | 0.06 ETH | 0.00182897 | ||||
| Rand Modulus | 11095940 | 1967 days ago | IN | 0.03 ETH | 0.00283662 | ||||
| Rand Modulus | 11095915 | 1967 days ago | IN | 0.015 ETH | 0.02052885 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DONDIRoulette
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-10-16
*/
pragma solidity ^0.5.17;
// File: @openzeppelin/contracts/math/SafeMath.sol
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*
* _Available since v2.4.0._
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*
* _Available since v2.4.0._
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*
* _Available since v2.4.0._
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
/**
* @dev Interface of the ERC20 standard as defined in the EIP. Does not include
* the optional functions; to access them see {ERC20Detailed}.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
function mint(address account, uint amount) external;
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: @openzeppelin/contracts/utils/Address.sol
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* This test is non-exhaustive, and there may be false-negatives: during the
* execution of a contract's constructor, its address will be reported as
* not containing a contract.
*
* IMPORTANT: It is unsafe to assume that an address for which this
* function returns false is an externally-owned account (EOA) and not a
* contract.
*/
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != 0x0 && codehash != accountHash);
}
/**
* @dev Converts an `address` into `address payable`. Note that this is
* simply a type cast: the actual underlying value is not changed.
*
* _Available since v2.4.0._
*/
function toPayable(address account) internal pure returns (address payable) {
return address(uint160(account));
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*
* _Available since v2.4.0._
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-call-value
(bool success, ) = recipient.call.value(amount)("");
require(success, "Address: unable to send value, recipient may have reverted");
}
}
// File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
// solhint-disable-next-line max-line-length
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
interface DONDIAirdrop {
function airdrop(uint256 value) external;
function airdropAll() external;
function getRemainAirdrop(address pool) external view returns (uint256);
}
interface DONDISlotHarvester {
function setFortune(address user, uint256 amount) external;
}
contract DONDIRoulette {
using SafeMath for uint256;
using SafeERC20 for IERC20;
DONDISlotHarvester harvester = DONDISlotHarvester(0x7BF87882611c9A0FE92FdAAfFC9Ed0d241305EEe);
struct MyAction {
uint256 rand;
uint256 lastTimestamp;
}
mapping(address => uint8) public spinCount;
mapping(address => MyAction) public result;
mapping(address => uint256) lastDay;
constructor() public {
}
function randModulus(uint256 randString) external payable {
uint256 spinCost = uint256(15) * uint256(2) ** spinCount[msg.sender] * 10 ** 18 / 1000;
require(msg.value == spinCost, "Wrong cost");
uint256 day = now / 86400;
address payable fundaddress = address(0x1912780CA1056fB9B5f3B4C241881f69Ed225861);
uint256 rand = uint256(keccak256(abi.encodePacked(
randString,
now,
block.difficulty,
msg.sender)
)) % 1000;
if (lastDay[msg.sender] != day) {
lastDay[msg.sender] = day;
result[msg.sender].lastTimestamp = now;
uint256 airdropAmount;
if (rand < 20) {
// free spin
if (!msg.sender.send(spinCost)) {
msg.sender.transfer(spinCost);
}
airdropAmount = 0;
} else {
if (!fundaddress.send(spinCost)) {
fundaddress.transfer(address(this).balance);
}
if (rand < 50) {
// no dondi
airdropAmount = 1;
spinCount[msg.sender] = 1;
} else if (rand < 550) {
// 5 dondi
airdropAmount = 5;
spinCount[msg.sender] = 1;
} else if (rand < 800) {
// 10 dondi
airdropAmount = 10;
spinCount[msg.sender] = 1;
} else if (rand < 950) {
// 15 dondi
airdropAmount = 15;
spinCount[msg.sender] = 1;
} else if (rand < 980) {
// 25 dondi
airdropAmount = 25;
spinCount[msg.sender] = 1;
} else if (rand < 998) {
// 100 dondi
airdropAmount = 100;
spinCount[msg.sender] = 1;
} else {
// 1000 dondi
airdropAmount = 1000;
spinCount[msg.sender] = 1;
}
}
result[msg.sender].rand = airdropAmount;
if (airdropAmount == 1) {
airdropAmount = 0;
}
if (airdropAmount > 0) {
harvester.setFortune(msg.sender, airdropAmount);
}
} else {
require(spinCount[msg.sender] < 5, "you already use all spin count for today");
result[msg.sender].lastTimestamp = now;
uint256 airdropAmount;
if (rand < 20) {
// free spin
if (!msg.sender.send(spinCost)) {
msg.sender.transfer(spinCost);
}
airdropAmount = 0;
} else {
if (!fundaddress.send(spinCost)) {
fundaddress.transfer(address(this).balance);
}
if (rand < 50) {
// no dondi
airdropAmount = 1;
spinCount[msg.sender]++;
} else if (rand < 550) {
// 5 dondi
airdropAmount = 5;
spinCount[msg.sender]++;
} else if (rand < 800) {
// 10 dondi
airdropAmount = 10;
spinCount[msg.sender]++;
} else if (rand < 950) {
// 15 dondi
airdropAmount = 15;
spinCount[msg.sender]++;
} else if (rand < 980) {
// 25 dondi
airdropAmount = 25;
spinCount[msg.sender]++;
} else if (rand < 998) {
// 100 dondi
airdropAmount = 100;
spinCount[msg.sender]++;
} else {
// 1000 dondi
airdropAmount = 1000;
spinCount[msg.sender]++;
}
}
result[msg.sender].rand = airdropAmount;
if (airdropAmount == 1) {
airdropAmount = 0;
}
if (airdropAmount > 0) {
harvester.setFortune(msg.sender, airdropAmount);
}
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[{"internalType":"uint256","name":"randString","type":"uint256"}],"name":"randModulus","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"result","outputs":[{"internalType":"uint256","name":"rand","type":"uint256"},{"internalType":"uint256","name":"lastTimestamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"spinCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"}]Contract Creation Code
6080604052600080546001600160a01b031916737bf87882611c9a0fe92fdaaffc9ed0d241305eee17905534801561003657600080fd5b5061084c806100466000396000f3fe6080604052600436106100345760003560e01c806353442901146100395780635d9c9d0f1461005857806377302b0b146100a1575b600080fd5b6100566004803603602081101561004f57600080fd5b50356100ed565b005b34801561006457600080fd5b5061008b6004803603602081101561007b57600080fd5b50356001600160a01b03166107c1565b6040805160ff9092168252519081900360200190f35b3480156100ad57600080fd5b506100d4600480360360208110156100c457600080fd5b50356001600160a01b03166107d6565b6040805192835260208301919091528051918290030190f35b336000908152600160205260408120546103e89060ff1660020a67d02ab486cedc000002049050803414610155576040805162461bcd60e51b815260206004820152600a60248201526915dc9bdb99c818dbdcdd60b21b604482015290519081900360640190fd5b6000620151804260408051602080820188905242828401524460608084019190915233901b608083015282516074818403018152609490920190925280519101209190049150731912780ca1056fb9b5f3b4c241881f69ed225861906000906103e8903360009081526003602052604090205491900691508314610480573360009081526003602090815260408083208690556002909152812042600190910155601482101561025657604051339086156108fc029087906000818181858888f1935050505061024e57604051339086156108fc029087906000818181858888f1935050505015801561024c573d6000803e3d6000fd5b505b5060006103ee565b6040516001600160a01b0384169086156108fc029087906000818181858888f193505050506102b6576040516001600160a01b038416904780156108fc02916000818181858888f193505050501580156102b4573d6000803e3d6000fd5b505b60328210156102e15750336000908152600160208190526040909120805460ff1916821790556103ee565b6102268210156103105750336000908152600160208190526040909120805460ff1916909117905560056103ee565b61032082101561033f5750336000908152600160208190526040909120805460ff19169091179055600a6103ee565b6103b682101561036e5750336000908152600160208190526040909120805460ff19169091179055600f6103ee565b6103d482101561039d5750336000908152600160208190526040909120805460ff1916909117905560196103ee565b6103e68210156103cc5750336000908152600160208190526040909120805460ff1916909117905560646103ee565b50336000908152600160208190526040909120805460ff191690911790556103e85b336000908152600260205260409020819055600181141561040d575060005b801561047a5760008054604080516345387e5160e11b81523360048201526024810185905290516001600160a01b0390921692638a70fca29260448084019382900301818387803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505050505b506107ba565b33600090815260016020526040902054600560ff909116106104d35760405162461bcd60e51b81526004018080602001828103825260288152602001806107f06028913960400191505060405180910390fd5b33600090815260026020526040812042600190910155601482101561054957604051339086156108fc029087906000818181858888f1935050505061054157604051339086156108fc029087906000818181858888f1935050505015801561053f573d6000803e3d6000fd5b505b50600061072c565b6040516001600160a01b0384169086156108fc029087906000818181858888f193505050506105a9576040516001600160a01b038416904780156108fc02916000818181858888f193505050501580156105a7573d6000803e3d6000fd5b505b60328210156105dd5750336000908152600160208190526040909120805460ff80821684011660ff1990911617905561072c565b6102268210156106175750336000908152600160208190526040909120805460ff19811660ff91821690930116919091179055600561072c565b6103208210156106515750336000908152600160208190526040909120805460ff19811660ff91821690930116919091179055600a61072c565b6103b682101561068b5750336000908152600160208190526040909120805460ff19811660ff91821690930116919091179055600f61072c565b6103d48210156106c55750336000908152600160208190526040909120805460ff19811660ff91821690930116919091179055601961072c565b6103e68210156106ff5750336000908152600160208190526040909120805460ff19811660ff91821690930116919091179055606461072c565b50336000908152600160208190526040909120805460ff19811660ff918216909301169190911790556103e85b336000908152600260205260409020819055600181141561074b575060005b80156107b85760008054604080516345387e5160e11b81523360048201526024810185905290516001600160a01b0390921692638a70fca29260448084019382900301818387803b15801561079f57600080fd5b505af11580156107b3573d6000803e3d6000fd5b505050505b505b5050505050565b60016020526000908152604090205460ff1681565b600260205260009081526040902080546001909101548256fe796f7520616c72656164792075736520616c6c207370696e20636f756e7420666f7220746f646179a265627a7a7231582052894f00254319baee2c3b3c3e7f8fb09875c8232b435167010047b0970a486064736f6c63430005110032
Deployed Bytecode
0x6080604052600436106100345760003560e01c806353442901146100395780635d9c9d0f1461005857806377302b0b146100a1575b600080fd5b6100566004803603602081101561004f57600080fd5b50356100ed565b005b34801561006457600080fd5b5061008b6004803603602081101561007b57600080fd5b50356001600160a01b03166107c1565b6040805160ff9092168252519081900360200190f35b3480156100ad57600080fd5b506100d4600480360360208110156100c457600080fd5b50356001600160a01b03166107d6565b6040805192835260208301919091528051918290030190f35b336000908152600160205260408120546103e89060ff1660020a67d02ab486cedc000002049050803414610155576040805162461bcd60e51b815260206004820152600a60248201526915dc9bdb99c818dbdcdd60b21b604482015290519081900360640190fd5b6000620151804260408051602080820188905242828401524460608084019190915233901b608083015282516074818403018152609490920190925280519101209190049150731912780ca1056fb9b5f3b4c241881f69ed225861906000906103e8903360009081526003602052604090205491900691508314610480573360009081526003602090815260408083208690556002909152812042600190910155601482101561025657604051339086156108fc029087906000818181858888f1935050505061024e57604051339086156108fc029087906000818181858888f1935050505015801561024c573d6000803e3d6000fd5b505b5060006103ee565b6040516001600160a01b0384169086156108fc029087906000818181858888f193505050506102b6576040516001600160a01b038416904780156108fc02916000818181858888f193505050501580156102b4573d6000803e3d6000fd5b505b60328210156102e15750336000908152600160208190526040909120805460ff1916821790556103ee565b6102268210156103105750336000908152600160208190526040909120805460ff1916909117905560056103ee565b61032082101561033f5750336000908152600160208190526040909120805460ff19169091179055600a6103ee565b6103b682101561036e5750336000908152600160208190526040909120805460ff19169091179055600f6103ee565b6103d482101561039d5750336000908152600160208190526040909120805460ff1916909117905560196103ee565b6103e68210156103cc5750336000908152600160208190526040909120805460ff1916909117905560646103ee565b50336000908152600160208190526040909120805460ff191690911790556103e85b336000908152600260205260409020819055600181141561040d575060005b801561047a5760008054604080516345387e5160e11b81523360048201526024810185905290516001600160a01b0390921692638a70fca29260448084019382900301818387803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505050505b506107ba565b33600090815260016020526040902054600560ff909116106104d35760405162461bcd60e51b81526004018080602001828103825260288152602001806107f06028913960400191505060405180910390fd5b33600090815260026020526040812042600190910155601482101561054957604051339086156108fc029087906000818181858888f1935050505061054157604051339086156108fc029087906000818181858888f1935050505015801561053f573d6000803e3d6000fd5b505b50600061072c565b6040516001600160a01b0384169086156108fc029087906000818181858888f193505050506105a9576040516001600160a01b038416904780156108fc02916000818181858888f193505050501580156105a7573d6000803e3d6000fd5b505b60328210156105dd5750336000908152600160208190526040909120805460ff80821684011660ff1990911617905561072c565b6102268210156106175750336000908152600160208190526040909120805460ff19811660ff91821690930116919091179055600561072c565b6103208210156106515750336000908152600160208190526040909120805460ff19811660ff91821690930116919091179055600a61072c565b6103b682101561068b5750336000908152600160208190526040909120805460ff19811660ff91821690930116919091179055600f61072c565b6103d48210156106c55750336000908152600160208190526040909120805460ff19811660ff91821690930116919091179055601961072c565b6103e68210156106ff5750336000908152600160208190526040909120805460ff19811660ff91821690930116919091179055606461072c565b50336000908152600160208190526040909120805460ff19811660ff918216909301169190911790556103e85b336000908152600260205260409020819055600181141561074b575060005b80156107b85760008054604080516345387e5160e11b81523360048201526024810185905290516001600160a01b0390921692638a70fca29260448084019382900301818387803b15801561079f57600080fd5b505af11580156107b3573d6000803e3d6000fd5b505050505b505b5050505050565b60016020526000908152604090205460ff1681565b600260205260009081526040902080546001909101548256fe796f7520616c72656164792075736520616c6c207370696e20636f756e7420666f7220746f646179a265627a7a7231582052894f00254319baee2c3b3c3e7f8fb09875c8232b435167010047b0970a486064736f6c63430005110032
Deployed Bytecode Sourcemap
15610:5006:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16081:4532;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16081:4532:0;;:::i;:::-;;15904:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15904:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15904:42:0;-1:-1:-1;;;;;15904:42:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;15953;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15953:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15953:42:0;-1:-1:-1;;;;;15953:42:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16081:4532;16207:10;16150:16;16197:21;;;:9;:21;;;;;;16232:4;;16197:21;;16191:1;16183:35;16169:60;;:67;16150:86;;16268:8;16255:9;:21;16247:44;;;;;-1:-1:-1;;;16247:44:0;;;;;;;;;;;;-1:-1:-1;;;16247:44:0;;;;;;;;;;;;;;;16312:11;16332:5;16326:3;16473:116;;;;;;;;;;16529:3;16473:116;;;;16547:16;16473:116;;;;;;;;16578:10;16473:116;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;16473:116:0;;;;;;;16463:137;;;;;16326:11;;;;-1:-1:-1;16386:42:0;;16348:27;;16604:4;;16641:10;16633:19;;;;:7;:19;;;;;;16455:153;;;;-1:-1:-1;16633:26:0;;16629:3977;;16684:10;16676:19;;;;:7;:19;;;;;;;;:25;;;16730:6;:18;;;;;16765:3;16730:32;;;;:38;16830:2;16823:9;;16819:1524;;;16888:25;;:10;;:25;;;;;16904:8;;16888:25;;;;16904:8;16888:10;:25;;;;;;;16883:104;;16938:29;;:10;;:29;;;;;16958:8;;16938:29;;;;16958:8;16938:10;:29;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16938:29:0;16883:104;-1:-1:-1;17021:1:0;16819:1524;;;17068:26;;-1:-1:-1;;;;;17068:16:0;;;:26;;;;;17085:8;;17068:26;;;;17085:8;17068:16;:26;;;;;;;17063:119;;17119:43;;-1:-1:-1;;;;;17119:20:0;;;17140:21;17119:43;;;;;;;;;17140:21;17119:20;:43;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17119:43:0;17063:119;17211:2;17204:4;:9;17200:1128;;;-1:-1:-1;17321:10:0;17311:21;;;;17287:1;17311:21;;;;;;;;:25;;-1:-1:-1;;17311:25:0;;;;;17200:1128;;;17373:3;17366:4;:10;17362:966;;;-1:-1:-1;17483:10:0;17473:21;;;;17497:1;17473:21;;;;;;;;:25;;-1:-1:-1;;17473:25:0;;;;;;17449:1;17362:966;;;17535:3;17528:4;:10;17524:804;;;-1:-1:-1;17647:10:0;17637:21;;;;17661:1;17637:21;;;;;;;;:25;;-1:-1:-1;;17637:25:0;;;;;;17612:2;17524:804;;;17699:3;17692:4;:10;17688:640;;;-1:-1:-1;17811:10:0;17801:21;;;;17825:1;17801:21;;;;;;;;:25;;-1:-1:-1;;17801:25:0;;;;;;17776:2;17688:640;;;17863:3;17856:4;:10;17852:476;;;-1:-1:-1;17975:10:0;17965:21;;;;17989:1;17965:21;;;;;;;;:25;;-1:-1:-1;;17965:25:0;;;;;;17940:2;17852:476;;;18027:3;18020:4;:10;18016:312;;;-1:-1:-1;18141:10:0;18131:21;;;;18155:1;18131:21;;;;;;;;:25;;-1:-1:-1;;18131:25:0;;;;;;18105:3;18016:312;;;-1:-1:-1;18293:10:0;18283:21;;;;18307:1;18283:21;;;;;;;;:25;;-1:-1:-1;;18283:25:0;;;;;;18256:4;18016:312;18364:10;18357:18;;;;:6;:18;;;;;:39;;;18432:1;18415:18;;18411:76;;;-1:-1:-1;18470:1:0;18411:76;18505:17;;18501:105;;18543:9;;;:47;;;-1:-1:-1;;;18543:47:0;;18564:10;18543:47;;;;;;;;;;;;-1:-1:-1;;;;;18543:9:0;;;;:20;;:47;;;;;;;;;;:9;;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;18543:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18543:47:0;;;;18501:105;16629:3977;;;;18656:10;18646:21;;;;:9;:21;;;;;;18670:1;18646:21;;;;:25;18638:78;;;;-1:-1:-1;;;18638:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18740:10;18733:18;;;;:6;:18;;;;;18768:3;18733:32;;;;:38;18833:2;18826:9;;18822:1510;;;18891:25;;:10;;:25;;;;;18907:8;;18891:25;;;;18907:8;18891:10;:25;;;;;;;18886:104;;18941:29;;:10;;:29;;;;;18961:8;;18941:29;;;;18961:8;18941:10;:29;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18941:29:0;18886:104;-1:-1:-1;19024:1:0;18822:1510;;;19071:26;;-1:-1:-1;;;;;19071:16:0;;;:26;;;;;19088:8;;19071:26;;;;19088:8;19071:16;:26;;;;;;;19066:119;;19122:43;;-1:-1:-1;;;;;19122:20:0;;;19143:21;19122:43;;;;;;;;;19143:21;19122:20;:43;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19122:43:0;19066:119;19214:2;19207:4;:9;19203:1114;;;-1:-1:-1;19324:10:0;19314:21;;;;19290:1;19314:21;;;;;;;;:23;;;;;;;;;-1:-1:-1;;19314:23:0;;;;;;19203:1114;;;19374:3;19367:4;:10;19363:954;;;-1:-1:-1;19484:10:0;19474:21;;;;:9;:21;;;;;;;;:23;;-1:-1:-1;;19474:23:0;;;;;;;;;;;;;;;;19450:1;19363:954;;;19534:3;19527:4;:10;19523:794;;;-1:-1:-1;19646:10:0;19636:21;;;;:9;:21;;;;;;;;:23;;-1:-1:-1;;19636:23:0;;;;;;;;;;;;;;;;19611:2;19523:794;;;19696:3;19689:4;:10;19685:632;;;-1:-1:-1;19808:10:0;19798:21;;;;:9;:21;;;;;;;;:23;;-1:-1:-1;;19798:23:0;;;;;;;;;;;;;;;;19773:2;19685:632;;;19858:3;19851:4;:10;19847:470;;;-1:-1:-1;19970:10:0;19960:21;;;;:9;:21;;;;;;;;:23;;-1:-1:-1;;19960:23:0;;;;;;;;;;;;;;;;19935:2;19847:470;;;20020:3;20013:4;:10;20009:308;;;-1:-1:-1;20134:10:0;20124:21;;;;:9;:21;;;;;;;;:23;;-1:-1:-1;;20124:23:0;;;;;;;;;;;;;;;;20098:3;20009:308;;;-1:-1:-1;20284:10:0;20274:21;;;;:9;:21;;;;;;;;:23;;-1:-1:-1;;20274:23:0;;;;;;;;;;;;;;;;20247:4;20009:308;20353:10;20346:18;;;;:6;:18;;;;;:39;;;20421:1;20404:18;;20400:76;;;-1:-1:-1;20459:1:0;20400:76;20494:17;;20490:105;;20532:9;;;:47;;;-1:-1:-1;;;20532:47:0;;20553:10;20532:47;;;;;;;;;;;;-1:-1:-1;;;;;20532:9:0;;;;:20;;:47;;;;;;;;;;:9;;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;20532:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20532:47:0;;;;20490:105;16629:3977;;16081:4532;;;;;:::o;15904:42::-;;;;;;;;;;;;;;;:::o;15953:::-;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://52894f00254319baee2c3b3c3e7f8fb09875c8232b435167010047b0970a4860
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.