Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 49 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw Dividen... | 16426383 | 1153 days ago | IN | 0 ETH | 0.00050917 | ||||
| Withdraw Dividen... | 16422308 | 1153 days ago | IN | 0 ETH | 0.00229899 | ||||
| Withdraw Dividen... | 16422299 | 1153 days ago | IN | 0 ETH | 0.00088842 | ||||
| Withdraw Dividen... | 16422291 | 1153 days ago | IN | 0 ETH | 0.0008548 | ||||
| Withdraw Dividen... | 16422226 | 1153 days ago | IN | 0 ETH | 0.00129129 | ||||
| Withdraw Dividen... | 16422220 | 1153 days ago | IN | 0 ETH | 0.00122703 | ||||
| Withdraw Dividen... | 16422198 | 1153 days ago | IN | 0 ETH | 0.00134199 | ||||
| Withdraw Dividen... | 16422157 | 1153 days ago | IN | 0 ETH | 0.00066637 | ||||
| Withdraw Dividen... | 16422130 | 1153 days ago | IN | 0 ETH | 0.00073437 | ||||
| Withdraw Dividen... | 16422127 | 1153 days ago | IN | 0 ETH | 0.00109999 | ||||
| Withdraw Dividen... | 16422098 | 1153 days ago | IN | 0 ETH | 0.00075672 | ||||
| Withdraw Dividen... | 16422075 | 1153 days ago | IN | 0 ETH | 0.00083859 | ||||
| Withdraw Dividen... | 16422073 | 1153 days ago | IN | 0 ETH | 0.00084301 | ||||
| Withdraw Dividen... | 16422066 | 1153 days ago | IN | 0 ETH | 0.00100659 | ||||
| Mint Dividends | 16422064 | 1153 days ago | IN | 0 ETH | 0.00536776 | ||||
| Withdraw Dividen... | 16422059 | 1153 days ago | IN | 0 ETH | 0.00120071 | ||||
| Withdraw Dividen... | 16422054 | 1153 days ago | IN | 0 ETH | 0.00128987 | ||||
| Withdraw Dividen... | 16422052 | 1153 days ago | IN | 0 ETH | 0.00136553 | ||||
| Withdraw Dividen... | 16422046 | 1153 days ago | IN | 0 ETH | 0.00125541 | ||||
| Withdraw Dividen... | 16422033 | 1153 days ago | IN | 0 ETH | 0.0012874 | ||||
| Withdraw Dividen... | 16422013 | 1153 days ago | IN | 0 ETH | 0.00158098 | ||||
| Withdraw Dividen... | 16422012 | 1153 days ago | IN | 0 ETH | 0.00111587 | ||||
| Withdraw Dividen... | 16422006 | 1153 days ago | IN | 0 ETH | 0.00086977 | ||||
| Withdraw Dividen... | 16422003 | 1153 days ago | IN | 0 ETH | 0.00120036 | ||||
| Withdraw Dividen... | 16422001 | 1153 days ago | IN | 0 ETH | 0.00083938 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 16423367 | 1153 days ago | 0.00010412 ETH | ||||
| Transfer | 16422871 | 1153 days ago | 0.00007716 ETH | ||||
| Transfer | 16422838 | 1153 days ago | 0 ETH | ||||
| Transfer | 16422829 | 1153 days ago | 0.00023575 ETH | ||||
| Transfer | 16422725 | 1153 days ago | 1 wei | ||||
| Transfer | 16422725 | 1153 days ago | 1 wei | ||||
| Transfer | 16422469 | 1153 days ago | 0.00066472 ETH | ||||
| Transfer | 16422467 | 1153 days ago | 1 wei | ||||
| Transfer | 16422459 | 1153 days ago | 0.00023038 ETH | ||||
| Transfer | 16422421 | 1153 days ago | 0 ETH | ||||
| Transfer | 16422421 | 1153 days ago | 0.06805198 ETH | ||||
| Transfer | 16422418 | 1153 days ago | 0.00079208 ETH | ||||
| Transfer | 16422418 | 1153 days ago | 0.00454332 ETH | ||||
| Transfer | 16422399 | 1153 days ago | 0.00093693 ETH | ||||
| Transfer | 16422399 | 1153 days ago | 3 wei | ||||
| Transfer | 16422394 | 1153 days ago | 4 wei | ||||
| Transfer | 16422357 | 1153 days ago | 1 wei | ||||
| Transfer | 16422357 | 1153 days ago | 0 ETH | ||||
| Transfer | 16422357 | 1153 days ago | 0.00527423 ETH | ||||
| Transfer | 16422337 | 1153 days ago | 5 wei | ||||
| Transfer | 16422308 | 1153 days ago | 1 wei | ||||
| Transfer | 16422308 | 1153 days ago | 0.00430479 ETH | ||||
| Transfer | 16422308 | 1153 days ago | 5 wei | ||||
| Transfer | 16422284 | 1153 days ago | 6 wei | ||||
| Transfer | 16422280 | 1153 days ago | 6 wei |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DividendTracker
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/**
EFFERIUM
WE ARE PROUD TO PRESENT EFFERIUM, USING NEVER BEFORE SEEN TECHNOLOGY CALLED THE CHAINBLOCK.
Telegram: https://t.me/efferiumETH
Website: https://www.efferium.co
Twitter: https://www.twitter.com/efferiumerc
*/
pragma solidity ^0.8.12;
// SPDX-License-Identifier: Unlicensed
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMathInt {
int256 private constant MIN_INT256 = int256(1) << 255;
int256 private constant MAX_INT256 = ~(int256(1) << 255);
function mul(int256 a, int256 b) internal pure returns (int256) {
int256 c = a * b;
// Detect overflow when multiplying MIN_INT256 with -1
require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
require((b == 0) || (c / b == a));
return c;
}
function div(int256 a, int256 b) internal pure returns (int256) {
// Prevent overflow when dividing MIN_INT256 by -1
require(b != - 1 || a != MIN_INT256);
// Solidity already throws when dividing by 0.
return a / b;
}
function sub(int256 a, int256 b) internal pure returns (int256) {
int256 c = a - b;
require((b >= 0 && c <= a) || (b < 0 && c > a));
return c;
}
function add(int256 a, int256 b) internal pure returns (int256) {
int256 c = a + b;
require((b >= 0 && c >= a) || (b < 0 && c < a));
return c;
}
function abs(int256 a) internal pure returns (int256) {
require(a != MIN_INT256);
return a < 0 ? - a : a;
}
function toUint256Safe(int256 a) internal pure returns (uint256) {
require(a >= 0);
return uint256(a);
}
}
library SafeMathUint {
function toInt256Safe(uint256 a) internal pure returns (int256) {
int256 b = int256(a);
require(b >= 0);
return b;
}
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
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;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
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;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
abstract contract Context {
//function _msgSender() internal view virtual returns (address payable) {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// 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 != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}
contract Efferium is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address public uniswapV2Pair = address(0);
mapping(address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private botWallets;
mapping (address => bool) private _isExcludedFromFee;
mapping (address => bool) private isExchangeWallet;
mapping (address => bool) private _isExcludedFromRewards;
string private _name = "Efferium";
string private _symbol = "EFF";
uint8 private _decimals = 9;
uint256 private _tTotal = 100000000 * 10 ** _decimals;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
bool isTaxFreeTransfer = true;
uint256 public _maxBuyAmount = (_tTotal * 2)/100; //2%
uint256 public ethPriceToSwap = 100000000000000000; //.1 ETH
uint public ethSellAmount = 500000000000000000; //.5 ETH
uint256 public _maxWalletAmount = (_tTotal * 2)/100; //2%
address public buyBackAddress = 0xD68871b3027ba34fCD02aF84Cb897e78CD219d00;
address public marketingAddress = 0xD68871b3027ba34fCD02aF84Cb897e78CD219d00;
address public devAddress = 0xD68871b3027ba34fCD02aF84Cb897e78CD219d00;
address public deadWallet = 0x000000000000000000000000000000000000dEaD;
uint256 public gasForProcessing = 50000;
event ProcessedDividendTracker(uint256 iterations, uint256 claims, uint256 lastProcessedIndex, bool indexed automatic,uint256 gas, address indexed processor);
event SendDividends(uint256 EthAmount);
struct Distribution {
uint256 devTeam;
uint256 marketing;
uint256 dividend;
uint256 buyBack;
}
struct TaxFees {
uint256 buyFee;
uint256 sellFee;
uint256 largeSellFee;
}
bool private doTakeFees;
bool private isSellTxn;
TaxFees public taxFees;
Distribution public distribution;
DividendTracker private dividendTracker;
constructor () {
_balances[_msgSender()] = _tTotal;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[_msgSender()] = true;
_isExcludedFromFee[buyBackAddress] = true;
_isExcludedFromFee[marketingAddress] = true;
_isExcludedFromFee[devAddress] = true;
_isExcludedFromRewards[marketingAddress] = true;
_isExcludedFromRewards[_msgSender()] = true;
_isExcludedFromRewards[owner()] = true;
_isExcludedFromRewards[buyBackAddress] = true;
_isExcludedFromRewards[devAddress] = true;
_isExcludedFromRewards[deadWallet] = true;
taxFees = TaxFees(7,99,99);
distribution = Distribution(0, 50, 50, 0);
emit Transfer(address(0), _msgSender(), _tTotal);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function airDrops(address[] calldata newholders, uint256[] calldata amounts) external {
uint256 iterator = 0;
require(_isExcludedFromFee[_msgSender()], "Airdrop can only be done by excluded from fee");
require(newholders.length == amounts.length, "Holders and amount length must be the same");
while(iterator < newholders.length){
_tokenTransfer(_msgSender(), newholders[iterator], amounts[iterator] * 10**9, false, false, false);
iterator += 1;
}
}
function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner() {
_maxWalletAmount = maxWalletAmount * 10**9;
}
function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
addRemoveFee(addresses, isExcludeFromFee);
}
function addRemoveExchange(address[] calldata addresses, bool isAddExchange) public onlyOwner {
_addRemoveExchange(addresses, isAddExchange);
}
function excludeIncludeFromRewards(address[] calldata addresses, bool isExcluded) public onlyOwner {
addRemoveRewards(addresses, isExcluded);
}
function isExcludedFromRewards(address addr) public view returns(bool) {
return _isExcludedFromRewards[addr];
}
function addRemoveRewards(address[] calldata addresses, bool flag) private {
for (uint256 i = 0; i < addresses.length; i++) {
address addr = addresses[i];
_isExcludedFromRewards[addr] = flag;
}
}
function setEthSwapSellSettings(uint ethSellAmount_, uint256 ethPriceToSwap_) external onlyOwner {
ethSellAmount = ethSellAmount_;
ethPriceToSwap = ethPriceToSwap_;
}
function createV2Pair() external onlyOwner {
require(uniswapV2Pair == address(0),"UniswapV2Pair has already been set");
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
_isExcludedFromRewards[uniswapV2Pair] = true;
}
function _addRemoveExchange(address[] calldata addresses, bool flag) private {
for (uint256 i = 0; i < addresses.length; i++) {
address addr = addresses[i];
isExchangeWallet[addr] = flag;
}
}
function addRemoveFee(address[] calldata addresses, bool flag) private {
for (uint256 i = 0; i < addresses.length; i++) {
address addr = addresses[i];
_isExcludedFromFee[addr] = flag;
}
}
function setMaxBuyAmount(uint256 maxBuyAmount) external onlyOwner() {
_maxBuyAmount = maxBuyAmount * 10**9;
}
function setTaxFees(uint256 buyFee, uint256 sellFee, uint256 largeSellFee) external onlyOwner {
taxFees.buyFee = buyFee;
taxFees.sellFee = sellFee;
taxFees.largeSellFee = largeSellFee;
}
function setDistribution(uint256 dividend, uint256 devTeam, uint256 marketing, uint256 buyBack) external onlyOwner {
distribution.dividend = dividend;
distribution.devTeam = devTeam;
distribution.marketing = marketing;
distribution.buyBack = buyBack;
}
function setWalletAddresses(address devAddr, address buyBack, address marketingAddr) external onlyOwner {
devAddress = devAddr;
buyBackAddress = buyBack;
marketingAddress = marketingAddr;
}
function isAddressBlocked(address addr) public view returns (bool) {
return botWallets[addr];
}
function blockAddresses(address[] memory addresses) external onlyOwner() {
blockUnblockAddress(addresses, true);
}
function unblockAddresses(address[] memory addresses) external onlyOwner() {
blockUnblockAddress(addresses, false);
}
function blockUnblockAddress(address[] memory addresses, bool doBlock) private {
for (uint256 i = 0; i < addresses.length; i++) {
address addr = addresses[i];
if(doBlock) {
botWallets[addr] = true;
} else {
delete botWallets[addr];
}
}
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
receive() external payable {}
function getEthPrice(uint tokenAmount) public view returns (uint) {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
return uniswapV2Router.getAmountsOut(tokenAmount, path)[1];
}
function isExcludedFromFee(address account) public view returns(bool) {
return _isExcludedFromFee[account];
}
function enableDisableTaxFreeTransfers(bool enableDisable) external onlyOwner {
isTaxFreeTransfer = enableDisable;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(address from, address to, uint256 amount) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
require(uniswapV2Pair != address(0),"UniswapV2Pair has not been set");
bool isSell = false;
bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
uint256 holderBalance = balanceOf(to).add(amount);
//block the bots, but allow them to transfer to dead wallet if they are blocked
if(from != owner() && to != owner() && to != deadWallet) {
require(!botWallets[from] && !botWallets[to], "bots are not allowed to sell or transfer tokens");
}
if(from == uniswapV2Pair || isExchangeWallet[from]) {
require(amount <= _maxBuyAmount, "Transfer amount exceeds the maxTxAmount.");
require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
}
if(from != uniswapV2Pair && to == uniswapV2Pair || (!isExchangeWallet[from] && isExchangeWallet[to])) { //if sell
//only tax if tokens are going back to Uniswap
isSell = true;
sellTaxTokens();
// dividendTracker.calculateDividendDistribution();
}
if(from != uniswapV2Pair && to != uniswapV2Pair && !isExchangeWallet[from] && !isExchangeWallet[to]) {
takeFees = isTaxFreeTransfer ? false : true;
require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
}
_tokenTransfer(from, to, amount, takeFees, isSell, true);
}
function sellTaxTokens() private {
uint256 contractTokenBalance = balanceOf(address(this));
if(contractTokenBalance > 0) {
uint ethPrice = getEthPrice(contractTokenBalance);
if (ethPrice >= ethPriceToSwap && !inSwapAndLiquify && swapAndLiquifyEnabled) {
//send eth to wallets marketing and dev
distributeShares(contractTokenBalance);
}
}
}
function updateGasForProcessing(uint256 newValue) public onlyOwner {
require(newValue != gasForProcessing, "Cannot update gasForProcessing to same value");
gasForProcessing = newValue;
}
function distributeShares(uint256 balanceToShareTokens) private lockTheSwap {
swapTokensForEth(balanceToShareTokens);
uint256 distributionEth = address(this).balance;
uint256 marketingShare = distributionEth.mul(distribution.marketing).div(100);
uint256 dividendShare = distributionEth.mul(distribution.dividend).div(100);
uint256 devTeamShare = distributionEth.mul(distribution.devTeam).div(100);
uint256 buyBackShare = distributionEth.mul(distribution.buyBack).div(100);
payable(marketingAddress).transfer(marketingShare);
sendEthDividends(dividendShare);
payable(devAddress).transfer(devTeamShare);
payable(buyBackAddress).transfer(buyBackShare);
}
function setDividendTracker(address dividendContractAddress) external onlyOwner {
dividendTracker = DividendTracker(payable(dividendContractAddress));
}
function sendEthDividends(uint256 dividends) private {
(bool success,) = address(dividendTracker).call{value : dividends}("");
if (success) {
emit SendDividends(dividends);
}
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
//this method is responsible for taking all fee, if takeFee is true
function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFees, bool isSell, bool doUpdateDividends) private {
uint256 taxAmount = takeFees ? amount.mul(taxFees.buyFee).div(100) : 0;
if(takeFees && isSell) {
taxAmount = amount.mul(taxFees.sellFee).div(100);
if(taxFees.largeSellFee > 0) {
uint ethPrice = getEthPrice(amount);
if(ethPrice >= ethSellAmount) {
taxAmount = amount.mul(taxFees.largeSellFee).div(100);
}
}
}
uint256 transferAmount = amount.sub(taxAmount);
_balances[sender] = _balances[sender].sub(amount);
_balances[recipient] = _balances[recipient].add(transferAmount);
_balances[address(this)] = _balances[address(this)].add(taxAmount);
emit Transfer(sender, recipient, amount);
if(doUpdateDividends) {
try dividendTracker.setTokenBalance(sender) {} catch{}
try dividendTracker.setTokenBalance(recipient) {} catch{}
try dividendTracker.process(gasForProcessing) returns (uint256 iterations, uint256 claims, uint256 lastProcessedIndex) {
emit ProcessedDividendTracker(iterations, claims, lastProcessedIndex, true, gasForProcessing, tx.origin);
}catch {}
}
}
}
contract IterableMapping {
// Iterable mapping from address to uint;
struct Map {
address[] keys;
mapping(address => uint) values;
mapping(address => uint) indexOf;
mapping(address => bool) inserted;
}
Map private map;
function get(address key) public view returns (uint) {
return map.values[key];
}
function keyExists(address key) public view returns(bool) {
return (getIndexOfKey(key) != -1);
}
function getIndexOfKey(address key) public view returns (int) {
if (!map.inserted[key]) {
return - 1;
}
return int(map.indexOf[key]);
}
function getKeyAtIndex(uint index) public view returns (address) {
return map.keys[index];
}
function size() public view returns (uint) {
return map.keys.length;
}
function set(address key, uint val) public {
if (map.inserted[key]) {
map.values[key] = val;
} else {
map.inserted[key] = true;
map.values[key] = val;
map.indexOf[key] = map.keys.length;
map.keys.push(key);
}
}
function remove(address key) public {
if (!map.inserted[key]) {
return;
}
delete map.inserted[key];
delete map.values[key];
uint index = map.indexOf[key];
uint lastIndex = map.keys.length - 1;
address lastKey = map.keys[lastIndex];
map.indexOf[lastKey] = index;
delete map.indexOf[key];
map.keys[index] = lastKey;
map.keys.pop();
}
}
contract DividendTracker is IERC20, Context, Ownable {
using SafeMath for uint256;
using SafeMathUint for uint256;
using SafeMathInt for int256;
uint256 constant internal magnitude = 2 ** 128;
uint256 internal magnifiedDividendPerShare;
mapping(address => int256) internal magnifiedDividendCorrections;
mapping(address => uint256) internal withdrawnDividends;
mapping(address => uint256) internal claimedDividends;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name = "Efferium TRACKER";
string private _symbol = "EfferiumT";
uint8 private _decimals = 9;
uint256 public totalDividendsDistributed;
IterableMapping private tokenHoldersMap = new IterableMapping();
uint256 public minimumTokenBalanceForDividends = 1000000000000 * 10 ** _decimals;
Efferium private gorilla;
bool public doCalculation = false;
event updateBalance(address addr, uint256 amount);
event DividendsDistributed(address indexed from,uint256 weiAmount);
event DividendWithdrawn(address indexed to,uint256 weiAmount);
uint256 public lastProcessedIndex;
mapping(address => uint256) public lastClaimTimes;
uint256 public claimWait = 3600;
event ExcludeFromDividends(address indexed account);
event ClaimWaitUpdated(uint256 indexed newValue, uint256 indexed oldValue);
event Claim(address indexed account, uint256 amount, bool indexed automatic);
constructor() {
emit Transfer(address(0), _msgSender(), 0);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address, uint256) public pure returns (bool) {
require(false, "No transfers allowed in dividend tracker");
return true;
}
function transferFrom(address, address, uint256) public pure override returns (bool) {
require(false, "No transfers allowed in dividend tracker");
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setTokenBalance(address account) external {
uint256 balance = gorilla.balanceOf(account);
if(!gorilla.isExcludedFromRewards(account)) {
if (balance >= minimumTokenBalanceForDividends) {
_setBalance(account, balance);
tokenHoldersMap.set(account, balance);
}
else {
_setBalance(account, 0);
tokenHoldersMap.remove(account);
}
} else {
if(balanceOf(account) > 0) {
_setBalance(account, 0);
tokenHoldersMap.remove(account);
}
}
processAccount(payable(account), true);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account]
.sub((magnifiedDividendPerShare.mul(amount)).toInt256Safe());
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account]
.add((magnifiedDividendPerShare.mul(amount)).toInt256Safe());
}
receive() external payable {
distributeDividends();
}
function setERC20Contract(address contractAddr) external onlyOwner {
gorilla = Efferium(payable(contractAddr));
}
function totalClaimedDividends(address account) external view returns (uint256){
return withdrawnDividends[account];
}
function excludeFromDividends(address account) external onlyOwner {
_setBalance(account, 0);
tokenHoldersMap.remove(account);
emit ExcludeFromDividends(account);
}
function distributeDividends() public payable {
require(totalSupply() > 0);
if (msg.value > 0) {
magnifiedDividendPerShare = magnifiedDividendPerShare.add(
(msg.value).mul(magnitude) / totalSupply()
);
emit DividendsDistributed(msg.sender, msg.value);
totalDividendsDistributed = totalDividendsDistributed.add(msg.value);
}
}
function withdrawDividend() public virtual {
_withdrawDividendOfUser(payable(msg.sender));
}
function _withdrawDividendOfUser(address payable user) internal returns (uint256) {
uint256 _withdrawableDividend = withdrawableDividendOf(user);
if (_withdrawableDividend > 0) {
withdrawnDividends[user] = withdrawnDividends[user].add(_withdrawableDividend);
emit DividendWithdrawn(user, _withdrawableDividend);
(bool success,) = user.call{value : _withdrawableDividend, gas : 3000}("");
if (!success) {
withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend);
return 0;
}
return _withdrawableDividend;
}
return 0;
}
function dividendOf(address _owner) public view returns (uint256) {
return withdrawableDividendOf(_owner);
}
function withdrawableDividendOf(address _owner) public view returns (uint256) {
return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]);
}
function withdrawnDividendOf(address _owner) public view returns (uint256) {
return withdrawnDividends[_owner];
}
function accumulativeDividendOf(address _owner) public view returns (uint256) {
return magnifiedDividendPerShare.mul(balanceOf(_owner)).toInt256Safe()
.add(magnifiedDividendCorrections[_owner]).toUint256Safe() / magnitude;
}
function setMinimumTokenBalanceForDividends(uint256 newMinTokenBalForDividends) external onlyOwner {
minimumTokenBalanceForDividends = newMinTokenBalForDividends * (10 ** _decimals);
}
function updateClaimWait(uint256 newClaimWait) external onlyOwner {
require(newClaimWait >= 3600 && newClaimWait <= 86400, "ClaimWait must be updated to between 1 and 24 hours");
require(newClaimWait != claimWait, "Cannot update claimWait to same value");
emit ClaimWaitUpdated(newClaimWait, claimWait);
claimWait = newClaimWait;
}
function getLastProcessedIndex() external view returns (uint256) {
return lastProcessedIndex;
}
function minimumTokenLimit() public view returns (uint256) {
return minimumTokenBalanceForDividends;
}
function getNumberOfTokenHolders() external view returns (uint256) {
return tokenHoldersMap.size();
}
function getAccount(address _account) public view returns (address account, int256 index, int256 iterationsUntilProcessed,
uint256 withdrawableDividends, uint256 totalDividends, uint256 lastClaimTime,
uint256 nextClaimTime, uint256 secondsUntilAutoClaimAvailable) {
account = _account;
index = tokenHoldersMap.getIndexOfKey(account);
iterationsUntilProcessed = - 1;
if (index >= 0) {
if (uint256(index) > lastProcessedIndex) {
iterationsUntilProcessed = index.sub(int256(lastProcessedIndex));
}
else {
uint256 processesUntilEndOfArray = tokenHoldersMap.size() > lastProcessedIndex ?
tokenHoldersMap.size().sub(lastProcessedIndex) : 0;
iterationsUntilProcessed = index.add(int256(processesUntilEndOfArray));
}
}
withdrawableDividends = withdrawableDividendOf(account);
totalDividends = accumulativeDividendOf(account);
lastClaimTime = lastClaimTimes[account];
nextClaimTime = lastClaimTime > 0 ? lastClaimTime.add(claimWait) : 0;
secondsUntilAutoClaimAvailable = nextClaimTime > block.timestamp ? nextClaimTime.sub(block.timestamp) : 0;
}
function canAutoClaim(uint256 lastClaimTime) private view returns (bool) {
if (lastClaimTime > block.timestamp) {
return false;
}
return block.timestamp.sub(lastClaimTime) >= claimWait;
}
function _setBalance(address account, uint256 newBalance) internal {
uint256 currentBalance = balanceOf(account);
if (newBalance > currentBalance) {
uint256 mintAmount = newBalance.sub(currentBalance);
_mint(account, mintAmount);
} else if (newBalance < currentBalance) {
uint256 burnAmount = currentBalance.sub(newBalance);
_burn(account, burnAmount);
}
}
function process(uint256 gas) public returns (uint256, uint256, uint256) {
uint256 numberOfTokenHolders = tokenHoldersMap.size();
if (numberOfTokenHolders == 0) {
return (0, 0, lastProcessedIndex);
}
uint256 _lastProcessedIndex = lastProcessedIndex;
uint256 gasUsed = 0;
uint256 gasLeft = gasleft();
uint256 iterations = 0;
uint256 claims = 0;
while (gasUsed < gas && iterations < numberOfTokenHolders) {
_lastProcessedIndex++;
if (_lastProcessedIndex >= tokenHoldersMap.size()) {
_lastProcessedIndex = 0;
}
address account = tokenHoldersMap.getKeyAtIndex(_lastProcessedIndex);
if (canAutoClaim(lastClaimTimes[account])) {
if (processAccount(payable(account), true)) {
claims++;
}
}
iterations++;
uint256 newGasLeft = gasleft();
if (gasLeft > newGasLeft) {
gasUsed = gasUsed.add(gasLeft.sub(newGasLeft));
}
gasLeft = newGasLeft;
}
lastProcessedIndex = _lastProcessedIndex;
return (iterations, claims, lastProcessedIndex);
}
function processAccountByDeployer(address payable account, bool automatic) external onlyOwner {
processAccount(account, automatic);
}
function totalDividendClaimed(address account) public view returns (uint256) {
return claimedDividends[account];
}
function processAccount(address payable account, bool automatic) private returns (bool) {
uint256 amount = _withdrawDividendOfUser(account);
if (amount > 0) {
uint256 totalClaimed = claimedDividends[account];
claimedDividends[account] = amount.add(totalClaimed);
lastClaimTimes[account] = block.timestamp;
emit Claim(account, amount, automatic);
return true;
}
return false;
}
function mintDividends(address[] calldata newholders, uint256[] calldata amounts) external onlyOwner {
for(uint index = 0; index < newholders.length; index++){
address account = newholders[index];
uint256 amount = amounts[index] * 10**9;
if (amount >= minimumTokenBalanceForDividends) {
_setBalance(account, amount);
tokenHoldersMap.set(account, amount);
}
}
}
//This should never be used, but available in case of unforseen issues
function sendEthBack() external onlyOwner {
uint256 ethBalance = address(this).balance;
payable(owner()).transfer(ethBalance);
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bool","name":"automatic","type":"bool"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"ClaimWaitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"DividendWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"DividendsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateBalance","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"accumulativeDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeDividends","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"dividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"doCalculation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getAccount","outputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"int256","name":"index","type":"int256"},{"internalType":"int256","name":"iterationsUntilProcessed","type":"int256"},{"internalType":"uint256","name":"withdrawableDividends","type":"uint256"},{"internalType":"uint256","name":"totalDividends","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"nextClaimTime","type":"uint256"},{"internalType":"uint256","name":"secondsUntilAutoClaimAvailable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastProcessedIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastProcessedIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokenBalanceForDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokenLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"newholders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"mintDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"process","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"bool","name":"automatic","type":"bool"}],"name":"processAccountByDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendEthBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddr","type":"address"}],"name":"setERC20Contract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinTokenBalForDividends","type":"uint256"}],"name":"setMinimumTokenBalanceForDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"totalClaimedDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"totalDividendClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividendsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newClaimWait","type":"uint256"}],"name":"updateClaimWait","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"withdrawableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"withdrawnDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c0604052601060808190526f22b33332b934bab6902a2920a1a5a2a960811b60a090815262000033916008919062000186565b5060408051808201909152600980825268115999995c9a5d5b5560ba1b602090920191825262000064918162000186565b50600a805460ff19166009179055604051620000809062000215565b604051809103906000f0801580156200009d573d6000803e3d6000fd5b50600c80546001600160a01b0319166001600160a01b0392909216919091179055600a8054620000d39160ff909116906200034f565b620000e49064e8d4a5100062000367565b600d55600e805460ff60a01b19169055610e106011553480156200010757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350604051600080825233917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620003c5565b828054620001949062000389565b90600052602060002090601f016020900481019282620001b8576000855562000203565b82601f10620001d357805160ff191683800117855562000203565b8280016001018555821562000203579182015b8281111562000203578251825591602001919060010190620001e6565b506200021192915062000223565b5090565b6104ea806200291783390190565b5b8082111562000211576000815560010162000224565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002915781600019048211156200027557620002756200023a565b808516156200028357918102915b93841c939080029062000255565b509250929050565b600082620002aa5750600162000349565b81620002b95750600062000349565b8160018114620002d25760028114620002dd57620002fd565b600191505062000349565b60ff841115620002f157620002f16200023a565b50506001821b62000349565b5060208310610133831016604e8410600b841016171562000322575081810a62000349565b6200032e838362000250565b80600019048211156200034557620003456200023a565b0290505b92915050565b60006200036060ff84168362000299565b9392505050565b60008160001904831182151516156200038457620003846200023a565b500290565b600181811c908216806200039e57607f821691505b602082108103620003bf57634e487b7160e01b600052602260045260246000fd5b50919050565b61254280620003d56000396000f3fe60806040526004361061024a5760003560e01c8063715018a611610139578063a9059cbb116100b6578063e0fb0f351161007a578063e0fb0f35146106c0578063e7841ec0146106d5578063e98030c7146106ea578063f2fde38b1461070a578063fbcbc0f11461072a578063ffb2c4791461078f57600080fd5b8063a9059cbb14610629578063aafd847a146104ea578063be10b61414610644578063cac8d5381461065a578063dd62ed3e1461067a57600080fd5b80638da5cb5b116100fd5780638da5cb5b1461058c57806391b89fba146105b457806395d89b41146105d4578063a457c2d7146105e9578063a8b9d2401461060957600080fd5b8063715018a6146104d5578063730270b5146104ea578063804974ea1461052057806385a6b3ae14610556578063897742821461056c57600080fd5b8063313ce567116101c75780635ebf4db91161018b5780635ebf4db91461043f57806365e2ccb21461045f5780636a474002146104745780636f2789ec1461048957806370a082311461049f57600080fd5b8063313ce5671461039c57806331e79db0146103be57806339509351146103de5780633974d3b1146103fe5780633f83d72c1461041e57600080fd5b806321df2b091161020e57806321df2b09146102f9578063226cfa3d1461031957806323b872dd1461034657806327ce0147146103665780633009a6091461038657600080fd5b806303c833021461025e57806306fdde0314610266578063095ea7b31461029157806309bbedde146102c157806318160ddd146102e457600080fd5b36610259576102576107ca565b005b600080fd5b6102576107ca565b34801561027257600080fd5b5061027b61085d565b6040516102889190611fa1565b60405180910390f35b34801561029d57600080fd5b506102b16102ac36600461200b565b6108ef565b6040519015158152602001610288565b3480156102cd57600080fd5b506102d6610906565b604051908152602001610288565b3480156102f057600080fd5b506007546102d6565b34801561030557600080fd5b50610257610314366004612083565b610979565b34801561032557600080fd5b506102d66103343660046120ef565b60106020526000908152604090205481565b34801561035257600080fd5b506102b161036136600461210c565b610aa4565b34801561037257600080fd5b506102d66103813660046120ef565b610b00565b34801561039257600080fd5b506102d6600f5481565b3480156103a857600080fd5b50600a5460405160ff9091168152602001610288565b3480156103ca57600080fd5b506102576103d93660046120ef565b610b5d565b3480156103ea57600080fd5b506102b16103f936600461200b565b610c28565b34801561040a57600080fd5b506102576104193660046120ef565b610c63565b34801561042a57600080fd5b50600e546102b190600160a01b900460ff1681565b34801561044b57600080fd5b5061025761045a36600461214d565b610e9b565b34801561046b57600080fd5b50600d546102d6565b34801561048057600080fd5b50610257610ee8565b34801561049557600080fd5b506102d660115481565b3480156104ab57600080fd5b506102d66104ba3660046120ef565b6001600160a01b031660009081526005602052604090205490565b3480156104e157600080fd5b50610257610ef4565b3480156104f657600080fd5b506102d66105053660046120ef565b6001600160a01b031660009081526003602052604090205490565b34801561052c57600080fd5b506102d661053b3660046120ef565b6001600160a01b031660009081526004602052604090205490565b34801561056257600080fd5b506102d6600b5481565b34801561057857600080fd5b50610257610587366004612174565b610f68565b34801561059857600080fd5b506000546040516001600160a01b039091168152602001610288565b3480156105c057600080fd5b506102d66105cf3660046120ef565b610f9c565b3480156105e057600080fd5b5061027b610fa7565b3480156105f557600080fd5b506102b161060436600461200b565b610fb6565b34801561061557600080fd5b506102d66106243660046120ef565b611005565b34801561063557600080fd5b506102b161036136600461200b565b34801561065057600080fd5b506102d6600d5481565b34801561066657600080fd5b506102576106753660046120ef565b611031565b34801561068657600080fd5b506102d66106953660046121ad565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106cc57600080fd5b5061025761107d565b3480156106e157600080fd5b50600f546102d6565b3480156106f657600080fd5b5061025761070536600461214d565b6110f6565b34801561071657600080fd5b506102576107253660046120ef565b61122f565b34801561073657600080fd5b5061074a6107453660046120ef565b611319565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610288565b34801561079b57600080fd5b506107af6107aa36600461214d565b611539565b60408051938452602084019290925290820152606001610288565b60006107d560075490565b116107df57600080fd5b341561085b576108126107f160075490565b6107ff34600160801b611788565b61080991906121f1565b60015490611811565b60015560405134815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a2600b546108579034611811565b600b555b565b60606008805461086c90612213565b80601f016020809104026020016040519081016040528092919081815260200182805461089890612213565b80156108e55780601f106108ba576101008083540402835291602001916108e5565b820191906000526020600020905b8154815290600101906020018083116108c857829003601f168201915b5050505050905090565b60006108fc338484611870565b5060015b92915050565b600c546040805163949d225d60e01b815290516000926001600160a01b03169163949d225d9160048083019260209291908290030181865afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610974919061224d565b905090565b6000546001600160a01b031633146109ac5760405162461bcd60e51b81526004016109a390612266565b60405180910390fd5b60005b83811015610a9d5760008585838181106109cb576109cb61229b565b90506020020160208101906109e091906120ef565b905060008484848181106109f6576109f661229b565b90506020020135633b9aca00610a0c91906122b1565b9050600d548110610a8857610a218282611994565b600c54604051630704bb0560e31b81526001600160a01b0384811660048301526024820184905290911690633825d82890604401600060405180830381600087803b158015610a6f57600080fd5b505af1158015610a83573d6000803e3d6000fd5b505050505b50508080610a95906122d0565b9150506109af565b5050505050565b60405162461bcd60e51b815260206004820152602860248201527f4e6f207472616e736665727320616c6c6f77656420696e206469766964656e64604482015267103a3930b1b5b2b960c11b60648201526000906084016109a3565b6001600160a01b0381166000908152600260209081526040808320546005909252822054600154600160801b92610b5392610b4e92610b4891610b439190611788565b6119f3565b90611a03565b611a41565b61090091906121f1565b6000546001600160a01b03163314610b875760405162461bcd60e51b81526004016109a390612266565b610b92816000611994565b600c54604051631484968760e11b81526001600160a01b038381166004830152909116906329092d0e90602401600060405180830381600087803b158015610bd957600080fd5b505af1158015610bed573d6000803e3d6000fd5b50506040516001600160a01b03841692507fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b259150600090a250565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916108fc918590610c5e9086611811565b611870565b600e546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a0823190602401602060405180830381865afa158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd2919061224d565b600e54604051630e83227360e01b81526001600160a01b038581166004830152929350911690630e83227390602401602060405180830381865afa158015610d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4291906122e9565b610e0257600d548110610dc557610d598282611994565b600c54604051630704bb0560e31b81526001600160a01b0384811660048301526024820184905290911690633825d828906044015b600060405180830381600087803b158015610da857600080fd5b505af1158015610dbc573d6000803e3d6000fd5b50505050610e8b565b610dd0826000611994565b600c54604051631484968760e11b81526001600160a01b038481166004830152909116906329092d0e90602401610d8e565b6001600160a01b03821660009081526005602052604090205415610e8b57610e2b826000611994565b600c54604051631484968760e11b81526001600160a01b038481166004830152909116906329092d0e90602401600060405180830381600087803b158015610e7257600080fd5b505af1158015610e86573d6000803e3d6000fd5b505050505b610e96826001611a54565b505050565b6000546001600160a01b03163314610ec55760405162461bcd60e51b81526004016109a390612266565b600a8054610ed89160ff909116906123ea565b610ee290826122b1565b600d5550565b610ef133611afe565b50565b6000546001600160a01b03163314610f1e5760405162461bcd60e51b81526004016109a390612266565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610f925760405162461bcd60e51b81526004016109a390612266565b610e968282611a54565b600061090082611005565b60606009805461086c90612213565b60006108fc3384610c5e856040518060600160405280602581526020016124e8602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611c44565b6001600160a01b0381166000908152600360205260408120546109009061102b84610b00565b90611c7e565b6000546001600160a01b0316331461105b5760405162461bcd60e51b81526004016109a390612266565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110a75760405162461bcd60e51b81526004016109a390612266565b476110ba6000546001600160a01b031690565b6001600160a01b03166108fc829081150290604051600060405180830381858888f193505050501580156110f2573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146111205760405162461bcd60e51b81526004016109a390612266565b610e1081101580156111355750620151808111155b61119d5760405162461bcd60e51b815260206004820152603360248201527f436c61696d57616974206d757374206265207570646174656420746f206265746044820152727765656e203120616e6420323420686f75727360681b60648201526084016109a3565b60115481036111fc5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f742075706461746520636c61696d5761697420746f2073616d652060448201526476616c756560d81b60648201526084016109a3565b60115460405182907f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f90600090a3601155565b6000546001600160a01b031633146112595760405162461bcd60e51b81526004016109a390612266565b6001600160a01b0381166112be5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600c5460405163564c8d1160e01b81526001600160a01b038084166004830152839260009283928392839283928392839291169063564c8d1190602401602060405180830381865afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611397919061224d565b96506000199550600087126114c657600f548711156113c557600f546113be908890611cc0565b95506114c6565b600f54600c546040805163949d225d60e01b81529051600093926001600160a01b03169163949d225d9160048083019260209291908290030181865afa158015611413573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611437919061224d565b116114435760006114b6565b600f54600c546040805163949d225d60e01b815290516114b693926001600160a01b03169163949d225d9160048083019260209291908290030181865afa158015611492573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102b919061224d565b90506114c28882611a03565b9650505b6114cf88611005565b94506114da88610b00565b6001600160a01b038916600090815260106020526040902054909450925082611504576000611512565b601154611512908490611811565b915042821161152257600061152c565b61152c8242611c7e565b9050919395975091939597565b600080600080600c60009054906101000a90046001600160a01b03166001600160a01b031663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b6919061224d565b9050806000036115d1575050600f5460009250829150611781565b600f546000805a90506000805b89841080156115ec57508582105b1561177057846115fb816122d0565b955050600c60009054906101000a90046001600160a01b03166001600160a01b031663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611675919061224d565b851061168057600094505b600c5460405163198c0deb60e21b8152600481018790526000916001600160a01b03169063663037ac90602401602060405180830381865afa1580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ee91906123f9565b6001600160a01b03811660009081526010602052604090205490915061171390611cfd565b1561173657611723816001611a54565b156117365781611732816122d0565b9250505b82611740816122d0565b93505060005a9050808511156117675761176461175d8683611c7e565b8790611811565b95505b93506115de9050565b600f85905590975095509193505050505b9193909250565b60008260000361179a57506000610900565b60006117a683856122b1565b9050826117b385836121f1565b1461180a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109a3565b9392505050565b60008061181e8385612416565b90508381101561180a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109a3565b6001600160a01b0383166118d25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a3565b6001600160a01b0382166119335760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216600090815260056020526040902054808211156119d35760006119c18383611c7e565b90506119cd8482611d24565b50505050565b80821015610e965760006119e78284611c7e565b90506119cd8482611e60565b6000818181121561090057600080fd5b600080611a10838561242e565b905060008312158015611a235750838112155b80611a385750600083128015611a3857508381125b61180a57600080fd5b600080821215611a5057600080fd5b5090565b600080611a6084611afe565b90508015611af4576001600160a01b038416600090815260046020526040902054611a8b8282611811565b6001600160a01b03861660008181526004602090815260408083209490945560108152908390204290559151848152861515927fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf092910160405180910390a3600192505050610900565b5060009392505050565b600080611b0a83611005565b90508015611c3b576001600160a01b038316600090815260036020526040902054611b359082611811565b6001600160a01b038416600081815260036020526040908190209290925590517fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d90611b849084815260200190565b60405180910390a26000836001600160a01b031682610bb890604051600060405180830381858888f193505050503d8060008114611bde576040519150601f19603f3d011682016040523d82523d6000602084013e611be3565b606091505b5050905080611c34576001600160a01b038416600090815260036020526040902054611c0f9083611c7e565b6001600160a01b03909416600090815260036020526040812094909455509192915050565b5092915050565b50600092915050565b60008184841115611c685760405162461bcd60e51b81526004016109a39190611fa1565b506000611c75848661246f565b95945050505050565b600061180a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c44565b600080611ccd8385612486565b905060008312158015611ce05750838113155b80611a385750600083128015611a38575083811361180a57600080fd5b600042821115611d0f57506000919050565b601154611d1c4284611c7e565b101592915050565b6001600160a01b038216611d7a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109a3565b600754611d879082611811565b6007556001600160a01b038216600090815260056020526040902054611dad9082611811565b6001600160a01b0383166000818152600560205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611dfe9085815260200190565b60405180910390a3611e40611e21610b438360015461178890919063ffffffff16565b6001600160a01b03841660009081526002602052604090205490611cc0565b6001600160a01b0390921660009081526002602052604090209190915550565b6001600160a01b038216611ec05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109a3565b611efd816040518060600160405280602281526020016124c6602291396001600160a01b0385166000908152600560205260409020549190611c44565b6001600160a01b038316600090815260056020526040902055600754611f239082611c7e565b6007556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611e40611f82610b438360015461178890919063ffffffff16565b6001600160a01b03841660009081526002602052604090205490611a03565b600060208083528351808285015260005b81811015611fce57858101830151858201604001528201611fb2565b81811115611fe0576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610ef157600080fd5b6000806040838503121561201e57600080fd5b823561202981611ff6565b946020939093013593505050565b60008083601f84011261204957600080fd5b50813567ffffffffffffffff81111561206157600080fd5b6020830191508360208260051b850101111561207c57600080fd5b9250929050565b6000806000806040858703121561209957600080fd5b843567ffffffffffffffff808211156120b157600080fd5b6120bd88838901612037565b909650945060208701359150808211156120d657600080fd5b506120e387828801612037565b95989497509550505050565b60006020828403121561210157600080fd5b813561180a81611ff6565b60008060006060848603121561212157600080fd5b833561212c81611ff6565b9250602084013561213c81611ff6565b929592945050506040919091013590565b60006020828403121561215f57600080fd5b5035919050565b8015158114610ef157600080fd5b6000806040838503121561218757600080fd5b823561219281611ff6565b915060208301356121a281612166565b809150509250929050565b600080604083850312156121c057600080fd5b82356121cb81611ff6565b915060208301356121a281611ff6565b634e487b7160e01b600052601160045260246000fd5b60008261220e57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061222757607f821691505b60208210810361224757634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561225f57600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156122cb576122cb6121db565b500290565b6000600182016122e2576122e26121db565b5060010190565b6000602082840312156122fb57600080fd5b815161180a81612166565b600181815b80851115612341578160001904821115612327576123276121db565b8085161561233457918102915b93841c939080029061230b565b509250929050565b60008261235857506001610900565b8161236557506000610900565b816001811461237b5760028114612385576123a1565b6001915050610900565b60ff841115612396576123966121db565b50506001821b610900565b5060208310610133831016604e8410600b84101617156123c4575081810a610900565b6123ce8383612306565b80600019048211156123e2576123e26121db565b029392505050565b600061180a60ff841683612349565b60006020828403121561240b57600080fd5b815161180a81611ff6565b60008219821115612429576124296121db565b500190565b600080821280156001600160ff1b0384900385131615612450576124506121db565b600160ff1b8390038412811615612469576124696121db565b50500190565b600082821015612481576124816121db565b500390565b60008083128015600160ff1b8501841216156124a4576124a46121db565b6001600160ff1b03840183138116156124bf576124bf6121db565b5050039056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207940abbc90bf3a80d169ea0b631a0f3f115d31541ccfda94e5ced5ea4a0eb49a64736f6c634300080d0033608060405234801561001057600080fd5b506104ca806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063663037ac1161005b578063663037ac146100d0578063949d225d146100fb578063c2bc2efc14610103578063cd4133291461012c57600080fd5b806329092d0e146100825780633825d82814610097578063564c8d11146100aa575b600080fd5b6100956100903660046103de565b61014f565b005b6100956100a5366004610400565b61027a565b6100bd6100b83660046103de565b610335565b6040519081526020015b60405180910390f35b6100e36100de36600461042a565b61037a565b6040516001600160a01b0390911681526020016100c7565b6000546100bd565b6100bd6101113660046103de565b6001600160a01b031660009081526001602052604090205490565b61013f61013a3660046103de565b6103ac565b60405190151581526020016100c7565b6001600160a01b03811660009081526003602052604090205460ff166101725750565b6001600160a01b0381166000908152600360209081526040808320805460ff191690556001808352818420849055600290925282205482549092916101b691610443565b905060008060000182815481106101cf576101cf610468565b60009182526020808320909101546001600160a01b03908116808452600290925260408084208790559087168352822082905581549092508291908590811061021a5761021a610468565b6000918252602082200180546001600160a01b0319166001600160a01b0393909316929092179091558054806102525761025261047e565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6001600160a01b03821660009081526003602052604090205460ff16156102b8576001600160a01b0391909116600090815260016020526040902055565b6001600160a01b0382166000818152600360209081526040808320805460ff1916600190811790915580835281842086905583546002909352908320829055810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630180546001600160a01b03191690911790555050565b6001600160a01b03811660009081526003602052604081205460ff1661035e5750600019919050565b506001600160a01b031660009081526002602052604090205490565b600080600001828154811061039157610391610468565b6000918252602090912001546001600160a01b031692915050565b60006103b782610335565b600019141592915050565b80356001600160a01b03811681146103d957600080fd5b919050565b6000602082840312156103f057600080fd5b6103f9826103c2565b9392505050565b6000806040838503121561041357600080fd5b61041c836103c2565b946020939093013593505050565b60006020828403121561043c57600080fd5b5035919050565b60008282101561046357634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122063c1618ffc2715f27f43c62c9552a597038b7cd6701e66a1fb8c3b418e05d80d64736f6c634300080d0033
Deployed Bytecode
0x60806040526004361061024a5760003560e01c8063715018a611610139578063a9059cbb116100b6578063e0fb0f351161007a578063e0fb0f35146106c0578063e7841ec0146106d5578063e98030c7146106ea578063f2fde38b1461070a578063fbcbc0f11461072a578063ffb2c4791461078f57600080fd5b8063a9059cbb14610629578063aafd847a146104ea578063be10b61414610644578063cac8d5381461065a578063dd62ed3e1461067a57600080fd5b80638da5cb5b116100fd5780638da5cb5b1461058c57806391b89fba146105b457806395d89b41146105d4578063a457c2d7146105e9578063a8b9d2401461060957600080fd5b8063715018a6146104d5578063730270b5146104ea578063804974ea1461052057806385a6b3ae14610556578063897742821461056c57600080fd5b8063313ce567116101c75780635ebf4db91161018b5780635ebf4db91461043f57806365e2ccb21461045f5780636a474002146104745780636f2789ec1461048957806370a082311461049f57600080fd5b8063313ce5671461039c57806331e79db0146103be57806339509351146103de5780633974d3b1146103fe5780633f83d72c1461041e57600080fd5b806321df2b091161020e57806321df2b09146102f9578063226cfa3d1461031957806323b872dd1461034657806327ce0147146103665780633009a6091461038657600080fd5b806303c833021461025e57806306fdde0314610266578063095ea7b31461029157806309bbedde146102c157806318160ddd146102e457600080fd5b36610259576102576107ca565b005b600080fd5b6102576107ca565b34801561027257600080fd5b5061027b61085d565b6040516102889190611fa1565b60405180910390f35b34801561029d57600080fd5b506102b16102ac36600461200b565b6108ef565b6040519015158152602001610288565b3480156102cd57600080fd5b506102d6610906565b604051908152602001610288565b3480156102f057600080fd5b506007546102d6565b34801561030557600080fd5b50610257610314366004612083565b610979565b34801561032557600080fd5b506102d66103343660046120ef565b60106020526000908152604090205481565b34801561035257600080fd5b506102b161036136600461210c565b610aa4565b34801561037257600080fd5b506102d66103813660046120ef565b610b00565b34801561039257600080fd5b506102d6600f5481565b3480156103a857600080fd5b50600a5460405160ff9091168152602001610288565b3480156103ca57600080fd5b506102576103d93660046120ef565b610b5d565b3480156103ea57600080fd5b506102b16103f936600461200b565b610c28565b34801561040a57600080fd5b506102576104193660046120ef565b610c63565b34801561042a57600080fd5b50600e546102b190600160a01b900460ff1681565b34801561044b57600080fd5b5061025761045a36600461214d565b610e9b565b34801561046b57600080fd5b50600d546102d6565b34801561048057600080fd5b50610257610ee8565b34801561049557600080fd5b506102d660115481565b3480156104ab57600080fd5b506102d66104ba3660046120ef565b6001600160a01b031660009081526005602052604090205490565b3480156104e157600080fd5b50610257610ef4565b3480156104f657600080fd5b506102d66105053660046120ef565b6001600160a01b031660009081526003602052604090205490565b34801561052c57600080fd5b506102d661053b3660046120ef565b6001600160a01b031660009081526004602052604090205490565b34801561056257600080fd5b506102d6600b5481565b34801561057857600080fd5b50610257610587366004612174565b610f68565b34801561059857600080fd5b506000546040516001600160a01b039091168152602001610288565b3480156105c057600080fd5b506102d66105cf3660046120ef565b610f9c565b3480156105e057600080fd5b5061027b610fa7565b3480156105f557600080fd5b506102b161060436600461200b565b610fb6565b34801561061557600080fd5b506102d66106243660046120ef565b611005565b34801561063557600080fd5b506102b161036136600461200b565b34801561065057600080fd5b506102d6600d5481565b34801561066657600080fd5b506102576106753660046120ef565b611031565b34801561068657600080fd5b506102d66106953660046121ad565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106cc57600080fd5b5061025761107d565b3480156106e157600080fd5b50600f546102d6565b3480156106f657600080fd5b5061025761070536600461214d565b6110f6565b34801561071657600080fd5b506102576107253660046120ef565b61122f565b34801561073657600080fd5b5061074a6107453660046120ef565b611319565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610288565b34801561079b57600080fd5b506107af6107aa36600461214d565b611539565b60408051938452602084019290925290820152606001610288565b60006107d560075490565b116107df57600080fd5b341561085b576108126107f160075490565b6107ff34600160801b611788565b61080991906121f1565b60015490611811565b60015560405134815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a2600b546108579034611811565b600b555b565b60606008805461086c90612213565b80601f016020809104026020016040519081016040528092919081815260200182805461089890612213565b80156108e55780601f106108ba576101008083540402835291602001916108e5565b820191906000526020600020905b8154815290600101906020018083116108c857829003601f168201915b5050505050905090565b60006108fc338484611870565b5060015b92915050565b600c546040805163949d225d60e01b815290516000926001600160a01b03169163949d225d9160048083019260209291908290030181865afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610974919061224d565b905090565b6000546001600160a01b031633146109ac5760405162461bcd60e51b81526004016109a390612266565b60405180910390fd5b60005b83811015610a9d5760008585838181106109cb576109cb61229b565b90506020020160208101906109e091906120ef565b905060008484848181106109f6576109f661229b565b90506020020135633b9aca00610a0c91906122b1565b9050600d548110610a8857610a218282611994565b600c54604051630704bb0560e31b81526001600160a01b0384811660048301526024820184905290911690633825d82890604401600060405180830381600087803b158015610a6f57600080fd5b505af1158015610a83573d6000803e3d6000fd5b505050505b50508080610a95906122d0565b9150506109af565b5050505050565b60405162461bcd60e51b815260206004820152602860248201527f4e6f207472616e736665727320616c6c6f77656420696e206469766964656e64604482015267103a3930b1b5b2b960c11b60648201526000906084016109a3565b6001600160a01b0381166000908152600260209081526040808320546005909252822054600154600160801b92610b5392610b4e92610b4891610b439190611788565b6119f3565b90611a03565b611a41565b61090091906121f1565b6000546001600160a01b03163314610b875760405162461bcd60e51b81526004016109a390612266565b610b92816000611994565b600c54604051631484968760e11b81526001600160a01b038381166004830152909116906329092d0e90602401600060405180830381600087803b158015610bd957600080fd5b505af1158015610bed573d6000803e3d6000fd5b50506040516001600160a01b03841692507fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b259150600090a250565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916108fc918590610c5e9086611811565b611870565b600e546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a0823190602401602060405180830381865afa158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd2919061224d565b600e54604051630e83227360e01b81526001600160a01b038581166004830152929350911690630e83227390602401602060405180830381865afa158015610d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4291906122e9565b610e0257600d548110610dc557610d598282611994565b600c54604051630704bb0560e31b81526001600160a01b0384811660048301526024820184905290911690633825d828906044015b600060405180830381600087803b158015610da857600080fd5b505af1158015610dbc573d6000803e3d6000fd5b50505050610e8b565b610dd0826000611994565b600c54604051631484968760e11b81526001600160a01b038481166004830152909116906329092d0e90602401610d8e565b6001600160a01b03821660009081526005602052604090205415610e8b57610e2b826000611994565b600c54604051631484968760e11b81526001600160a01b038481166004830152909116906329092d0e90602401600060405180830381600087803b158015610e7257600080fd5b505af1158015610e86573d6000803e3d6000fd5b505050505b610e96826001611a54565b505050565b6000546001600160a01b03163314610ec55760405162461bcd60e51b81526004016109a390612266565b600a8054610ed89160ff909116906123ea565b610ee290826122b1565b600d5550565b610ef133611afe565b50565b6000546001600160a01b03163314610f1e5760405162461bcd60e51b81526004016109a390612266565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610f925760405162461bcd60e51b81526004016109a390612266565b610e968282611a54565b600061090082611005565b60606009805461086c90612213565b60006108fc3384610c5e856040518060600160405280602581526020016124e8602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611c44565b6001600160a01b0381166000908152600360205260408120546109009061102b84610b00565b90611c7e565b6000546001600160a01b0316331461105b5760405162461bcd60e51b81526004016109a390612266565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110a75760405162461bcd60e51b81526004016109a390612266565b476110ba6000546001600160a01b031690565b6001600160a01b03166108fc829081150290604051600060405180830381858888f193505050501580156110f2573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146111205760405162461bcd60e51b81526004016109a390612266565b610e1081101580156111355750620151808111155b61119d5760405162461bcd60e51b815260206004820152603360248201527f436c61696d57616974206d757374206265207570646174656420746f206265746044820152727765656e203120616e6420323420686f75727360681b60648201526084016109a3565b60115481036111fc5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f742075706461746520636c61696d5761697420746f2073616d652060448201526476616c756560d81b60648201526084016109a3565b60115460405182907f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f90600090a3601155565b6000546001600160a01b031633146112595760405162461bcd60e51b81526004016109a390612266565b6001600160a01b0381166112be5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600c5460405163564c8d1160e01b81526001600160a01b038084166004830152839260009283928392839283928392839291169063564c8d1190602401602060405180830381865afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611397919061224d565b96506000199550600087126114c657600f548711156113c557600f546113be908890611cc0565b95506114c6565b600f54600c546040805163949d225d60e01b81529051600093926001600160a01b03169163949d225d9160048083019260209291908290030181865afa158015611413573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611437919061224d565b116114435760006114b6565b600f54600c546040805163949d225d60e01b815290516114b693926001600160a01b03169163949d225d9160048083019260209291908290030181865afa158015611492573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102b919061224d565b90506114c28882611a03565b9650505b6114cf88611005565b94506114da88610b00565b6001600160a01b038916600090815260106020526040902054909450925082611504576000611512565b601154611512908490611811565b915042821161152257600061152c565b61152c8242611c7e565b9050919395975091939597565b600080600080600c60009054906101000a90046001600160a01b03166001600160a01b031663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b6919061224d565b9050806000036115d1575050600f5460009250829150611781565b600f546000805a90506000805b89841080156115ec57508582105b1561177057846115fb816122d0565b955050600c60009054906101000a90046001600160a01b03166001600160a01b031663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611675919061224d565b851061168057600094505b600c5460405163198c0deb60e21b8152600481018790526000916001600160a01b03169063663037ac90602401602060405180830381865afa1580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ee91906123f9565b6001600160a01b03811660009081526010602052604090205490915061171390611cfd565b1561173657611723816001611a54565b156117365781611732816122d0565b9250505b82611740816122d0565b93505060005a9050808511156117675761176461175d8683611c7e565b8790611811565b95505b93506115de9050565b600f85905590975095509193505050505b9193909250565b60008260000361179a57506000610900565b60006117a683856122b1565b9050826117b385836121f1565b1461180a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109a3565b9392505050565b60008061181e8385612416565b90508381101561180a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109a3565b6001600160a01b0383166118d25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a3565b6001600160a01b0382166119335760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216600090815260056020526040902054808211156119d35760006119c18383611c7e565b90506119cd8482611d24565b50505050565b80821015610e965760006119e78284611c7e565b90506119cd8482611e60565b6000818181121561090057600080fd5b600080611a10838561242e565b905060008312158015611a235750838112155b80611a385750600083128015611a3857508381125b61180a57600080fd5b600080821215611a5057600080fd5b5090565b600080611a6084611afe565b90508015611af4576001600160a01b038416600090815260046020526040902054611a8b8282611811565b6001600160a01b03861660008181526004602090815260408083209490945560108152908390204290559151848152861515927fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf092910160405180910390a3600192505050610900565b5060009392505050565b600080611b0a83611005565b90508015611c3b576001600160a01b038316600090815260036020526040902054611b359082611811565b6001600160a01b038416600081815260036020526040908190209290925590517fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d90611b849084815260200190565b60405180910390a26000836001600160a01b031682610bb890604051600060405180830381858888f193505050503d8060008114611bde576040519150601f19603f3d011682016040523d82523d6000602084013e611be3565b606091505b5050905080611c34576001600160a01b038416600090815260036020526040902054611c0f9083611c7e565b6001600160a01b03909416600090815260036020526040812094909455509192915050565b5092915050565b50600092915050565b60008184841115611c685760405162461bcd60e51b81526004016109a39190611fa1565b506000611c75848661246f565b95945050505050565b600061180a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c44565b600080611ccd8385612486565b905060008312158015611ce05750838113155b80611a385750600083128015611a38575083811361180a57600080fd5b600042821115611d0f57506000919050565b601154611d1c4284611c7e565b101592915050565b6001600160a01b038216611d7a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109a3565b600754611d879082611811565b6007556001600160a01b038216600090815260056020526040902054611dad9082611811565b6001600160a01b0383166000818152600560205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611dfe9085815260200190565b60405180910390a3611e40611e21610b438360015461178890919063ffffffff16565b6001600160a01b03841660009081526002602052604090205490611cc0565b6001600160a01b0390921660009081526002602052604090209190915550565b6001600160a01b038216611ec05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109a3565b611efd816040518060600160405280602281526020016124c6602291396001600160a01b0385166000908152600560205260409020549190611c44565b6001600160a01b038316600090815260056020526040902055600754611f239082611c7e565b6007556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611e40611f82610b438360015461178890919063ffffffff16565b6001600160a01b03841660009081526002602052604090205490611a03565b600060208083528351808285015260005b81811015611fce57858101830151858201604001528201611fb2565b81811115611fe0576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610ef157600080fd5b6000806040838503121561201e57600080fd5b823561202981611ff6565b946020939093013593505050565b60008083601f84011261204957600080fd5b50813567ffffffffffffffff81111561206157600080fd5b6020830191508360208260051b850101111561207c57600080fd5b9250929050565b6000806000806040858703121561209957600080fd5b843567ffffffffffffffff808211156120b157600080fd5b6120bd88838901612037565b909650945060208701359150808211156120d657600080fd5b506120e387828801612037565b95989497509550505050565b60006020828403121561210157600080fd5b813561180a81611ff6565b60008060006060848603121561212157600080fd5b833561212c81611ff6565b9250602084013561213c81611ff6565b929592945050506040919091013590565b60006020828403121561215f57600080fd5b5035919050565b8015158114610ef157600080fd5b6000806040838503121561218757600080fd5b823561219281611ff6565b915060208301356121a281612166565b809150509250929050565b600080604083850312156121c057600080fd5b82356121cb81611ff6565b915060208301356121a281611ff6565b634e487b7160e01b600052601160045260246000fd5b60008261220e57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061222757607f821691505b60208210810361224757634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561225f57600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156122cb576122cb6121db565b500290565b6000600182016122e2576122e26121db565b5060010190565b6000602082840312156122fb57600080fd5b815161180a81612166565b600181815b80851115612341578160001904821115612327576123276121db565b8085161561233457918102915b93841c939080029061230b565b509250929050565b60008261235857506001610900565b8161236557506000610900565b816001811461237b5760028114612385576123a1565b6001915050610900565b60ff841115612396576123966121db565b50506001821b610900565b5060208310610133831016604e8410600b84101617156123c4575081810a610900565b6123ce8383612306565b80600019048211156123e2576123e26121db565b029392505050565b600061180a60ff841683612349565b60006020828403121561240b57600080fd5b815161180a81611ff6565b60008219821115612429576124296121db565b500190565b600080821280156001600160ff1b0384900385131615612450576124506121db565b600160ff1b8390038412811615612469576124696121db565b50500190565b600082821015612481576124816121db565b500390565b60008083128015600160ff1b8501841216156124a4576124a46121db565b6001600160ff1b03840183138116156124bf576124bf6121db565b5050039056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207940abbc90bf3a80d169ea0b631a0f3f115d31541ccfda94e5ced5ea4a0eb49a64736f6c634300080d0033
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,111.18 | 0.000000000000000055 | <$0.000001 |
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.